workarea-admin 3.5.0 → 3.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/view_models/workarea/admin/content_view_model.rb +23 -2
- data/app/view_models/workarea/admin/dashboards/marketing_view_model.rb +9 -5
- data/app/views/workarea/admin/content/_edit.html.haml +2 -2
- data/app/views/workarea/admin/create_releases/setup.html.haml +1 -1
- data/app/views/workarea/admin/releases/_publish.html.haml +1 -1
- data/app/views/workarea/admin/releases/edit.html.haml +1 -1
- data/test/dummy/tmp/screenshots/.keep +0 -0
- data/test/system/workarea/admin/content_system_test.rb +0 -46
- data/test/view_models/workarea/admin/content_view_model_test.rb +25 -0
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb536eb2ddc3f8671312c61b42ab98cd2b22b2bdf430976a7ea6985e87925043
|
4
|
+
data.tar.gz: babe1c17567016f9cc95f3a95cb4b7285d6abb8a8360b9a4f60d3ae8c4720245
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d5b3e614913fae1bb119973806d4c720f8c1dcdaf79334be6b5b40ed75475bd273562b4279d0ccbbe8c8f5a2d90428eafea2d47517fd471e460c03da18faf4e
|
7
|
+
data.tar.gz: fb4002effffbad7bdf6d57164306bc872b27e278e103c2febd887b87ee5490c7a61872b4cd6ff4cf27a16c8b7ac0353c4edf6aa1e6a5d4e7f434857f7c0be82f
|
@@ -80,8 +80,29 @@ module Workarea
|
|
80
80
|
#
|
81
81
|
# @return [Boolean]
|
82
82
|
#
|
83
|
-
def new_block?
|
84
|
-
options[:new_block].present?
|
83
|
+
def new_block?(at: nil)
|
84
|
+
return false unless options[:new_block].present?
|
85
|
+
at.blank? || new_block.position == at
|
86
|
+
end
|
87
|
+
|
88
|
+
# HACK
|
89
|
+
#
|
90
|
+
# This method returns whether we can reliably determine the position of
|
91
|
+
# the new block being added. This can be very difficult to generate due to
|
92
|
+
# possible resorting of blocks within a release combined with release
|
93
|
+
# previewing based on publishing time.
|
94
|
+
#
|
95
|
+
# The only time this has caused an issue in use is adding a new first
|
96
|
+
# block, so this is used in combination with the above `new_block?` to
|
97
|
+
# decide whether to render the first block.
|
98
|
+
#
|
99
|
+
# @return [Boolean]
|
100
|
+
#
|
101
|
+
def ambiguous_new_block_position?
|
102
|
+
return false unless options[:new_block].present?
|
103
|
+
|
104
|
+
known_positions = [0] + current_blocks.map { |b| b.position + 1 }
|
105
|
+
known_positions.exclude?(new_block.position)
|
85
106
|
end
|
86
107
|
|
87
108
|
# An instance of the new block being created.
|
@@ -37,17 +37,17 @@ module Workarea
|
|
37
37
|
{
|
38
38
|
'$match' => {
|
39
39
|
'created_at' => {
|
40
|
-
'$gte' => starts_at.beginning_of_day,
|
41
|
-
'$lte' => ends_at.end_of_day
|
40
|
+
'$gte' => starts_at.beginning_of_day.utc,
|
41
|
+
'$lte' => ends_at.end_of_day.utc
|
42
42
|
}
|
43
43
|
}
|
44
44
|
},
|
45
45
|
{
|
46
46
|
'$group' => {
|
47
47
|
'_id' => {
|
48
|
-
'day' => { '$dayOfMonth' =>
|
49
|
-
'month' => { '$month' =>
|
50
|
-
'year' => { '$year' =>
|
48
|
+
'day' => { '$dayOfMonth' => created_at_in_time_zone },
|
49
|
+
'month' => { '$month' => created_at_in_time_zone },
|
50
|
+
'year' => { '$year' => created_at_in_time_zone }
|
51
51
|
},
|
52
52
|
'created_at' => { '$first' => '$created_at' },
|
53
53
|
'count' => { '$sum' => 1 }
|
@@ -61,6 +61,10 @@ module Workarea
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
def created_at_in_time_zone
|
65
|
+
{ 'date' => '$created_at', 'timezone' => Time.zone.tzinfo.name }
|
66
|
+
end
|
67
|
+
|
64
68
|
def insights
|
65
69
|
@insights ||= InsightViewModel.wrap(
|
66
70
|
Workarea::Insights::Base.by_dashboard('marketing').page(options[:page])
|
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
- else
|
32
32
|
.content-editor__area
|
33
|
-
- if content.new_block?
|
33
|
+
- if content.new_block?(at: 0) || content.ambiguous_new_block_position?
|
34
34
|
.content-block{ id: dom_id(content.new_block), data: { content_block: storefront.draft_content_block_path(content.new_block_draft) }, class: ('content-block--active' if content.new_block?), style: "order: #{content.new_block.position}" }
|
35
35
|
.content-block__iframe-placeholder
|
36
36
|
= form_tag content_area_blocks_path(content, content.current_area), method: :post, class: 'content-editor__form', data: { content_editor_form: { previewId: "##{dom_id(content.new_block)}", params: { 'block[content_id]': content.id, 'block[type_id]': content.new_block.type_id, 'block[area]': content.current_area } }.to_json, unsaved_changes: '' } do
|
@@ -54,7 +54,7 @@
|
|
54
54
|
= form_tag content_area_block_path(content, content.current_area, block), method: :patch, class: 'content-editor__form', data: { content_editor_form: { previewId: "##{dom_id(block)}", params: { 'block[content_id]': content.id, 'block[type_id]': block.type_id, 'block[area]': content.current_area } }.to_json, unsaved_changes: '' } do
|
55
55
|
= render 'workarea/admin/content/form', content: content, block: block
|
56
56
|
|
57
|
-
- if content.new_block?
|
57
|
+
- if content.new_block?(at: block.position + 1)
|
58
58
|
.content-block{ id: dom_id(content.new_block), data: { content_block: storefront.draft_content_block_path(content.new_block_draft) }, class: ('content-block--active' if content.new_block?), style: "order: #{content.new_block.position}" }
|
59
59
|
.content-block__iframe-placeholder
|
60
60
|
= form_tag content_area_blocks_path(content, content.current_area), method: :post, class: 'content-editor__form', data: { content_editor_form: { previewId: "##{dom_id(content.new_block)}", params: { 'block[content_id]': content.id, 'block[type_id]': content.new_block.type_id, 'block[area]': content.current_area } }.to_json, unsaved_changes: '' } do
|
@@ -28,7 +28,7 @@
|
|
28
28
|
.grid__cell.grid__cell--50-at-medium
|
29
29
|
.property
|
30
30
|
= label_tag 'release_publish_at', t('workarea.admin.fields.publish_at'), class: 'property__name'
|
31
|
-
.box.box--rounded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true } }
|
31
|
+
.box.box--rounded= hidden_field_tag 'release[publish_at]', @release.publish_at, data: { datetimepicker_field: { inline: true, uiOptions: { minDate: 0 } } }
|
32
32
|
|
33
33
|
.workflow-bar
|
34
34
|
.grid.grid--middle
|
@@ -28,4 +28,4 @@
|
|
28
28
|
- if current_user.can_publish_now?
|
29
29
|
.property
|
30
30
|
= label_tag 'release[publish_at]', t('workarea.admin.releases.publish.when_does_it_publish'), class: 'property__name'
|
31
|
-
= hidden_field_tag 'release[publish_at]', nil, placeholder: t('workarea.admin.releases.publish.when_does_it_publish'), data: { datetimepicker_field: { inline: true } }
|
31
|
+
= hidden_field_tag 'release[publish_at]', nil, placeholder: t('workarea.admin.releases.publish.when_does_it_publish'), data: { datetimepicker_field: { inline: true, uiOptions: { minDate: 0 } }.to_json }
|
@@ -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.box--padded= 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, uiOptions: { minDate: 0 } } }
|
41
41
|
- elsif @release.publish_at.present?
|
42
42
|
= local_time(@release.publish_at)
|
43
43
|
- else
|
File without changes
|
@@ -63,52 +63,6 @@ module Workarea
|
|
63
63
|
assert(page.has_selector?('.ui-sortable'))
|
64
64
|
end
|
65
65
|
|
66
|
-
def test_active_by_segment
|
67
|
-
create_life_cycle_segments
|
68
|
-
create_content(name: 'home_page')
|
69
|
-
|
70
|
-
visit admin.content_index_path
|
71
|
-
click_link 'Home Page'
|
72
|
-
within '.card--content' do
|
73
|
-
click_link 'Content'
|
74
|
-
end
|
75
|
-
|
76
|
-
click_link 'add_new_block'
|
77
|
-
click_link 'HTML'
|
78
|
-
|
79
|
-
fill_in 'block[data][html]', with: '<h1>Some Content!</h1>'
|
80
|
-
click_button 'create_block'
|
81
|
-
assert(page.has_content?('Success'))
|
82
|
-
|
83
|
-
find('.content-block-list__name', text: 'HTML').click
|
84
|
-
find('.tabs__menu-link', text: t('workarea.admin.content.form.display')).click
|
85
|
-
|
86
|
-
within '.tabs__panel' do
|
87
|
-
find('.select2-selection--multiple').click
|
88
|
-
end
|
89
|
-
|
90
|
-
find('.select2-results__option:first-of-type').click
|
91
|
-
|
92
|
-
find('body').click # close the select2 UI
|
93
|
-
|
94
|
-
click_button t('workarea.admin.form.save_changes')
|
95
|
-
assert(page.has_content?('Success'))
|
96
|
-
|
97
|
-
find('.content-block-list__name', text: 'HTML').click
|
98
|
-
click_link t('workarea.admin.content.form.display')
|
99
|
-
|
100
|
-
assert_selector('.select2-selection__choice')
|
101
|
-
find('.select2-selection__choice__remove').click
|
102
|
-
|
103
|
-
click_button t('workarea.admin.form.save_changes')
|
104
|
-
assert(page.has_content?('Success'))
|
105
|
-
|
106
|
-
find('.content-block-list__name', text: 'HTML').click
|
107
|
-
click_link t('workarea.admin.content.form.display')
|
108
|
-
|
109
|
-
refute_selector('.select2-selection__choice')
|
110
|
-
end
|
111
|
-
|
112
66
|
def test_managing_content_blocks_for_a_release
|
113
67
|
home = create_content(name: 'home_page', blocks: [])
|
114
68
|
release = create_release(name: 'Foo')
|
@@ -106,6 +106,31 @@ module Workarea
|
|
106
106
|
|
107
107
|
refute(og_asset.open_graph_placeholder?)
|
108
108
|
end
|
109
|
+
|
110
|
+
def test_ambiguous_new_block_position
|
111
|
+
content = create_content
|
112
|
+
refute(ContentViewModel.wrap(content).ambiguous_new_block_position?)
|
113
|
+
|
114
|
+
new_block_params = { type_id: 'text', position: 0 }
|
115
|
+
view_model = ContentViewModel.wrap(content, new_block: new_block_params)
|
116
|
+
refute(view_model.ambiguous_new_block_position?)
|
117
|
+
|
118
|
+
view_model = ContentViewModel.wrap(content, new_block: new_block_params.merge(position: 1))
|
119
|
+
assert(view_model.ambiguous_new_block_position?)
|
120
|
+
|
121
|
+
release = create_release
|
122
|
+
content.blocks.create!(type_id: 'text', position: 0, activate_with: release.id)
|
123
|
+
content.blocks.create!(type_id: 'text', position: 1)
|
124
|
+
|
125
|
+
view_model = ContentViewModel.wrap(content, new_block: new_block_params)
|
126
|
+
refute(view_model.ambiguous_new_block_position?)
|
127
|
+
|
128
|
+
view_model = ContentViewModel.wrap(content, new_block: new_block_params.merge(position: 1))
|
129
|
+
assert(view_model.ambiguous_new_block_position?)
|
130
|
+
|
131
|
+
view_model = ContentViewModel.wrap(content, new_block: new_block_params.merge(position: 2))
|
132
|
+
refute(view_model.ambiguous_new_block_position?)
|
133
|
+
end
|
109
134
|
end
|
110
135
|
end
|
111
136
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workarea-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Crouse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: workarea-core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.5.
|
19
|
+
version: 3.5.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.5.
|
26
|
+
version: 3.5.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: workarea-storefront
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.5.
|
33
|
+
version: 3.5.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.5.
|
40
|
+
version: 3.5.1
|
41
41
|
description: Provides site administration functionality for the Workarea Commerce
|
42
42
|
Platform.
|
43
43
|
email:
|
@@ -1284,6 +1284,7 @@ files:
|
|
1284
1284
|
- test/dummy/public/500.html
|
1285
1285
|
- test/dummy/public/favicon.ico
|
1286
1286
|
- test/dummy/script/rails
|
1287
|
+
- test/dummy/tmp/screenshots/.keep
|
1287
1288
|
- test/helpers/workarea/admin/application_helper_test.rb
|
1288
1289
|
- test/helpers/workarea/admin/facets_helper_test.rb
|
1289
1290
|
- test/helpers/workarea/admin/icons_helper_test.rb
|