alchemy_cms 5.0.1 → 5.1.0
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/ci.yml +126 -0
- data/.github/workflows/stale.yml +1 -1
- data/.gitignore +1 -0
- data/CHANGELOG.md +66 -2
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +2 -2
- data/README.md +2 -2
- data/alchemy_cms.gemspec +3 -3
- data/app/assets/images/alchemy/missing-image.svg +1 -0
- data/app/assets/javascripts/alchemy/admin.js +0 -1
- 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 +8 -0
- data/app/assets/stylesheets/alchemy/admin.scss +0 -1
- data/app/assets/stylesheets/alchemy/archive.scss +23 -17
- data/app/assets/stylesheets/alchemy/buttons.scss +26 -15
- data/app/assets/stylesheets/alchemy/elements.scss +58 -19
- data/app/assets/stylesheets/alchemy/errors.scss +1 -1
- data/app/assets/stylesheets/alchemy/frame.scss +0 -1
- data/app/assets/stylesheets/alchemy/hints.scss +2 -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 +13 -3
- data/app/assets/stylesheets/alchemy/selects.scss +26 -20
- 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 +58 -8
- 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/decorators/alchemy/element_editor.rb +1 -0
- data/app/helpers/alchemy/admin/base_helper.rb +0 -44
- data/app/helpers/alchemy/admin/navigation_helper.rb +2 -1
- data/app/models/alchemy/attachment.rb +20 -3
- data/app/models/alchemy/attachment/url.rb +40 -0
- data/app/models/alchemy/essence_picture.rb +3 -3
- data/app/models/alchemy/essence_picture_view.rb +5 -3
- data/app/models/alchemy/legacy_page_url.rb +1 -1
- 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 -77
- 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/serializers/alchemy/page_tree_serializer.rb +4 -4
- 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/elements/_element_footer.html.erb +1 -1
- data/app/views/alchemy/admin/elements/publish.js.erb +1 -0
- 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 +4 -1
- 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 +3 -3
- 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/test_support/integration_helpers.rb +0 -7
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +2 -4
- 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
- data/vendor/assets/javascripts/jquery_plugins/select2.js +3729 -0
- data/vendor/assets/stylesheets/alchemy_admin/select2.scss +740 -0
- metadata +46 -37
- data/.github/workflows/greetings.yml +0 -13
- data/.travis.yml +0 -48
- 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,15 +1,16 @@
|
|
1
|
-
|
1
|
+
@import "alchemy_admin/select2";
|
2
2
|
|
3
3
|
select {
|
4
4
|
@include button-defaults(
|
5
5
|
$background-color: $form-field-background-color,
|
6
6
|
$hover-color: $form-field-background-color,
|
7
7
|
$hover-border-color: darken($default-border-color, 10%),
|
8
|
-
$padding: 0 2
|
8
|
+
$padding: 0 2 * $default-padding,
|
9
9
|
$border: 1px solid $default-border-color,
|
10
10
|
$box-shadow: none,
|
11
11
|
$color: $text-color,
|
12
|
-
$margin: 0
|
12
|
+
$margin: 0
|
13
|
+
);
|
13
14
|
height: $form-field-height;
|
14
15
|
padding: 0.4em 0.6em;
|
15
16
|
max-width: 100%;
|
@@ -34,7 +35,8 @@ select {
|
|
34
35
|
$border: 1px solid $default-border-color,
|
35
36
|
$box-shadow: none,
|
36
37
|
$color: $text-color,
|
37
|
-
$margin: 0
|
38
|
+
$margin: 0
|
39
|
+
);
|
38
40
|
background-image: none;
|
39
41
|
display: block;
|
40
42
|
font-weight: normal;
|
@@ -76,15 +78,18 @@ select {
|
|
76
78
|
width: $medium-select-box-width;
|
77
79
|
}
|
78
80
|
|
79
|
-
&.
|
81
|
+
&.large {
|
82
|
+
width: $large-select-box-width;
|
83
|
+
}
|
80
84
|
|
81
|
-
|
85
|
+
&.select2-container-active {
|
86
|
+
.select2-choice,
|
87
|
+
.select2-choices {
|
82
88
|
@include default-focus-style($box-shadow: 0 0 0 1px $focus-color);
|
83
89
|
}
|
84
90
|
}
|
85
91
|
|
86
92
|
&.select2-container-disabled {
|
87
|
-
|
88
93
|
&:hover {
|
89
94
|
+ .with-hint > .hint-bubble {
|
90
95
|
@include hint-hover-style;
|
@@ -96,7 +101,8 @@ select {
|
|
96
101
|
top: 0;
|
97
102
|
}
|
98
103
|
|
99
|
-
.select2-choice,
|
104
|
+
.select2-choice,
|
105
|
+
.select2-choice:hover {
|
100
106
|
background-image: none;
|
101
107
|
background-color: $light-gray;
|
102
108
|
box-shadow: none;
|
@@ -106,7 +112,9 @@ select {
|
|
106
112
|
.select2-arrow {
|
107
113
|
border-color: $border-inset-color;
|
108
114
|
|
109
|
-
b {
|
115
|
+
b {
|
116
|
+
color: $border-inset-color;
|
117
|
+
}
|
110
118
|
}
|
111
119
|
}
|
112
120
|
}
|
@@ -140,7 +148,6 @@ select {
|
|
140
148
|
margin-top: 0 !important;
|
141
149
|
|
142
150
|
&.select2-container-active {
|
143
|
-
|
144
151
|
.select2-choices {
|
145
152
|
@include default-focus-style($box-shadow: 0 0 0 1px $focus-color);
|
146
153
|
}
|
@@ -212,7 +219,8 @@ select {
|
|
212
219
|
}
|
213
220
|
}
|
214
221
|
|
215
|
-
.select2-no-results,
|
222
|
+
.select2-no-results,
|
223
|
+
.select2-searching {
|
216
224
|
padding: 8px;
|
217
225
|
margin: 0;
|
218
226
|
}
|
@@ -233,41 +241,39 @@ select {
|
|
233
241
|
|
234
242
|
.select2-more-results,
|
235
243
|
.select2-ajax-error {
|
236
|
-
padding: 2
|
244
|
+
padding: 2 * $default-padding;
|
237
245
|
margin-bottom: 0;
|
238
246
|
}
|
239
247
|
}
|
240
248
|
|
241
|
-
.window_form,
|
242
|
-
|
249
|
+
.window_form,
|
250
|
+
#filter_bar {
|
243
251
|
.select2-container {
|
244
252
|
width: 100%;
|
245
253
|
}
|
246
254
|
}
|
247
255
|
|
248
256
|
.select_with_label {
|
249
|
-
margin: 0 3
|
257
|
+
margin: 0 3 * $default-margin;
|
250
258
|
display: inline-block;
|
251
259
|
vertical-align: middle;
|
252
260
|
|
253
261
|
label {
|
254
262
|
display: inline-block;
|
255
263
|
vertical-align: middle;
|
256
|
-
margin-right: 2
|
264
|
+
margin-right: 2 * $default-margin;
|
257
265
|
}
|
258
266
|
}
|
259
267
|
|
260
268
|
// overriding important of select2 default style for retina screens
|
261
269
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
|
262
|
-
|
263
|
-
|
270
|
+
only screen and (min-resolution: 2dppx) {
|
264
271
|
#alchemy {
|
265
|
-
|
266
272
|
.select2-search input,
|
267
273
|
.select2-search-choice-close,
|
268
274
|
.select2-container .select2-choice abbr,
|
269
275
|
.select2-container .select2-choice .select2-arrow b {
|
270
|
-
|
276
|
+
background-image: none !important;
|
271
277
|
}
|
272
278
|
}
|
273
279
|
}
|
@@ -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
|
|
@@ -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
|