alchemy_cms 4.2.0.rc1 → 4.2.0

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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +4 -0
  3. data/.rubocop.yml +4 -0
  4. data/CHANGELOG.md +28 -3
  5. data/Gemfile +1 -1
  6. data/README.md +1 -1
  7. data/alchemy_cms.gemspec +5 -6
  8. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +3 -3
  9. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +1 -1
  10. data/app/assets/stylesheets/alchemy/buttons.scss +15 -2
  11. data/app/assets/stylesheets/alchemy/dashboard.scss +2 -0
  12. data/app/assets/stylesheets/alchemy/elements.scss +129 -127
  13. data/app/assets/stylesheets/alchemy/frame.scss +9 -29
  14. data/app/assets/stylesheets/alchemy/navigation.scss +30 -6
  15. data/app/assets/stylesheets/alchemy/preview_window.scss +4 -0
  16. data/app/assets/stylesheets/alchemy/spinner.scss +1 -1
  17. data/app/controllers/alchemy/pages_controller.rb +9 -4
  18. data/app/helpers/alchemy/base_helper.rb +3 -4
  19. data/app/models/alchemy/element.rb +1 -1
  20. data/app/models/alchemy/page/page_scopes.rb +1 -1
  21. data/app/views/alchemy/admin/dashboard/index.html.erb +1 -1
  22. data/app/views/alchemy/admin/dashboard/info.html.erb +23 -22
  23. data/app/views/alchemy/admin/pages/edit.html.erb +10 -10
  24. data/app/views/alchemy/admin/resources/_form.html.erb +0 -8
  25. data/app/views/alchemy/admin/resources/_table_header.html.erb +2 -1
  26. data/app/views/alchemy/essences/_essence_select_editor.html.erb +1 -1
  27. data/config/locales/alchemy.en.yml +6 -1
  28. data/lib/alchemy/on_page_layout.rb +1 -1
  29. data/lib/alchemy/permissions.rb +5 -2
  30. data/lib/alchemy/resources_helper.rb +12 -10
  31. data/lib/alchemy/shell.rb +11 -3
  32. data/lib/alchemy/test_support/factories.rb +3 -1
  33. data/lib/alchemy/test_support/factories/attachment_factory.rb +2 -0
  34. data/lib/alchemy/test_support/factories/content_factory.rb +5 -0
  35. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +2 -0
  36. data/lib/alchemy/test_support/factories/element_factory.rb +3 -0
  37. data/lib/alchemy/test_support/factories/essence_file_factory.rb +2 -0
  38. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +2 -0
  39. data/lib/alchemy/test_support/factories/essence_text_factory.rb +2 -0
  40. data/lib/alchemy/test_support/factories/language_factory.rb +2 -0
  41. data/lib/alchemy/test_support/factories/page_factory.rb +2 -0
  42. data/lib/alchemy/test_support/factories/picture_factory.rb +2 -0
  43. data/lib/alchemy/test_support/factories/site_factory.rb +2 -0
  44. data/lib/alchemy/upgrader/four_point_one.rb +16 -16
  45. data/lib/alchemy/upgrader/four_point_two.rb +37 -20
  46. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +3 -2
  47. data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +28 -0
  48. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +34 -19
  49. data/lib/alchemy/version.rb +1 -1
  50. data/lib/tasks/alchemy/upgrade.rake +7 -1
  51. metadata +32 -14
  52. data/.teatro.yml +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 258008e3dd974388f2361414d385f0b607dae59a2f2f1e425cc409517efc1682
4
- data.tar.gz: 99d7b710b6e90b2b71dcd08658767b21ea2f845380aa14889467f73c80c554d3
3
+ metadata.gz: f0f5711f9a2670decb7dc7b607c684e50cd82f95ee20f37c3995a2afe107a563
4
+ data.tar.gz: eae8426cc413eeeb78cd206fa0f1e7cedeca5a59cb5f4aca81ea9997c8a408df
5
5
  SHA512:
