alchemy_cms 7.2.7 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +97 -14
  3. data/Gemfile +4 -3
  4. data/Rakefile +1 -0
  5. data/alchemy_cms.gemspec +7 -7
  6. data/app/assets/builds/alchemy/admin/print.css +1 -0
  7. data/app/assets/builds/alchemy/admin/print.css.map +1 -0
  8. data/app/assets/builds/alchemy/admin.css +1 -0
  9. data/app/assets/builds/alchemy/admin.css.map +1 -0
  10. data/app/assets/builds/alchemy/welcome.css +1 -0
  11. data/app/assets/builds/alchemy/welcome.css.map +1 -0
  12. data/app/assets/builds/tinymce/skins/content/alchemy/content.css +1 -0
  13. data/app/assets/builds/tinymce/skins/content/alchemy/content.css.map +1 -0
  14. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -0
  15. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +1 -0
  16. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css +1 -0
  17. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.css.map +1 -0
  18. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -0
  19. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +1 -0
  20. data/app/assets/config/alchemy_manifest.js +1 -5
  21. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +4 -0
  22. data/app/assets/stylesheets/alchemy/{_custom-properties.scss → _custom-properties.css} +28 -25
  23. data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +41 -0
  24. data/app/assets/stylesheets/alchemy/_deprecation.scss +17 -0
  25. data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
  26. data/app/assets/stylesheets/alchemy/_mixins.scss +20 -23
  27. data/app/assets/stylesheets/alchemy/_variables.scss +98 -94
  28. data/app/assets/stylesheets/alchemy/{archive.scss → admin/archive.scss} +23 -23
  29. data/app/assets/stylesheets/alchemy/{attachment-select.scss → admin/attachment-select.scss} +2 -2
  30. data/app/assets/stylesheets/alchemy/{attachments.scss → admin/attachments.scss} +4 -4
  31. data/app/assets/stylesheets/alchemy/{base.scss → admin/base.scss} +9 -9
  32. data/app/assets/stylesheets/alchemy/{buttons.scss → admin/buttons.scss} +3 -3
  33. data/app/assets/stylesheets/alchemy/{clipboard.scss → admin/clipboard.scss} +9 -6
  34. data/app/assets/stylesheets/alchemy/{dashboard.scss → admin/dashboard.scss} +8 -8
  35. data/app/assets/stylesheets/alchemy/{dialogs.scss → admin/dialogs.scss} +20 -20
  36. data/app/assets/stylesheets/alchemy/{elements.scss → admin/elements.scss} +128 -88
  37. data/app/assets/stylesheets/alchemy/{errors.scss → admin/errors.scss} +22 -6
  38. data/app/assets/stylesheets/alchemy/{flash.scss → admin/flash.scss} +3 -3
  39. data/app/assets/stylesheets/alchemy/{flatpickr.scss → admin/flatpickr.scss} +55 -35
  40. data/app/assets/stylesheets/alchemy/{form_fields.scss → admin/form_fields.scss} +8 -6
  41. data/app/assets/stylesheets/alchemy/{forms.scss → admin/forms.scss} +20 -16
  42. data/app/assets/stylesheets/alchemy/{frame.scss → admin/frame.scss} +9 -9
  43. data/app/assets/stylesheets/alchemy/{image_library.scss → admin/image_library.scss} +34 -33
  44. data/app/assets/stylesheets/alchemy/admin/labels.scss +3 -0
  45. data/app/assets/stylesheets/alchemy/{list_filter.scss → admin/list_filter.scss} +4 -4
  46. data/app/assets/stylesheets/alchemy/{lists.scss → admin/lists.scss} +9 -7
  47. data/app/assets/stylesheets/alchemy/{navigation.scss → admin/navigation.scss} +17 -17
  48. data/app/assets/stylesheets/alchemy/{node-select.scss → admin/node-select.scss} +5 -5
  49. data/app/assets/stylesheets/alchemy/{nodes.scss → admin/nodes.scss} +11 -11
  50. data/app/assets/stylesheets/alchemy/{notices.scss → admin/notices.scss} +11 -7
  51. data/app/assets/stylesheets/alchemy/{page-select.scss → admin/page-select.scss} +10 -10
  52. data/app/assets/stylesheets/alchemy/{pagination.scss → admin/pagination.scss} +10 -10
  53. data/app/assets/stylesheets/alchemy/{print.scss → admin/print.scss} +2 -6
  54. data/app/assets/stylesheets/alchemy/{resource_info.scss → admin/resource_info.scss} +6 -7
  55. data/app/assets/stylesheets/alchemy/{search.scss → admin/search.scss} +6 -6
  56. data/app/assets/stylesheets/alchemy/{selects.scss → admin/selects.scss} +46 -39
  57. data/app/assets/stylesheets/alchemy/{shoelace.scss → admin/shoelace.scss} +10 -10
  58. data/app/assets/stylesheets/alchemy/{sitemap.scss → admin/sitemap.scss} +18 -19
  59. data/app/assets/stylesheets/alchemy/{tables.scss → admin/tables.scss} +26 -22
  60. data/app/assets/stylesheets/alchemy/admin/tags.scss +158 -0
  61. data/app/assets/stylesheets/alchemy/{toolbar.scss → admin/toolbar.scss} +10 -10
  62. data/app/assets/stylesheets/alchemy/{typography.scss → admin/typography.scss} +3 -3
  63. data/app/assets/stylesheets/alchemy/{upload.scss → admin/upload.scss} +1 -1
  64. data/app/assets/stylesheets/alchemy/admin.scss +40 -45
  65. data/app/assets/stylesheets/alchemy/welcome.scss +57 -0
  66. data/app/assets/stylesheets/tinymce/skins/content/alchemy/{content.min.scss → content.scss} +5 -4
  67. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/{skin.min.scss → skin.scss} +40 -40
  68. data/app/components/alchemy/admin/resource/action.rb +46 -0
  69. data/app/components/alchemy/admin/resource/cell.rb +34 -0
  70. data/app/components/alchemy/admin/resource/header.rb +46 -0
  71. data/app/components/alchemy/admin/resource/table.rb +153 -0
  72. data/app/components/alchemy/ingredients/datetime_view.rb +2 -2
  73. data/app/controllers/alchemy/admin/base_controller.rb +2 -1
  74. data/app/controllers/alchemy/admin/elements_controller.rb +7 -3
  75. data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +1 -1
  76. data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
  77. data/app/controllers/alchemy/admin/pictures_controller.rb +2 -2
  78. data/app/controllers/alchemy/admin/resources_controller.rb +2 -2
  79. data/app/controllers/alchemy/base_controller.rb +2 -0
  80. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +2 -11
  81. data/app/decorators/alchemy/ingredient_editor.rb +17 -0
  82. data/app/helpers/alchemy/admin/pages_helper.rb +6 -10
  83. data/app/helpers/alchemy/base_helper.rb +2 -2
  84. data/app/helpers/alchemy/elements_block_helper.rb +13 -1
  85. data/app/helpers/alchemy/pages_helper.rb +2 -2
  86. data/app/javascript/alchemy_admin/components/element_editor.js +23 -31
  87. data/app/javascript/alchemy_admin/components/preview_window.js +2 -3
  88. data/app/javascript/alchemy_admin/picture_selector.js +38 -10
  89. data/app/models/alchemy/attachment.rb +0 -8
  90. data/app/models/alchemy/element/dom_id.rb +1 -0
  91. data/app/models/alchemy/element/element_ingredients.rb +0 -73
  92. data/app/models/alchemy/element/presenters.rb +4 -1
  93. data/app/models/alchemy/element.rb +6 -0
  94. data/app/models/alchemy/elements_repository.rb +2 -2
  95. data/app/models/alchemy/ingredient_validator.rb +10 -0
  96. data/app/models/alchemy/page/page_scopes.rb +1 -1
  97. data/app/models/alchemy/picture.rb +0 -10
  98. data/app/views/alchemy/admin/attachments/_files_list.html.erb +74 -16
  99. data/app/views/alchemy/admin/clipboard/index.html.erb +38 -33
  100. data/app/views/alchemy/admin/dashboard/_dashboard.html.erb +3 -0
  101. data/app/views/alchemy/admin/dashboard/_left_column.html.erb +4 -0
  102. data/app/views/alchemy/admin/dashboard/_right_column.html.erb +9 -0
  103. data/app/views/alchemy/admin/dashboard/_top.html.erb +12 -0
  104. data/app/views/alchemy/admin/dashboard/index.html.erb +1 -25
  105. data/app/views/alchemy/admin/elements/_element.html.erb +1 -2
  106. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  107. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +10 -3
  108. data/app/views/alchemy/admin/ingredients/update.turbo_stream.erb +7 -0
  109. data/app/views/alchemy/admin/languages/_table.html.erb +16 -42
  110. data/app/views/alchemy/admin/nodes/_form.html.erb +1 -1
  111. data/app/views/alchemy/admin/pages/_table.html.erb +92 -27
  112. data/app/views/alchemy/admin/pages/edit.html.erb +6 -8
  113. data/app/views/alchemy/admin/pages/index.html.erb +0 -4
  114. data/app/views/alchemy/admin/pictures/_form.html.erb +14 -12
  115. data/app/views/alchemy/admin/pictures/index.html.erb +1 -11
  116. data/app/views/alchemy/admin/pictures/update.turbo_stream.erb +6 -0
  117. data/app/views/alchemy/admin/resources/_resource_table.html.erb +3 -0
  118. data/app/views/alchemy/admin/resources/_table.html.erb +2 -0
  119. data/app/views/alchemy/admin/resources/index.html.erb +1 -1
  120. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  121. data/app/views/alchemy/admin/styleguide/index.html.erb +0 -4
  122. data/app/views/alchemy/admin/tags/index.html.erb +15 -14
  123. data/app/views/alchemy/base/403.html.erb +6 -0
  124. data/app/views/alchemy/base/500.html.erb +14 -12
  125. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +13 -11
  126. data/app/views/alchemy/ingredients/_headline_editor.html.erb +29 -22
  127. data/app/views/alchemy/ingredients/_link_editor.html.erb +17 -11
  128. data/app/views/alchemy/ingredients/_page_editor.html.erb +1 -0
  129. data/app/views/alchemy/ingredients/_picture_editor.html.erb +3 -4
  130. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +5 -1
  131. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  132. data/app/views/alchemy/ingredients/_text_editor.html.erb +20 -14
  133. data/app/views/alchemy/ingredients/shared/_picture_css_class.html.erb +6 -0
  134. data/app/views/layouts/alchemy/admin.html.erb +4 -2
  135. data/bin/setup +2 -0
  136. data/bin/start +1 -1
  137. data/bun.lockb +0 -0
  138. data/config/alchemy/config.yml +9 -0
  139. data/config/locales/alchemy.en.yml +8 -29
  140. data/config/routes.rb +22 -22
  141. data/lib/alchemy/config.rb +3 -3
  142. data/lib/alchemy/install/tasks.rb +5 -2
  143. data/lib/alchemy/resources_helper.rb +3 -1
  144. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  145. data/lib/alchemy/test_support/shared_uploader_examples.rb +0 -1
  146. data/lib/alchemy/upgrader/seven_point_three.rb +52 -0
  147. data/lib/alchemy/version.rb +1 -1
  148. data/lib/alchemy_cms.rb +1 -1
  149. data/lib/generators/alchemy/install/files/article.css +25 -0
  150. data/lib/generators/alchemy/install/files/custom.css +4 -0
  151. data/lib/generators/alchemy/install/install_generator.rb +6 -6
  152. data/lib/tasks/alchemy/upgrade.rake +29 -1
  153. data/vendor/assets/stylesheets/alchemy_admin/select2.css +1 -0
  154. data/vendor/assets/stylesheets/jquery.Jcrop.min.css +2 -0
  155. data/vendor/javascript/shoelace.min.js +62 -63
  156. data/vendor/javascript/tinymce.min.js +1 -1
  157. metadata +132 -105
  158. data/app/assets/images/alchemy/lupe.cur +0 -0
  159. data/app/assets/stylesheets/alchemy/labels.scss +0 -3
  160. data/app/assets/stylesheets/alchemy/tags.scss +0 -155
  161. data/app/assets/stylesheets/alchemy/welcome.sass +0 -49
  162. data/app/views/alchemy/admin/attachments/_attachment.html.erb +0 -81
  163. data/app/views/alchemy/admin/languages/_language.html.erb +0 -50
  164. data/app/views/alchemy/admin/pages/_table_row.html.erb +0 -111
  165. data/app/views/alchemy/admin/pages/list/_table.html.erb +0 -31
  166. data/app/views/alchemy/admin/pictures/update.js.erb +0 -6
  167. data/app/views/alchemy/admin/tags/_tag.html.erb +0 -32
  168. data/app/views/alchemy/base/update.js.erb +0 -5
  169. data/lib/generators/alchemy/install/files/all.css +0 -11
  170. data/lib/generators/alchemy/install/files/article.scss +0 -30
  171. data/package.json +0 -52
  172. data/vendor/assets/stylesheets/alchemy_admin/select2.scss +0 -741
  173. data/vendor/assets/stylesheets/jquery.Jcrop.min.scss +0 -2
  174. /data/app/assets/stylesheets/alchemy/{fonts.scss → _fonts.scss} +0 -0
  175. /data/app/assets/stylesheets/alchemy/{hints.scss → admin/hints.scss} +0 -0
  176. /data/app/assets/stylesheets/alchemy/{icons.scss → admin/icons.scss} +0 -0
  177. /data/app/assets/stylesheets/alchemy/{images.scss → admin/images.scss} +0 -0
  178. /data/app/assets/stylesheets/alchemy/{preview_window.scss → admin/preview_window.scss} +0 -0
  179. /data/app/assets/stylesheets/alchemy/{spinner.scss → admin/spinner.scss} +0 -0
  180. /data/app/views/alchemy/admin/dashboard/{_locked_pages.html.erb → widgets/_locked_pages.html.erb} +0 -0
  181. /data/app/views/alchemy/admin/dashboard/{_recent_pages.html.erb → widgets/_recent_pages.html.erb} +0 -0
  182. /data/app/views/alchemy/admin/dashboard/{_sites.html.erb → widgets/_sites.html.erb} +0 -0
  183. /data/app/views/alchemy/admin/dashboard/{_users.html.erb → widgets/_users.html.erb} +0 -0
@@ -1,25 +1,28 @@
1
1
  #clipboard_items {
2
-
3
2
  ul {
4
3
  list-style-type: none;
5
- margin: 0 0 8px;
4
+ margin: 0 0 var(--spacing-2);
6
5
  padding: 0;
7
6
  height: 220px;
8
7
  overflow-y: auto;
9
8
  overflow-x: hidden;
10
9
 
11
10
  li {
12
- padding: 2*$default-padding;
11
+ display: flex;
12
+ align-items: center;
13
+ gap: var(--spacing-2);
14
+ padding: var(--spacing-2);
13
15
  border: $default-border;
14
16
  background-color: white;
15
17
  border-radius: $default-border-radius;
16
18
 
17
19
  &.elements {
18
- background-color: $medium-gray;
20
+ background-color: var(--color-grey_light);
19
21
  }
20
22
 
21
- > .icon {
22
- margin-right: $default-padding;
23
+ .icon_button {
24
+ margin-left: auto;
25
+ cursor: pointer;
23
26
  }
24
27
  }
25
28
  }
@@ -1,34 +1,34 @@
1
1
  #dashboard {
2
2
  overflow: auto;
3
- padding: 4 * $default-padding 0;
3
+ padding: var(--spacing-4) 0;
4
4
  width: 100%;
5
5
  position: relative;
6
6
 
7
7
  h1 {
8
8
  font-size: 1.5em;
9
- margin: 0 0 8px 8px;
9
+ margin: 0 0 var(--spacing-2) var(--spacing-2);
10
10
  }
11
11
 
12
12
  p {
13
- margin: 0 0 16px 8px;
13
+ margin: 0 0 var(--spacing-4) var(--spacing-2);
14
14
  }
15
15
 
16
16
  .column {
17
17
  width: 50%;
18
18
  float: left;
19
- padding-right: 16px;
19
+ padding-right: var(--spacing-4);
20
20
  }
21
21
 
22
22
  .widget {
23
- margin-bottom: 16px;
23
+ margin-bottom: var(--spacing-4);
24
24
 
25
25
  h2 {
26
- padding: 2 * $default-padding;
26
+ padding: var(--spacing-2);
27
27
  margin-bottom: 0;
28
28
  }
29
29
 
30
30
  p {
31
- margin: 4px 0;
31
+ margin: var(--spacing-1) 0;
32
32
  }
33
33
 
34
34
  table {
@@ -60,7 +60,7 @@
60
60
 
61
61
  > span {
62
62
  display: inline-flex;
63
- gap: $default-padding;
63
+ gap: var(--spacing-1);
64
64
  align-items: center;
65
65
 
66
66
  &.hidden {
@@ -58,7 +58,7 @@ $dialog-transition-duration: 150ms;
58
58
  .alchemy-dialog,
59
59
  .alchemy-image-overlay-dialog {
60
60
  position: relative;
61
- max-width: calc(100vw - 16px);
61
+ max-width: calc(100vw - var(--spacing-4));
62
62
  display: inline-block;
63
63
  vertical-align: middle;
64
64
  text-align: left;
@@ -66,14 +66,14 @@ $dialog-transition-duration: 150ms;
66
66
 
67
67
  .alchemy-dialog {
68
68
  white-space: normal;
69
- margin: 2 * $default-margin;
69
+ margin: var(--spacing-2);
70
70
  @include border-top-radius($default-border-radius);
71
71
  box-shadow: $dialog-box-shadow;
72
72
  background-color: $dialog-background-color;
73
73
  transition: min-height $dialog-transition-duration ease-in-out;
74
74
 
75
75
  div#jscropper {
76
- padding: 2 * $default-padding;
76
+ padding: var(--spacing-2);
77
77
 
78
78
  .thumbnail_background {
79
79
  width: 800px;
@@ -85,15 +85,15 @@ $dialog-transition-duration: 150ms;
85
85
  .info.message,
86
86
  alchemy-message[type="info"] {
87
87
  position: absolute;
88
- right: 2 * $default-padding;
88
+ right: var(--spacing-2);
89
89
  width: 256px;
90
90
  }
91
91
 
92
92
  .info.message,
93
93
  alchemy-message[type="info"] {
94
- top: 2 * $default-padding;
95
- margin: 0 0 0 8px;
96
- padding: 0 8px 0 32px;
94
+ top: var(--spacing-2);
95
+ margin: 0 0 0 var(--spacing-2);
96
+ padding: 0 var(--spacing-2) 0 var(--spacing-8);
97
97
  }
98
98
 
99
99
  .jcrop-holder {
@@ -107,12 +107,12 @@ $dialog-transition-duration: 150ms;
107
107
 
108
108
  form {
109
109
  padding: 0;
110
- bottom: 2 * $default-padding;
111
- margin-left: 8px;
110
+ bottom: var(--spacing-2);
111
+ margin-left: var(--spacing-2);
112
112
 
113
113
  button {
114
114
  margin-bottom: 0;
115
- width: calc(50% - #{$default-padding});
115
+ width: calc(50% - var(--spacing-1));
116
116
  }
117
117
 
118
118
  button[type="submit"] {
@@ -125,7 +125,7 @@ $dialog-transition-duration: 150ms;
125
125
  .alchemy-dialog-header {
126
126
  display: flex;
127
127
  align-items: center;
128
- gap: $default-padding;
128
+ gap: var(--spacing-1);
129
129
  position: relative;
130
130
  height: $dialog-header-height;
131
131
  padding: $dialog-header-padding;
@@ -139,7 +139,7 @@ $dialog-transition-duration: 150ms;
139
139
  .alchemy-dialog-title {
140
140
  flex-grow: 1;
141
141
  font-weight: bold;
142
- padding: 0 $default-padding;
142
+ padding: 0 var(--spacing-1);
143
143
  white-space: nowrap;
144
144
  overflow: hidden;
145
145
  text-overflow: ellipsis;
@@ -158,19 +158,19 @@ $dialog-transition-duration: 150ms;
158
158
 
159
159
  .alchemy-dialog-body {
160
160
  position: relative;
161
- color: $text-color;
161
+ color: var(--color-text);
162
162
 
163
163
  .message,
164
164
  alchemy-message {
165
- margin: 8px;
165
+ margin: var(--spacing-2);
166
166
  }
167
167
 
168
168
  &.padded {
169
- padding: 4 * $default-padding;
169
+ padding: var(--spacing-4);
170
170
 
171
171
  .message,
172
172
  alchemy-message {
173
- margin: 0 0 8px 0;
173
+ margin: 0 0 var(--spacing-2) 0;
174
174
  }
175
175
  }
176
176
 
@@ -179,20 +179,20 @@ $dialog-transition-duration: 150ms;
179
179
 
180
180
  label {
181
181
  float: left;
182
- margin-top: 12px;
182
+ margin-top: var(--spacing-3);
183
183
  }
184
184
  }
185
185
  }
186
186
 
187
187
  .alchemy-dialog-buttons {
188
- padding-top: 4 * $default-padding;
188
+ padding-top: var(--spacing-4);
189
189
  text-align: right;
190
190
 
191
191
  button:first-child {
192
- margin-right: 2 * $default-margin;
192
+ margin-right: var(--spacing-2);
193
193
  }
194
194
  }
195
195
 
196
196
  #overlay_tabs {
197
- margin: -4 * $default-padding;
197
+ margin: calc(-1 * var(--spacing-4));
198
198
  }