workarea-product_additional_details 0.0.0 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be13c908ad82859fbb0828351fab50a8dd2c9b224837696c340a17785a2caa74
4
- data.tar.gz: 5c6eb0fb3ac0baaf6da83afbb790437684616038f606a9fd2fae276e19260ec3
3
+ metadata.gz: 3e32fb4aa2ee62c3a078705fefaea2ef450045c1e0c1f5bc8a94a6b863b127d1
4
+ data.tar.gz: 0bfb0b25296d8e2a43344b8d25ff4ba8134b8d928848b1782aecd5cfbc7357ec
5
5
  SHA512:
6
- metadata.gz: a2ad0cf2c1e7ea9ea5af7efd362dcc0d116704a994e19d8b85f77141d53c4c1e3c3c8d8132b2c626ebb7475b33ff1c4664d377590f5bbac77318ed2a5dd2d8c5
7
- data.tar.gz: 2a220464e42c9137035ca1a29feab91f2e4aca932951cc2e0a98641a348f0662a855ac0f6a8958aca63abacd02ebf7a7bd0a9f74f5483235efa8a84a6b11edd5
6
+ metadata.gz: cce05ae4d79ee4fb86dc6e5ce0c9a5926378f03b0c64b3e92fc4e64cfec4b4f10f8828ecd0276534a7e301bbf35e44d884cec5810743616bd9c3dcd58729e8c7
7
+ data.tar.gz: f5bc178e62b40e097e4897b50fc52415d628f883361fcba5106ccf1384bae3ecc3da8f8c79a6b46b7bff16afd8c489c93afa7dbe475f599ca72a1e5c11d6fbcc
@@ -0,0 +1,54 @@
1
+ /*------------------------------------*\
2
+ #TABLES
3
+ \*------------------------------------*/
4
+
5
+ $table-border-color: $border-color !default;
6
+
7
+ $table-header-color: $dark-gray !default;
8
+ $table-cell-color: $font-color !default;
9
+
10
+ $table-row-hover-bg-color: $light-gray !default;
11
+
12
+
13
+ /**
14
+ * 1. various types of content will be found wrapped in paragraph tags within
15
+ * tables
16
+ */
17
+ table {
18
+ margin-bottom: $vertical-margin;
19
+ width: 100%;
20
+ border-collapse: collapse;
21
+
22
+ p { /* [1] */
23
+ margin: 0;
24
+ }
25
+
26
+ p + p { /* [1] */
27
+ margin-top: $spacing-unit;
28
+ }
29
+ }
30
+
31
+
32
+ tr {
33
+ tbody &:hover {
34
+ background: $table-row-hover-bg-color;
35
+ }
36
+ }
37
+
38
+ th, td {
39
+ padding: $spacing-unit;
40
+ text-align: left;
41
+ border-bottom: 1px solid $table-border-color;
42
+ vertical-align: baseline;
43
+ .bottom-align & {
44
+ vertical-align: top;
45
+ }
46
+ }
47
+
48
+ th {
49
+ color: $table-header-color;
50
+ }
51
+
52
+ td {
53
+ color: $table-cell-color;
54
+ }
@@ -0,0 +1,33 @@
1
+ module Workarea
2
+ decorate Admin::CatalogProductsController, with: :design_toscano do
3
+ decorated do
4
+ # Place code to decorate here that would normally go on the class
5
+ # level, e.g.:
6
+ #
7
+ # field :name, type: String
8
+ end
9
+
10
+ class_methods do
11
+ # Place methods to define on the class level here. These methods
12
+ # will be available by calling Admin::CatalogProductsController.your_method. Do
13
+ # not prefix these methods with `self.`
14
+ end
15
+
16
+ def update
17
+ set_additional_details
18
+ super
19
+ end
20
+
21
+ def set_additional_details
22
+ @product.additional_details = HashUpdate.new(
23
+ original: @product.additional_details,
24
+ adds: params[:new_additional_details],
25
+ updates: params[:additional_details],
26
+ removes: params[:additional_details_to_remove]
27
+ ).result_grouped
28
+ end
29
+ # Instance methods can go right in the main definition of the
30
+ # decorator, as it is a module that gets prepended into the class of
31
+ # your choice.
32
+ end
33
+ end
@@ -0,0 +1,10 @@
1
+ module Workarea
2
+ decorate Admin::CreateCatalogProductsController, with: :design_toscano do
3
+ def save_details
4
+ @product.additional_details = HashUpdate
5
+ .new(original: @product.additional_details, updates: params[:additional_details])
6
+ .result_grouped
7
+ super
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module Workarea
2
+ decorate Catalog::Product, with: :design_toscano do
3
+ decorated do
4
+ field :additional_details, type: Hash, default: {}, localize: true
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,43 @@
1
+ module Workarea
2
+ decorate HashUpdate, with: :design_toscano do
3
+ decorated do
4
+ # Place code to decorate here that would normally go on the class
5
+ # level, e.g.:
6
+ #
7
+ # field :name, type: String
8
+ end
9
+
10
+ class_methods do
11
+ # Place methods to define on the class level here. These methods
12
+ # will be available by calling HashUpdate.your_method. Do
13
+ # not prefix these methods with `self.`
14
+ end
15
+
16
+ def result_grouped
17
+ apply_to_grouped(@original.deep_dup)
18
+ end
19
+
20
+ private
21
+
22
+ def apply_to_grouped(hash)
23
+ @adds.each do |tuple|
24
+ key, value = *tuple
25
+ hash[key] = value
26
+ end
27
+
28
+ @updates.each do |tuple|
29
+ key, value = *tuple
30
+ hash[key] = value
31
+ end
32
+
33
+ @removes.each do |key|
34
+ hash.delete(key)
35
+ end
36
+
37
+ hash.delete_if { |k, v| k.blank? || v.blank? }
38
+ end
39
+ # Instance methods can go right in the main definition of the
40
+ # decorator, as it is a module that gets prepended into the class of
41
+ # your choice.
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ .section.section--additional-details
2
+ %h2= "Additional Details"
3
+
4
+ %table
5
+ %thead
6
+ %tr
7
+ %th= t('workarea.admin.catalog_products.edit.details.name')
8
+ %th= "Content"
9
+ %th.align-center= t('workarea.admin.actions.delete')
10
+ %tbody.bottom-align
11
+ - product.additional_details.each do |name, value|
12
+ %tr
13
+ %td
14
+ .property
15
+ = label_tag "details_#{name}" do
16
+ #{name}
17
+ %td
18
+ .property
19
+ = hidden_field_tag 'additional_details[]', name, id: nil
20
+ = text_area_tag 'additional_details[]', value, class: 'text-box text-box--i18n', id: nil
21
+ %td.align-center= check_box_tag 'additional_details_to_remove[]', name, false, id: nil, title: "#{t('workarea.admin.actions.delete')}: #{name} #{value}"
22
+ %tr{ data: { cloneable_row: '' } }
23
+ %td
24
+ .property
25
+ = text_field_tag 'new_additional_details[]', nil, id: nil, class: 'text-box text-box--i18n', title: t('workarea.admin.catalog_products.edit.details.new_attribute_name'), placeholder: t('workarea.admin.catalog_products.edit.details.new_attribute_name_placeholder')
26
+ %span.property__note= "Example: User Manual"
27
+ %td
28
+ .property
29
+ = text_area_tag 'new_additional_details[]', nil, id: nil, class: 'text-box text-box--i18n', title: t('workarea.admin.catalog_products.edit.details.new_attribute_value'), placeholder: t('workarea.admin.catalog_products.edit.details.new_attribute_value_placeholder')
30
+ %span.property__note= "Example: <a href='/manuals'>Download Manuals</a>"
31
+ %td.align-center -
@@ -0,0 +1,114 @@
1
+ - @page_title = t('workarea.admin.create_catalog_products.details.page_title', product_name: @product.name)
2
+
3
+ .view
4
+ .view__header
5
+ .grid.grid--right
6
+ .grid__cell.grid__cell--50
7
+ .view__heading
8
+ %h1.heading.heading--no-margin= t('workarea.admin.create_catalog_products.details.add_details', product_name: @product.name)
9
+ %p= link_to t('workarea.admin.create_catalog_products.details.or_skip_this'), content_create_catalog_product_path(@product)
10
+ .grid__cell.grid__cell--25
11
+ = render_aux_navigation_for(@product, html_options: { target: @product.id })
12
+
13
+ .view__container.view__container--narrow
14
+ = form_tag save_details_create_catalog_product_path(@product), method: 'post' do
15
+ .grid.grid--huge
16
+ .grid__cell.grid__cell--50-at-medium
17
+ .section
18
+ %h2= t('workarea.admin.create_catalog_products.details.filters')
19
+
20
+ %table
21
+ %tbody
22
+ - @filters.each do |name, value|
23
+ %tr
24
+ %td
25
+ .property
26
+ = text_field_tag 'filters[]', name, class: 'text-box text-box--i18n', title: 'New Filter Name', placeholder: 'Name', pattern: Workarea.config.product_filter_input_validation_pattern, id: nil
27
+ %td
28
+ .property
29
+ = text_field_tag 'filters[]', hash_editing_value(value), class: 'text-box text-box--i18n', title: 'New Filter Value', placeholder: 'Value', id: nil
30
+
31
+ %tr{ data: { cloneable_row: '' } }
32
+ %td
33
+ .property
34
+ = text_field_tag 'filters[]', nil, class: 'text-box text-box--i18n', title: 'New Filter Name', placeholder: 'Name', pattern: Workarea.config.product_filter_input_validation_pattern, id: nil
35
+ %span.property__note= t('workarea.admin.create_catalog_products.details.example_color')
36
+ %td
37
+ .property
38
+ = text_field_tag 'filters[]', nil, class: 'text-box text-box--i18n', title: 'New Filter Value', placeholder: 'Value', id: nil
39
+ %span.property__note= t('workarea.admin.create_catalog_products.details.comma_separated_red_green')
40
+
41
+ .grid__cell.grid__cell--50-at-medium
42
+ .section
43
+ %h2= t('workarea.admin.create_catalog_products.details.details')
44
+
45
+ %table
46
+ %tbody
47
+ - @product.details.each do |name, value|
48
+ %tr
49
+ %td
50
+ .property
51
+ = text_field_tag 'details[]', name, class: 'text-box text-box--i18n', title: 'Name', placeholder: 'Name', id: nil
52
+ %td
53
+ .property
54
+ = text_field_tag 'details[]', hash_editing_value(value), class: 'text-box text-box--i18n', title: 'Value', placeholder: 'Value', id: nil
55
+ %tr{ data: { cloneable_row: '' } }
56
+ %td
57
+ .property
58
+ = text_field_tag 'details[]', nil, class: 'text-box text-box--i18n', title: 'Name', placeholder: 'Name', id: nil
59
+ %span.property__note= t('workarea.admin.create_catalog_products.details.example_manufactured')
60
+ %td
61
+ .property
62
+ = text_field_tag 'details[]', nil, class: 'text-box text-box--i18n', title: 'Value', placeholder: 'Value', id: nil
63
+ %span.property__note= t('workarea.admin.create_catalog_products.details.example_usa')
64
+
65
+ .grid__cell
66
+ .section
67
+ %h2= "Additional Details"
68
+
69
+ %table
70
+ %tbody.bottom-align
71
+ - @product.additional_details.each do |name, value|
72
+ %tr
73
+ %td
74
+ .property
75
+ = text_field_tag 'additional_details[]', name, class: 'text-box text-box--i18n', title: 'Name', placeholder: 'Name', id: nil
76
+ %td
77
+ .property
78
+ = text_area_tag 'additional_details[]', hash_editing_value(value), class: 'text-box text-box--i18n', title: 'Value', placeholder: 'Value', id: nil
79
+ %tr{ data: { cloneable_row: '' } }
80
+ %td
81
+ .property
82
+ = text_field_tag 'additional_details[]', nil, class: 'text-box text-box--i18n', title: 'Name', placeholder: 'Name', id: nil
83
+ %span.property__note= "Example: User Manual"
84
+ %td
85
+ .property
86
+ = text_area_tag 'additional_details[]', nil, class: 'text-box text-box--i18n', title: 'Value', placeholder: 'Value', id: nil
87
+ %span.property__note= "Example: <a href='/manuals'>Download Manuals</a>"
88
+
89
+ .workflow-bar
90
+ .grid.grid--middle
91
+ .grid__cell.grid__cell--20
92
+ = link_to t('workarea.admin.create_catalog_products.details.cancel'), catalog_product_path(@product), class: 'workflow-bar__button workflow-bar__button--delete', data: { method: 'delete', confirm: t('workarea.admin.create_catalog_products.are_you_sure_all_work_on_this_product_will_be_lost') }
93
+
94
+ .grid__cell.grid__cell--60
95
+
96
+ %ol.workflow-bar__steps
97
+ %li.workflow-bar__step
98
+ 1) #{link_to t('workarea.admin.create_catalog_products.steps.setup'), edit_create_catalog_product_path(@product)}
99
+ %li.workflow-bar__step
100
+ 2) #{link_to t('workarea.admin.create_catalog_products.steps.variants'), variants_create_catalog_product_path(@product)}
101
+ %li.workflow-bar__step
102
+ 2) #{link_to t('workarea.admin.create_catalog_products.steps.images'), images_create_catalog_product_path(@product)}
103
+ %li.workflow-bar__step
104
+ %strong 4) #{t('workarea.admin.create_catalog_products.steps.details')}
105
+ %li.workflow-bar__step
106
+ 5) #{t('workarea.admin.create_catalog_products.steps.content')}
107
+ %li.workflow-bar__step
108
+ 6) #{t('workarea.admin.create_catalog_products.steps.categorization')}
109
+ %li.workflow-bar__step
110
+ 7) #{t('workarea.admin.create_catalog_products.steps.publish')}
111
+
112
+ .grid__cell.grid__cell--20
113
+ .grid.grid--auto.grid--right.grid--middle
114
+ = button_tag t('workarea.admin.create_catalog_products.details.save_details_and_continue'), value: 'save_details', class: 'workflow-bar__button workflow-bar__button--create'
@@ -0,0 +1,4 @@
1
+ Workarea.append_partials(
2
+ 'admin.additional_product_details_information',
3
+ 'workarea/admin/catalog_products/additional_details'
4
+ )
@@ -1,5 +1,5 @@
1
1
  module Workarea