6
- metadata.gz: 448bf16870286563145c0d903a2e1ec2b1d4a4951f8122911847088bf941df0d9f00bb8f45dbd87ab1b9a41e2a291e031e4374a0906e59873735b963518f5d20
7
- data.tar.gz: e2b0a2887b4121c1606b46710342ad609322997a69cfa0af2263acb78cfb5d3bbba4efb950a06c185326ae0ceb16168469b5985e921629cb788747169b2ce5df
6
+ metadata.gz: 37f0485eafe6e0e0e89aadb09dcce775579229f69cc342bfa07d2f0acd5f3d0f0873e6f2a7c7e5e3d9eeb43b8d614832a6247920a53e80011ef89ab995409ed0
7
+ data.tar.gz: f51d23e388032bd19f1192da181fe997a47e815c4c7937f5601115c55d09a93d21e3f25f2a1554df3e76ca246cc11223d807ea8e3b6e66ba5cda1a27927e7d20
@@ -0,0 +1,4 @@
1
+ # These are supported funding model platforms
2
+
3
+ patreon: alchemy_cms
4
+ open_collective: alchemy_cms
@@ -41,6 +41,10 @@ Style/GuardClause:
41
41
  Style/SymbolArray:
42
42
  Enabled: false
43
43
 
44
+ Style/SymbolProc:
45
+ Exclude:
46
+ - 'lib/alchemy/permissions.rb'
47
+
44
48
  Style/WordArray:
45
49
  Enabled: false
46
50
 
