diff --git a/app/helpers/spree/admin/extension_partials_helper.rb b/app/helpers/spree/admin/extension_partials_helper.rb new file mode 100644 index 0000000000..4699e18f63 --- /dev/null +++ b/app/helpers/spree/admin/extension_partials_helper.rb @@ -0,0 +1,27 @@ +module Spree + module Admin + module ExtensionPartialsHelper + def render_matching(pattern:nil, locals: {}) + old_path = Dir.pwd + rendered = '' + return rendered if pattern.nil? + + view_paths.paths.each do |view_path| + Dir.chdir(view_path) + result = Dir['spree/admin/extension/**/*'].select do |path| + !File.directory?(path) && File.basename(path, '.html.erb') =~ /^_.+/ + end + + result.map! { |path| path.gsub(File.basename(path), File.basename(path, '.html.erb')[1..-1]) } + result.each do |path| + if path.match(/.+\/#{pattern}\/.+/) + rendered += render partial: path, locals: locals + end + end + end + Dir.chdir(old_path) + rendered + end + end + end +end diff --git a/app/views/spree/admin/products/edit.html.erb b/app/views/spree/admin/products/edit.html.erb index 0a010eaf1d..8c70bbcaae 100644 --- a/app/views/spree/admin/products/edit.html.erb +++ b/app/views/spree/admin/products/edit.html.erb @@ -2,23 +2,24 @@ <% product_actions.items.each do |action| %> <% next unless action.available?(current_ability) %> <%= button_link_to( - Spree.t(action.label_translation_key), - action.url(@product), - class: action.classes, - icon: action.icon_key, - id: action.id, - target: action.target, - data: action.data_attributes - ) %> + Spree.t(action.label_translation_key), + action.url(@product), + class: action.classes, + icon: action.icon_key, + id: action.id, + target: action.target, + data: action.data_attributes + ) %> <% end if product_actions&.items %> <% end %> -<%= render partial: 'spree/admin/shared/product_tabs', locals: {current: :details} %> +<%= render partial: 'spree/admin/shared/product_tabs', locals: { current: :details } %> <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @product } %> <%= form_for [:admin, @product], method: :put, html: { multipart: true } do |f| %>
<%= render partial: 'form', locals: { f: f } %> + <%= render_matching pattern: 'products/edit', locals: { f: f } %> <%= render partial: 'spree/admin/shared/edit_resource_links' %>
<% end %>