alchemy_cms 7.0.11 → 7.1.0.pre.b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/backport.yml +36 -0
  3. data/.github/workflows/test.yml +3 -2
  4. data/.gitignore +1 -0
  5. data/.standard.yml +1 -1
  6. data/CHANGELOG.md +144 -15
  7. data/Gemfile +8 -10
  8. data/README.md +10 -8
  9. data/alchemy_cms.gemspec +4 -3
  10. data/app/assets/config/alchemy_manifest.js +0 -1
  11. data/app/assets/javascripts/alchemy/admin.js +1 -19
  12. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +2 -3
  13. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -34
  14. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +38 -13
  15. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
  16. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +32 -25
  17. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
  18. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +3 -5
  19. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +0 -57
  20. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +22 -63
  21. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
  22. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +5 -4
  23. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +5 -5
  24. data/app/assets/javascripts/alchemy/templates/index.js +0 -2
  25. data/app/assets/javascripts/alchemy/templates/node_folder.hbs +1 -1
  26. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  27. data/app/assets/javascripts/alchemy/templates/page_folder.hbs +2 -2
  28. data/app/assets/stylesheets/alchemy/_custom-properties.scss +82 -0
  29. data/app/assets/stylesheets/alchemy/_mixins.scss +38 -30
  30. data/app/assets/stylesheets/alchemy/_variables.scss +12 -5
  31. data/app/assets/stylesheets/alchemy/admin.scss +3 -4
  32. data/app/assets/stylesheets/alchemy/archive.scss +107 -50
  33. data/app/assets/stylesheets/alchemy/attachments.scss +5 -4
  34. data/app/assets/stylesheets/alchemy/buttons.scss +38 -164
  35. data/app/assets/stylesheets/alchemy/dashboard.scss +31 -6
  36. data/app/assets/stylesheets/alchemy/dialogs.scss +12 -28
  37. data/app/assets/stylesheets/alchemy/elements.scss +273 -282
  38. data/app/assets/stylesheets/alchemy/flash.scss +20 -12
  39. data/app/assets/stylesheets/alchemy/forms.scss +21 -34
  40. data/app/assets/stylesheets/alchemy/frame.scss +11 -32
  41. data/app/assets/stylesheets/alchemy/hints.scss +4 -62
  42. data/app/assets/stylesheets/alchemy/image_library.scss +36 -33
  43. data/app/assets/stylesheets/alchemy/labels.scss +4 -1
  44. data/app/assets/stylesheets/alchemy/menubar.scss +7 -6
  45. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  46. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  47. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  48. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  49. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  50. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  51. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  52. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  53. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  54. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  55. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  56. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  57. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  58. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  59. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  60. data/app/components/alchemy/admin/node_select.rb +39 -0
  61. data/app/components/alchemy/admin/page_select.rb +42 -0
  62. data/app/controllers/alchemy/admin/base_controller.rb +5 -6
  63. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  64. data/app/controllers/alchemy/admin/languages_controller.rb +1 -2
  65. data/app/controllers/alchemy/base_controller.rb +4 -2
  66. data/app/controllers/concerns/alchemy/admin/current_language.rb +1 -5
  67. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  68. data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
  69. data/app/decorators/alchemy/element_editor.rb +0 -2
  70. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  71. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  72. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  73. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  74. data/app/helpers/alchemy/base_helper.rb +47 -13
  75. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  76. data/app/javascript/alchemy_admin/components/button.js +59 -0
  77. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  78. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  79. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  80. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  81. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  82. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  83. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  84. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  85. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  86. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  87. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  88. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  89. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  90. data/app/javascript/alchemy_admin/components/select.js +12 -0
  91. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  92. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  93. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  94. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  95. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  96. data/app/javascript/alchemy_admin/dirty.js +49 -0
  97. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  98. data/app/javascript/alchemy_admin/gui.js +14 -0
  99. data/app/javascript/alchemy_admin/i18n.js +12 -8
  100. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  101. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  102. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  103. data/app/javascript/alchemy_admin/initializer.js +65 -0
  104. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  105. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  106. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  107. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  108. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  109. data/app/javascript/alchemy_admin/spinner.js +36 -0
  110. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  111. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  112. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  113. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  114. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  115. data/app/javascript/alchemy_admin.js +70 -13
  116. data/app/javascript/menubar.js +10 -0
  117. data/app/models/alchemy/attachment.rb +9 -11
  118. data/app/models/alchemy/element.rb +11 -0
  119. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  120. data/app/models/alchemy/node.rb +4 -0
  121. data/app/models/alchemy/page/page_elements.rb +2 -11
  122. data/app/models/alchemy/page/page_natures.rb +10 -2
  123. data/app/models/alchemy/page.rb +9 -49
  124. data/app/models/alchemy/picture/url.rb +1 -9
  125. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  126. data/app/services/alchemy/copy_page.rb +98 -0
  127. data/app/views/alchemy/_menubar.html.erb +17 -13
  128. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  129. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  130. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  131. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  132. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  133. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  134. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  135. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  136. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  137. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  138. data/app/views/alchemy/admin/crop.html.erb +1 -1
  139. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  140. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  141. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  142. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +21 -23
  143. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  144. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  145. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  146. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  147. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  148. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  149. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  150. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  151. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  152. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  153. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  154. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  155. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  156. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  157. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  158. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  159. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  160. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  161. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  162. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  163. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  164. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  165. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  166. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  167. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  168. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  169. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  170. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  171. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  172. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  173. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  174. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  175. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  176. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  177. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  178. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  179. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  180. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  181. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  182. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  183. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  184. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  185. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  186. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  187. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  188. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  189. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  190. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  191. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  192. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  193. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  194. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  195. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  196. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  197. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  198. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  199. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  200. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  201. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  202. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  203. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  204. data/app/views/alchemy/admin/resources/_filter.html.erb +2 -2
  205. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  206. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  207. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  208. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  209. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  210. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  211. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  212. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -18
  213. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  214. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  215. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  216. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  217. data/app/views/alchemy/base/500.html.erb +1 -1
  218. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  219. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  220. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  221. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  222. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  223. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  224. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  225. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  226. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  227. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  228. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  229. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  230. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  231. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  232. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  233. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  234. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  235. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  236. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  237. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  238. data/config/alchemy/modules.yml +30 -30
  239. data/config/importmap.rb +10 -1
  240. data/config/initializers/rails_live_reload.rb +13 -0
  241. data/config/locales/alchemy.en.yml +23 -9
  242. data/config/routes.rb +2 -1
  243. data/lib/alchemy/auth_accessors.rb +6 -1
  244. data/lib/alchemy/controller_actions.rb +17 -4
  245. data/lib/alchemy/dev_support/live_reload_watcher.rb +5 -0
  246. data/lib/alchemy/engine.rb +8 -2
  247. data/lib/alchemy/forms/builder.rb +18 -12
  248. data/lib/alchemy/resources_helper.rb +3 -3
  249. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  250. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  251. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  252. data/lib/alchemy/tinymce.rb +8 -3
  253. data/lib/alchemy/version.rb +1 -1
  254. data/package.json +14 -5
  255. data/vendor/assets/fonts/remixicon.eot +0 -0
  256. data/vendor/assets/fonts/remixicon.svg +7816 -0
  257. data/vendor/assets/fonts/remixicon.ttf +0 -0
  258. data/vendor/assets/fonts/remixicon.woff +0 -0
  259. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  260. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  261. metadata +85 -96
  262. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  263. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  264. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  265. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  266. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  267. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  268. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  269. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  270. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  271. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  272. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  273. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  274. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  275. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  276. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  277. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  278. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  279. data/app/javascript/alchemy_admin/datepicker.js +0 -40
  280. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  281. data/app/javascript/alchemy_admin/translations.js +0 -32
  282. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  283. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  284. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  285. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  286. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  287. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  288. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  289. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  290. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  291. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  292. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  293. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  294. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  295. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  296. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  297. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  298. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  299. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  300. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  301. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  302. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  303. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  304. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  305. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  306. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  307. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  308. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  309. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  310. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  311. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  312. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  313. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  314. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  315. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  316. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  317. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  318. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  319. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  320. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  321. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  322. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  323. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  324. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  325. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  326. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  327. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  328. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  329. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  330. 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
@@ -48,14 +48,13 @@ module Alchemy
48
48
  @error = error
49
49
  # truncate the message, because very long error messages (i.e from mysql2) causes cookie overflow errors
50
50
  @notice = error.message[0..255]
51
- @trace = error.backtrace[0..50]
52
- if request.xhr?
51
+ if request.format.json?
52
+ render json: {message: @notice}, status: 500
53
+ elsif request.xhr?
53
54
  render action: "error_notice"
54
55
  else
55
- respond_to do |format|
56
- format.html { render "500", status: 500 }
57
- format.json { render json: {message: @notice}, status: 500 }
58
- end
56
+ @trace = error.backtrace[0..50]
57
+ render "500", status: 500
59
58
  end
60
59
  end
61
60