From af1eff9427aee0e5fb66c8c16b4e67835b66b967 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 8 Nov 2019 17:18:04 +0000 Subject: [PATCH 1/5] Bring properties and product_properties controllers from spree_backend --- .../admin/product_properties_controller.rb | 19 +++++++++++++++++++ .../spree/admin/properties_controller.rb | 6 ++++++ 2 files changed, 25 insertions(+) create mode 100644 app/controllers/spree/admin/product_properties_controller.rb create mode 100644 app/controllers/spree/admin/properties_controller.rb diff --git a/app/controllers/spree/admin/product_properties_controller.rb b/app/controllers/spree/admin/product_properties_controller.rb new file mode 100644 index 0000000000..d5a783192d --- /dev/null +++ b/app/controllers/spree/admin/product_properties_controller.rb @@ -0,0 +1,19 @@ +module Spree + module Admin + class ProductPropertiesController < ResourceController + belongs_to 'spree/product', find_by: :permalink + before_filter :find_properties + before_filter :setup_property, only: [:index] + + private + + def find_properties + @properties = Spree::Property.pluck(:name) + end + + def setup_property + @product.product_properties.build + end + end + end +end diff --git a/app/controllers/spree/admin/properties_controller.rb b/app/controllers/spree/admin/properties_controller.rb new file mode 100644 index 0000000000..dcccad41f9 --- /dev/null +++ b/app/controllers/spree/admin/properties_controller.rb @@ -0,0 +1,6 @@ +module Spree + module Admin + class PropertiesController < ResourceController + end + end +end From f8b0ad29dfabf861d29c04ab0e0748190d34d81a Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 8 Nov 2019 17:18:26 +0000 Subject: [PATCH 2/5] Bring properties views from spree_backend --- .../spree/admin/properties/_form.html.erb | 16 ++++++++ .../spree/admin/properties/edit.html.erb | 18 ++++++++ .../spree/admin/properties/index.html.erb | 41 +++++++++++++++++++ app/views/spree/admin/properties/new.html.erb | 13 ++++++ app/views/spree/admin/properties/new.js.erb | 2 + 5 files changed, 90 insertions(+) create mode 100644 app/views/spree/admin/properties/_form.html.erb create mode 100644 app/views/spree/admin/properties/edit.html.erb create mode 100644 app/views/spree/admin/properties/index.html.erb create mode 100644 app/views/spree/admin/properties/new.html.erb create mode 100644 app/views/spree/admin/properties/new.js.erb diff --git a/app/views/spree/admin/properties/_form.html.erb b/app/views/spree/admin/properties/_form.html.erb new file mode 100644 index 0000000000..bb86a4e69a --- /dev/null +++ b/app/views/spree/admin/properties/_form.html.erb @@ -0,0 +1,16 @@ +
+
+ <%= f.field_container :name do %> + <%= f.label :name, Spree.t(:name) %> *
+ <%= f.text_field :name, :class => 'fullwidth' %> + <%= f.error_message_on :name %> + <% end %> +
+
+ <%= f.field_container :presentation do %> + <%= f.label :presentation, Spree.t(:presentation) %> *
+ <%= f.text_field :presentation, :class => 'fullwidth' %> + <%= f.error_message_on :presentation %> + <% end %> +
+
diff --git a/app/views/spree/admin/properties/edit.html.erb b/app/views/spree/admin/properties/edit.html.erb new file mode 100644 index 0000000000..219c652f32 --- /dev/null +++ b/app/views/spree/admin/properties/edit.html.erb @@ -0,0 +1,18 @@ +<%= render :partial => 'spree/admin/shared/product_sub_menu' %> + +<% content_for :page_title do %> + <%= Spree.t(:editing_property) %> +<% end %> + +<% content_for :page_actions do %> +
  • <%= button_link_to Spree.t(:back_to_properties_list), admin_properties_url, :icon => 'icon-arrow-left'%>
  • +<% end %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @property } %> + +<%= form_for [:admin, @property] do |f| %> +
    + <%= render :partial => 'form', :locals => { :f => f } %> + <%= render :partial => 'spree/admin/shared/edit_resource_links' %> +
    +<% end %> diff --git a/app/views/spree/admin/properties/index.html.erb b/app/views/spree/admin/properties/index.html.erb new file mode 100644 index 0000000000..823cf1b9fd --- /dev/null +++ b/app/views/spree/admin/properties/index.html.erb @@ -0,0 +1,41 @@ +<% content_for :page_title do %> + <%= Spree.t(:properties) %> +<% end %> + +<% content_for :page_actions do %> + +<% end %> + +<%= render :partial => 'spree/admin/shared/product_sub_menu' %> + +
    + + + + + + + + + + + + + + + + <% @properties.each do |property| %> + + + + + + <% end %> + +
    <%= Spree.t(:name) %><%= Spree.t(:presentation) %>
    <%= property.name %><%= property.presentation %> + <%= link_to_edit(property, :no_text => true) %> + <%= link_to_delete(property, :no_text => true) %> +
    + diff --git a/app/views/spree/admin/properties/new.html.erb b/app/views/spree/admin/properties/new.html.erb new file mode 100644 index 0000000000..307bb00b17 --- /dev/null +++ b/app/views/spree/admin/properties/new.html.erb @@ -0,0 +1,13 @@ +<%= render :partial => 'spree/admin/shared/product_sub_menu' %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @property } %> + +<%= form_for [:admin, @property] do |f| %> +
    + <%= Spree.t(:new_property) %> + <%= render :partial => 'form', :locals => { :f => f } %> +
    + <%= render :partial => 'spree/admin/shared/new_resource_links' %> +
    +
    +<% end %> diff --git a/app/views/spree/admin/properties/new.js.erb b/app/views/spree/admin/properties/new.js.erb new file mode 100644 index 0000000000..d13137c1aa --- /dev/null +++ b/app/views/spree/admin/properties/new.js.erb @@ -0,0 +1,2 @@ +$("#new_property").html('<%= escape_javascript(render :template => "spree/admin/properties/new", :formats => [:html], :handlers => [:erb]) %>'); +$("#new_property_link").parent().hide(); From 2d240f23a89577f784d891911bd30f6a69b3e1a9 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 8 Nov 2019 17:31:43 +0000 Subject: [PATCH 3/5] Converted erb properties views to haml and added lazy lookups for translations --- .../spree/admin/properties/_form.html.erb | 16 -------- .../spree/admin/properties/_form.html.haml | 15 +++++++ .../spree/admin/properties/edit.html.erb | 18 -------- .../spree/admin/properties/edit.html.haml | 14 +++++++ .../spree/admin/properties/index.html.erb | 41 ------------------- .../spree/admin/properties/index.html.haml | 30 ++++++++++++++ app/views/spree/admin/properties/new.html.erb | 13 ------ .../spree/admin/properties/new.html.haml | 10 +++++ config/locales/en.yml | 14 +++++++ 9 files changed, 83 insertions(+), 88 deletions(-) delete mode 100644 app/views/spree/admin/properties/_form.html.erb create mode 100644 app/views/spree/admin/properties/_form.html.haml delete mode 100644 app/views/spree/admin/properties/edit.html.erb create mode 100644 app/views/spree/admin/properties/edit.html.haml delete mode 100644 app/views/spree/admin/properties/index.html.erb create mode 100644 app/views/spree/admin/properties/index.html.haml delete mode 100644 app/views/spree/admin/properties/new.html.erb create mode 100644 app/views/spree/admin/properties/new.html.haml diff --git a/app/views/spree/admin/properties/_form.html.erb b/app/views/spree/admin/properties/_form.html.erb deleted file mode 100644 index bb86a4e69a..0000000000 --- a/app/views/spree/admin/properties/_form.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -
    -
    - <%= f.field_container :name do %> - <%= f.label :name, Spree.t(:name) %> *
    - <%= f.text_field :name, :class => 'fullwidth' %> - <%= f.error_message_on :name %> - <% end %> -
    -
    - <%= f.field_container :presentation do %> - <%= f.label :presentation, Spree.t(:presentation) %> *
    - <%= f.text_field :presentation, :class => 'fullwidth' %> - <%= f.error_message_on :presentation %> - <% end %> -
    -
    diff --git a/app/views/spree/admin/properties/_form.html.haml b/app/views/spree/admin/properties/_form.html.haml new file mode 100644 index 0000000000..1e8f402998 --- /dev/null +++ b/app/views/spree/admin/properties/_form.html.haml @@ -0,0 +1,15 @@ +.align-center.row + .alpha.eight.columns + = f.field_container :name do + = f.label :name, t('.name') + %span.required * + %br/ + = f.text_field :name, class: 'fullwidth' + = f.error_message_on :name + .eight.columns.omega + = f.field_container :presentation do + = f.label :presentation, t('.presentation') + %span.required * + %br/ + = f.text_field :presentation, class: 'fullwidth' + = f.error_message_on :presentation diff --git a/app/views/spree/admin/properties/edit.html.erb b/app/views/spree/admin/properties/edit.html.erb deleted file mode 100644 index 219c652f32..0000000000 --- a/app/views/spree/admin/properties/edit.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -<%= render :partial => 'spree/admin/shared/product_sub_menu' %> - -<% content_for :page_title do %> - <%= Spree.t(:editing_property) %> -<% end %> - -<% content_for :page_actions do %> -
  • <%= button_link_to Spree.t(:back_to_properties_list), admin_properties_url, :icon => 'icon-arrow-left'%>
  • -<% end %> - -<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @property } %> - -<%= form_for [:admin, @property] do |f| %> -
    - <%= render :partial => 'form', :locals => { :f => f } %> - <%= render :partial => 'spree/admin/shared/edit_resource_links' %> -
    -<% end %> diff --git a/app/views/spree/admin/properties/edit.html.haml b/app/views/spree/admin/properties/edit.html.haml new file mode 100644 index 0000000000..18ae81ef52 --- /dev/null +++ b/app/views/spree/admin/properties/edit.html.haml @@ -0,0 +1,14 @@ += render partial: 'spree/admin/shared/product_sub_menu' + +- content_for :page_title do + = t('.editing_property') + +- content_for :page_actions do + %li= button_link_to t('.back_to_properties_list'), admin_properties_url, icon: 'icon-arrow-left' + += render partial: 'spree/shared/error_messages', locals: { target: @property } + += form_for [:admin, @property] do |f| + %fieldset.no-border-top + = render partial: 'form', locals: { f: f } + = render partial: 'spree/admin/shared/edit_resource_links' diff --git a/app/views/spree/admin/properties/index.html.erb b/app/views/spree/admin/properties/index.html.erb deleted file mode 100644 index 823cf1b9fd..0000000000 --- a/app/views/spree/admin/properties/index.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t(:properties) %> -<% end %> - -<% content_for :page_actions do %> - -<% end %> - -<%= render :partial => 'spree/admin/shared/product_sub_menu' %> - -
    - - - - - - - - - - - - - - - - <% @properties.each do |property| %> - - - - - - <% end %> - -
    <%= Spree.t(:name) %><%= Spree.t(:presentation) %>
    <%= property.name %><%= property.presentation %> - <%= link_to_edit(property, :no_text => true) %> - <%= link_to_delete(property, :no_text => true) %> -
    - diff --git a/app/views/spree/admin/properties/index.html.haml b/app/views/spree/admin/properties/index.html.haml new file mode 100644 index 0000000000..a712b855bf --- /dev/null +++ b/app/views/spree/admin/properties/index.html.haml @@ -0,0 +1,30 @@ +- content_for :page_title do + = t('.properties') + +- content_for :page_actions do + %li#new_property_link + = button_link_to t('.new_property'), new_admin_property_url, { remote: true, icon: 'icon-plus', 'data-update' => 'new_property', id: 'new_property_link' } + += render partial: 'spree/admin/shared/product_sub_menu' + +#new_property +%table#listing_properties.index + %colgroup + %col{style: "width: 45%"}/ + %col{style: "width: 45%"}/ + %col{style: "width: 10%"}/ + %thead + %tr + %th= t('.name') + %th= t('.presentation') + %th.actions + %tbody + - @properties.each do |property| + - tr_class = cycle('odd', 'even') + - tr_id = spree_dom_id(property) + %tr{class: tr_class, id: tr_id} + %td= property.name + %td= property.presentation + %td.actions + = link_to_edit(property, no_text: true) + = link_to_delete(property, no_text: true) diff --git a/app/views/spree/admin/properties/new.html.erb b/app/views/spree/admin/properties/new.html.erb deleted file mode 100644 index 307bb00b17..0000000000 --- a/app/views/spree/admin/properties/new.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -<%= render :partial => 'spree/admin/shared/product_sub_menu' %> - -<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @property } %> - -<%= form_for [:admin, @property] do |f| %> -
    - <%= Spree.t(:new_property) %> - <%= render :partial => 'form', :locals => { :f => f } %> -
    - <%= render :partial => 'spree/admin/shared/new_resource_links' %> -
    -
    -<% end %> diff --git a/app/views/spree/admin/properties/new.html.haml b/app/views/spree/admin/properties/new.html.haml new file mode 100644 index 0000000000..12746d9c5c --- /dev/null +++ b/app/views/spree/admin/properties/new.html.haml @@ -0,0 +1,10 @@ += render partial: 'spree/admin/shared/product_sub_menu' + += render partial: 'spree/shared/error_messages', locals: { target: @property } + += form_for [:admin, @property] do |f| + %fieldset + %legend{align: "center"}= t('.new_property') + = render partial: 'form', locals: { f: f } + .filter-actions + = render partial: 'spree/admin/shared/new_resource_links' diff --git a/config/locales/en.yml b/config/locales/en.yml index d8842c849e..35acc566fb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2993,6 +2993,20 @@ See the %{link} to find out more about %{sitename}'s features and to start using inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" add_product_properties: "Add Product Properties" select_from_prototype: "Select From Prototype" + properties: + index: + properties: "Properties" + new_property: "New Property" + name: "Name" + presentation: "Presentation" + new: + new_property: "New Property" + edit: + editing_property: "Editing Property" + back_to_properties_list: "Back To Properties List" + form: + name: "Name" + presentation: "Presentation" orders: index: listing_orders: "Listing Orders" From 215f2897f3b08649d32a9ae2f08338c6fbd7ee10 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 8 Nov 2019 17:48:49 +0000 Subject: [PATCH 4/5] Bring Property model from spree core --- app/models/spree/property.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 app/models/spree/property.rb diff --git a/app/models/spree/property.rb b/app/models/spree/property.rb new file mode 100644 index 0000000000..29bf3b33fc --- /dev/null +++ b/app/models/spree/property.rb @@ -0,0 +1,21 @@ +module Spree + class Property < ActiveRecord::Base + has_and_belongs_to_many :prototypes, join_table: 'spree_properties_prototypes' + + has_many :product_properties, dependent: :destroy + has_many :products, through: :product_properties + + attr_accessible :name, :presentation + + validates :name, :presentation, presence: true + + scope :sorted, -> { order(:name) } + + def self.find_all_by_prototype(prototype) + id = prototype + id = prototype.id if prototype.class == Prototype + joins("LEFT JOIN properties_prototypes ON property_id = #{self.table_name}.id"). + where(prototype_id: id) + end + end +end From de1d7f2877352f01da95fda9b8cb27c196c0dc87 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 8 Nov 2019 17:49:35 +0000 Subject: [PATCH 5/5] Remove references to prototype (inexistent in OFN) in model properties --- app/models/spree/property.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/models/spree/property.rb b/app/models/spree/property.rb index 29bf3b33fc..514de54313 100644 --- a/app/models/spree/property.rb +++ b/app/models/spree/property.rb @@ -1,7 +1,5 @@ module Spree class Property < ActiveRecord::Base - has_and_belongs_to_many :prototypes, join_table: 'spree_properties_prototypes' - has_many :product_properties, dependent: :destroy has_many :products, through: :product_properties @@ -10,12 +8,5 @@ module Spree validates :name, :presentation, presence: true scope :sorted, -> { order(:name) } - - def self.find_all_by_prototype(prototype) - id = prototype - id = prototype.id if prototype.class == Prototype - joins("LEFT JOIN properties_prototypes ON property_id = #{self.table_name}.id"). - where(prototype_id: id) - end end end