workarea-admin 3.5.0.beta.1 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/workarea/admin/config.js.erb +12 -4
- data/app/assets/javascripts/workarea/admin/modules/impersonation_notification.js +1 -3
- data/app/assets/javascripts/workarea/admin/modules/selects.js +11 -1
- data/app/assets/javascripts/workarea/admin/modules/timeline_report_chart.js +69 -5
- data/app/assets/javascripts/workarea/admin/modules/toggle_elements.js +2 -2
- data/app/assets/javascripts/workarea/admin/modules/tooltips.js +18 -3
- data/app/assets/javascripts/workarea/admin/templates/chart_legend.jst.ejs +2 -1
- data/app/assets/stylesheets/workarea/admin/application.scss.erb +1 -0
- data/app/assets/stylesheets/workarea/admin/components/_button.scss +7 -0
- data/app/assets/stylesheets/workarea/admin/components/_chart_legend.scss +18 -1
- data/app/assets/stylesheets/workarea/admin/components/_timeline_report.scss +30 -0
- data/app/assets/stylesheets/workarea/admin/settings/_grid.scss +1 -0
- data/app/controllers/workarea/admin/content_assets_controller.rb +1 -3
- data/app/controllers/workarea/admin/custom_events_controller.rb +41 -0
- data/app/controllers/workarea/admin/data_file_imports_controller.rb +1 -1
- data/app/controllers/workarea/admin/guest_browsings_controller.rb +1 -2
- data/app/controllers/workarea/admin/segmentables_controller.rb +12 -0
- data/app/helpers/workarea/admin/activities_helper.rb +1 -1
- data/app/helpers/workarea/admin/application_helper.rb +15 -0
- data/app/helpers/workarea/admin/facets_helper.rb +3 -0
- data/app/helpers/workarea/admin/icons_helper.rb +12 -3
- data/app/helpers/workarea/admin/segments_helper.rb +12 -1
- data/app/view_models/workarea/admin/alerts_view_model.rb +12 -1
- data/app/view_models/workarea/admin/reports/timeline_view_model.rb +77 -13
- data/app/view_models/workarea/admin/segment_view_model.rb +15 -0
- data/app/views/layouts/workarea/admin/application.html.haml +8 -2
- data/app/views/workarea/admin/activities/_create.html.haml +1 -1
- data/app/views/workarea/admin/activities/_destroy.html.haml +1 -1
- data/app/views/workarea/admin/activities/_update.html.haml +1 -1
- data/app/views/workarea/admin/catalog_categories/_cards.html.haml +1 -1
- data/app/views/workarea/admin/catalog_categories/index.html.haml +1 -1
- data/app/views/workarea/admin/catalog_products/_cards.html.haml +1 -1
- data/app/views/workarea/admin/catalog_products/index.html.haml +1 -1
- data/app/views/workarea/admin/content/_card.html.haml +3 -0
- data/app/views/workarea/admin/content/_edit.html.haml +11 -3
- data/app/views/workarea/admin/content/_form.html.haml +8 -1
- data/app/views/workarea/admin/content_assets/edit.html.haml +6 -1
- data/app/views/workarea/admin/content_assets/new.html.haml +6 -1
- data/app/views/workarea/admin/content_blocks/_asset.html.haml +3 -2
- data/app/views/workarea/admin/content_pages/_cards.html.haml +1 -1
- data/app/views/workarea/admin/content_pages/index.html.haml +1 -1
- data/app/views/workarea/admin/data_file_imports/new.html.haml +1 -1
- data/app/views/workarea/admin/insights/_cold_searches.html.haml +1 -1
- data/app/views/workarea/admin/insights/_hot_searches.html.haml +1 -1
- data/app/views/workarea/admin/insights/_searches_to_improve.html.haml +1 -1
- data/app/views/workarea/admin/insights/_star_searches.html.haml +1 -1
- data/app/views/workarea/admin/insights/_trending_searches.html.haml +1 -1
- data/app/views/workarea/admin/navigation_menus/index.html.haml +1 -1
- data/app/views/workarea/admin/pricing_discounts/_cards.html.haml +3 -1
- data/app/views/workarea/admin/pricing_discounts/edit.html.haml +16 -5
- data/app/views/workarea/admin/pricing_discounts/index.html.haml +1 -1
- data/app/views/workarea/admin/releases/edit.html.haml +1 -1
- data/app/views/workarea/admin/releases/index.html.haml +25 -0
- data/app/views/workarea/admin/releases/list.html.haml +2 -2
- data/app/views/workarea/admin/reports/timeline.html.haml +89 -1
- data/app/views/workarea/admin/search_customizations/_cards.html.haml +1 -1
- data/app/views/workarea/admin/search_customizations/index.html.haml +1 -1
- data/app/views/workarea/admin/segment_rules/fields/_last_order.html.haml +2 -1
- data/app/views/workarea/admin/segment_rules/fields/_revenue.html.haml +2 -3
- data/app/views/workarea/admin/segment_rules/fields/_traffic_referrer.html.haml +12 -6
- data/app/views/workarea/admin/segment_rules/summaries/_last_order.html.haml +4 -1
- data/app/views/workarea/admin/segment_rules/summaries/_traffic_referrer.html.haml +2 -10
- data/app/views/workarea/admin/segmentables/index.html.haml +46 -0
- data/app/views/workarea/admin/segments/_cards.html.haml +21 -0
- data/app/views/workarea/admin/segments/_publish.html.haml +2 -2
- data/app/views/workarea/admin/shared/_active_field.html.haml +5 -0
- data/app/views/workarea/admin/status_report_mailer/report.html.haml +5 -0
- data/app/views/workarea/admin/toolbar/show.html.haml +1 -0
- data/app/views/workarea/admin/users/index.html.haml +1 -0
- data/config/locales/en.yml +74 -17
- data/config/routes.rb +3 -0
- data/test/helpers/workarea/admin/application_helper_test.rb +24 -0
- data/test/helpers/workarea/admin/facets_helper_test.rb +28 -0
- data/test/integration/workarea/admin/assets_integration_test.rb +4 -2
- data/test/integration/workarea/admin/custom_events_integration_test.rb +54 -0
- data/test/integration/workarea/admin/data_file_imports_integration_test.rb +8 -0
- data/test/integration/workarea/admin/fulfillment_skus_integration_test.rb +2 -2
- data/test/system/workarea/admin/alerts_system_test.rb +7 -3
- data/test/system/workarea/admin/content_system_test.rb +46 -0
- data/test/system/workarea/admin/guest_browsing_system_test.rb +1 -1
- data/test/system/workarea/admin/orders_system_test.rb +3 -3
- data/test/system/workarea/admin/payment_transactions_system_test.rb +3 -3
- data/test/system/workarea/admin/reports_system_test.rb +50 -1
- data/test/system/workarea/admin/segments_system_test.rb +32 -4
- data/test/view_models/workarea/admin/reports/timeline_view_model_test.rb +32 -1
- metadata +14 -8
@@ -24,10 +24,15 @@
|
|
24
24
|
= text_field_tag 'asset[name]', @asset.name, class: 'text-box'
|
25
25
|
|
26
26
|
.property
|
27
|
-
= label_tag 'asset_tag_list',
|
27
|
+
= label_tag 'asset_tag_list', class: 'property__name' do
|
28
|
+
%span= t('workarea.admin.fields.tags')
|
29
|
+
= link_to '#tags-info', data: { tooltip: '' } do
|
30
|
+
= inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
|
28
31
|
= text_field_tag 'asset[tag_list]', @asset.tag_list, class: 'text-box'
|
29
32
|
%span.property__note= t('workarea.admin.content_assets.edit.tags_note')
|
30
33
|
|
34
|
+
#tags-info.tooltip-content= t('workarea.admin.content_assets.edit.tags_tooltip_html')
|
35
|
+
|
31
36
|
.grid.grid--huge
|
32
37
|
.grid__cell.grid__cell--50-at-medium
|
33
38
|
.property
|
@@ -34,10 +34,15 @@
|
|
34
34
|
%span.property__note= t('workarea.admin.content_assets.new.alt_text_note')
|
35
35
|
|
36
36
|
.property
|
37
|
-
= label_tag 'asset_tag_list',
|
37
|
+
= label_tag 'asset_tag_list', class: 'property__name' do
|
38
|
+
%span= t('workarea.admin.fields.tags')
|
39
|
+
= link_to '#tags-info', data: { tooltip: '' } do
|
40
|
+
= inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
|
38
41
|
= text_field_tag 'asset[tag_list]', @asset.tag_list, class: 'text-box'
|
39
42
|
%span.property__note= t('workarea.admin.content_assets.new.tags_note')
|
40
43
|
|
44
|
+
#tags-info.tooltip-content= t('workarea.admin.content_assets.edit.tags_tooltip_html')
|
45
|
+
|
41
46
|
.workflow-bar
|
42
47
|
.grid.grid--auto.grid--right.grid--middle
|
43
48
|
.grid__cell= button_tag t('workarea.admin.content_assets.new.create_asset'), value: 'create_asset', class: 'workflow-bar__button workflow-bar__button--create', data: { disable_with: t('workarea.admin.content_assets.new.create_asset_disabled_text') }
|
@@ -22,9 +22,10 @@
|
|
22
22
|
.asset-picker-field__cell= button_tag t('workarea.admin.content_blocks.asset.clear_asset'), type: 'button', value: 'clear_asset', id: nil, class: 'text-button text-button--destroy', data: { asset_picker_field_clear: '' }
|
23
23
|
|
24
24
|
%span.property__note
|
25
|
-
= t('workarea.admin.content_blocks.asset.alt_text_note')
|
26
25
|
- if asset.alt_text.present?
|
27
|
-
|
26
|
+
= t('workarea.admin.content_blocks.asset.alt_text_note_html', text: asset.alt_text)
|
27
|
+
- else
|
28
|
+
= t('workarea.admin.content_blocks.asset.no_default_alt_text')
|
28
29
|
|
29
30
|
- if field.tooltip.present?
|
30
31
|
.tooltip-content{ id: "#{dom_id(block, field.slug)}_tooltip" }
|
@@ -11,7 +11,7 @@
|
|
11
11
|
%li
|
12
12
|
%strong= t('workarea.admin.fields.active')
|
13
13
|
= check_box_tag 'page', 'active', model.active, disabled: true
|
14
|
-
=
|
14
|
+
= segments_icons_for(model)
|
15
15
|
%li
|
16
16
|
%strong= t('workarea.admin.fields.show_left_navigation')
|
17
17
|
= model.show_navigation?.to_s.titleize
|
@@ -61,7 +61,7 @@
|
|
61
61
|
= link_to result.name, content_page_path(result)
|
62
62
|
= upcoming_changesets_icon_for(result)
|
63
63
|
= comments_icon_for(result)
|
64
|
-
=
|
64
|
+
= segments_icons_for(result)
|
65
65
|
%td
|
66
66
|
- if result.breadcrumbs.blank?
|
67
67
|
%em= t('workarea.admin.fields.no_taxonomy')
|
@@ -35,7 +35,7 @@
|
|
35
35
|
- Workarea.config.data_file_formats.each do |file_type|
|
36
36
|
= link_to_unless @import.file_type.to_s == file_type.to_s, file_type.upcase, url_for(import: { model_type: @import.model_type, file_type: file_type }), data: { turbolinks: false }
|
37
37
|
%br
|
38
|
-
= link_to t('workarea.admin.data_file_imports.new.download_sample'), url_for(params.merge(action: 'sample')) if @import.samples.present?
|
38
|
+
= link_to t('workarea.admin.data_file_imports.new.download_sample'), url_for(params.merge(action: 'sample', format: @import.file_type)) if @import.samples.present?
|
39
39
|
|
40
40
|
- if @import.samples.blank?
|
41
41
|
%p.align-center= t('workarea.admin.data_file_imports.new.no_samples')
|
@@ -16,7 +16,7 @@
|
|
16
16
|
%td.align-center
|
17
17
|
= form_tag search_customizations_path, method: 'post' do
|
18
18
|
= hidden_field_tag 'q', result.query_id, id: nil
|
19
|
-
= button_tag result.
|
19
|
+
= button_tag result.query_string, class: 'button button--small'
|
20
20
|
%td.align-center
|
21
21
|
- unless result.previous_week_revenue.zero?
|
22
22
|
%strong= number_to_currency(result.revenue_change)
|
@@ -16,7 +16,7 @@
|
|
16
16
|
%td.align-center
|
17
17
|
= form_tag search_customizations_path, method: 'post' do
|
18
18
|
= hidden_field_tag 'q', result.query_id, id: nil
|
19
|
-
= button_tag result.
|
19
|
+
= button_tag result.query_string, class: 'button button--small'
|
20
20
|
%td.align-center
|
21
21
|
- if result.previous_week_revenue.zero?
|
22
22
|
\-
|
@@ -16,7 +16,7 @@
|
|
16
16
|
%td.align-center
|
17
17
|
= form_tag search_customizations_path, method: 'post' do
|
18
18
|
= hidden_field_tag 'q', result.query_id, id: nil
|
19
|
-
= button_tag result.
|
19
|
+
= button_tag result.query_string, class: 'button button--small'
|
20
20
|
%td.align-center= insights_number_to_percentage(result.conversion_rate)
|
21
21
|
%td.align-center
|
22
22
|
- if result.searches.blank?
|
@@ -16,6 +16,6 @@
|
|
16
16
|
%td.align-center
|
17
17
|
= form_tag search_customizations_path, method: 'post' do
|
18
18
|
= hidden_field_tag 'q', result.query_id, id: nil
|
19
|
-
= button_tag result.
|
19
|
+
= button_tag result.query_string, class: 'button button--small'
|
20
20
|
%td.align-center= insights_number_to_percentage(result.conversion_rate)
|
21
21
|
%td.align-center= number_with_delimiter(result.searches)
|
@@ -16,6 +16,6 @@
|
|
16
16
|
%td.align-center
|
17
17
|
= form_tag search_customizations_path, method: 'post' do
|
18
18
|
= hidden_field_tag 'q', result.query_id, id: nil
|
19
|
-
= button_tag result.
|
19
|
+
= button_tag result.query_string, class: 'button button--small'
|
20
20
|
%td.align-center= number_with_delimiter result.improving_weeks
|
21
21
|
%td.align-center= number_with_delimiter result.orders
|
@@ -40,7 +40,7 @@
|
|
40
40
|
= link_to navigation_menus_path(menu_id: menu), class: 'navigation-builder__node-link', data: { tooltip: { content_id: "#navigation-builder__tooltip-#{menu.id}", interactive: true, allow_click: true }.to_json } do
|
41
41
|
= inline_svg("workarea/admin/icons/grip.svg", title: t('workarea.admin.navigation_menus.index.drag_to_rearrange'), class: 'navigation-builder__node-icon svg-icon svg-icon--small')
|
42
42
|
%span.navigation-builder__node-text= menu.name
|
43
|
-
=
|
43
|
+
= segments_icons_for(menu)
|
44
44
|
|
45
45
|
.tooltip-content{ id: "navigation-builder__tooltip-#{menu.id}" }
|
46
46
|
.navigation-builder__actions
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%li
|
16
16
|
%strong #{t('workarea.admin.fields.active')}:
|
17
17
|
= check_box_tag 'discount', 'active', model.active, disabled: true
|
18
|
-
=
|
18
|
+
= segments_icons_for(model)
|
19
19
|
%li
|
20
20
|
%strong #{t('workarea.admin.fields.redemptions')}:
|
21
21
|
= model.redemptions.size
|
@@ -137,6 +137,8 @@
|
|
137
137
|
= link_to pricing_discount_redemptions_path(model), class: 'card__button' do
|
138
138
|
%span.button.button--small= t('workarea.admin.pricing_discounts.cards.redemptions.view')
|
139
139
|
|
140
|
+
= append_partials('admin.discount_cards', discount: model, active: local_assigns[:active])
|
141
|
+
|
140
142
|
.grid__cell
|
141
143
|
= render 'workarea/admin/timeline/card', timeline: model.timeline, active: local_assigns[:active]
|
142
144
|
|
@@ -30,12 +30,23 @@
|
|
30
30
|
= text_field_tag 'discount[tag_list]', @discount.tag_list, class: 'text-box'
|
31
31
|
%span.property__note= t('workarea.admin.form.csv_field_note')
|
32
32
|
|
33
|
-
.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
.grid
|
34
|
+
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
35
|
+
.property
|
36
|
+
%span.property__name
|
37
|
+
= t('workarea.admin.fields.active')
|
38
|
+
= inline_svg('workarea/admin/i18n.svg', class: 'svg-icon svg-icon--small') if locale_options.many? && Workarea.config.localized_active_fields
|
39
|
+
= render 'workarea/admin/shared/active_field', scope: 'discount', model: @discount
|
40
|
+
|
41
|
+
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
42
|
+
.property
|
43
|
+
%span.property__name
|
44
|
+
= t('workarea.admin.fields.auto_deactivate')
|
45
|
+
= link_to '#auto-deactivate-info', data: { tooltip: '' } do
|
46
|
+
= inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue')
|
47
|
+
= toggle_button_for 'discount[auto_deactivate]', @discount.auto_deactivate?
|
38
48
|
|
49
|
+
#auto-deactivate-info.tooltip-content= t('workarea.admin.pricing_discounts.edit.auto_deactivate_info', duration: duration_in_words(Workarea.config.discount_staleness_ttl))
|
39
50
|
|
40
51
|
.grid
|
41
52
|
.grid__cell.grid__cell--33.grid__cell--25-at-medium
|
@@ -63,7 +63,7 @@
|
|
63
63
|
= upcoming_changesets_icon_for(result)
|
64
64
|
= comments_icon_for(result)
|
65
65
|
= top_icon_for(result)
|
66
|
-
=
|
66
|
+
= segments_icons_for(result)
|
67
67
|
%td= result.slug.titleize
|
68
68
|
%td.align-center= t("workarea.admin.#{result.single_use?}")
|
69
69
|
%td.align-center= t("workarea.admin.#{result.allow_sale_items?}")
|
@@ -37,7 +37,7 @@
|
|
37
37
|
= label_tag 'release_publish_at', t('workarea.admin.fields.publish_at'), class: 'property__name'
|
38
38
|
|
39
39
|
- if current_user.can_publish_now?
|
40
|
-
.box.box--rounded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true } }
|
40
|
+
.box.box--rounded.box--padded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true } }
|
41
41
|
- elsif @release.publish_at.present?
|
42
42
|
= local_time(@release.publish_at)
|
43
43
|
- else
|
@@ -87,3 +87,28 @@
|
|
87
87
|
|
88
88
|
|
89
89
|
= link_to inline_svg('workarea/admin/icons/arrow_down.svg', title: t('workarea.admin.releases.calendar.next_week'), class: 'calendar__control-icon'), releases_path(start_date: @calendar.next_week), class: 'calendar__control calendar__control--next'
|
90
|
+
|
91
|
+
.workflow-bar
|
92
|
+
.grid.grid--auto.grid--right
|
93
|
+
- calendar_feed_url = calendar_feed_releases_url(token: current_user.token, protocol: 'webcal')
|
94
|
+
.grid__cell= button_tag t('workarea.admin.releases.index.add_to_calendar.link_text'), class: 'workflow-bar__button', data: { add_to_calendar_button: { initial: '#calendar-tooltip', moreInfo: '#google-calendar-info' }.as_json }
|
95
|
+
#calendar-tooltip.tooltip-content.tooltip-content--no-padding
|
96
|
+
.add-to-calendar
|
97
|
+
%ul.add-to-calendar__list
|
98
|
+
%li.add-to-calendar__item
|
99
|
+
= link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large', data: { add_to_calendar_button_toggle: '' } do
|
100
|
+
%span.grid__cell= image_tag 'workarea/admin/icons/google_calendar.svg', size: '24x24'
|
101
|
+
%span.grid__cell
|
102
|
+
%span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.google_calendar')
|
103
|
+
%li.add-to-calendar__item
|
104
|
+
= link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large' do
|
105
|
+
%span.grid__cell= image_tag 'workarea/admin/icons/apple_calendar.svg', size: '24x24'
|
106
|
+
%span.grid__cell
|
107
|
+
%span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.apple_calendar')
|
108
|
+
%li.add-to-calendar__item
|
109
|
+
= link_to calendar_feed_url, class: 'grid grid--auto grid--middle grid--large' do
|
110
|
+
%span.grid__cell= image_tag 'workarea/admin/icons/outlook.svg', size: '24x24'
|
111
|
+
%span.grid__cell
|
112
|
+
%span.add-to-calendar__link= t('workarea.admin.releases.index.add_to_calendar.tooltip.outlook')
|
113
|
+
.hidden
|
114
|
+
#google-calendar-info= t('workarea.admin.releases.index.add_to_calendar.tooltip.google_calendar_instructions_html', calendar_feed_url: calendar_feed_url)
|
@@ -78,9 +78,9 @@
|
|
78
78
|
|
79
79
|
.workflow-bar
|
80
80
|
.grid
|
81
|
-
.grid__cell.grid__cell--
|
81
|
+
.grid__cell.grid__cell--50
|
82
82
|
= render 'workarea/admin/shared/bulk_actions', klass: Workarea::Release, search: @search, import: false, export: false
|
83
|
-
.grid__cell.grid__cell--
|
83
|
+
.grid__cell.grid__cell--50
|
84
84
|
.grid.grid--auto.grid--right
|
85
85
|
- calendar_feed_url = calendar_feed_releases_url(token: current_user.token, protocol: 'webcal')
|
86
86
|
.grid__cell= button_tag t('workarea.admin.releases.index.add_to_calendar.link_text'), class: 'workflow-bar__button', data: { add_to_calendar_button: { initial: '#calendar-tooltip', moreInfo: '#google-calendar-info' }.as_json }
|
@@ -17,4 +17,92 @@
|
|
17
17
|
-# Generated via JS
|
18
18
|
|
19
19
|
.section
|
20
|
-
|
20
|
+
.timeline-report
|
21
|
+
.grid.grid--huge
|
22
|
+
.grid__cell.grid__cell--80-at-medium
|
23
|
+
%canvas#timeline-report{ data: { timeline_report_chart: @report.graph_data.to_json } }
|
24
|
+
|
25
|
+
.grid__cell.grid__cell--20-at-medium
|
26
|
+
.timeline-report__sidebar
|
27
|
+
.timeline-report__sidebar-header
|
28
|
+
.grid.grid--middle
|
29
|
+
.grid__cell.grid__cell--40
|
30
|
+
%strong.heading.heading--3.heading--no-margin
|
31
|
+
= t('workarea.admin.reports.timeline.events')
|
32
|
+
.grid__cell.grid__cell--60
|
33
|
+
.align-right
|
34
|
+
= link_to '#add_custom_event', class: 'button button--create button--tiny', data: { tooltip: { trigger: 'click', interactive: true }.to_json } do
|
35
|
+
%span.grid.grid--auto.grid--middle.grid--tiny
|
36
|
+
%span.grid__cell
|
37
|
+
= t('workarea.admin.reports.timeline.add_custom')
|
38
|
+
%span.grid__cell
|
39
|
+
= inline_svg('workarea/admin/icons/add.svg', class: 'svg-icon svg-icon--white svg-icon--small', title: t('workarea.admin.reports.timeline.add_custom'))
|
40
|
+
|
41
|
+
#add_custom_event.tooltip-content
|
42
|
+
= form_tag report_custom_events_path, method: 'post' do
|
43
|
+
.property
|
44
|
+
= label_tag 'custom_event_name', t('workarea.admin.fields.name'), class: 'property__name'
|
45
|
+
= text_field_tag 'custom_event[name]', nil, class: 'text-box'
|
46
|
+
.property
|
47
|
+
.box.box--rounded.box--padded
|
48
|
+
= hidden_field_tag 'custom_event[occurred_at]', nil, data: { datetimepicker_field: { inline: true } }
|
49
|
+
.align-center
|
50
|
+
= submit_tag t('workarea.admin.reports.timeline.add_custom_event'), class: 'button button--create button--small'
|
51
|
+
|
52
|
+
- if @report.events.empty?
|
53
|
+
%p= t('workarea.admin.reports.timeline.no_events')
|
54
|
+
- else
|
55
|
+
%ol.list-reset
|
56
|
+
- @report.events.each do |date, events|
|
57
|
+
%li.timeline-report__event-group{ data: { timeline_report_chart_event: date.strftime('%Y|%m|%d').split('|') } }
|
58
|
+
%strong= date.strftime('%B %d, %Y')
|
59
|
+
%ul.timeline-report__events-list
|
60
|
+
- events.each do |event|
|
61
|
+
%li
|
62
|
+
= link_to event.name, "##{dom_id(event)}", { data: { tooltip: { trigger: 'click', interactive: true }.to_json } }
|
63
|
+
|
64
|
+
- if @report.events.any?
|
65
|
+
- @report.events.each do |date, events|
|
66
|
+
- events.each do |event|
|
67
|
+
.tooltip-content{ id: dom_id(event) }
|
68
|
+
|
69
|
+
- if event.type == 'release'
|
70
|
+
.card
|
71
|
+
= link_to release_path(id: event.id), class: 'card__header' do
|
72
|
+
%span.card__header-text= event.name
|
73
|
+
.card__body
|
74
|
+
- if event.model.changesets_with_releasable.empty?
|
75
|
+
%p.card__empty-note= t('workarea.admin.reports.timeline.no_planned_changes')
|
76
|
+
- else
|
77
|
+
- event.model.changesets_with_releasable.take(3).each do |changeset|
|
78
|
+
.activity
|
79
|
+
.activity__header
|
80
|
+
.activity__avatar
|
81
|
+
= changeset_icon changeset, { class: 'svg-icon'}
|
82
|
+
.activity__name= changeset.name
|
83
|
+
.activity__time
|
84
|
+
= changeset.publish_humanized
|
85
|
+
- if changeset.release_date.present?
|
86
|
+
= local_time(changeset.release_date, :long)
|
87
|
+
.activity__message
|
88
|
+
.release-changeset.release-changeset--activity
|
89
|
+
.release-changeset__body
|
90
|
+
- changeset.changed_fields.each do |field|
|
91
|
+
= render_changeset_field(changeset, field)
|
92
|
+
|
93
|
+
= link_to release_path(id: event.id), class: 'card__button' do
|
94
|
+
%span.button.button--small= t('workarea.admin.reports.timeline.view_release')
|
95
|
+
- else
|
96
|
+
= form_tag report_custom_event_path(id: event.id), method: 'patch' do
|
97
|
+
.property
|
98
|
+
= label_tag 'custom_event_name', t('workarea.admin.fields.name'), class: 'property__name'
|
99
|
+
= text_field_tag 'custom_event[name]', event.name, class: 'text-box', id: dom_id(event, 'name')
|
100
|
+
.property
|
101
|
+
.box.box--rounded.box--padded
|
102
|
+
= hidden_field_tag 'custom_event[occurred_at]', event.occurred_at, data: { datetimepicker_field: { inline: true } }, id: dom_id(event, 'date_picker')
|
103
|
+
.grid.grid--middle
|
104
|
+
.grid__cell.grid__cell--50
|
105
|
+
= link_to t('workarea.admin.actions.delete'), report_custom_event_path(id: event.id), class: 'text-button text-button--destroy', rel: 'nofollow', data: { method: 'delete' }
|
106
|
+
.grid__cell.grid__cell--50
|
107
|
+
.align-right
|
108
|
+
= submit_tag t('workarea.admin.reports.timeline.update_event'), class: 'button button--create button--small'
|
@@ -11,7 +11,7 @@
|
|
11
11
|
%li
|
12
12
|
%strong= t('workarea.admin.fields.active')
|
13
13
|
= check_box_tag 'customization', 'active', model.active, disabled: true
|
14
|
-
=
|
14
|
+
= segments_icons_for(model)
|
15
15
|
%li
|
16
16
|
%strong= t('workarea.admin.search_customizations.cards.attribtes.search_id')
|
17
17
|
= model.id
|
@@ -53,7 +53,7 @@
|
|
53
53
|
= comments_icon_for(customization)
|
54
54
|
= top_icon_for(customization)
|
55
55
|
= trending_icon_for(customization)
|
56
|
-
=
|
56
|
+
= segments_icons_for(customization)
|
57
57
|
%td= link_to customization.query, search_customization_path(customization)
|
58
58
|
%td.align-center= t("workarea.admin.#{customization.redirect?}")
|
59
59
|
%td.align-center= t("workarea.admin.#{customization.rewrite?}")
|
@@ -1,3 +1,4 @@
|
|
1
|
-
|
1
|
+
= select_tag 'rule[within]', options_for_select(last_order_options, rule.within)
|
2
|
+
%span within the last
|
2
3
|
= number_field_tag 'rule[days]', rule.days.presence || Workarea.config.loyal_customers_last_order_days_ago, class: 'text-box text-box--small'
|
3
4
|
%span days
|
@@ -1,9 +1,8 @@
|
|
1
1
|
%span
|
2
|
-
|
2
|
+
Spent
|
3
3
|
= Money.default_currency.symbol
|
4
4
|
= number_field_tag 'rule[minimum]', rule.minimum, class: 'text-box text-box--small'
|
5
5
|
%span
|
6
|
-
|
6
|
+
to
|
7
7
|
= Money.default_currency.symbol
|
8
8
|
= number_field_tag 'rule[maximum]', rule.maximum, class: 'text-box text-box--small'
|
9
|
-
%span in revenue
|
@@ -1,13 +1,19 @@
|
|
1
|
+
%p= t('workarea.admin.segment_rules.fields.traffic_referrer.note_html')
|
2
|
+
|
1
3
|
.property
|
2
4
|
= label_tag 'rule[medium]', t('workarea.admin.fields.medium'), class: 'property__name'
|
3
5
|
= select_tag 'rule[medium]', options_for_select(traffic_referrer_medium_options, rule.medium)
|
4
6
|
|
5
7
|
.property
|
6
8
|
= label_tag 'rule[source]', t('workarea.admin.fields.source'), class: 'property__name'
|
7
|
-
=
|
9
|
+
= select_tag 'rule[source]', options_for_select(traffic_referrer_source_options, rule.source), multiple: true, data: { select: { placeholder: t('workarea.admin.fields.source') + '...', allowClear: true } }
|
10
|
+
|
11
|
+
.property
|
12
|
+
= label_tag 'rule[url]', t('workarea.admin.fields.url'), class: 'property__name'
|
13
|
+
= text_field_tag 'rule[url]', rule.url, class: 'text-box text-box--wide'
|
8
14
|
%span.property__note
|
9
|
-
= t('workarea.admin.segment_rules.fields.traffic_referrer.
|
10
|
-
= link_to '#
|
11
|
-
= inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue', title: t('workarea.admin.segment_rules.fields.traffic_referrer.
|
12
|
-
#
|
13
|
-
%p= t('workarea.admin.segment_rules.fields.traffic_referrer.
|
15
|
+
= t('workarea.admin.segment_rules.fields.traffic_referrer.url_notes')
|
16
|
+
= link_to '#url-help', data: { tooltip: { interactive: true } } do
|
17
|
+
= inline_svg('workarea/admin/icons/help.svg', class: 'svg-icon svg-icon--small svg-icon--blue', title: t('workarea.admin.segment_rules.fields.traffic_referrer.url'))
|
18
|
+
#url-help.tooltip-content
|
19
|
+
%p= t('workarea.admin.segment_rules.fields.traffic_referrer.url_notes_html')
|
@@ -1,2 +1,5 @@
|
|
1
1
|
%span.text.text--large
|
2
|
-
|
2
|
+
- if rule.within?
|
3
|
+
= t('workarea.admin.segment_rules.summaries.last_order.within_description_html', count: rule.days)
|
4
|
+
- else
|
5
|
+
= t('workarea.admin.segment_rules.summaries.last_order.not_within_description_html', count: rule.days)
|
@@ -1,10 +1,2 @@
|
|
1
|
-
|
2
|
-
%
|
3
|
-
%span #{t('workarea.admin.fields.medium')}:
|
4
|
-
%strong= rule.medium.titleize
|
5
|
-
,
|
6
|
-
|
7
|
-
- if rule.source.present?
|
8
|
-
%span.text.text--large
|
9
|
-
%span #{t('workarea.admin.fields.source')}:
|
10
|
-
%strong= rule.source
|
1
|
+
%span.text.text--large
|
2
|
+
%strong= [rule.medium.try(:titleize), rule.source, rule.url].flatten.reject(&:blank?).to_sentence
|
@@ -0,0 +1,46 @@
|
|
1
|
+
- @page_title = t('workarea.admin.segmentables.index.title', name: @segment.name)
|
2
|
+
|
3
|
+
.view
|
4
|
+
.view__header
|
5
|
+
.grid.grid--center
|
6
|
+
.grid__cell.grid__cell--50
|
7
|
+
.view__heading
|
8
|
+
= link_to_index_for(@segment)
|
9
|
+
%h1= @segment.name
|
10
|
+
|
11
|
+
.view__container
|
12
|
+
= render_cards_for(@segment, :content)
|
13
|
+
|
14
|
+
.section
|
15
|
+
- if @search.results.empty?
|
16
|
+
.grid.grid--center
|
17
|
+
.grid__cell.grid__cell--50
|
18
|
+
%h2.align-center= t('workarea.admin.segmentables.index.no_content')
|
19
|
+
%p.align-center= t('workarea.admin.segmentables.index.no_content_instructions_html')
|
20
|
+
|
21
|
+
- else
|
22
|
+
%h2.align-center= t('workarea.admin.segmentables.index.title', name: @segment.name)
|
23
|
+
.browsing-controls.browsing-controls--with-divider.browsing-controls--center{ class: ('browsing-controls--filters-displayed' unless @search.toggle_facets?) }
|
24
|
+
= form_tag search_path, method: 'get', class: 'browsing-controls__form' do
|
25
|
+
= facet_hidden_inputs(@search.facets)
|
26
|
+
.browsing-controls__sort
|
27
|
+
.property.property--inline
|
28
|
+
= label_tag 'sort', t('workarea.admin.searches.show.sort_by'), class: 'property__name'
|
29
|
+
= select_tag :sort, options_for_select(@search.sorts, selected: @search.sort), data: { form_submitting_control: '' }
|
30
|
+
|
31
|
+
.browsing-controls__search
|
32
|
+
.search-form
|
33
|
+
= text_field_tag :q, params[:q], class: 'search-form__input', id: 'search_again', title: t('workarea.admin.search.keywords'), placeholder: t('workarea.admin.search.keywords')
|
34
|
+
= submit_tag 'search_again', class: 'search-form__button'
|
35
|
+
|
36
|
+
%p.browsing-controls__count= pluralize(@search.results.total, 'result')
|
37
|
+
|
38
|
+
- if @search.results.present?
|
39
|
+
- if @search.results.any?
|
40
|
+
.section
|
41
|
+
.grid.grid--auto.grid--flush.grid--center
|
42
|
+
- @search.results.each do |result|
|
43
|
+
.grid__cell= render_summary_for(result)
|
44
|
+
|
45
|
+
- if @search.results.total_pages > 1
|
46
|
+
= render 'workarea/admin/shared/pagination', collection: @search.results
|