alchemy_cms 7.0.7 → 7.1.0.pre.b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) 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 +150 -0
  7. data/Gemfile +8 -10
  8. data/README.md +10 -8
  9. data/alchemy_cms.gemspec +3 -2
  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/menubar.scss +7 -6
  44. data/app/assets/stylesheets/alchemy/navigation.scss +27 -15
  45. data/app/assets/stylesheets/alchemy/nodes.scss +11 -7
  46. data/app/assets/stylesheets/alchemy/notices.scss +16 -4
  47. data/app/assets/stylesheets/alchemy/page-select.scss +10 -2
  48. data/app/assets/stylesheets/alchemy/pagination.scss +22 -13
  49. data/app/assets/stylesheets/alchemy/resource_info.scss +7 -5
  50. data/app/assets/stylesheets/alchemy/selects.scss +49 -42
  51. data/app/assets/stylesheets/alchemy/shoelace.scss +345 -0
  52. data/app/assets/stylesheets/alchemy/sitemap.scss +24 -14
  53. data/app/assets/stylesheets/alchemy/spinner.scss +9 -19
  54. data/app/assets/stylesheets/alchemy/tables.scss +16 -24
  55. data/app/assets/stylesheets/alchemy/tags.scss +4 -0
  56. data/app/assets/stylesheets/alchemy/toolbar.scss +29 -25
  57. data/app/assets/stylesheets/alchemy/upload.scss +140 -89
  58. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +80 -108
  59. data/app/components/alchemy/admin/node_select.rb +39 -0
  60. data/app/components/alchemy/admin/page_select.rb +42 -0
  61. data/app/controllers/alchemy/admin/base_controller.rb +5 -6
  62. data/app/controllers/alchemy/admin/elements_controller.rb +63 -35
  63. data/app/controllers/alchemy/admin/resources_controller.rb +5 -5
  64. data/app/controllers/alchemy/base_controller.rb +4 -2
  65. data/app/controllers/alchemy/messages_controller.rb +4 -4
  66. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
  67. data/app/controllers/concerns/alchemy/site_redirects.rb +1 -1
  68. data/app/decorators/alchemy/element_editor.rb +0 -2
  69. data/app/helpers/alchemy/admin/attachments_helper.rb +6 -5
  70. data/app/helpers/alchemy/admin/base_helper.rb +17 -12
  71. data/app/helpers/alchemy/admin/ingredients_helper.rb +4 -1
  72. data/app/helpers/alchemy/admin/pages_helper.rb +5 -11
  73. data/app/helpers/alchemy/base_helper.rb +47 -13
  74. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +129 -0
  75. data/app/javascript/alchemy_admin/components/button.js +59 -0
  76. data/app/javascript/alchemy_admin/components/char_counter.js +40 -0
  77. data/app/javascript/alchemy_admin/components/datepicker.js +39 -0
  78. data/app/javascript/alchemy_admin/components/dialog_link.js +45 -0
  79. data/app/javascript/alchemy_admin/components/element_editor/publish_element_button.js +36 -0
  80. data/app/javascript/alchemy_admin/components/element_editor.js +553 -0
  81. data/app/javascript/alchemy_admin/components/ingredient_group.js +54 -0
  82. data/app/javascript/alchemy_admin/components/link_buttons/link_button.js +48 -0
  83. data/app/javascript/alchemy_admin/components/link_buttons/unlink_button.js +38 -0
  84. data/app/javascript/alchemy_admin/components/link_buttons.js +79 -0
  85. data/app/javascript/alchemy_admin/components/node_select.js +45 -0
  86. data/app/javascript/alchemy_admin/components/overlay.js +18 -0
  87. data/app/javascript/alchemy_admin/components/page_select.js +63 -0
  88. data/app/javascript/alchemy_admin/components/remote_select.js +134 -0
  89. data/app/javascript/alchemy_admin/components/select.js +12 -0
  90. data/app/javascript/alchemy_admin/components/spinner.js +31 -0
  91. data/app/javascript/alchemy_admin/components/tinymce.js +146 -0
  92. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +266 -0
  93. data/app/javascript/alchemy_admin/components/uploader/progress.js +258 -0
  94. data/app/javascript/alchemy_admin/components/uploader.js +132 -0
  95. data/app/javascript/alchemy_admin/dirty.js +49 -0
  96. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  97. data/app/javascript/alchemy_admin/gui.js +14 -0
  98. data/app/javascript/alchemy_admin/i18n.js +12 -8
  99. data/app/javascript/alchemy_admin/image_cropper.js +6 -3
  100. data/app/javascript/alchemy_admin/image_loader.js +7 -15
  101. data/app/javascript/alchemy_admin/ingredient_anchor_link.js +2 -5
  102. data/app/javascript/alchemy_admin/initializer.js +65 -0
  103. data/app/javascript/alchemy_admin/locales/en.js +31 -0
  104. data/app/javascript/alchemy_admin/picture_editors.js +2 -2
  105. data/app/javascript/alchemy_admin/picture_selector.js +38 -0
  106. data/app/javascript/alchemy_admin/please_wait_overlay.js +8 -0
  107. data/app/javascript/alchemy_admin/sortable_elements.js +78 -0
  108. data/app/javascript/alchemy_admin/spinner.js +36 -0
  109. data/app/javascript/alchemy_admin/tags_autocomplete.js +46 -0
  110. data/app/javascript/alchemy_admin/utils/ajax.js +6 -5
  111. data/app/javascript/alchemy_admin/utils/dom_helpers.js +20 -0
  112. data/app/javascript/alchemy_admin/utils/format.js +11 -0
  113. data/app/javascript/alchemy_admin/utils/string_conversions.js +10 -0
  114. data/app/javascript/alchemy_admin.js +70 -13
  115. data/app/javascript/menubar.js +10 -0
  116. data/app/models/alchemy/attachment.rb +9 -11
  117. data/app/models/alchemy/element/element_ingredients.rb +2 -2
  118. data/app/models/alchemy/element.rb +11 -0
  119. data/app/models/alchemy/ingredient.rb +3 -3
  120. data/app/models/alchemy/ingredient_validator.rb +2 -2
  121. data/app/models/alchemy/ingredients/richtext.rb +1 -10
  122. data/app/models/alchemy/node.rb +4 -0
  123. data/app/models/alchemy/page/page_natures.rb +10 -2
  124. data/app/models/alchemy/page.rb +10 -50
  125. data/app/models/alchemy/picture/url.rb +1 -9
  126. data/app/models/concerns/alchemy/picture_thumbnails.rb +1 -1
  127. data/app/serializers/alchemy/page_tree_serializer.rb +2 -1
  128. data/app/services/alchemy/copy_page.rb +98 -0
  129. data/app/views/alchemy/_menubar.html.erb +17 -13
  130. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -10
  131. data/app/views/alchemy/admin/attachments/_attachment.html.erb +44 -36
  132. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +15 -21
  133. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  134. data/app/views/alchemy/admin/attachments/assign.js.erb +1 -1
  135. data/app/views/alchemy/admin/attachments/index.html.erb +6 -4
  136. data/app/views/alchemy/admin/attachments/show.html.erb +8 -8
  137. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  138. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -7
  139. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  140. data/app/views/alchemy/admin/crop.html.erb +1 -1
  141. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  142. data/app/views/alchemy/admin/dashboard/index.html.erb +13 -11
  143. data/app/views/alchemy/admin/dashboard/info.html.erb +7 -7
  144. data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +22 -24
  145. data/app/views/alchemy/admin/elements/_element.html.erb +52 -44
  146. data/app/views/alchemy/admin/elements/_footer.html.erb +1 -1
  147. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  148. data/app/views/alchemy/admin/elements/_header.html.erb +11 -12
  149. data/app/views/alchemy/admin/elements/_toolbar.html.erb +33 -45
  150. data/app/views/alchemy/admin/elements/create.js.erb +7 -15
  151. data/app/views/alchemy/admin/elements/destroy.js.erb +0 -2
  152. data/app/views/alchemy/admin/elements/index.html.erb +27 -24
  153. data/app/views/alchemy/admin/elements/new.html.erb +9 -11
  154. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +2 -2
  155. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +3 -3
  156. data/app/views/alchemy/admin/ingredients/_video_fields.html.erb +1 -2
  157. data/app/views/alchemy/admin/languages/_form.html.erb +2 -3
  158. data/app/views/alchemy/admin/languages/_language.html.erb +15 -8
  159. data/app/views/alchemy/admin/languages/_table.html.erb +1 -0
  160. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +28 -16
  161. data/app/views/alchemy/admin/layoutpages/index.html.erb +2 -2
  162. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +12 -8
  163. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  164. data/app/views/alchemy/admin/nodes/_form.html.erb +20 -21
  165. data/app/views/alchemy/admin/nodes/_node.html.erb +39 -34
  166. data/app/views/alchemy/admin/nodes/index.html.erb +1 -1
  167. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +4 -4
  168. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +2 -2
  169. data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
  170. data/app/views/alchemy/admin/pages/_external_link.html.erb +4 -4
  171. data/app/views/alchemy/admin/pages/_file_link.html.erb +5 -5
  172. data/app/views/alchemy/admin/pages/_form.html.erb +10 -21
  173. data/app/views/alchemy/admin/pages/_internal_link.html.erb +4 -4
  174. data/app/views/alchemy/admin/pages/_locked_page.html.erb +2 -2
  175. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +4 -17
  176. data/app/views/alchemy/admin/pages/_page.html.erb +76 -72
  177. data/app/views/alchemy/admin/pages/_page_infos.html.erb +23 -7
  178. data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +2 -1
  179. data/app/views/alchemy/admin/pages/_page_status.html.erb +11 -21
  180. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -5
  181. data/app/views/alchemy/admin/pages/_table.html.erb +1 -1
  182. data/app/views/alchemy/admin/pages/_table_row.html.erb +43 -39
  183. data/app/views/alchemy/admin/pages/_toolbar.html.erb +43 -38
  184. data/app/views/alchemy/admin/pages/configure.html.erb +12 -14
  185. data/app/views/alchemy/admin/pages/edit.html.erb +80 -103
  186. data/app/views/alchemy/admin/pages/info.html.erb +20 -11
  187. data/app/views/alchemy/admin/pages/link.html.erb +22 -16
  188. data/app/views/alchemy/admin/pages/new.html.erb +9 -11
  189. data/app/views/alchemy/admin/pages/unlock.js.erb +10 -3
  190. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -13
  191. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -5
  192. data/app/views/alchemy/admin/partials/_routes.html.erb +10 -2
  193. data/app/views/alchemy/admin/partials/_site_select.html.erb +6 -5
  194. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +28 -23
  195. data/app/views/alchemy/admin/pictures/_archive.html.erb +5 -5
  196. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  197. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +21 -23
  198. data/app/views/alchemy/admin/pictures/_infos.html.erb +2 -6
  199. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -17
  200. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +17 -16
  201. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  202. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +1 -1
  203. data/app/views/alchemy/admin/pictures/assign.js.erb +1 -1
  204. data/app/views/alchemy/admin/pictures/index.html.erb +34 -30
  205. data/app/views/alchemy/admin/pictures/show.html.erb +3 -3
  206. data/app/views/alchemy/admin/resources/_filter.html.erb +1 -1
  207. data/app/views/alchemy/admin/resources/_form.html.erb +2 -2
  208. data/app/views/alchemy/admin/resources/_resource.html.erb +16 -9
  209. data/app/views/alchemy/admin/resources/_table.html.erb +4 -1
  210. data/app/views/alchemy/admin/resources/index.html.erb +22 -19
  211. data/app/views/alchemy/admin/sites/index.html.erb +2 -1
  212. data/app/views/alchemy/admin/styleguide/index.html.erb +54 -28
  213. data/app/views/alchemy/admin/tags/_tag.html.erb +16 -14
  214. data/app/views/alchemy/admin/tags/index.html.erb +15 -12
  215. data/app/views/alchemy/admin/tinymce/_setup.html.erb +29 -0
  216. data/app/views/alchemy/admin/uploader/_button.html.erb +23 -29
  217. data/app/views/alchemy/admin/uploader/_setup.html.erb +3 -8
  218. data/app/views/alchemy/base/500.html.erb +1 -1
  219. data/app/views/alchemy/base/error_notice.js.erb +0 -1
  220. data/app/views/alchemy/ingredients/_boolean_editor.html.erb +1 -1
  221. data/app/views/alchemy/ingredients/_datetime_editor.html.erb +1 -1
  222. data/app/views/alchemy/ingredients/_file_editor.html.erb +5 -5
  223. data/app/views/alchemy/ingredients/_link_editor.html.erb +1 -1
  224. data/app/views/alchemy/ingredients/_node_editor.html.erb +6 -19
  225. data/app/views/alchemy/ingredients/_page_editor.html.erb +7 -19
  226. data/app/views/alchemy/ingredients/_picture_editor.html.erb +2 -2
  227. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +6 -15
  228. data/app/views/alchemy/ingredients/_select_editor.html.erb +2 -1
  229. data/app/views/alchemy/ingredients/_text_editor.html.erb +1 -1
  230. data/app/views/alchemy/ingredients/shared/_anchor.html.erb +1 -1
  231. data/app/views/alchemy/ingredients/shared/_link_tools.html.erb +10 -20
  232. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +42 -49
  233. data/app/views/kaminari/alchemy/_first_page.html.erb +4 -2
  234. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  235. data/app/views/kaminari/alchemy/_last_page.html.erb +4 -2
  236. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  237. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  238. data/app/views/layouts/alchemy/admin.html.erb +10 -29
  239. data/config/alchemy/modules.yml +30 -30
  240. data/config/importmap.rb +10 -1
  241. data/config/initializers/rails_live_reload.rb +13 -0
  242. data/config/locales/alchemy.en.yml +23 -9
  243. data/config/routes.rb +2 -1
  244. data/lib/alchemy/auth_accessors.rb +6 -1
  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/resource.rb +2 -2
  249. data/lib/alchemy/resources_helper.rb +6 -6
  250. data/lib/alchemy/test_support/capybara_helpers.rb +8 -5
  251. data/lib/alchemy/test_support/rspec_matchers.rb +14 -0
  252. data/lib/alchemy/test_support/shared_uploader_examples.rb +1 -1
  253. data/lib/alchemy/tinymce.rb +8 -3
  254. data/lib/alchemy/version.rb +1 -1
  255. data/package.json +14 -5
  256. data/vendor/assets/fonts/remixicon.eot +0 -0
  257. data/vendor/assets/fonts/remixicon.svg +7816 -0
  258. data/vendor/assets/fonts/remixicon.ttf +0 -0
  259. data/vendor/assets/fonts/remixicon.woff +0 -0
  260. data/vendor/assets/fonts/remixicon.woff2 +0 -0
  261. data/vendor/assets/stylesheets/remixicon.scss +10480 -0
  262. metadata +85 -90
  263. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +0 -30
  264. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -53
  265. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +0 -45
  266. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +0 -19
  267. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +0 -59
  268. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -79
  269. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +0 -267
  270. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -27
  271. data/app/assets/javascripts/alchemy/alchemy.spinner.js +0 -32
  272. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +0 -10
  273. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +0 -131
  274. data/app/assets/javascripts/alchemy/menubar.js.coffee +0 -8
  275. data/app/assets/javascripts/alchemy/node_select.js +0 -39
  276. data/app/assets/javascripts/alchemy/page_select.js +0 -46
  277. data/app/assets/javascripts/alchemy/templates/node.hbs +0 -16
  278. data/app/assets/javascripts/alchemy/templates/spinner.hbs +0 -7
  279. data/app/assets/stylesheets/alchemy/jquery-ui.scss +0 -435
  280. data/app/javascript/alchemy_admin/datepicker.js +0 -33
  281. data/app/javascript/alchemy_admin/tinymce.js +0 -146
  282. data/app/javascript/alchemy_admin/translations.js +0 -32
  283. data/app/views/alchemy/admin/elements/fold.js.erb +0 -33
  284. data/app/views/alchemy/admin/elements/order.js.erb +0 -11
  285. data/app/views/alchemy/admin/elements/publish.js.erb +0 -21
  286. data/app/views/alchemy/admin/elements/update.js.erb +0 -27
  287. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  288. data/vendor/assets/fonts/fa-regular-400.svg +0 -803
  289. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  290. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  291. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  292. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  293. data/vendor/assets/fonts/fa-solid-900.svg +0 -4938
  294. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  295. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  296. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  297. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +0 -178
  298. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +0 -125
  299. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +0 -1502
  300. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +0 -224
  301. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  302. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  303. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  304. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  305. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  306. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  307. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  308. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  309. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  310. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -754
  311. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  312. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  313. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1623
  314. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  315. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +0 -7
  316. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +0 -296
  317. data/vendor/assets/stylesheets/fontawesome/_animated.scss +0 -20
  318. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +0 -20
  319. data/vendor/assets/stylesheets/fontawesome/_core.scss +0 -21
  320. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +0 -6
  321. data/vendor/assets/stylesheets/fontawesome/_icons.scss +0 -1441
  322. data/vendor/assets/stylesheets/fontawesome/_larger.scss +0 -23
  323. data/vendor/assets/stylesheets/fontawesome/_list.scss +0 -18
  324. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +0 -56
  325. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +0 -24
  326. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +0 -5
  327. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +0 -31
  328. data/vendor/assets/stylesheets/fontawesome/_variables.scss +0 -1458
  329. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +0 -16
  330. data/vendor/assets/stylesheets/fontawesome/regular.scss +0 -23
  331. data/vendor/assets/stylesheets/fontawesome/solid.scss +0 -24