@@ -1,5 +1,26 @@
1
- ## 4.2.0 (unreleased)
2
-
1
+ ## 4.2.0 (2019-05-30)
2
+
3
+ - remove unused .teatro.yml [#1585](https://github.com/AlchemyCMS/alchemy_cms/pull/1585) ([kirillshevch](https://github.com/kirillshevch))
4
+ - Use Set to collect callbacks in OnPageLayout [#1583](https://github.com/AlchemyCMS/alchemy_cms/pull/1583) ([mamhoff](https://github.com/mamhoff))
5
+ - Allow Ransack 1.x [#1580](https://github.com/AlchemyCMS/alchemy_cms/pull/1580) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Set a max-width to preview frame [#1578](https://github.com/AlchemyCMS/alchemy_cms/pull/1578) ([tvdeyen](https://github.com/tvdeyen))
7
+ - Rebuild locked pages tabs in flexbox [#1577](https://github.com/AlchemyCMS/alchemy_cms/pull/1577) ([tvdeyen](https://github.com/tvdeyen))
8
+ - Use where.not instead of Arel [#1576](https://github.com/AlchemyCMS/alchemy_cms/pull/1576) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Add missing requires to factories [#1575](https://github.com/AlchemyCMS/alchemy_cms/pull/1575) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Upgrade sqlite3 to version 1.4.1 [#1574](https://github.com/AlchemyCMS/alchemy_cms/pull/1574) ([depfu](https://github.com/apps/depfu))
11
+ - Fix elements window ajax errors [#1573](https://github.com/AlchemyCMS/alchemy_cms/pull/1573) ([tvdeyen](https://github.com/tvdeyen))
12
+ - Use SimpleForm field for datepicker in resources form [#1572](https://github.com/AlchemyCMS/alchemy_cms/pull/1572) ([tvdeyen](https://github.com/tvdeyen))
13
+ - Render warning message in warning helper [#1571](https://github.com/AlchemyCMS/alchemy_cms/pull/1571) ([tvdeyen](https://github.com/tvdeyen))
14
+ - Prohibit coffee-rails 5.0 [#1570](https://github.com/AlchemyCMS/alchemy_cms/pull/1570) ([tvdeyen](https://github.com/tvdeyen))
15
+ - Add Date column support to resources [#1567](https://github.com/AlchemyCMS/alchemy_cms/pull/1567) ([tvdeyen](https://github.com/tvdeyen))
16
+ - Fix pluralization of resource table header [#1566](https://github.com/AlchemyCMS/alchemy_cms/pull/1566) ([tvdeyen](https://github.com/tvdeyen))
17
+ - Fix compact elements style [#1565](https://github.com/AlchemyCMS/alchemy_cms/pull/1565) ([tvdeyen](https://github.com/tvdeyen))
18
+ - Show Ruby and Rails versions in info dialog [#1564](https://github.com/AlchemyCMS/alchemy_cms/pull/1564) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Set spinner color to current text color [#1563](https://github.com/AlchemyCMS/alchemy_cms/pull/1563) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Update links in post install message [#1562](https://github.com/AlchemyCMS/alchemy_cms/pull/1562) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Allow cancancan 3 [#1561](https://github.com/AlchemyCMS/alchemy_cms/pull/1561) ([tvdeyen](https://github.com/tvdeyen))
22
+ - Fix Member Page permissions syntax [#1560](https://github.com/AlchemyCMS/alchemy_cms/pull/1560) ([tvdeyen](https://github.com/tvdeyen))
23
+ - Update upgrader [#1558](https://github.com/AlchemyCMS/alchemy_cms/pull/1558) ([tvdeyen](https://github.com/tvdeyen))
3
24
  - Use element name local in generators [#1556](https://github.com/AlchemyCMS/alchemy_cms/pull/1556) ([tvdeyen](https://github.com/tvdeyen))
4
25
  - Remove invalid bytecode handler [#1555](https://github.com/AlchemyCMS/alchemy_cms/pull/1555) ([tvdeyen](https://github.com/tvdeyen))
5
26
  - Separate render element calls [#1554](https://github.com/AlchemyCMS/alchemy_cms/pull/1554) ([tvdeyen](https://github.com/tvdeyen))
@@ -11,7 +32,7 @@
11
32
  - Upgrade shoulda-matchers to version 4.0.0 [#1542](https://github.com/AlchemyCMS/alchemy_cms/pull/1542) ([depfu](https://github.com/apps/depfu))
12
33
  - Upgrade factory_bot_rails to version 5.0.1 [#1540](https://github.com/AlchemyCMS/alchemy_cms/pull/1540) ([depfu](https://github.com/apps/depfu))
13
34
  - Use Flatpickr as Datepicker [#1533](https://github.com/AlchemyCMS/alchemy_cms/pull/1533) ([mamhoff](https://github.com/mamhoff))
14
- - Use system tests over feature specs [#1528](https://github.com/AlchemyCMS/alchemy_cms/pull/1528) ([tvdeyen](https://github.com/tvdeyen))
35
+ - Use system tests over feature specs [#1528](https://github.com/AlchemyCMS/alchemy_cms/pull/1528) ([tvdeyen](https://github.com/tvdeyen))
15
36
  - Flexible width for admin navigation entry labels [#1527](https://github.com/AlchemyCMS/alchemy_cms/pull/1527) ([tvdeyen](https://github.com/tvdeyen))
16
37
  - Responsive elements window and sidebar [#1519](https://github.com/AlchemyCMS/alchemy_cms/pull/1519) ([tvdeyen](https://github.com/tvdeyen))
17
38
  - Change element eye icon on public state [#1517](https://github.com/AlchemyCMS/alchemy_cms/pull/1517) ([oniram88](https://github.com/oniram88))
@@ -479,3 +500,7 @@ No changes
479
500
  ## 3.0.0 (2014-07-03)
480
501
 
481
502
  [Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.0.0)
503
+
504
+
505
+
506
+
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ gem 'rails', '~> 5.2.0'
7
7
  # Profiling
8
8
  gem 'rack-mini-profiler', group: :development, require: false
9
9
 
10
- gem 'sqlite3', '~> 1.3.6' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
10
+ gem 'sqlite3', '~> 1.4.1' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
11
11
  gem 'mysql2', '~> 0.5.1' if ENV['DB'] == 'mysql'
12
12
  gem 'pg', '~> 1.0' if ENV['DB'] == 'postgresql'
13
13
  gem 'sassc-rails'
data/README.md CHANGED
@@ -18,7 +18,7 @@ Alchemy is an open source CMS engine written in Ruby on Rails.
18
18
 
19
19
  Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [guidelines](https://guides.alchemy-cms.com).
20
20
 
21
- **CAUTION: This master branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (4.1-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.1-stable).**
21
+ **CAUTION: This master branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (4.2-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.2-stable).**
22
22
 
23
23
 
24
24
  ## ✅ Features
@@ -21,8 +21,8 @@ Gem::Specification.new do |gem|
21
21
  gem.add_runtime_dependency 'active_model_serializers', ['~> 0.10.0']
22
22
  gem.add_runtime_dependency 'acts_as_list', ['~> 0.3']
23
23
  gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
24
- gem.add_runtime_dependency 'cancancan', ['~> 2.1']
25
- gem.add_runtime_dependency 'coffee-rails', ['~> 4.0']
24
+ gem.add_runtime_dependency 'cancancan', ['>= 2.1', '< 4.0']
25
+ gem.add_runtime_dependency 'coffee-rails', ['~> 4.0', '< 5.0']
26
26
  gem.add_runtime_dependency 'dragonfly', ['~> 1.0', '>= 1.0.7']
27
27
  gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
28
28
  gem.add_runtime_dependency 'gutentag', ['~> 2.2', '>= 2.2.1']
@@ -33,7 +33,7 @@ Gem::Specification.new do |gem|
33
33
  gem.add_runtime_dependency 'originator', ['~> 3.1']
34
34
  gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
35
35
  gem.add_runtime_dependency 'rails', ['~> 5.0', '< 6.0']
36
- gem.add_runtime_dependency 'ransack', ['~> 2.0']
36
+ gem.add_runtime_dependency 'ransack', ['>= 1.8', '< 3.0']
37
37
  gem.add_runtime_dependency 'request_store', ['~> 1.2']
38
38
  gem.add_runtime_dependency 'responders', ['~> 2.0']
39
39
  gem.add_runtime_dependency 'select2-rails', ['>= 3.5.9.1', '< 4.0']
@@ -57,9 +57,8 @@ and follow the onscreen instructions.
57
57
 
58
58
  Need help? Try:
59
59
 
60
- * http://stackoverflow.com/questions/tagged/alchemy-cms
61
- * http://groups.google.com/group/alchemy-cms
62
- * irc://irc.freenode.net#alchemy_cms
60
+ * https://stackoverflow.com/questions/tagged/alchemy-cms
61
+ * https://slackin.alchemy-cms.com
63
62
  -------------------------------------------------------------
64
63
 
65
64
  MSG
@@ -122,7 +122,7 @@ class window.Alchemy.Dialog
122
122
  @show_error(xhr, status)
123
123
 
124
124
  # Displays an error message
125
- show_error: (xhr, status_message) ->
125
+ show_error: (xhr, status_message, $container = @dialog_body) ->
126
126
  error_type = "warning"
127
127
  switch xhr.status
128
128
  when 0
@@ -135,7 +135,7 @@ class window.Alchemy.Dialog
135
135
  error_type = "error"
136
136
  if status_message
137
137
  error_header = status_message
138
- console.error eval(xhr.responseText)
138
+ console.error(xhr.responseText)
139
139
  else
140
140
  error_header = "#{xhr.statusText} (#{xhr.status})"
141
141
  error_body = "Please check log and try again."
@@ -143,7 +143,7 @@ class window.Alchemy.Dialog
143
143
  $errorDiv.append Alchemy.messageIcon(error_type)
144
144
  $errorDiv.append "<h1>#{error_header}</h1>"
145
145
  $errorDiv.append "<p>#{error_body}</p>"
146
- @dialog_body.html $errorDiv
146
+ $container.html $errorDiv
147
147
 
148
148
  # Binds close events on:
149
149
  # - Close button
@@ -53,7 +53,7 @@ Alchemy.ElementsWindow =
53
53
  if @callback
54
54
  @callback.call()
55
55
  .fail (xhr, status, error) =>
56
- Alchemy.AjaxErrorHandler @element_area, xhr.status, status, error
56
+ Alchemy.Dialog::show_error(xhr, error, @element_area)
57
57
 
58
58
  hide: ->
59
59
  @$body.removeClass('elements-window-visible');
@@ -33,6 +33,14 @@ button, input[type="submit"], a.button, input.button {
33
33
  margin-right: 2 * $default-margin;
34
34
  color: inherit;
35
35
  }
36
+
37
+ &[disabled] {
38
+ cursor: not-allowed;
39
+
40
+ & + label {
41
+ display: none;
42
+ }
43
+ }
36
44
  }
37
45
 
38
46
  .icon_button {
@@ -79,13 +87,18 @@ button, input[type="submit"], a.button, input.button {
79
87
  }
80
88
  }
81
89
 
82
- &.disabled {
90
+ &.disabled,
91
+ &[disabled] {
83
92
 
84
93
  span {
85
94
  opacity: 0.3;
86
95
  cursor: not-allowed;
87
96
  }
88
97
 
98
+ i {
99
+ opacity: 0.3;
100
+ }
101
+
89
102
  &:hover {
90
103
  cursor: not-allowed;
91
104
  }
@@ -121,7 +134,7 @@ button.icon_button {
121
134
  margin: 0 2*$default-margin;
122
135
 
123
136
  &.active, &:active, &:hover {
124
- .icon_button {
137
+ .icon_button:not([disabled]) {
125
138
  background-color: $default-border-color;
126
139
  cursor: pointer;
127
140
  }
@@ -43,7 +43,9 @@
43
43
  }
44
44
 
45
45
  #update_check {
46
+ position: relative;
46
47
  height: 16px;
48
+ margin-bottom: 2em;
47
49
 
48
50
  img#load_info {
49
51
  width: 16px;
@@ -43,6 +43,10 @@
43
43
  height: 140px !important;
44
44
  }
45
45
  }
46
+
47
+ > .message {
48
+ margin: 2*$default-margin
49
+ }
46
50
  }
47
51
 
48
52
  #main-content-elements,
@@ -115,6 +119,7 @@
115
119
  }
116
120
 
117
121
  .element-editor {
122
+ position: relative;
118
123
  border: 1px solid $default-border-color;
119
124
  border-radius: $default-border-radius;
120
125
  background-color: $light-gray;
@@ -133,7 +138,7 @@
133
138
  &.dirty {
134
139
  border-color: #d0c83d;
135
140
 
136
- > .element-header {
141
+ >.element-header {
137
142
  background-color: #fff8df;
138
143
  }
139
144
  }
@@ -160,7 +165,8 @@
160
165
  }
161
166
  }
162
167
 
163
- &.with-contents, &.without-contents.not-nestable {
168
+ &.with-contents,
169
+ &.without-contents.not-nestable {
164
170
 
165
171
  .element-content {
166
172
  padding: 2*$default-padding 2*$default-padding 0;
@@ -168,6 +174,85 @@
168
174
  }
169
175
  }
170
176
 
177
+ &.compact {
178
+ .element-toolbar {
179
+ visibility: hidden;
180
+ position: absolute;
181
+ height: 35px;
182
+ padding: 2px 0;
183
+ opacity: 0;
184
+ z-index: 1;
185
+ border-bottom: $default-border;
186
+ background-color: $light-gray;
187
+ transition: all $transition-duration;
188
+ }
189
+
190
+ .element-header:hover+.element-toolbar,
191
+ .element-toolbar:hover {
192
+ visibility: visible;
193
+ opacity: 1;
194
+ }
195
+
196
+ .element-footer {
197
+ margin-top: 0;
198
+ padding-top: 0;
199
+ border-top: 0;
200
+
201
+ .button {
202
+ padding: $small-button-padding;
203
+ }
204
+ }
205
+
206
+ .element-title {
207
+ max-width: 75%;
208
+ }
209
+
210
+ &:not(.folded) .ajax-folder {
211
+ pointer-events: none;
212
+
213
+ i:before {
214
+ content: fa-content($fa-var-ellipsis-v);
215
+ }
216
+ }
217
+
218
+ .element_tools {
219
+ display: flex;
220
+ width: 100%;
221
+ justify-content: space-between;
222
+ margin-left: 0;
223
+ }
224
+
225
+ .element-content {
226
+ padding: 4px 8px;
227
+ }
228
+
229
+ .button_with_label {
230
+ margin: 0 4px;
231
+ }
232
+
233
+ .content_editor,
234
+ .picture_thumbnail {
235
+ width: 100%;
236
+ }
237
+
238
+ .picture_thumbnail {
239
+ margin: 0;
240
+ }
241
+
242
+ .thumbnail_background {
243
+ height: 115px;
244
+ }
245
+
246
+ textarea,
247
+ input[type="url"],
248
+ input[type="text"],
249
+ input[type="email"],
250
+ input[type="password"] {
251
+ padding: 0.5em;
252
+ height: auto;
253
+ }
254
+ }
255
+
171
256
  form {
172
257
  margin: 0;
173
258
  }
@@ -188,22 +273,6 @@
188
273
  margin-bottom: 1em;
189
274
  }
190
275
 
191
- .content_editor_error {
192
- border: 1px solid #f5b04e;
193
- padding: 4px 8px;
194
- line-height: 21px;
195
- background-color: #f5dea9;
196
- margin-top: 4px;
197
- border-radius: $default-border-radius;
198
-
199
- .icon.warning {
200
- position: relative;
201
- top: 2px;
202
- margin-right: 8px;
203
- vertical-align: top;
204
- }
205
- }
206
-
207
276
  .autocomplete_tag_list {
208
277
  padding: $default-padding 0;
209
278
 
@@ -240,7 +309,7 @@
240
309
  cursor: pointer;
241
310
  @include border-top-radius($default-border-radius);
242
311
 
243
- > .hint-with-icon {
312
+ >.hint-with-icon {
244
313
  position: absolute;
245
314
  right: 32px;
246
315
  top: 10px;
@@ -304,8 +373,7 @@
304
373
  right: 0;
305
374
 
306
375
  .icon_button {
307
- @include button-defaults(
308
- $background-color: $medium-gray,
376
+ @include button-defaults($background-color: $medium-gray,
309
377
  $hover-color: darken($medium-gray, 5%),
310
378
  $border: 1px solid #c0c0c0,
311
379
  $box-shadow: none,
@@ -319,27 +387,26 @@
319
387
  width: 29px;
320
388
  height: $form-field-height;
321
389
 
322
- &.disabled, &.disabled:hover {
390
+ &.disabled,
391
+ &.disabled:hover {
323
392
  background-color: $form-field-disabled-bg-color;
324
393
  }
325
394
 
326
395
  &.linked.link-essence {
327
- @include linked-button(
328
- $border-radius: 0,
396
+ @include linked-button($border-radius: 0,
329
397
  $line-height: 30px,
330
- $padding: 0
331
- );
398
+ $padding: 0);
399
+
332
400
  &:focus {
333
401
  border-radius: 0;
334
402
  }
335
403
  }
336
404
 
337
405
  &.linked.unlink-essence {
338
- @include linked-button(
339
- $border-radius: 0 $default-border-radius $default-border-radius 0,
406
+ @include linked-button($border-radius: 0 $default-border-radius $default-border-radius 0,
340
407
  $line-height: 30px,
341
- $padding: 0
342
- );
408
+ $padding: 0);
409
+
343
410
  &:focus {
344
411
  border-radius: 0 $default-border-radius $default-border-radius 0;
345
412
  }
@@ -507,7 +574,8 @@ select.long {
507
574
  padding: $default-padding 0;
508
575
  position: relative;
509
576
 
510
- .thin_border, input[type="text"] {
577
+ .thin_border,
578
+ input[type="text"] {
511
579
  width: 100%;
512
580
  }
513
581
 
@@ -536,15 +604,22 @@ select.long {
536
604
  margin-right: 4px;
537
605
  vertical-align: top;
538
606
 
539
- .thin_border, input[type="text"] {
607
+ .thin_border,
608
+ input[type="text"] {
540
609
  width: 170px;
541
610
  }
542
611
  }
543
612
 
544
613
  &.validation_failed {
545
614
 
546
- label { color: $error_text_color }
547
- input { @extend %field-with-error }
615
+ label {
616
+ color: $error_text_color
617
+ }
618
+
619
+ input {
620
+ @extend %field-with-error
621
+ }
622
+
548
623
  .tinymce_container {
549
624
  outline: 1px solid $error_border_color;
550
625
  }
@@ -572,7 +647,9 @@ select.long {
572
647
 
573
648
  &.essence_select {
574
649
 
575
- label { margin-bottom: 2*$default-margin }
650
+ label {
651
+ margin-bottom: 2*$default-margin
652
+ }
576
653
 
577
654
  .select2-container {
578
655
  width: 100%;
@@ -615,7 +692,7 @@ select.long {
615
692
  padding-left: 1px; // Compensate the box shadow
616
693
  padding-right: $default-padding;
617
694
 
618
- + .essence_picture {
695
+ +.essence_picture {
619
696
  padding-left: $default-padding;
620
697
  padding-right: 1px; // Compensate the box shadow
621
698
  }
@@ -670,7 +747,7 @@ textarea.has_tinymce {
670
747
  .element-handle .hint-with-icon {
671
748
  margin: 0;
672
749
 
673
- > .hint-bubble {
750
+ >.hint-bubble {
674
751
  left: -7px;
675
752
  transform: none;
676
753
 
@@ -688,7 +765,7 @@ textarea.has_tinymce {
688
765
  box-shadow: inset 0 4px 8px -2px darken($medium-gray, 15%);
689
766
  background-color: $medium-gray;
690
767
 
691
- .expanded.element-editor > & {
768
+ .expanded.element-editor>& {
692
769
  padding: 8px 4px 4px;
693
770
  }
694
771
 
@@ -701,113 +778,38 @@ textarea.has_tinymce {
701
778
 
702
779
  .is-fixed {
703
780
  &.with-contents {
704
- > .element-footer {
781
+ >.element-footer {
705
782
  border-top: 0;
706
783
  border-bottom: 1px solid $medium-gray;
707
784
  }
708
785
  }
709
786
 
710
- > .nestable-elements .add-nestable-element-button {
787
+ >.nestable-elements .add-nestable-element-button {
711
788
  width: 100%;
712
789
  text-align: center;
713
790
  }
714
791
  }
715
792
 
716
- .not-fixed .nested-elements {
717
- display: flex;
718
- flex-wrap: wrap;
793
+ .element-editor,
794
+ .droppable_element_placeholder {
795
+ width: 100%;
719
796
 
720
- .element-editor,
721
- .droppable_element_placeholder {
797
+ .not-fixed & {
722
798
  width: calc(100% - 8px);
723
799
  margin: 4px;
800
+ }
724
801
 
725
- &.compact {
726
- width: calc(50% - 8px);
727
- }
802
+ &.compact {
803
+ width: calc(50% - 8px);
728
804
  }
805
+ }
806
+
807
+ .nested-elements {
808
+ display: flex;
809
+ flex-wrap: wrap;
729
810
 
730
811
  .element-editor {
731
812
  position: relative;
732
-
733
- &.compact {
734
- .element-toolbar {
735
- visibility: hidden;
736
- position: absolute;
737
- height: 35px;
738
- padding: 2px 0;
739
- opacity: 0;
740
- z-index: 1;
741
- border-bottom: $default-border;
742
- background-color: $light-gray;
743
- transition: all $transition-duration;
744
- }
745
-
746
- .element-header:hover + .element-toolbar,
747
- .element-toolbar:hover {
748
- visibility: visible;
749
- opacity: 1;
750
- }
751
-
752
- .element-footer {
753
- margin-top: 0;
754
- padding-top: 0;
755
- border-top: 0;
756
-
757
- .button {
758
- padding: $small-button-padding;
759
- }
760
- }
761
-
762
- .element-title {
763
- max-width: 75%;
764
- }
765
-
766
- &:not(.folded) .ajax-folder {
767
- pointer-events: none;
768
-
769
- i:before {
770
- content: fa-content($fa-var-ellipsis-v);
771
- }
772
- }
773
-
774
- .element_tools {
775
- display: flex;
776
- width: 100%;
777
- justify-content: space-between;
778
- margin-left: 0;
779
- }
780
-
781
- .element-content {
782
- padding: 4px 8px;
783
- }
784
-
785
- .button_with_label {
786
- margin: 0 4px;
787
- }
788
-
789
- .content_editor,
790
- .picture_thumbnail {
791
- width: 100%;
792
- }
793
-
794
- .picture_thumbnail {
795
- margin: 0;
796
- }
797
-
798
- .thumbnail_background {
799
- height: 115px;
800
- }
801
-
802
- textarea,
803
- input[type="url"],
804
- input[type="text"],
805
- input[type="email"],
806
- input[type="password"] {
807
- padding: 0.5em;
808
- height: auto;
809
- }
810
- }
811
813
  }
812
814
 
813
815
  .element-header {