alchemy_cms 5.0.0.rc2 → 5.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- data/.github/workflows/stale.yml +1 -1
- data/.gitignore +1 -0
- data/.travis.yml +48 -0
- data/CHANGELOG.md +64 -2
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +3 -3
- data/README.md +2 -2
- data/alchemy_cms.gemspec +3 -2
- data/app/assets/images/alchemy/missing-image.svg +1 -0
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -4
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +0 -3
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +29 -4
- data/app/assets/stylesheets/alchemy/_variables.scss +3 -0
- data/app/assets/stylesheets/alchemy/archive.scss +23 -17
- data/app/assets/stylesheets/alchemy/buttons.scss +26 -15
- data/app/assets/stylesheets/alchemy/errors.scss +1 -1
- data/app/assets/stylesheets/alchemy/navigation.scss +7 -10
- data/app/assets/stylesheets/alchemy/pagination.scss +1 -1
- data/app/assets/stylesheets/alchemy/search.scss +12 -2
- data/app/assets/stylesheets/alchemy/selects.scss +4 -2
- data/app/assets/stylesheets/alchemy/tables.scss +38 -9
- data/app/assets/stylesheets/alchemy/tags.scss +19 -31
- data/app/controllers/alchemy/admin/pages_controller.rb +59 -9
- data/app/controllers/alchemy/admin/pictures_controller.rb +13 -6
- data/app/controllers/alchemy/admin/resources_controller.rb +3 -3
- data/app/controllers/alchemy/pages_controller.rb +49 -14
- data/app/helpers/alchemy/admin/base_helper.rb +0 -42
- data/app/helpers/alchemy/admin/navigation_helper.rb +2 -1
- data/app/helpers/alchemy/url_helper.rb +2 -2
- data/app/models/alchemy/attachment.rb +21 -1
- data/app/models/alchemy/attachment/url.rb +40 -0
- data/app/models/alchemy/essence_file.rb +1 -1
- data/app/models/alchemy/essence_picture.rb +4 -4
- data/app/models/alchemy/essence_picture_view.rb +10 -4
- data/app/models/alchemy/page.rb +24 -1
- data/app/models/alchemy/page/page_natures.rb +2 -0
- data/app/models/alchemy/page/url_path.rb +8 -6
- data/app/models/alchemy/picture.rb +58 -2
- data/app/models/alchemy/picture/calculations.rb +55 -0
- data/app/models/alchemy/picture/transformations.rb +5 -49
- data/app/models/alchemy/picture/url.rb +28 -75
- data/app/models/alchemy/picture_thumb.rb +57 -0
- data/app/models/alchemy/picture_thumb/create.rb +39 -0
- data/app/models/alchemy/picture_thumb/signature.rb +23 -0
- data/app/models/alchemy/picture_thumb/uid.rb +22 -0
- data/app/models/alchemy/picture_variant.rb +114 -0
- data/app/models/alchemy/site/layout.rb +30 -2
- data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
- data/app/views/alchemy/admin/dashboard/index.html.erb +13 -16
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +2 -2
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +4 -6
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +19 -29
- data/app/views/alchemy/admin/pages/_form.html.erb +4 -6
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +12 -2
- data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +29 -0
- data/app/views/alchemy/admin/pages/_table.html.erb +27 -0
- data/app/views/alchemy/admin/pages/_table_row.html.erb +107 -0
- data/app/views/alchemy/admin/pages/_toolbar.html.erb +77 -0
- data/app/views/alchemy/admin/pages/edit.html.erb +9 -1
- data/app/views/alchemy/admin/pages/index.html.erb +41 -74
- data/app/views/alchemy/admin/pages/list/_table.html.erb +31 -0
- data/app/views/alchemy/admin/pages/unlock.js.erb +2 -2
- data/app/views/alchemy/admin/pages/update.js.erb +19 -10
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +14 -13
- data/app/views/alchemy/admin/partials/_search_form.html.erb +8 -8
- data/app/views/alchemy/admin/pictures/_archive.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_form.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -3
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
- data/app/views/alchemy/admin/resources/_filter_bar.html.erb +13 -11
- data/app/views/alchemy/admin/resources/_per_page_select.html.erb +3 -3
- data/app/views/alchemy/admin/resources/index.html.erb +24 -22
- data/app/views/alchemy/admin/tags/index.html.erb +14 -15
- data/app/views/alchemy/base/500.html.erb +11 -13
- data/app/views/alchemy/essences/_essence_file_view.html.erb +4 -4
- data/config/alchemy/config.yml +15 -11
- data/config/alchemy/modules.yml +12 -12
- data/config/locales/alchemy.en.yml +6 -4
- data/config/routes.rb +1 -1
- data/db/migrate/20200617110713_create_alchemy_picture_thumbs.rb +22 -0
- data/db/migrate/20200907111332_remove_tri_state_booleans.rb +33 -0
- data/lib/alchemy.rb +66 -0
- data/lib/alchemy/admin/preview_url.rb +2 -0
- data/lib/alchemy/auth_accessors.rb +12 -5
- data/lib/alchemy/config.rb +1 -3
- data/lib/alchemy/engine.rb +7 -6
- data/lib/alchemy/modules.rb +11 -1
- data/lib/alchemy/permissions.rb +1 -0
- data/lib/alchemy/test_support/factories/picture_factory.rb +0 -1
- data/lib/alchemy/test_support/factories/picture_thumb_factory.rb +12 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +2 -3
- data/lib/generators/alchemy/install/files/alchemy.en.yml +2 -2
- data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +5 -5
- data/lib/tasks/alchemy/thumbnails.rake +37 -0
- metadata +41 -13
- data/.github/workflows/ci.yml +0 -134
- data/.github/workflows/greetings.yml +0 -13
- data/app/controllers/concerns/alchemy/locale_redirects.rb +0 -40
- data/app/controllers/concerns/alchemy/page_redirects.rb +0 -68
- data/lib/alchemy/userstamp.rb +0 -12
@@ -1,4 +1,7 @@
|
|
1
|
-
button,
|
1
|
+
button,
|
2
|
+
input[type="submit"],
|
3
|
+
a.button,
|
4
|
+
input.button {
|
2
5
|
@include button-defaults;
|
3
6
|
position: relative;
|
4
7
|
|
@@ -14,7 +17,8 @@ button, input[type="submit"], a.button, input.button {
|
|
14
17
|
);
|
15
18
|
}
|
16
19
|
|
17
|
-
&:active,
|
20
|
+
&:active,
|
21
|
+
&:active:focus {
|
18
22
|
border-color: $button-hover-border-color;
|
19
23
|
box-shadow: none;
|
20
24
|
}
|
@@ -23,7 +27,7 @@ button, input[type="submit"], a.button, input.button {
|
|
23
27
|
&.small {
|
24
28
|
padding: $small-button-padding;
|
25
29
|
vertical-align: inherit;
|
26
|
-
line-height: 4
|
30
|
+
line-height: 4 * $default-padding;
|
27
31
|
font-size: inherit;
|
28
32
|
}
|
29
33
|
|
@@ -83,13 +87,14 @@ button, input[type="submit"], a.button, input.button {
|
|
83
87
|
border: $default-border-width $default-border-style $icon-color;
|
84
88
|
color: $icon-color;
|
85
89
|
|
86
|
-
.icon {
|
90
|
+
.icon {
|
91
|
+
color: inherit;
|
92
|
+
}
|
87
93
|
}
|
88
94
|
}
|
89
95
|
|
90
96
|
&.disabled,
|
91
97
|
&[disabled] {
|
92
|
-
|
93
98
|
span {
|
94
99
|
opacity: 0.3;
|
95
100
|
cursor: not-allowed;
|
@@ -118,7 +123,8 @@ button.icon_button {
|
|
118
123
|
border: 0 none;
|
119
124
|
box-shadow: none;
|
120
125
|
|
121
|
-
&:disabled,
|
126
|
+
&:disabled,
|
127
|
+
&.disabled {
|
122
128
|
background: transparent;
|
123
129
|
}
|
124
130
|
}
|
@@ -131,10 +137,15 @@ button.icon_button {
|
|
131
137
|
position: relative;
|
132
138
|
display: inline-block;
|
133
139
|
text-align: center;
|
134
|
-
margin: 0 2*$default-margin;
|
135
140
|
|
136
|
-
|
137
|
-
|
141
|
+
.toolbar_buttons & {
|
142
|
+
margin: 0 2 * $default-margin;
|
143
|
+
}
|
144
|
+
|
145
|
+
&.active,
|
146
|
+
&:active,
|
147
|
+
&:hover {
|
148
|
+
.icon_button:not([disabled]) {
|
138
149
|
background-color: $default-border-color;
|
139
150
|
cursor: pointer;
|
140
151
|
}
|
@@ -161,8 +172,8 @@ button.icon_button {
|
|
161
172
|
}
|
162
173
|
}
|
163
174
|
|
164
|
-
.button_with_label,
|
165
|
-
|
175
|
+
.button_with_label,
|
176
|
+
.button_group {
|
166
177
|
.icon_button {
|
167
178
|
width: 29px;
|
168
179
|
height: 29px;
|
@@ -179,16 +190,16 @@ button.icon_button {
|
|
179
190
|
z-index: 30;
|
180
191
|
background-color: $tooltip-background-color;
|
181
192
|
color: $white;
|
182
|
-
padding: $default-padding 2
|
193
|
+
padding: $default-padding 2 * $default-padding 1.5 * $default-padding;
|
183
194
|
line-height: 1;
|
184
195
|
box-shadow: 0 0 4px $default-border-color;
|
185
196
|
white-space: nowrap;
|
186
197
|
pointer-events: none;
|
187
198
|
opacity: 0;
|
188
|
-
transition: .3s;
|
199
|
+
transition: 0.3s;
|
189
200
|
|
190
201
|
&:before {
|
191
|
-
content:
|
202
|
+
content: "";
|
192
203
|
position: absolute;
|
193
204
|
bottom: -10px;
|
194
205
|
left: 8px;
|
@@ -238,6 +249,6 @@ button.icon_button {
|
|
238
249
|
visibility: visible;
|
239
250
|
opacity: 1;
|
240
251
|
top: -25px;
|
241
|
-
transition-delay: .2s;
|
252
|
+
transition-delay: 0.2s;
|
242
253
|
}
|
243
254
|
}
|
@@ -256,7 +256,7 @@
|
|
256
256
|
> a {
|
257
257
|
display: flex;
|
258
258
|
cursor: pointer;
|
259
|
-
padding:
|
259
|
+
padding-left: 2 * $default-padding;
|
260
260
|
|
261
261
|
&:focus {
|
262
262
|
@include default-focus-style($box-shadow: inset 0 0 0 2px $focus-color);
|
@@ -273,19 +273,16 @@
|
|
273
273
|
text-shadow: $text-shadow-light;
|
274
274
|
}
|
275
275
|
|
276
|
-
.page_language
|
277
|
-
display: inline-block;
|
278
|
-
color: $muted-text-color;
|
279
|
-
margin-right: 2px;
|
280
|
-
font-size: $small-font-size;
|
281
|
-
text-transform: uppercase;
|
282
|
-
}
|
283
|
-
|
276
|
+
.page_language,
|
284
277
|
.page_site {
|
285
278
|
display: inline-block;
|
286
279
|
color: $muted-text-color;
|
287
|
-
margin-right: $default-margin;
|
288
280
|
font-size: $small-font-size;
|
281
|
+
margin-right: $default-margin;
|
289
282
|
line-height: 31px;
|
290
283
|
}
|
284
|
+
|
285
|
+
.page_language {
|
286
|
+
text-transform: uppercase;
|
287
|
+
}
|
291
288
|
}
|
@@ -11,9 +11,19 @@
|
|
11
11
|
top: 9px;
|
12
12
|
}
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
button {
|
15
|
+
position: absolute;
|
16
|
+
top: 0;
|
17
|
+
left: 0;
|
18
|
+
width: 30px;
|
16
19
|
height: inherit;
|
20
|
+
appearance: none;
|
21
|
+
background-color: transparent;
|
22
|
+
border: 0 none;
|
23
|
+
border-radius: 0;
|
24
|
+
box-shadow: none;
|
25
|
+
margin: 0;
|
26
|
+
padding: 0;
|
17
27
|
}
|
18
28
|
}
|
19
29
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
$medium-select-box-width: 90px;
|
2
|
-
|
3
1
|
select {
|
4
2
|
@include button-defaults(
|
5
3
|
$background-color: $form-field-background-color,
|
@@ -76,6 +74,10 @@ select {
|
|
76
74
|
width: $medium-select-box-width;
|
77
75
|
}
|
78
76
|
|
77
|
+
&.large {
|
78
|
+
width: $large-select-box-width;
|
79
|
+
}
|
80
|
+
|
79
81
|
&.select2-container-active {
|
80
82
|
|
81
83
|
.select2-choice, .select2-choices {
|
@@ -6,7 +6,8 @@ table {
|
|
6
6
|
width: 100%;
|
7
7
|
|
8
8
|
&.list .tools {
|
9
|
-
button,
|
9
|
+
button,
|
10
|
+
a {
|
10
11
|
display: inline-block;
|
11
12
|
width: 18px;
|
12
13
|
height: 18px;
|
@@ -22,8 +23,9 @@ table {
|
|
22
23
|
}
|
23
24
|
}
|
24
25
|
|
25
|
-
.list td,
|
26
|
-
|
26
|
+
.list td,
|
27
|
+
.list th {
|
28
|
+
padding: 2 * $default-padding;
|
27
29
|
vertical-align: top;
|
28
30
|
line-height: 18px;
|
29
31
|
border-right: 1px solid $medium-gray;
|
@@ -93,9 +95,10 @@ td.heading {
|
|
93
95
|
background-color: $table-row-hover-color;
|
94
96
|
}
|
95
97
|
|
96
|
-
td,
|
97
|
-
|
98
|
-
&.center,
|
98
|
+
td,
|
99
|
+
th {
|
100
|
+
&.center,
|
101
|
+
&.boolean {
|
99
102
|
text-align: center;
|
100
103
|
}
|
101
104
|
|
@@ -105,7 +108,6 @@ td, th {
|
|
105
108
|
}
|
106
109
|
|
107
110
|
td {
|
108
|
-
|
109
111
|
&.file_name {
|
110
112
|
word-break: break-all;
|
111
113
|
}
|
@@ -118,7 +120,8 @@ td {
|
|
118
120
|
width: 80px;
|
119
121
|
}
|
120
122
|
|
121
|
-
&.date,
|
123
|
+
&.date,
|
124
|
+
&.datetime {
|
122
125
|
width: 150px;
|
123
126
|
}
|
124
127
|
|
@@ -137,9 +140,35 @@ td {
|
|
137
140
|
&.rights {
|
138
141
|
width: 60px;
|
139
142
|
}
|
143
|
+
|
144
|
+
&.page_layout {
|
145
|
+
width: 160px;
|
146
|
+
}
|
147
|
+
|
148
|
+
&.status {
|
149
|
+
width: 80px;
|
150
|
+
|
151
|
+
.page_status {
|
152
|
+
margin: 0 $default-margin;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
&.tags {
|
157
|
+
width: 180px;
|
158
|
+
|
159
|
+
.tag {
|
160
|
+
margin: 0;
|
161
|
+
padding: 0 2 + $default-padding;
|
162
|
+
|
163
|
+
&:before {
|
164
|
+
padding-right: $default-padding;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
}
|
140
168
|
}
|
141
169
|
|
142
|
-
th.count,
|
170
|
+
th.count,
|
171
|
+
td.count {
|
143
172
|
width: 120px;
|
144
173
|
text-align: right;
|
145
174
|
padding-right: 16px;
|
@@ -1,26 +1,10 @@
|
|
1
1
|
.tag-list {
|
2
|
+
display: flex;
|
3
|
+
flex-direction: column;
|
2
4
|
height: 100%;
|
3
|
-
padding-bottom: 138px;
|
4
|
-
|
5
|
-
&.filtered {
|
6
|
-
padding-bottom: 178px;
|
7
|
-
}
|
8
|
-
|
9
|
-
&.with_filter_bar {
|
10
|
-
padding-bottom: 218px;
|
11
|
-
|
12
|
-
&.filtered {
|
13
|
-
padding-bottom: 256px;
|
14
|
-
}
|
15
|
-
}
|
16
5
|
|
17
6
|
.js_filter_field_box {
|
18
|
-
|
19
|
-
right: auto;
|
20
|
-
top: auto;
|
21
|
-
width: 200px;
|
22
|
-
z-index: 1100;
|
23
|
-
transition: background-color $transition-duration;
|
7
|
+
margin: 0;
|
24
8
|
|
25
9
|
input {
|
26
10
|
background-color: transparentize($white, 0.25);
|
@@ -29,23 +13,22 @@
|
|
29
13
|
background-color: $white;
|
30
14
|
}
|
31
15
|
}
|
32
|
-
|
33
|
-
label { display: none }
|
34
16
|
}
|
35
17
|
|
36
18
|
ul {
|
37
19
|
list-style-type: none;
|
38
20
|
padding: 0;
|
39
|
-
margin:
|
21
|
+
margin: 0;
|
40
22
|
height: 100%;
|
41
|
-
width: 200px;
|
42
23
|
overflow-x: hidden;
|
43
24
|
overflow-y: auto;
|
44
25
|
|
45
26
|
li {
|
46
27
|
display: block;
|
47
28
|
|
48
|
-
&:first-child {
|
29
|
+
&:first-child {
|
30
|
+
margin-top: 0;
|
31
|
+
}
|
49
32
|
|
50
33
|
a {
|
51
34
|
@include tag-base;
|
@@ -53,13 +36,14 @@
|
|
53
36
|
display: block;
|
54
37
|
}
|
55
38
|
|
56
|
-
&:hover {
|
39
|
+
&:hover {
|
40
|
+
background-color: $very-light-blue;
|
41
|
+
}
|
57
42
|
|
58
43
|
&.active {
|
59
|
-
|
60
44
|
a {
|
61
45
|
background-color: $dark-gray;
|
62
|
-
color: $light-gray
|
46
|
+
color: $light-gray;
|
63
47
|
}
|
64
48
|
}
|
65
49
|
}
|
@@ -69,7 +53,7 @@
|
|
69
53
|
.tag {
|
70
54
|
@include tag-base(
|
71
55
|
$margin: $default-margin/2 0,
|
72
|
-
$padding: $default-padding 2
|
56
|
+
$padding: $default-padding 2 * $default-padding $default-padding
|
73
57
|
);
|
74
58
|
pointer-events: none;
|
75
59
|
font-size: $small-font-size;
|
@@ -124,7 +108,9 @@
|
|
124
108
|
position: relative;
|
125
109
|
border-radius: $default-border-radius;
|
126
110
|
|
127
|
-
&.odd {
|
111
|
+
&.odd {
|
112
|
+
background-color: #eaf3f9;
|
113
|
+
}
|
128
114
|
|
129
115
|
input {
|
130
116
|
position: absolute;
|
@@ -141,14 +127,16 @@
|
|
141
127
|
}
|
142
128
|
}
|
143
129
|
|
144
|
-
.tag_list,
|
130
|
+
.tag_list,
|
131
|
+
.autocomplete_tag_list {
|
145
132
|
.select2-container.select2-container-multi {
|
146
133
|
.select2-search-choice {
|
147
134
|
padding: 0;
|
148
135
|
|
149
136
|
div {
|
150
137
|
@include tag-base(
|
151
|
-
$padding: $default-padding 6
|
138
|
+
$padding: $default-padding 6 * $default-padding $default-padding 3 *
|
139
|
+
$default-padding,
|
152
140
|
$margin: 0
|
153
141
|
);
|
154
142
|
}
|
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
module Alchemy
|
4
4
|
module Admin
|
5
|
-
class PagesController <
|
5
|
+
class PagesController < ResourcesController
|
6
6
|
include OnPageLayout::CallbacksRunner
|
7
7
|
|
8
8
|
helper "alchemy/pages"
|
9
9
|
|
10
|
-
before_action :
|
10
|
+
before_action :load_resource, except: [:index, :flush, :new, :order, :create, :copy_language_tree, :link, :sort]
|
11
11
|
|
12
12
|
authorize_resource class: Alchemy::Page, except: [:index, :tree]
|
13
13
|
|
@@ -27,11 +27,33 @@ module Alchemy
|
|
27
27
|
if: :run_on_page_layout_callbacks?,
|
28
28
|
only: [:show]
|
29
29
|
|
30
|
+
before_action :load_languages_and_layouts,
|
31
|
+
unless: -> { @page_root },
|
32
|
+
only: [:index]
|
33
|
+
|
34
|
+
before_action :set_view, only: [:index]
|
35
|
+
|
30
36
|
def index
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
@
|
37
|
+
@query = @current_language.pages.contentpages.ransack(search_filter_params[:q])
|
38
|
+
|
39
|
+
if @view == "list"
|
40
|
+
@query.sorts = default_sort_order if @query.sorts.empty?
|
41
|
+
items = @query.result
|
42
|
+
|
43
|
+
if search_filter_params[:tagged_with].present?
|
44
|
+
items = items.tagged_with(search_filter_params[:tagged_with])
|
45
|
+
end
|
46
|
+
|
47
|
+
if search_filter_params[:filter].present?
|
48
|
+
items = items.public_send(sanitized_filter_params)
|
49
|
+
end
|
50
|
+
|
51
|
+
if search_filter_params[:page_layout].present?
|
52
|
+
items = items.where(page_layout: search_filter_params[:page_layout])
|
53
|
+
end
|
54
|
+
|
55
|
+
items = items.page(params[:page] || 1).per(items_per_page)
|
56
|
+
@pages = items
|
35
57
|
end
|
36
58
|
end
|
37
59
|
|
@@ -85,7 +107,12 @@ module Alchemy
|
|
85
107
|
elsif page_needs_lock?
|
86
108
|
@page.lock_to!(current_alchemy_user)
|
87
109
|
end
|
88
|
-
@
|
110
|
+
@preview_urls = Alchemy.preview_sources.map do |klass|
|
111
|
+
[
|
112
|
+
klass.model_name.human,
|
113
|
+
klass.new(routes: Alchemy::Engine.routes).url_for(@page),
|
114
|
+
]
|
115
|
+
end
|
89
116
|
@layoutpage = @page.layoutpage?
|
90
117
|
end
|
91
118
|
|
@@ -138,7 +165,7 @@ module Alchemy
|
|
138
165
|
|
139
166
|
def link
|
140
167
|
@attachments = Attachment.all.collect { |f|
|
141
|
-
[f.name, download_attachment_path(id: f.id, name: f.
|
168
|
+
[f.name, download_attachment_path(id: f.id, name: f.slug)]
|
142
169
|
}
|
143
170
|
end
|
144
171
|
|
@@ -178,6 +205,10 @@ module Alchemy
|
|
178
205
|
def publish
|
179
206
|
# fetching page via before filter
|
180
207
|
@page.publish!
|
208
|
+
|
209
|
+
# Send publish notification to all registered publish targets
|
210
|
+
Alchemy.publish_targets.each { |p| p.perform_later(@page) }
|
211
|
+
|
181
212
|
flash[:notice] = Alchemy.t(:page_published, name: @page.name)
|
182
213
|
redirect_back(fallback_location: admin_pages_path)
|
183
214
|
end
|
@@ -220,6 +251,19 @@ module Alchemy
|
|
220
251
|
|
221
252
|
private
|
222
253
|
|
254
|
+
def resource_handler
|
255
|
+
@_resource_handler ||= Alchemy::Resource.new(controller_path, alchemy_module, Alchemy::Page)
|
256
|
+
end
|
257
|
+
|
258
|
+
def common_search_filter_includes
|
259
|
+
super.push(:page_layout, :view)
|
260
|
+
end
|
261
|
+
|
262
|
+
def set_view
|
263
|
+
@view = params[:view] || session[:alchemy_pages_view] || "tree"
|
264
|
+
session[:alchemy_pages_view] = @view
|
265
|
+
end
|
266
|
+
|
223
267
|
def copy_of_language_root
|
224
268
|
Page.copy(
|
225
269
|
language_root_to_copy_from,
|
@@ -301,7 +345,7 @@ module Alchemy
|
|
301
345
|
{ my_urlname: default_urlname, children_path: default_urlname }
|
302
346
|
end
|
303
347
|
|
304
|
-
def
|
348
|
+
def load_resource
|
305
349
|
@page = Page.find(params[:id])
|
306
350
|
end
|
307
351
|
|
@@ -364,6 +408,12 @@ module Alchemy
|
|
364
408
|
user: current_alchemy_user,
|
365
409
|
full: params[:full] == "true")
|
366
410
|
end
|
411
|
+
|
412
|
+
def load_languages_and_layouts
|
413
|
+
@language = @current_language
|
414
|
+
@languages_with_page_tree = Language.on_current_site.with_root_page
|
415
|
+
@page_layouts = PageLayout.layouts_for_select(@language.id)
|
416
|
+
end
|
367
417
|
end
|
368
418
|
end
|
369
419
|
end
|