@@ -1,435 +0,0 @@
1
- /*
2
- * jQuery UI CSS Framework 1.8.7
3
- *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI/Theming/API
9
- */
10
-
11
- /* Layout helpers
12
- ----------------------------------*/
13
-
14
- .ui-helper-hidden {
15
- display: none;
16
- }
17
-
18
- .ui-helper-hidden-accessible {
19
- position: absolute !important;
20
- clip: rect(1px 1px 1px 1px);
21
- clip: rect(1px, 1px, 1px, 1px);
22
- }
23
-
24
- .ui-helper-reset {
25
- margin: 0;
26
- padding: 0;
27
- border: 0;
28
- outline: 0;
29
- line-height: 1.3;
30
- text-decoration: none;
31
- font-size: 100%;
32
- list-style: none;
33
- }
34
-
35
- .ui-helper-clearfix:after {
36
- content: ".";
37
- display: block;
38
- height: 0;
39
- clear: both;
40
- visibility: hidden;
41
- }
42
-
43
- .ui-helper-clearfix {
44
- display: inline-block;
45
- vertical-align: middle;
46
- }
47
-
48
- /* required comment for clearfix to work in Opera \*/
49
-
50
- * html .ui-helper-clearfix {
51
- height: 1%;
52
- }
53
-
54
- .ui-helper-clearfix {
55
- display: block;
56
- }
57
-
58
- /* end clearfix */
59
-
60
- .ui-helper-zfix {
61
- width: 100%;
62
- height: 100%;
63
- top: 0;
64
- left: 0;
65
- position: absolute;
66
- opacity: 0;
67
- filter: Alpha(Opacity = 0);
68
- }
69
-
70
- /* Interaction Cues
71
- ----------------------------------*/
72
-
73
- .ui-state-disabled {
74
- cursor: default !important;
75
- }
76
-
77
- /* Misc visuals
78
- ----------------------------------*/
79
-
80
- /* Overlays */
81
-
82
- .ui-widget-overlay {
83
- position: absolute;
84
- top: 0;
85
- left: 0;
86
- width: 100%;
87
- height: 100%;
88
- z-index: 9;
89
- }
90
-
91
- /*
92
- * jQuery UI CSS Framework 1.8.7
93
- *
94
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
95
- * Dual licensed under the MIT or GPL Version 2 licenses.
96
- * http://jquery.org/license
97
- *
98
- * http://docs.jquery.com/UI/Theming/API
99
- *
100
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=12px&cornerRadius=3px&bgColorHeader=b2ccdb&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=afafaf&fcHeader=333333&iconColorHeader=666666&bgColorContent=ededed&bgTextureContent=01_flat.png&bgImgOpacityContent=0&borderColorContent=afafaf&fcContent=333333&iconColorContent=333333&bgColorDefault=ededed&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=100&borderColorDefault=c0c0c0&fcDefault=333333&iconColorDefault=333333&bgColorHover=e6f0f5&bgTextureHover=04_highlight_hard.png&bgImgOpacityHover=100&borderColorHover=888888&fcHover=666666&iconColorHover=666666&bgColorActive=b2ccdb&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=80&borderColorActive=afafaf&fcActive=333333&iconColorActive=333333&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=666666&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=100&opacityOverlay=60&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=3px
101
- */
102
-
103
- /* Component containers
104
- ----------------------------------*/
105
-
106
- .ui-widget {
107
- font-family: $default-font-family;
108
- font-size: $default-font-size;
109
- }
110
-
111
- .ui-widget .ui-widget {
112
- font-size: 1em;
113
- }
114
-
115
- .ui-widget-content {
116
- border: $default-border;
117
- background-color: $light-gray;
118
- color: $text-color;
119
- }
120
-
121
- .ui-widget-header {
122
- border: 1px none #afafaf;
123
- background: $light-blue;
124
- color: $text-color;
125
- font-weight: bold;
126
- -moz-border-radius-bottomleft: 0 !important;
127
- -webkit-border-bottom-left-radius: 0 !important;
128
- -moz-border-radius-bottomright: 0 !important;
129
- -webkit-border-bottom-right-radius: 0 !important;
130
- border-bottom-left-radius: 0;
131
- border-bottom-right-radius: 0;
132
- }
133
-
134
- /* Interaction states
135
- ----------------------------------*/
136
-
137
- .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
138
- border: 1px solid $button-border-color;
139
- background-color: #ededed;
140
- font-weight: normal;
141
- color: $text-color;
142
- }
143
-
144
- .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
145
- color: $text-color;
146
- text-decoration: none;
147
- }
148
-
149
- .ui-state-hover a, .ui-state-hover a:hover {
150
- color: $dark-gray;
151
- text-decoration: none;
152
- }
153
-
154
- .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
155
- color: $text-color;
156
- text-decoration: none;
157
- text-shadow: none;
158
- background-color: $button-hover-bg-color;
159
- }
160
-
161
- .ui-state-active.stNav.stNext {
162
- background-color: $light-gray;
163
- margin: 0 -3px 0 0;
164
- border: 0 solid #cacaca;
165
- border-left-width: 1px;
166
- border-top-width: 1px;
167
- }
168
-
169
- .ui-state-active.stNav.stPrev {
170
- background-color: $light-gray;
171
- margin: 0 0 0 -3px;
172
- border: 0 solid #cacaca;
173
- border-top-width: 1px;
174
- border-left-width: 0;
175
- border-right-width: 1px;
176
- border-bottom-width: 0;
177
- }
178
-
179
- .stNav .ui-icon {
180
- position: relative;
181
- top: 7px;
182
- }
183
-
184
- .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
185
- color: $text-color;
186
- text-decoration: none;
187
- }
188
-
189
- .ui-widget :active {
190
- outline: none;
191
- }
192
-
193
- /* Interaction Cues
194
- ----------------------------------*/
195
-
196
- .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
197
- border: 1px solid $dark-gray;
198
- background: $light-blue;
199
- color: $text-color;
200
- }
201
-
202
- .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
203
- color: $text-color;
204
- }
205
-
206
- .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
207
- border: 1px solid #cd0a0a;
208
- background: #cd0a0a;
209
- color: #ffffff;
210
- }
211
-
212
- .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a {
213
- color: #ffffff;
214
- }
215
-
216
- .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text {
217
- color: #ffffff;
218
- }
219
-
220
- .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary {
221
- font-weight: normal;
222
- }
223
-
224
- .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary {
225
- font-weight: normal;
226
- }
227
-
228
- .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
229
- opacity: .35;
230
- background-image: none;
231
- }
232
-
233
- /* Misc visuals
234
- ----------------------------------*/
235
-
236
- /* Corner radius */
237
-
238
- .ui-corner-tl {
239
- -moz-border-radius-topleft: 3px;
240
- -webkit-border-top-left-radius: 3px;
241
- border-top-left-radius: 3px;
242
- }
243
-
244
- .ui-corner-tr {
245
- -moz-border-radius-topright: 3px;
246
- -webkit-border-top-right-radius: 3px;
247
- border-top-right-radius: 3px;
248
- }
249
-
250
- .ui-corner-bl {
251
- -moz-border-radius-bottomleft: 3px;
252
- -webkit-border-bottom-left-radius: 3px;
253
- border-bottom-left-radius: 3px;
254
- }
255
-
256
- .ui-corner-br {
257
- -moz-border-radius-bottomright: 3px;
258
- -webkit-border-bottom-right-radius: 3px;
259
- border-bottom-right-radius: 3px;
260
- }
261
-
262
- .ui-corner-top {
263
- -moz-border-radius-topleft: 3px;
264
- -webkit-border-top-left-radius: 3px;
265
- border-top-left-radius: 3px;
266
- -moz-border-radius-topright: 3px;
267
- -webkit-border-top-right-radius: 3px;
268
- border-top-right-radius: 3px;
269
- }
270
-
271
- .ui-corner-bottom {
272
- -moz-border-radius-bottomleft: 3px;
273
- -webkit-border-bottom-left-radius: 3px;
274
- border-bottom-left-radius: 3px;
275
- -moz-border-radius-bottomright: 3px;
276
- -webkit-border-bottom-right-radius: 3px;
277
- border-bottom-right-radius: 3px;
278
- }
279
-
280
- .ui-corner-right {
281
- -moz-border-radius-topright: 3px;
282
- -webkit-border-top-right-radius: 3px;
283
- border-top-right-radius: 3px;
284
- -moz-border-radius-bottomright: 3px;
285
- -webkit-border-bottom-right-radius: 3px;
286
- border-bottom-right-radius: 3px;
287
- }
288
-
289
- .ui-corner-left {
290
- -moz-border-radius-topleft: 3px;
291
- -webkit-border-top-left-radius: 3px;
292
- border-top-left-radius: 3px;
293
- -moz-border-radius-bottomleft: 3px;
294
- -webkit-border-bottom-left-radius: 3px;
295
- border-bottom-left-radius: 3px;
296
- }
297
-
298
- .ui-corner-all {
299
- -moz-border-radius: 3px;
300
- -webkit-border-radius: 3px;
301
- border-radius: 3px;
302
- }
303
-
304
- /*
305
- * jQuery UI Tabs 1.8.7
306
- *
307
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
308
- * Dual licensed under the MIT or GPL Version 2 licenses.
309
- * http://jquery.org/license
310
- *
311
- * http://docs.jquery.com/UI/Tabs#theming
312
- */
313
-
314
- .ui-tabs {
315
- position: relative;
316
- padding: 0;
317
- zoom: 1;
318
- margin: 0;
319
- border-style: none;
320
- border-width: 0;
321
- }
322
-
323
- /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed') */
324
-
325
- .ui-tabs .ui-tabs-nav {
326
- padding: 4px 8px 0;
327
- background: $toolbar-bg-color;
328
- border-radius: 0;
329
- border-bottom: $default-border;
330
- margin: 0;
331
- padding: 0;
332
- height: $tabs-height;
333
- }
334
-
335
- .ui-tabs .ui-tabs-nav li {
336
- list-style: none;
337
- float: left;
338
- position: relative;
339
- height: $tabs-height - $default-border-width;
340
- margin: 0;
341
- border-color: $default-border-color;
342
- border-width: 0;
343
- border-right-width: $default-border-width;
344
- border-radius: 0;
345
- padding: 0;
346
- white-space: nowrap;
347
- background-color: transparent;
348
- font-weight: normal;
349
-
350
- &.ui-tabs-active {
351
- background-color: $light-gray;
352
- height: $tabs-height;
353
-
354
- a { cursor: default }
355
- }
356
- }
357
-
358
- .ui-tabs .ui-tabs-nav li a {
359
- display: block;
360
- text-decoration: none;
361
- padding: 8px 12px 7px;
362
- }
363
-
364
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected {
365
- margin-bottom: 0;
366
- padding-bottom: 1px;
367
- background: $light-gray;
368
- }
369
-
370
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
371
- cursor: default;
372
- }
373
-
374
- .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
375
- cursor: pointer;
376
- }
377
-
378
- /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
379
-
380
- .ui-tabs .ui-tabs-panel {
381
- display: block;
382
- border-width: 0;
383
- background: none;
384
- }
385
-
386
- .ui-tabs .ui-tabs-hide {
387
- display: none !important;
388
- }
389
-
390
- /* UI Tabs Paging */
391
-
392
- .ui-tabs li.ui-tabs-paging-prev {
393
- border-right-width: 1px;
394
- }
395
-
396
- .ui-tabs li.ui-tabs-paging-next {
397
- float: right !important;
398
- padding: 0 !important;
399
- border-right-width: 0;
400
- }
401
-
402
- .ui-tabs .ui-tabs-nav .ui-tabs-paging-prev a,
403
- .ui-tabs .ui-tabs-nav .ui-tabs-paging-next a {
404
- display: block;
405
- border: 0;
406
- z-index: 2;
407
- padding: 8px;
408
- color: $icon-color;
409
- text-decoration: none;
410
- cursor: pointer;
411
- }
412
-
413
- .ui-tabs .ui-tabs-nav .ui-tabs-paging-disabled {
414
- display: none;
415
- }
416
-
417
- /*
418
- * jQuery UI Progressbar 1.8.7
419
- *
420
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
421
- * Dual licensed under the MIT or GPL Version 2 licenses.
422
- * http://jquery.org/license
423
- *
424
- * http://docs.jquery.com/UI/Progressbar#theming
425
- */
426
-
427
- .ui-progressbar {
428
- height: 2em;
429
- text-align: left;
430
- }
431
-
432
- .ui-progressbar .ui-progressbar-value {
433
- margin: -1px;
434
- height: 100%;
435
- }
@@ -1,33 +0,0 @@
1
- import flatpickr from "flatpickr"
2
-
3
- export default function Datepicker(scope = document) {
4
- if (scope === "") {
5
- scope = document
6
- } else if (scope instanceof String) {
7
- scope = document.querySelectorAll(scope)
8
- }
9
-
10
- const datepickerInputs = scope.querySelectorAll("input[data-datepicker-type]")
11
-
12
- // Initializes the datepickers
13
- datepickerInputs.forEach((input) => {
14
- const type = input.dataset.datepickerType
15
- const options = {
16
- // alchemy_i18n supports `zh_CN` etc., but flatpickr only has two-letter codes (`zh`)
17
- locale: Alchemy.locale.slice(0, 2),
18
- altInput: true,
19
- altFormat: Alchemy.t(`formats.${type}`),
20
- altInputClass: "flatpickr-input",
21
- dateFormat: "Z",
22
- enableTime: /time/.test(type),
23
- noCalendar: type === "time",
24
- time_24hr: Alchemy.t("formats.time_24hr"),
25
- onValueUpdate(_selectedDates, _dateStr, instance) {
26
- return Alchemy.setElementDirty(
27
- instance.element.closest(".element-editor")
28
- )
29
- }
30
- }
31
- flatpickr(input, options)
32
- })
33
- }
@@ -1,146 +0,0 @@
1
- // Alchemy Tinymce wrapper
2
- //
3
-
4
- let tinymceCustomConfigs = {}
5
- let tinymceIntersectionObserver = null
6
-
7
- // Returns default config for a tinymce editor.
8
- function getDefaultConfig(editorId) {
9
- const config = Alchemy.TinymceDefaults
10
- config.language = Alchemy.locale
11
- config.selector = `#${editorId}`
12
- config.init_instance_callback = initInstanceCallback
13
- return config
14
- }
15
-
16
- // Returns configuration for given custom tinymce editor selector.
17
- //
18
- // It uses the +.getDefaultConfig+ and merges the custom parts.
19
- function getConfig(editorId) {
20
- const editorConfig = tinymceCustomConfigs[editorId] || {}
21
- return { ...getDefaultConfig(editorId), ...editorConfig }
22
- }
23
-
24
- // create intersection observer and register textareas to be initialized when
25
- // they are visible
26
- function initEditors(ids) {
27
- initializeIntersectionObserver()
28
-
29
- ids.forEach((id) => {
30
- const editorId = `tinymce_${id}`
31
- const textarea = document.getElementById(editorId)
32
-
33
- if (textarea) {
34
- tinymceIntersectionObserver.observe(textarea)
35
- } else {
36
- console.warn(`Could not initialize TinyMCE for textarea#${editorId}!`)
37
- }
38
- })
39
- }
40
-
41
- // initialize IntersectionObserver
42
- // the observer will initialize Tinymce if the textarea becomes visible
43
- function initializeIntersectionObserver() {
44
- const observerCallback = (entries, observer) => {
45
- entries.forEach((entry) => {
46
- if (entry.intersectionRatio > 0) {
47
- initTinymceEditor(entry.target)
48
- // disable observer after the Tinymce was initialized
49
- observer.unobserve(entry.target)
50
- }
51
- })
52
- }
53
- const options = {
54
- root: Alchemy.ElementEditors.element_area.get(0),
55
- rootMargin: "0px",
56
- threshold: [0.05]
57
- }
58
-
59
- tinymceIntersectionObserver = new IntersectionObserver(
60
- observerCallback,
61
- options
62
- )
63
- }
64
-
65
- // Initializes one specific TinyMCE editor
66
- function initTinymceEditor(textarea) {
67
- const editorId = textarea.id
68
- const config = getConfig(editorId)
69
-
70
- // remove editor instance, if already initialized
71
- removeEditor(editorId)
72
-
73
- if (config) {
74
- const spinner = new Alchemy.Spinner("small")
75
- textarea.closest(".tinymce_container").prepend(spinner.spin().el.get(0))
76
- tinymce.init(config)
77
- } else {
78
- console.warn("No tinymce configuration found for", id)
79
- }
80
- }
81
-
82
- // Gets called after an editor instance gets initialized
83
- function initInstanceCallback(editor) {
84
- const element = document.getElementById(editor.id).closest(".element-editor")
85
- element.getElementsByClassName("spinner").item(0).remove()
86
- editor.on("dirty", function () {
87
- Alchemy.setElementDirty(element)
88
- })
89
- editor.on("click", function (event) {
90
- event.target = element
91
- Alchemy.ElementEditors.onClickElement(event)
92
- })
93
- }
94
-
95
- function removeEditor(editorId) {
96
- const editorElement = document.getElementById(editorId)
97
- if (tinymceIntersectionObserver && editorElement) {
98
- tinymceIntersectionObserver.unobserve(editorElement)
99
- }
100
-
101
- const editor = tinymce.get(editorId)
102
- if (editor) {
103
- editor.remove()
104
- }
105
- }
106
-
107
- function removeIntersectionObserver() {
108
- if (tinymceIntersectionObserver !== null) {
109
- tinymceIntersectionObserver.disconnect()
110
- }
111
- }
112
-
113
- export default {
114
- // Initializes all TinyMCE editors with given ids
115
- //
116
- // @param ids [Array]
117
- // - Editor ids that should be initialized.
118
- init(ids) {
119
- initEditors(ids)
120
- },
121
-
122
- // Initializes TinyMCE editor with given options
123
- initWith(options) {
124
- tinymce.init({ ...Alchemy.TinymceDefaults, ...options })
125
- },
126
-
127
- // Removes the TinyMCE editor from given dom ids.
128
- remove(ids) {
129
- ids.forEach((id) => removeEditor(`tinymce_${id}`))
130
- },
131
-
132
- // Remove all tinymce instances for given selector
133
- removeFrom(selector) {
134
- // the selector is a jQuery selector - it has to be refactor if we taking care of the calling methods
135
- $(selector).each(function (element) {
136
- removeEditor(element.id)
137
- })
138
- },
139
-
140
- removeIntersectionObserver,
141
-
142
- // set tinymce configuration for a given selector key
143
- setCustomConfig(key, configuration) {
144
- tinymceCustomConfigs[key] = configuration
145
- }
146
- }
@@ -1,32 +0,0 @@
1
- const translations = {
2
- en: {
3
- allowed_chars: "of %{count} chars",
4
- cancel: "Cancel",
5
- cancelled: "Cancelled",
6
- click_to_edit: "click to edit",
7
- complete: "Complete",
8
- element_dirty_notice:
9
- "This element has unsaved changes. Do you really want to fold it?",
10
- help: "Help",
11
- ok: "Ok",
12
- page_dirty_notice:
13
- "You have unsaved changes on this page. They will be lost if you continue.",
14
- page_found: "Page found",
15
- pages_found: "Pages found",
16
- url_validation_failed: "The url has no valid format.",
17
- warning: "Warning!",
18
- "File is too large": "File is too large",
19
- "File is too small": "File is too small",
20
- "File type not allowed": "File type not allowed",
21
- "Maximum number of files exceeded": "Maximum number of files exceeded.",
22
- "Uploaded bytes exceed file size": "Uploaded bytes exceed file size",
23
- formats: {
24
- datetime: "Y-m-d H:i",
25
- date: "Y-m-d",
26
- time: "H:i",
27
- time_24hr: false
28
- }
29
- }
30
- }
31
-
32
- export default translations
@@ -1,33 +0,0 @@
1
- (function() {
2
- var $el = $('.element-editor[data-element-id="<%= @element.id %>"]');
3
-
4
- <% if @error -%>
5
-
6
- $("#element_<%= @element.id %> .spinner")
7
- .replaceWith("<span class='error_icon' title='<%= @error %>'>!</span>");
8
-
9
- <% else -%>
10
-
11
- $el.replaceWith('<%= j render(Alchemy::ElementEditor.new(@element)) %>');
12
- $el = $('#element_<%= @element.id %>');
13
- $('#element_area .sortable-elements').sortable('refresh');
14
-
15
- <% if @element.folded? -%>
16
-
17
- Alchemy.Tinymce.remove(<%= @element.richtext_ingredients_ids.to_json %>);
18
-
19
- <% else -%>
20
-
21
- $el.trigger('FocusElementEditor.Alchemy');
22
- Alchemy.Tinymce.init(<%= @element.richtext_ingredients_ids.to_json %>);
23
- Alchemy.GUI.initElement($el);
24
- Alchemy.SortableElements(
25
- <%= @page.id %>,
26
- '<%= form_authenticity_token %>',
27
- $('> .nestable-elements .nested-elements', $el)
28
- );
29
-
30
- <% end -%>
31
-
32
- <% end -%>
33
- })();
@@ -1,11 +0,0 @@
1
- (function() {
2
- <% if @parent_element && @parent_element.ingredients.empty? %>
3
- var $parent = $('#element_<%= @parent_element.id %>');
4
- Alchemy.ElementEditors.setTitle(
5
- $parent,
6
- '<%= sanitize(@parent_element.preview_text.presence || '&nbsp;') %>'
7
- );
8
- <% end %>
9
- Alchemy.growl('<%= Alchemy.t(:successfully_saved_element_position) -%>');
10
- Alchemy.PreviewWindow.refresh();
11
- })();
@@ -1,21 +0,0 @@
1
- var el = $('.element-editor[data-element-id="<%= @element.id %>"]');
2
- var icon = el.find('> .element-header > .element-handle > .icon');
3
- var label = el.find('> .element-toolbar .publish-element-button label');
4
- var eye = el.find('> .element-toolbar .publish-element-button .icon');
5
-
6
- <%- if @element.public? -%>
7
- icon.removeClass('fa-window-close fas');
8
- icon.addClass('fa-window-maximize far');
9
- eye.removeClass('fa-eye');
10
- eye.addClass('fa-eye-slash');
11
- label.text('<%= Alchemy.t(:hide_element) %>');
12
- <%- else -%>
13
- icon.removeClass('fa-window-maximize far');
14
- icon.addClass('fa-window-close fas');
15
- eye.removeClass('fa-eye-slash');
16
- eye.addClass('fa-eye');
17
- label.text('<%= Alchemy.t(:show_element) %>');
18
- <%- end -%>
19
- el.toggleClass('visible hidden');
20
-
21
- Alchemy.reloadPreview();