2
2
  module ProductAdditionalDetails
3
- VERSION = "0.0.0".freeze
3
+ VERSION = "0.0.3".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ decorate Catalog::ProductTest, with: :design_toscano do
5
+ # Define additional tests based on new functionality or
6
+ # override tests originally defined in the decorated class for
7
+ # changes that alter default behavior.
8
+ #
9
+ # While calling super to extend a test case is possible, it is
10
+ # recommended that you add a new test or completely override an
11
+ # existing test to avoid ambiguity in your test suite.
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ decorate UserTest, with: :design_toscano do
5
+ # Define additional tests based on new functionality or
6
+ # override tests originally defined in the decorated class for
7
+ # changes that alter default behavior.
8
+ #
9
+ # While calling super to extend a test case is possible, it is
10
+ # recommended that you add a new test or completely override an
11
+ # existing test to avoid ambiguity in your test suite.
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ decorate HashUpdateTest, with: :design_toscano do
5
+ # Define additional tests based on new functionality or
6
+ # override tests originally defined in the decorated class for
7
+ # changes that alter default behavior.
8
+ #
9
+ # While calling super to extend a test case is possible, it is
10
+ # recommended that you add a new test or completely override an
11
+ # existing test to avoid ambiguity in your test suite.
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-product_additional_details
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gunasekaran Raja
@@ -41,14 +41,22 @@ files:
41
41
  - app/assets/images/workarea/storefront/product_additional_details/.keep
