alchemy_cms 7.0.16 → 7.1.0.pre.b1

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.
Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/backport.yml +36 -0
  3. data/.github/workflows/brakeman-analysis.yml +5 -13
  4. data/.github/workflows/lint.yml +2 -9
  5. data/.github/workflows/stale.yml +2 -5
  6. data/.github/workflows/test.yml +7 -15
  7. data/.gitignore +0 -1
  8. data/.standard.yml +1 -1
  9. data/CHANGELOG.md +144 -51
  10. data/Gemfile +7 -18
  11. data/README.md +10 -8
  12. data/alchemy_cms.gemspec +4 -3
  13. data/app/assets/config/alchemy_manifest.js +0 -1
  14. data/app/assets/javascripts/alchemy/admin.js +1 -19
  15. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -3
  16. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -34
  17. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +38 -13
  18. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
  19. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +32 -25
  20. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
  21. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +3 -5
  22. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -57
  23. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +22 -63
  24. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
  25. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +5 -4
  26. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +5 -5
  27. data/app/assets/javascripts/alchemy/templates/index.js +0 -2
  28. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  29. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  30. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +2 -2
  31. data/app/assets/stylesheets/alchemy/_custom-properties.scss +82 -0
  32. data/app/assets/stylesheets/alchemy/_mixins.scss +38 -30
  33. data/app/assets/stylesheets/alchemy/_variables.scss +12 -5
  34. data/app/assets/stylesheets/alchemy/admin.scss +3 -4
  35. data/app/assets/stylesheets/alchemy/archive.scss +107 -50
  36. data/app/assets/stylesheets/alchemy/attachments.scss +5 -4
  37. data/app/assets/stylesheets/alchemy/buttons.scss +38 -164
  38. data/app/assets/stylesheets/alchemy/dashboard.scss +31 -6
  39. data/app/assets/stylesheets/alchemy/dialogs.scss +12 -28
  40. data/app/assets/stylesheets/alchemy/elements.scss +273 -282
  41. data/app/assets/stylesheets/alchemy/flash.scss +20 -12
  42. data/app/assets/stylesheets/alchemy/forms.scss +21 -34
  43. data/app/assets/stylesheets/alchemy/frame.scss +11 -32
  44. data/app/assets/stylesheets/alchemy/hints.scss +4 -62
  45. data/app/assets/stylesheets/alchemy/image_library.scss +36 -33
  46. data/app/assets/stylesheets/alchemy/labels.scss +4 -1
  47. data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
  48. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  49. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  50. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  51. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  52. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  53. data/app/assets/stylesheets/alchemy/preview_window.scss +4 -8
  54. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  55. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  56. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  57. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  58. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  59. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  60. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  61. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  62. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  63. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  64. data/app/components/alchemy/admin/node_select.rb +39 -0
  65. data/app/components/alchemy/admin/page_select.rb +42 -0
  66. data/app/components/alchemy/ingredients/audio_view.rb +1 -1
  67. data/app/components/alchemy/ingredients/base_view.rb +1 -1
  68. data/app/components/alchemy/ingredients/boolean_view.rb +1 -1
  69. data/app/components/alchemy/ingredients/datetime_view.rb +3 -4
  70. data/app/components/alchemy/ingredients/file_view.rb +1 -1
  71. data/app/components/alchemy/ingredients/headline_view.rb +7 -16
  72. data/app/components/alchemy/ingredients/link_view.rb +1 -1
  73. data/app/components/alchemy/ingredients/page_view.rb +1 -1
  74. data/app/components/alchemy/ingredients/picture_view.rb +1 -1
  75. data/app/components/alchemy/ingredients/richtext_view.rb +1 -1
  76. data/app/components/alchemy/ingredients/text_view.rb +1 -1
  77. data/app/components/alchemy/ingredients/video_view.rb +1 -1
  78. data/app/controllers/alchemy/admin/base_controller.rb +7 -32
  79. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  80. data/app/controllers/alchemy/admin/languages_controller.rb +2 -3
  81. data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -19
  82. data/app/controllers/alchemy/admin/pages_controller.rb +4 -5
  83. data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
  84. data/app/controllers/alchemy/base_controller.rb +4 -2
  85. data/app/controllers/alchemy/messages_controller.rb +1 -1
  86. data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -5
  87. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  88. data/app/decorators/alchemy/element_editor.rb +0 -2
  89. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  90. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  91. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  92. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  93. data/app/helpers/alchemy/base_helper.rb +47 -13
  94. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  95. data/app/javascript/alchemy_admin/components/button.js +59 -0
  96. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  97. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  98. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  99. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  100. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  101. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  102. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  103. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  104. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  105. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  106. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  107. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  108. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  109. data/app/javascript/alchemy_admin/components/select.js +12 -0
  110. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  111. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  112. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  113. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  114. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  115. data/app/javascript/alchemy_admin/dirty.js +49 -0
  116. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  117. data/app/javascript/alchemy_admin/gui.js +14 -0
  118. data/app/javascript/alchemy_admin/i18n.js +12 -8
  119. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  120. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  121. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  122. data/app/javascript/alchemy_admin/initializer.js +65 -0
  123. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  124. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  125. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  126. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  127. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  128. data/app/javascript/alchemy_admin/spinner.js +36 -0
  129. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  130. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  131. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  132. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  133. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  134. data/app/javascript/alchemy_admin.js +70 -13
  135. data/app/javascript/menubar.js +10 -0
  136. data/app/models/alchemy/attachment.rb +9 -11
  137. data/app/models/alchemy/element.rb +11 -0
  138. data/app/models/alchemy/ingredients/audio.rb +0 -11
  139. data/app/models/alchemy/ingredients/datetime.rb +1 -1
  140. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  141. data/app/models/alchemy/ingredients/video.rb +0 -12
  142. data/app/models/alchemy/node.rb +4 -0
  143. data/app/models/alchemy/page/page_elements.rb +2 -11
  144. data/app/models/alchemy/page/page_natures.rb +10 -2
  145. data/app/models/alchemy/page.rb +12 -54
  146. data/app/models/alchemy/picture/url.rb +1 -9
  147. data/app/models/concerns/alchemy/picture_thumbnails.rb +5 -4
  148. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  149. data/app/services/alchemy/copy_page.rb +98 -0
  150. data/app/views/alchemy/_menubar.html.erb +17 -13
  151. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  152. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  153. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  154. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  155. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  156. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  157. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  158. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  159. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  160. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  161. data/app/views/alchemy/admin/crop.html.erb +1 -1
  162. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  163. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  164. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  165. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +21 -23
  166. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  167. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  168. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  169. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  170. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  171. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  172. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  173. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  174. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  175. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  176. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  177. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  178. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  179. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  180. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  181. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  182. data/app/views/alchemy/admin/layoutpages/edit.html.erb +1 -1
  183. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  184. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  185. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  186. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  187. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  188. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  189. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  190. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  191. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  192. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  193. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  194. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  195. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  196. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  197. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  198. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  199. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  200. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  201. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  202. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  203. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  204. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  205. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  206. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  207. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  208. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  209. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  210. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  211. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  212. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  213. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  214. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  215. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  216. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  217. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  218. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  219. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  220. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  221. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  222. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  223. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  224. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  225. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  226. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  227. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  228. data/app/views/alchemy/admin/resources/_filter.html.erb +2 -2
  229. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  230. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  231. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  232. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  233. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  234. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  235. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  236. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -18
  237. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  238. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  239. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  240. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  241. data/app/views/alchemy/base/500.html.erb +1 -1
  242. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  243. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  244. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +2 -3
  245. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  246. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  247. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  248. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  249. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  250. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  251. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  252. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  253. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  254. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  255. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  256. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  257. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  258. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  259. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  260. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  261. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  262. data/config/alchemy/modules.yml +30 -30
  263. data/config/importmap.rb +10 -1
  264. data/config/initializers/rails_live_reload.rb +13 -0
  265. data/config/locales/alchemy.en.yml +23 -9
  266. data/config/routes.rb +3 -2
  267. data/lib/alchemy/auth_accessors.rb +6 -1
  268. data/lib/alchemy/controller_actions.rb +17 -4
  269. data/lib/alchemy/dev_support/live_reload_watcher.rb +5 -0
  270. data/lib/alchemy/engine.rb +8 -2
  271. data/lib/alchemy/forms/builder.rb +18 -12
  272. data/lib/alchemy/modules.rb +2 -2
  273. data/lib/alchemy/permissions.rb +1 -1
  274. data/lib/alchemy/resources_helper.rb +3 -3
  275. data/lib/alchemy/routing_constraints.rb +1 -1
  276. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  277. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  278. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  279. data/lib/alchemy/tinymce.rb +8 -3
  280. data/lib/alchemy/version.rb +1 -1
  281. data/lib/tasks/alchemy/tidy.rake +1 -0
  282. data/package.json +14 -5
  283. data/vendor/assets/fonts/remixicon.eot +0 -0
  284. data/vendor/assets/fonts/remixicon.svg +7816 -0
  285. data/vendor/assets/fonts/remixicon.ttf +0 -0
  286. data/vendor/assets/fonts/remixicon.woff +0 -0
  287. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  288. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  289. metadata +87 -97
  290. data/.gem_release.yml +0 -8
  291. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  292. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  293. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  294. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  295. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  296. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  297. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  298. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  299. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  300. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  301. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  302. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  303. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  304. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  305. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  306. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  307. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  308. data/app/javascript/alchemy_admin/datepicker.js +0 -40
  309. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  310. data/app/javascript/alchemy_admin/translations.js +0 -32
  311. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  312. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  313. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  314. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  315. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  316. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  317. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  318. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  319. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  320. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  321. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  322. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  323. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  324. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  325. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  326. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  327. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  328. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  329. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  330. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  331. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  332. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  333. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  334. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  335. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  336. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  337. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  338. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  339. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  340. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  341. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  342. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  343. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  344. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  345. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  346. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  347. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  348. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  349. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  350. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  351. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  352. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  353. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  354. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  355. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  356. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  357. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  358. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  359. data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
@@ -44,7 +44,7 @@
44
44
  }
45
45
 
46
46
  .mce-container::-webkit-scrollbar-thumb {
47
- background-color: rgba(53,57,71,0.3);
47
+ background-color: rgba(53, 57, 71, 0.3);
48
48
  width: 6px;
49
49
  height: 6px;
50
50
  border-radius: $default-border-radius;
@@ -84,7 +84,7 @@ div.mce-fullscreen {
84
84
  }
85
85
 
86
86
  .mce-tinymce {
87
- visibility: visible!important;
87
+ visibility: visible !important;
88
88
  position: relative;
89
89
  display: block;
90
90
  border-radius: $default-border-radius;
@@ -98,7 +98,7 @@ div.mce-fullscreen {
98
98
  }
99
99
 
100
100
  div.mce-edit-area {
101
- background: #FFF;
101
+ background: #fff;
102
102
  filter: none;
103
103
  border-top: 0;
104
104
  border-radius: $default-border-radius;
@@ -206,7 +206,6 @@ div.mce-tinymce-inline {
206
206
  right: 2px;
207
207
  opacity: 0.4;
208
208
  filter: alpha(opacity=40);
209
- zoom: 1;
210
209
  }
211
210
 
212
211
  .mce-scrollbar-h {
@@ -222,7 +221,7 @@ div.mce-tinymce-inline {
222
221
  position: absolute;
223
222
  background-color: #000;
224
223
  border: 1px solid #888;
225
- border-color: rgba(85,85,85,0.6);
224
+ border-color: rgba(85, 85, 85, 0.6);
226
225
  width: 5px;
227
226
  height: 100%;
228
227
  -webkit-border-radius: 7px;
@@ -237,10 +236,9 @@ div.mce-tinymce-inline {
237
236
 
238
237
  .mce-scrollbar.mce-active,
239
238
  .mce-scrollbar:hover {
240
- background-color: #AAA;
239
+ background-color: #aaa;
241
240
  opacity: 0.6;
242
241
  filter: alpha(opacity=60);
243
- zoom: 1;
244
242
  -webkit-border-radius: 7px;
245
243
  -moz-border-radius: 7px;
246
244
  border-radius: 7px;
@@ -289,17 +287,16 @@ div.mce-tinymce-inline {
289
287
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
290
288
  background: transparent;
291
289
  border-radius: $default-border-radius;
292
- box-shadow: 0 5px 10px rgba(0,0,0,0.2);
290
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
293
291
  top: 0;
294
292
  left: 0;
295
293
  background: #fff;
296
294
  border: 1px solid $default-border-color;
297
- border: 1px solid rgba(0,0,0,0.25);
295
+ border: 1px solid rgba(0, 0, 0, 0.25);
298
296
  }
299
297
 
300
298
  &.mce-popover.mce-bottom {
301
299
  margin-top: 10px;
302
- *margin-top: 0;
303
300
  }
304
301
 
305
302
  &.mce-popover.mce-bottom > .mce-arrow {
@@ -307,7 +304,7 @@ div.mce-tinymce-inline {
307
304
  margin-left: -11px;
308
305
  border-top-width: 0;
309
306
  border-bottom-color: $default-border-color;
310
- border-bottom-color: rgba(0,0,0,0.25);
307
+ border-bottom-color: rgba(0, 0, 0, 0.25);
311
308
  top: -11px;
312
309
  }
313
310
 
@@ -444,7 +441,9 @@ div.mce-tinymce-inline {
444
441
  border-radius: $default-border-radius;
445
442
  border: 0 none;
446
443
 
447
- &:hover, &:focus, &:active {
444
+ &:hover,
445
+ &:focus,
446
+ &:active {
448
447
  width: auto !important;
449
448
  background: $button-hover-bg-color !important;
450
449
  border-color: $button-hover-border-color;
@@ -516,14 +515,14 @@ body .mce-abs-layout-item {
516
515
  .mce-tooltip {
517
516
  position: absolute;
518
517
  padding: 5px;
519
- transition-delay: .3s;
518
+ transition-delay: 0.3s;
520
519
  }
521
520
 
522
521
  .mce-tooltip-inner {
523
522
  background-color: $tooltip-background-color;
524
523
  color: $white;
525
524
  max-width: 200px;
526
- padding: $default-padding 2*$default-padding;
525
+ padding: $default-padding 2 * $default-padding;
527
526
  text-align: center;
528
527
  white-space: normal;
529
528
  box-shadow: 0 0 4px $default-border-color;
@@ -640,37 +639,27 @@ body .mce-abs-layout-item {
640
639
  position: relative;
641
640
  text-shadow: $button-text-shadow;
642
641
  display: inline-block;
643
- *display: inline;
644
- *zoom: 1;
645
642
  box-shadow: none;
646
643
  background-color: $light-gray;
647
644
 
648
645
  &:focus,
649
646
  &:hover {
650
647
  color: $text-color;
651
-
652
- button {
653
- background: inherit;
654
- }
655
648
  }
656
649
 
657
650
  &:hover {
658
- background-color: darken($medium-gray, 3%);
659
- }
660
-
661
- &:focus {
662
- background-color: $focus-color;
651
+ background-color: $default-border-color;
663
652
  }
664
653
 
665
654
  button {
666
- padding: 2px 4px;
655
+ padding: 5px $default-padding;
667
656
  font-size: 12px;
668
657
  line-height: 20px;
669
- *line-height: 16px;
670
658
  cursor: pointer;
671
659
  color: $text-color;
672
660
  text-align: center;
673
661
  overflow: visible;
662
+ appearance: none;
674
663
  -webkit-appearance: none;
675
664
  border-radius: inherit;
676
665
  box-shadow: none;
@@ -695,15 +684,17 @@ body .mce-abs-layout-item {
695
684
  text-shadow: 1px 1px #fff;
696
685
  }
697
686
 
698
- &.mce-disabled button,
699
- &.mce-disabled:hover button {
700
- cursor: default;
701
- box-shadow: none;
702
- opacity: 0.4;
703
- filter: alpha(opacity=40);
704
- zoom: 1;
705
- }
687
+ &.mce-disabled,
688
+ &.mce-disabled:hover {
689
+ background-color: transparent;
706
690
 
691
+ button {
692
+ cursor: default;
693
+ box-shadow: none;
694
+ opacity: 0.4;
695
+ filter: alpha(opacity=40);
696
+ }
697
+ }
707
698
  &.mce-active,
708
699
  &.mce-active:hover {
709
700
  background-color: $default-border-color;
@@ -732,29 +723,25 @@ body .mce-abs-layout-item {
732
723
  .mce-btn-small button {
733
724
  padding: 1px 5px;
734
725
  font-size: 12px;
735
- *padding-bottom: 2px;
736
726
  }
737
727
 
738
728
  .mce-btn-small i {
739
729
  line-height: 20px;
740
730
  vertical-align: top;
741
- *line-height: 18px;
742
731
  }
743
732
 
744
733
  .mce-btn .mce-caret {
745
- margin-top: 8px;
746
- margin-left: 0;
734
+ margin-top: 2px;
735
+ margin-left: 2px;
747
736
  }
748
737
 
749
738
  .mce-btn-small .mce-caret {
750
- margin-top: 8px;
751
- margin-left: 0;
739
+ margin-top: 2px;
740
+ margin-left: 2px;
752
741
  }
753
742
 
754
743
  .mce-caret {
755
744
  display: inline-block;
756
- *display: inline;
757
- *zoom: 1;
758
745
  width: 0;
759
746
  height: 0;
760
747
  vertical-align: top;
@@ -785,13 +772,13 @@ body .mce-abs-layout-item {
785
772
 
786
773
  .mce-btn-group .mce-first {
787
774
  border-left: 1px solid #b1b1b1;
788
- border-left: 1px solid rgba(0,0,0,0.25);
775
+ border-left: 1px solid rgba(0, 0, 0, 0.25);
789
776
  @include border-left-radius($default-border-radius);
790
777
  }
791
778
 
792
779
  .mce-btn-group .mce-last {
793
780
  border-right: 1px solid #b1b1b1;
794
- border-right: 1px solid rgba(0,0,0,0.1);
781
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
795
782
  @include border-right-radius($default-border-radius);
796
783
  }
797
784
 
@@ -811,20 +798,24 @@ i.mce-i-checkbox {
811
798
  margin: 0 3px 0 0;
812
799
  border: 1px solid #c5c5c5;
813
800
  border-radius: $default-border-radius;
814
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
801
+ box-shadow:
802
+ inset 0 1px 0 rgba(255, 255, 255, 0.2),
803
+ 0 1px 2px rgba(0, 0, 0, 0.05);
815
804
  background-color: #f0f0f0;
816
- background-image: -moz-linear-gradient(top,#fff,#d9d9d9);
817
- background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));
818
- background-image: -webkit-linear-gradient(top,#fff,#d9d9d9);
819
- background-image: -o-linear-gradient(top,#fff,#d9d9d9);
820
- background-image: linear-gradient(to bottom,#fff,#d9d9d9);
805
+ background-image: -moz-linear-gradient(top, #fff, #d9d9d9);
806
+ background-image: -webkit-gradient(
807
+ linear,
808
+ 0 0,
809
+ 0 100%,
810
+ from(#fff),
811
+ to(#d9d9d9)
812
+ );
813
+ background-image: -webkit-linear-gradient(top, #fff, #d9d9d9);
814
+ background-image: -o-linear-gradient(top, #fff, #d9d9d9);
815
+ background-image: linear-gradient(to bottom, #fff, #d9d9d9);
821
816
  background-repeat: repeat-x;
822
817
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr= '#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);
823
- zoom: 1;
824
818
  text-indent: -10em;
825
- *font-size: 0;
826
- *line-height: 0;
827
- *text-indent: 0;
828
819
  overflow: hidden;
829
820
  }
830
821
 
@@ -931,11 +922,8 @@ i.mce-i-checkbox {
931
922
 
932
923
  .mce-combobox {
933
924
  display: inline-block;
934
- *display: inline;
935
- *zoom: 1;
936
925
  border-radius: $default-border-radius;
937
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
938
- *height: 32px;
926
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
939
927
  }
940
928
 
941
929
  .mce-combobox input {
@@ -969,13 +957,10 @@ i.mce-i-checkbox {
969
957
  box-shadow: none;
970
958
  opacity: 0.4;
971
959
  filter: alpha(opacity=40);
972
- zoom: 1;
973
960
  }
974
961
 
975
962
  .mce-path {
976
963
  display: inline-block;
977
- *display: inline;
978
- *zoom: 1;
979
964
  padding: 4px 6px;
980
965
  white-space: normal;
981
966
  }
@@ -991,8 +976,6 @@ i.mce-i-checkbox {
991
976
 
992
977
  .mce-path-item {
993
978
  display: inline-block;
994
- *display: inline;
995
- *zoom: 1;
996
979
  cursor: pointer;
997
980
  color: #333;
998
981
  }
@@ -1033,8 +1016,6 @@ i.mce-i-checkbox {
1033
1016
 
1034
1017
  .mce-fit-layout {
1035
1018
  display: inline-block;
1036
- *display: inline;
1037
- *zoom: 1;
1038
1019
  }
1039
1020
 
1040
1021
  .mce-fit-layout-item {
@@ -1043,8 +1024,6 @@ i.mce-i-checkbox {
1043
1024
 
1044
1025
  .mce-flow-layout-item {
1045
1026
  display: inline-block;
1046
- *display: inline;
1047
- *zoom: 1;
1048
1027
  }
1049
1028
 
1050
1029
  .mce-flow-layout-item {
@@ -1084,9 +1063,7 @@ i.mce-i-checkbox {
1084
1063
 
1085
1064
  .mce-label {
1086
1065
  display: inline-block;
1087
- *display: inline;
1088
- *zoom: 1;
1089
- text-shadow: 0 1px 1px rgba(255,255,255,0.75);
1066
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1090
1067
  border: 0;
1091
1068
  overflow: hidden;
1092
1069
  }
@@ -1148,8 +1125,7 @@ i.mce-i-checkbox {
1148
1125
  .mce-menubtn span {
1149
1126
  color: #333;
1150
1127
  margin-right: 2px;
1151
- line-height: 20px;
1152
- *line-height: 16px;
1128
+ line-height: 16px;
1153
1129
  }
1154
1130
 
1155
1131
  .mce-menubtn.mce-btn-small span {
@@ -1167,10 +1143,6 @@ i.mce-i-checkbox {
1167
1143
  width: 70px;
1168
1144
  }
1169
1145
 
1170
- .mce-menubtn .mce-caret {
1171
- *margin-top: 6px;
1172
- }
1173
-
1174
1146
  .mce-rtl .mce-menubtn button {
1175
1147
  direction: rtl;
1176
1148
  text-align: right;
@@ -1225,7 +1197,7 @@ i.mce-i-checkbox {
1225
1197
 
1226
1198
  .mce-menu-item.mce-selected .mce-text,
1227
1199
  .mce-menu-item:hover .mce-text {
1228
- color: #fff;
1200
+ color: #fff !important;
1229
1201
  }
1230
1202
 
1231
1203
  .mce-menu-item.mce-selected .mce-ico,
@@ -1245,8 +1217,6 @@ i.mce-i-checkbox {
1245
1217
 
1246
1218
  .mce-menu-shortcut {
1247
1219
  display: inline-block;
1248
- *display: inline;
1249
- *zoom: 1;
1250
1220
  padding: 0 15px 0 20px;
1251
1221
  }
1252
1222
 
@@ -1258,7 +1228,6 @@ i.mce-i-checkbox {
1258
1228
 
1259
1229
  .mce-menu-item .mce-caret {
1260
1230
  margin-top: 4px;
1261
- *margin-top: 3px;
1262
1231
  margin-right: 6px;
1263
1232
  border-top: 4px solid transparent;
1264
1233
  border-bottom: 4px solid transparent;
@@ -1271,10 +1240,6 @@ i.mce-i-checkbox {
1271
1240
  border-left-color: #fff;
1272
1241
  }
1273
1242
 
1274
- .mce-menu-align .mce-menu-shortcut {
1275
- *margin-top: -2px;
1276
- }
1277
-
1278
1243
  .mce-menu-align .mce-caret,
1279
1244
  .mce-menu-align .mce-menu-shortcut {
1280
1245
  position: absolute;
@@ -1307,7 +1272,7 @@ i.mce-i-checkbox {
1307
1272
  .mce-menu-item:hover {
1308
1273
  text-decoration: none;
1309
1274
  color: #fff;
1310
- background: $button-hover-bg-color;
1275
+ background: $dark-blue;
1311
1276
  }
1312
1277
 
1313
1278
  .mce-menu-item-sep:hover,
@@ -1361,10 +1326,10 @@ div.mce-menu .mce-menu-item-sep {
1361
1326
  min-width: 160px;
1362
1327
  background: #fff;
1363
1328
  border: 1px solid #989898;
1364
- border: 1px solid rgba(0,0,0,0.2);
1329
+ border: 1px solid rgba(0, 0, 0, 0.2);
1365
1330
  z-index: 1002;
1366
1331
  border-radius: $default-border-radius;
1367
- box-shadow: 0 5px 10px rgba(0,0,0,0.2);
1332
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
1368
1333
  max-height: 400px;
1369
1334
  overflow: auto;
1370
1335
  overflow-x: hidden;
@@ -1376,7 +1341,6 @@ div.mce-menu .mce-menu-item-sep {
1376
1341
 
1377
1342
  .mce-menu-has-icons i {
1378
1343
  display: inline-block;
1379
- *display: inline;
1380
1344
  }
1381
1345
 
1382
1346
  .mce-menu-sub-tr-tl {
@@ -1438,9 +1402,15 @@ i.mce-i-resize {
1438
1402
  }
1439
1403
 
1440
1404
  .mce-splitbtn .mce-open.mce-active {
1441
- -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
1442
- -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
1443
- box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
1405
+ -webkit-box-shadow:
1406
+ inset 0 2px 4px rgba(0, 0, 0, 0.15),
1407
+ 0 1px 2px rgba(0, 0, 0, 0.05);
1408
+ -moz-box-shadow:
1409
+ inset 0 2px 4px rgba(0, 0, 0, 0.15),
1410
+ 0 1px 2px rgba(0, 0, 0, 0.05);
1411
+ box-shadow:
1412
+ inset 0 2px 4px rgba(0, 0, 0, 0.15),
1413
+ 0 1px 2px rgba(0, 0, 0, 0.05);
1444
1414
  }
1445
1415
 
1446
1416
  .mce-splitbtn.mce-btn-small .mce-open {
@@ -1473,13 +1443,11 @@ i.mce-i-resize {
1473
1443
 
1474
1444
  .mce-tab {
1475
1445
  display: inline-block;
1476
- *display: inline;
1477
- *zoom: 1;
1478
1446
  border: 1px solid #c5c5c5;
1479
1447
  border-width: 0 1px 0 0;
1480
1448
  background: #e3e3e3;
1481
1449
  padding: 8px;
1482
- text-shadow: 0 1px 1px rgba(255,255,255,0.75);
1450
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1483
1451
  height: 13px;
1484
1452
  cursor: pointer;
1485
1453
  }
@@ -1519,7 +1487,9 @@ i.mce-i-resize {
1519
1487
  border-radius: $default-border-radius;
1520
1488
  box-shadow: $form-field-box-shadow;
1521
1489
  display: inline-block;
1522
- transition: border linear 0.2s, box-shadow linear 0.2s;
1490
+ transition:
1491
+ border linear 0.2s,
1492
+ box-shadow linear 0.2s;
1523
1493
  resize: none;
1524
1494
  white-space: pre-wrap;
1525
1495
  color: $form-field-text-color;
@@ -1560,30 +1530,32 @@ i.mce-i-resize {
1560
1530
  height: 100%;
1561
1531
  opacity: 0.6;
1562
1532
  filter: alpha(opacity=60);
1563
- zoom: 1;
1564
- background: #fff url('tinymce/skins/alchemy/fonts/img/loader.gif') no-repeat center center;
1533
+ background: #fff url("tinymce/skins/alchemy/fonts/img/loader.gif") no-repeat
1534
+ center center;
1565
1535
  }
1566
1536
 
1567
1537
  @font-face {
1568
- font-family: 'tinymce';
1569
- src: url('tinymce/skins/alchemy/fonts/tinymce.woff') format('woff'),
1570
- url('tinymce/skins/alchemy/fonts/tinymce.ttf') format('truetype'),
1571
- url('tinymce/skins/alchemy/fonts/tinymce.svg#tinymce') format('svg');
1538
+ font-family: "tinymce";
1539
+ src:
1540
+ url("tinymce/skins/alchemy/fonts/tinymce.woff") format("woff"),
1541
+ url("tinymce/skins/alchemy/fonts/tinymce.ttf") format("truetype"),
1542
+ url("tinymce/skins/alchemy/fonts/tinymce.svg#tinymce") format("svg");
1572
1543
  font-weight: normal;
1573
1544
  font-style: normal;
1574
1545
  }
1575
1546
 
1576
1547
  @font-face {
1577
- font-family: 'tinymce-small';
1578
- src: url('tinymce/skins/alchemy/fonts/tinymce-small.woff') format('woff'),
1579
- url('tinymce/skins/alchemy/fonts/tinymce-small.ttf') format('truetype'),
1580
- url('tinymce/skins/alchemy/fonts/tinymce-small.svg#tinymce') format('svg');
1548
+ font-family: "tinymce-small";
1549
+ src:
1550
+ url("tinymce/skins/alchemy/fonts/tinymce-small.woff") format("woff"),
1551
+ url("tinymce/skins/alchemy/fonts/tinymce-small.ttf") format("truetype"),
1552
+ url("tinymce/skins/alchemy/fonts/tinymce-small.svg#tinymce") format("svg");
1581
1553
  font-weight: normal;
1582
1554
  font-style: normal;
1583
1555
  }
1584
1556
 
1585
1557
  .mce-ico {
1586
- font-family: 'tinymce', Arial;
1558
+ font-family: "tinymce", Arial;
1587
1559
  font-style: normal;
1588
1560
  font-weight: normal;
1589
1561
  font-size: 12px;
@@ -1599,7 +1571,7 @@ i.mce-i-resize {
1599
1571
  }
1600
1572
 
1601
1573
  .mce-btn-small .mce-ico {
1602
- font-family: 'tinymce-small', Arial;
1574
+ font-family: "tinymce-small", Arial;
1603
1575
  }
1604
1576
 
1605
1577
  .mce-i-save:before {
@@ -0,0 +1,39 @@
1
+ module Alchemy
2
+ module Admin
3
+ class NodeSelect < ViewComponent::Base
4
+ delegate :alchemy, to: :helpers
5
+
6
+ def initialize(node = nil, url: nil, placeholder: Alchemy.t(:search_node), query_params: nil)
7
+ @node = node
8
+ @url = url
9
+ @placeholder = placeholder
10
+ @query_params = query_params
11
+ end
12
+
13
+ def call
14
+ content_tag("alchemy-node-select", content, attributes)
15
+ end
16
+
17
+ private
18
+
19
+ def attributes
20
+ options = {
21
+ "allow-clear": true,
22
+ placeholder: @placeholder,
23
+ url: @url || alchemy.api_nodes_path
24
+ }
25
+
26
+ if @query_params
27
+ options[:"query-params"] = @query_params.to_json
28
+ end
29
+
30
+ if @node
31
+ selection = ActiveModelSerializers::SerializableResource.new(@node, include: :ancestors)
32
+ options[:selection] = selection.to_json
33
+ end
34
+
35
+ options
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,42 @@
1
+ module Alchemy
2
+ module Admin
3
+ class PageSelect < ViewComponent::Base
4
+ delegate :alchemy, to: :helpers
5
+
6
+ def initialize(page = nil, url: nil, allow_clear: false, placeholder: Alchemy.t(:search_page), query_params: nil)
7
+ @page = page
8
+ @url = url
9
+ @allow_clear = allow_clear
10
+ @placeholder = placeholder
11
+ @query_params = query_params
12
+ end
13
+
14
+ def call
15
+ content_tag("alchemy-page-select", content, attributes)
16
+ end
17
+
18
+ private
19
+
20
+ def attributes
21
+ options = {
22
+ placeholder: @placeholder,
23
+ url: @url || alchemy.api_pages_path
24
+ }
25
+
26
+ options = options.merge({"allow-clear": @allow_clear}) if @allow_clear
27
+ options = options.merge({"query-params": @query_params.to_json}) if @query_params
28
+
29
+ if @page
30
+ selection = {
31
+ id: @page.id,
32
+ name: @page.name,
33
+ url_path: @page.url_path
34
+ }
35
+ options = options.merge({selection: selection.to_json})
36
+ end
37
+
38
+ options
39
+ end
40
+ end
41
+ end
42
+ end
@@ -4,7 +4,7 @@ module Alchemy
4
4
  def call
5
5
  content_tag(:audio, **html_options) do
6
6
  tag(:source, src: src, type: type)
7
- end.html_safe
7
+ end
8
8
  end
9
9
 
10
10
  def render?
@@ -16,7 +16,7 @@ module Alchemy
16
16
  end
17
17
 
18
18
  def call
19
- value.html_safe
19
+ value
20
20
  end
21
21
 
22
22
  def render?
@@ -2,7 +2,7 @@ module Alchemy
2
2
  module Ingredients
3
3
  class BooleanView < BaseView
4
4
  def call
5
- Alchemy.t(value.to_s, scope: "ingredient_values.boolean").html_safe
5
+ Alchemy.t(value, scope: "ingredient_values.boolean")
6
6
  end
7
7
 
8
8
  def render?
@@ -11,12 +11,11 @@ module Alchemy
11
11
  end
12
12
 
13
13
  def call
14
- datetime = ingredient.value.in_time_zone(Rails.application.config.time_zone)
15
14
  if date_format == "rfc822"
16
- datetime.try(:to_fs, :rfc822) || datetime.to_s(:rfc822)
15
+ ingredient.value.to_s(:rfc822)
17
16
  else
18
- ::I18n.l(datetime, format: date_format)
19
- end.html_safe
17
+ ::I18n.l(ingredient.value, format: date_format)
18
+ end
20
19
  end
21
20
  end
22
21
  end
@@ -23,7 +23,7 @@ module Alchemy
23
23
  class: ingredient.css_class.presence,
24
24
  title: ingredient.title.presence
25
25
  }.merge(html_options)
26
- ).html_safe
26
+ )
27
27
  end
28
28
 
29
29
  def render?
@@ -7,22 +7,13 @@ module Alchemy
7
7
  end
8
8
 
9
9
  def call
10
- content_tag tag_name, id: dom_id, class: css_classes do
11
- ingredient.value
12
- end.html_safe
13
- end
14
-
15
- private
16
-
17
- def tag_name = "h#{@level || ingredient.level}"
18
-
19
- def dom_id = ingredient.dom_id.presence
20
-
21
- def css_classes
22
- [
23
- ingredient.size ? "h#{ingredient.size}" : nil,
24
- html_options[:class]
25
- ]
10
+ content_tag "h#{@level || ingredient.level}",
11
+ ingredient.value,
12
+ id: ingredient.dom_id.presence,
13
+ class: [
14
+ ingredient.size ? "h#{ingredient.size}" : nil,
15
+ html_options[:class]
16
+ ]
26
17
  end
27
18
  end
28
19
  end
@@ -12,7 +12,7 @@ module Alchemy
12
12
  end
13
13
 
14
14
  def call
15
- link_to(link_text, value, {target: link_target}.merge(html_options)).html_safe
15
+ link_to(link_text, value, {target: link_target}.merge(html_options))
16
16
  end
17
17
 
18
18
  private
@@ -4,7 +4,7 @@ module Alchemy
4
4
  delegate :page, to: :ingredient
5
5
 
6
6
  def call
7
- link_to(page.name, alchemy.show_page_path(urlname: page.urlname)).html_safe
7
+ link_to page.name, alchemy.show_page_path(urlname: page.urlname)
8
8
  end
9
9
 
10
10
  def render?