42
42
  - app/assets/javascripts/workarea/admin/product_additional_details/.keep
43
43
  - app/assets/javascripts/workarea/storefront/product_additional_details/.keep
44
+ - app/assets/stylesheets/workarea/admin/base/_tables.scss
44
45
  - app/assets/stylesheets/workarea/admin/product_additional_details/.keep
45
46
  - app/assets/stylesheets/workarea/storefront/product_additional_details/.keep
46
47
  - app/controllers/.keep
48
+ - app/controllers/workarea/admin/catalog_products_controller.decorator
49
+ - app/controllers/workarea/admin/create_catalog_products_controller.decorator
47
50
  - app/helpers/.keep
48
51
  - app/mailers/.keep
49
52
  - app/models/.keep
53
+ - app/models/workarea/catalog/product.decorator
54
+ - app/services/workarea/hash_update.decorator
50
55
  - app/views/.keep
56
+ - app/views/workarea/admin/catalog_products/_additional_details.html.haml
57
+ - app/views/workarea/admin/create_catalog_products/details.html.haml
51
58
  - bin/rails
59
+ - config/initializers/appends.rb
52
60
  - config/initializers/workarea.rb
53
61
  - config/routes.rb
54
62
  - lib/workarea/product_additional_details.rb
@@ -96,8 +104,11 @@ files:
96
104
  - test/dummy/db/seeds.rb
97
105
  - test/dummy/lib/assets/.keep
98
106
  - test/dummy/log/.keep
107
+ - test/models/workarea/catalog/product_test.decorator
108
+ - test/models/workarea/user_test.decorator
99
109
  - test/teaspoon_env.rb
100
110
  - test/test_helper.rb
111
+ - test/workarea/hash_update_test.decorator
101
112
  - workarea-product_additional_details.gemspec
102
113
  homepage: https://github.com/trikatechnologies/workarea-product_additional_details
103
114
  licenses: