alchemy_cms 4.0.6 → 4.1.0.beta

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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -0
  3. data/.gitignore +1 -0
  4. data/.localeapp/config.rb +8 -0
  5. data/.rubocop.yml +26 -13
  6. data/.travis.yml +12 -14
  7. data/CHANGELOG.md +5 -24
  8. data/Gemfile +10 -7
  9. data/README.md +16 -14
  10. data/Rakefile +1 -1
  11. data/alchemy_cms.gemspec +6 -7
  12. data/app/assets/images/alchemy/alchemy-logo.png +0 -0
  13. data/app/assets/images/alchemy/alchemy-logo.svg +1 -70
  14. data/app/assets/images/alchemy/favicon.ico +0 -0
  15. data/app/assets/images/alchemy/icon.svg +1 -14
  16. data/app/assets/javascripts/alchemy/admin.js +0 -7
  17. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +2 -2
  18. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +1 -1
  19. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +1 -1
  20. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +1 -0
  21. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +19 -6
  22. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +2 -7
  23. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +36 -26
  24. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +6 -15
  25. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +1 -1
  26. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +8 -11
  27. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +4 -1
  28. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +1 -1
  29. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +5 -14
  30. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +54 -75
  31. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +4 -13
  32. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -0
  33. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +12 -6
  34. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +0 -158
  35. data/app/assets/stylesheets/alchemy/_defaults.scss +0 -2
  36. data/app/assets/stylesheets/alchemy/_extends.scss +13 -18
  37. data/app/assets/stylesheets/alchemy/_mixins.scss +72 -46
  38. data/app/assets/stylesheets/alchemy/_variables.scss +128 -59
  39. data/app/assets/stylesheets/alchemy/admin.scss +7 -1
  40. data/app/assets/stylesheets/alchemy/archive.scss +23 -27
  41. data/app/assets/stylesheets/alchemy/base.scss +5 -355
  42. data/app/assets/stylesheets/alchemy/buttons.scss +23 -60
  43. data/app/assets/stylesheets/alchemy/clipboard.scss +26 -0
  44. data/app/assets/stylesheets/alchemy/dashboard.scss +7 -40
  45. data/app/assets/stylesheets/alchemy/dialogs.scss +23 -36
  46. data/app/assets/stylesheets/alchemy/elements.scss +80 -156
  47. data/app/assets/stylesheets/alchemy/errors.scss +2 -2
  48. data/app/assets/stylesheets/alchemy/flash.scss +19 -10
  49. data/app/assets/stylesheets/alchemy/fonts.scss +13 -0
  50. data/app/assets/stylesheets/alchemy/forms.scss +6 -1
  51. data/app/assets/stylesheets/alchemy/frame.scss +24 -65
  52. data/app/assets/stylesheets/alchemy/hints.scss +2 -2
  53. data/app/assets/stylesheets/alchemy/icons.scss +3 -337
  54. data/app/assets/stylesheets/alchemy/image_library.scss +9 -10
  55. data/app/assets/stylesheets/alchemy/jquery-ui.scss +21 -839
  56. data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +32 -57
  57. data/app/assets/stylesheets/alchemy/lists.scss +4 -8
  58. data/app/assets/stylesheets/alchemy/menubar.scss +26 -29
  59. data/app/assets/stylesheets/alchemy/navigation.scss +23 -25
  60. data/app/assets/stylesheets/alchemy/notices.scss +25 -25
  61. data/app/assets/stylesheets/alchemy/pagination.scss +12 -7
  62. data/app/assets/stylesheets/alchemy/preview_window.scss +20 -0
  63. data/app/assets/stylesheets/alchemy/resource_info.scss +1 -1
  64. data/app/assets/stylesheets/alchemy/search.scss +19 -15
  65. data/app/assets/stylesheets/alchemy/selects.scss +63 -32
  66. data/app/assets/stylesheets/alchemy/sitemap.scss +70 -148
  67. data/app/assets/stylesheets/alchemy/tables.scss +16 -59
  68. data/app/assets/stylesheets/alchemy/toolbar.scss +9 -36
  69. data/app/assets/stylesheets/alchemy/trash.scss +8 -0
  70. data/app/assets/stylesheets/alchemy/upload.scss +5 -6
  71. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +1 -0
  72. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +78 -43
  73. data/app/controllers/alchemy/admin/attachments_controller.rb +6 -6
  74. data/app/controllers/alchemy/admin/base_controller.rb +9 -9
  75. data/app/controllers/alchemy/admin/contents_controller.rb +0 -17
  76. data/app/controllers/alchemy/admin/elements_controller.rb +1 -4
  77. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -3
  78. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +1 -3
  79. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  80. data/app/controllers/alchemy/admin/pictures_controller.rb +5 -5
  81. data/app/controllers/alchemy/admin/resources_controller.rb +10 -10
  82. data/app/controllers/alchemy/admin/tags_controller.rb +7 -7
  83. data/app/controllers/alchemy/api/contents_controller.rb +6 -1
  84. data/app/controllers/alchemy/api/elements_controller.rb +5 -1
  85. data/app/controllers/alchemy/api/pages_controller.rb +6 -1
  86. data/app/controllers/alchemy/base_controller.rb +5 -3
  87. data/app/controllers/alchemy/pages_controller.rb +1 -1
  88. data/app/helpers/alchemy/admin/base_helper.rb +14 -15
  89. data/app/helpers/alchemy/admin/contents_helper.rb +1 -2
  90. data/app/helpers/alchemy/admin/elements_helper.rb +7 -6
  91. data/app/helpers/alchemy/admin/tags_helper.rb +3 -4
  92. data/app/helpers/alchemy/base_helper.rb +35 -5
  93. data/app/helpers/alchemy/elements_helper.rb +2 -2
  94. data/app/helpers/alchemy/pages_helper.rb +4 -2
  95. data/app/models/alchemy/attachment.rb +14 -23
  96. data/app/models/alchemy/base_record.rb +13 -0
  97. data/app/models/alchemy/cell.rb +1 -1
  98. data/app/models/alchemy/content.rb +1 -2
  99. data/app/models/alchemy/content/factory.rb +1 -1
  100. data/app/models/alchemy/element.rb +10 -12
  101. data/app/models/alchemy/essence_boolean.rb +1 -1
  102. data/app/models/alchemy/essence_date.rb +2 -2
  103. data/app/models/alchemy/essence_file.rb +1 -1
  104. data/app/models/alchemy/essence_html.rb +1 -1
  105. data/app/models/alchemy/essence_link.rb +1 -1
  106. data/app/models/alchemy/essence_picture.rb +1 -1
  107. data/app/models/alchemy/essence_richtext.rb +1 -1
  108. data/app/models/alchemy/essence_select.rb +1 -1
  109. data/app/models/alchemy/essence_text.rb +1 -1
  110. data/app/models/alchemy/folded_page.rb +1 -1
  111. data/app/models/alchemy/language.rb +21 -5
  112. data/app/models/alchemy/page.rb +17 -5
  113. data/app/models/alchemy/page/page_elements.rb +14 -2
  114. data/app/models/alchemy/page/page_naming.rb +17 -4
  115. data/app/models/alchemy/picture.rb +4 -7
  116. data/app/models/alchemy/site.rb +3 -3
  117. data/app/models/alchemy/tag.rb +3 -3
  118. data/app/models/concerns/alchemy/content_touching.rb +23 -0
  119. data/app/serializers/alchemy/element_serializer.rb +2 -0
  120. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -1
  121. data/app/views/alchemy/admin/attachments/_attachment.html.erb +11 -21
  122. data/app/views/alchemy/admin/attachments/_files_list.html.erb +26 -29
  123. data/app/views/alchemy/admin/attachments/_filter_bar.html.erb +2 -3
  124. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +3 -4
  125. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +2 -3
  126. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +3 -3
  127. data/app/views/alchemy/admin/attachments/destroy.js.erb +1 -1
  128. data/app/views/alchemy/admin/attachments/edit.html.erb +2 -2
  129. data/app/views/alchemy/admin/attachments/index.html.erb +3 -2
  130. data/app/views/alchemy/admin/attachments/show.html.erb +7 -8
  131. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  132. data/app/views/alchemy/admin/clipboard/index.html.erb +23 -7
  133. data/app/views/alchemy/admin/clipboard/insert.js.erb +1 -1
  134. data/app/views/alchemy/admin/clipboard/remove.js.erb +2 -2
  135. data/app/views/alchemy/admin/contents/create.js.erb +1 -1
  136. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +9 -6
  137. data/app/views/alchemy/admin/dashboard/_recent_pages.html.erb +6 -4
  138. data/app/views/alchemy/admin/dashboard/_sites.html.erb +4 -2
  139. data/app/views/alchemy/admin/dashboard/_users.html.erb +6 -4
  140. data/app/views/alchemy/admin/dashboard/index.html.erb +3 -3
  141. data/app/views/alchemy/admin/dashboard/info.html.erb +6 -7
  142. data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
  143. data/app/views/alchemy/admin/elements/_element.html.erb +1 -1
  144. data/app/views/alchemy/admin/elements/_element_header.html.erb +14 -14
  145. data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +3 -3
  146. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +2 -3
  147. data/app/views/alchemy/admin/elements/index.html.erb +2 -4
  148. data/app/views/alchemy/admin/elements/new.html.erb +1 -2
  149. data/app/views/alchemy/admin/elements/publish.js.erb +5 -5
  150. data/app/views/alchemy/admin/languages/_language.html.erb +4 -9
  151. data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
  152. data/app/views/alchemy/admin/languages/index.html.erb +1 -1
  153. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +5 -5
  154. data/app/views/alchemy/admin/layoutpages/index.html.erb +5 -4
  155. data/app/views/alchemy/admin/leave.html.erb +1 -1
  156. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +1 -1
  157. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  158. data/app/views/alchemy/admin/pages/_form.html.erb +1 -1
  159. data/app/views/alchemy/admin/pages/_locked_page.html.erb +1 -1
  160. data/app/views/alchemy/admin/pages/_page.html.erb +31 -23
  161. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +5 -5
  162. data/app/views/alchemy/admin/pages/_page_infos.html.erb +3 -3
  163. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +1 -1
  164. data/app/views/alchemy/admin/pages/edit.html.erb +22 -21
  165. data/app/views/alchemy/admin/pages/index.html.erb +5 -21
  166. data/app/views/alchemy/admin/pages/info.html.erb +5 -5
  167. data/app/views/alchemy/admin/pages/sort.html.erb +1 -1
  168. data/app/views/alchemy/admin/pages/unlock.js.erb +2 -4
  169. data/app/views/alchemy/admin/partials/_flash.html.erb +1 -1
  170. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +7 -3
  171. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -2
  172. data/app/views/alchemy/admin/partials/_search_form.html.erb +3 -3
  173. data/app/views/alchemy/admin/pictures/_archive.html.erb +19 -17
  174. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  175. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +13 -13
  176. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +2 -3
  177. data/app/views/alchemy/admin/pictures/_form.html.erb +3 -3
  178. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +2 -3
  179. data/app/views/alchemy/admin/pictures/_picture.html.erb +7 -7
  180. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +3 -3
  181. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +6 -7
  182. data/app/views/alchemy/admin/pictures/index.html.erb +12 -12
  183. data/app/views/alchemy/admin/pictures/index.js.erb +0 -1
  184. data/app/views/alchemy/admin/pictures/show.html.erb +9 -9
  185. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +2 -3
  186. data/app/views/alchemy/admin/resources/_form.html.erb +10 -2
  187. data/app/views/alchemy/admin/resources/_resource.html.erb +9 -14
  188. data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
  189. data/app/views/alchemy/admin/resources/_tag_list.html.erb +4 -4
  190. data/app/views/alchemy/admin/resources/index.html.erb +2 -3
  191. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  192. data/app/views/alchemy/admin/tags/_tag.html.erb +7 -11
  193. data/app/views/alchemy/admin/tags/index.html.erb +4 -4
  194. data/app/views/alchemy/admin/trash/index.html.erb +2 -3
  195. data/app/views/alchemy/admin/uploader/_button.html.erb +1 -2
  196. data/app/views/alchemy/base/500.html.erb +1 -1
  197. data/app/views/alchemy/base/permission_denied.js.erb +1 -1
  198. data/app/views/alchemy/base/redirect.js.erb +1 -2
  199. data/app/views/alchemy/elements/_editor_not_found.html.erb +2 -3
  200. data/app/views/alchemy/essences/_essence_date_editor.html.erb +1 -1
  201. data/app/views/alchemy/essences/_essence_file_editor.html.erb +7 -11
  202. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +9 -7
  203. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +1 -1
  204. data/app/views/alchemy/pages/_meta_data.html.erb +1 -1
  205. data/app/views/kaminari/alchemy/_first_page.html.erb +7 -3
  206. data/app/views/kaminari/alchemy/_gap.html.erb +1 -1
  207. data/app/views/kaminari/alchemy/_last_page.html.erb +7 -3
  208. data/app/views/kaminari/alchemy/_next_page.html.erb +4 -2
  209. data/app/views/kaminari/alchemy/_page.html.erb +1 -1
  210. data/app/views/kaminari/alchemy/_prev_page.html.erb +4 -2
  211. data/app/views/layouts/alchemy/admin.html.erb +8 -6
  212. data/bin/rails +2 -2
  213. data/bin/rspec +1 -1
  214. data/config/alchemy/config.yml +0 -2
  215. data/config/alchemy/modules.yml +5 -5
  216. data/config/initializers/simple_form.rb +45 -8
  217. data/config/locales/alchemy.en.yml +66 -179
  218. data/config/routes.rb +1 -1
  219. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +392 -0
  220. data/db/migrate/20180227224537_migrate_tags_to_gutentag.rb +41 -0
  221. data/lib/alchemy/config.rb +0 -2
  222. data/lib/alchemy/engine.rb +5 -9
  223. data/lib/alchemy/essence.rb +6 -6
  224. data/lib/alchemy/filetypes.rb +13 -1
  225. data/lib/alchemy/forms/builder.rb +5 -3
  226. data/lib/alchemy/i18n.rb +8 -6
  227. data/lib/alchemy/modules.rb +1 -1
  228. data/lib/alchemy/name_conversions.rb +0 -2
  229. data/lib/alchemy/page_layout.rb +3 -2
  230. data/lib/alchemy/paths.rb +5 -5
  231. data/lib/alchemy/resource.rb +9 -9
  232. data/lib/alchemy/resources_helper.rb +11 -15
  233. data/lib/alchemy/routing_constraints.rb +2 -2
  234. data/lib/alchemy/shell.rb +0 -1
  235. data/lib/alchemy/taggable.rb +40 -0
  236. data/lib/alchemy/tasks/tidy.rb +1 -9
  237. data/lib/alchemy/test_support/factories/content_factory.rb +10 -0
  238. data/lib/alchemy/test_support/factories/element_factory.rb +5 -0
  239. data/lib/alchemy/test_support/shared_contexts.rb +1 -1
  240. data/lib/alchemy/tinymce.rb +2 -2
  241. data/lib/alchemy/upgrader/four_point_one.rb +42 -0
  242. data/lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb +27 -0
  243. data/lib/alchemy/version.rb +1 -1
  244. data/lib/alchemy_cms.rb +2 -3
  245. data/lib/rails/generators/alchemy/elements/elements_generator.rb +2 -2
  246. data/lib/rails/generators/alchemy/essence/essence_generator.rb +1 -1
  247. data/lib/rails/generators/alchemy/install/install_generator.rb +4 -8
  248. data/lib/rails/generators/alchemy/module/module_generator.rb +1 -1
  249. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +2 -2
  250. data/lib/rails/generators/alchemy/site_layouts/site_layouts_generator.rb +2 -2
  251. data/lib/rails/generators/alchemy/views/views_generator.rb +1 -1
  252. data/lib/tasks/alchemy/db.rake +2 -1
  253. data/lib/tasks/alchemy/tidy.rake +0 -6
  254. data/lib/tasks/alchemy/upgrade.rake +11 -144
  255. data/vendor/assets/fonts/fa-regular-400.eot +0 -0
  256. data/vendor/assets/fonts/fa-regular-400.svg +363 -0
  257. data/vendor/assets/fonts/fa-regular-400.ttf +0 -0
  258. data/vendor/assets/fonts/fa-regular-400.woff +0 -0
  259. data/vendor/assets/fonts/fa-regular-400.woff2 +0 -0
  260. data/vendor/assets/fonts/fa-solid-900.eot +0 -0
  261. data/vendor/assets/fonts/fa-solid-900.svg +1413 -0
  262. data/vendor/assets/fonts/fa-solid-900.ttf +0 -0
  263. data/vendor/assets/fonts/fa-solid-900.woff +0 -0
  264. data/vendor/assets/fonts/fa-solid-900.woff2 +0 -0
  265. data/vendor/assets/javascripts/tinymce/license.txt +6 -6
  266. data/vendor/assets/javascripts/tinymce/tinymce.min.js +2 -15
  267. data/vendor/assets/stylesheets/fontawesome/_animated.scss +20 -0
  268. data/vendor/assets/stylesheets/fontawesome/_bordered-pulled.scss +20 -0
  269. data/vendor/assets/stylesheets/fontawesome/_core.scss +16 -0
  270. data/vendor/assets/stylesheets/fontawesome/_fixed-width.scss +6 -0
  271. data/vendor/assets/stylesheets/fontawesome/_icons.scss +792 -0
  272. data/vendor/assets/stylesheets/fontawesome/_larger.scss +23 -0
  273. data/vendor/assets/stylesheets/fontawesome/_list.scss +18 -0
  274. data/vendor/assets/stylesheets/fontawesome/_mixins.scss +57 -0
  275. data/vendor/assets/stylesheets/fontawesome/_rotated-flipped.scss +23 -0
  276. data/vendor/assets/stylesheets/fontawesome/_screen-reader.scss +5 -0
  277. data/vendor/assets/stylesheets/fontawesome/_stacked.scss +31 -0
  278. data/vendor/assets/stylesheets/fontawesome/_variables.scss +805 -0
  279. data/vendor/assets/stylesheets/fontawesome/fa-regular.scss +22 -0
  280. data/vendor/assets/stylesheets/fontawesome/fa-solid.scss +23 -0
  281. data/vendor/assets/stylesheets/fontawesome/fontawesome.scss +16 -0
  282. metadata +78 -112
  283. data/app/assets/fonts/alchemy/icons.eot +0 -0
  284. data/app/assets/fonts/alchemy/icons.svg +0 -33
  285. data/app/assets/fonts/alchemy/icons.ttf +0 -0
  286. data/app/assets/fonts/alchemy/icons.woff +0 -0
  287. data/app/assets/images/alchemy/icons.png +0 -0
  288. data/app/assets/images/alchemy/ui-icons_666666_256x240.png +0 -0
  289. data/app/assets/images/sassy-ie-overlay.png +0 -0
  290. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +0 -42
  291. data/app/assets/stylesheets/alchemy/icon-font.scss +0 -75
  292. data/app/assets/stylesheets/alchemy/modules.scss +0 -27
  293. data/app/models/alchemy.rb +0 -7
  294. data/app/views/alchemy/admin/contents/destroy.js.erb +0 -4
  295. data/app/views/alchemy/admin/pictures/flush.js.erb +0 -2
  296. data/config/locales/alchemy.de.yml +0 -932
  297. data/config/locales/alchemy.es.yml +0 -960
  298. data/config/locales/alchemy.fr.yml +0 -938
  299. data/config/locales/alchemy.it.yml +0 -938
  300. data/config/locales/alchemy.nl.yml +0 -918
  301. data/config/locales/alchemy.ru.yml +0 -830
  302. data/config/locales/simple_form.de.yml +0 -26
  303. data/config/locales/simple_form.en.yml +0 -25
  304. data/config/locales/simple_form.es.yml +0 -6
  305. data/config/locales/simple_form.fr.yml +0 -26
  306. data/config/locales/simple_form.it.yml +0 -25
  307. data/config/locales/simple_form.nl.yml +0 -25
  308. data/config/locales/simple_form.ru.yml +0 -25
  309. data/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -378
  310. data/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +0 -5
  311. data/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +0 -5
  312. data/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +0 -5
  313. data/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +0 -6
  314. data/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +0 -5
  315. data/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +0 -7
  316. data/db/migrate/20160108174834_add_timebased_publishing_columns_to_pages.rb +0 -32
  317. data/db/migrate/20160422195310_add_image_file_format_to_alchemy_pictures.rb +0 -9
  318. data/db/migrate/20160617224938_change_alchemy_pages_locked_to_locked_at.rb +0 -22
  319. data/db/migrate/20160912223112_add_index_to_alchemy_pages_rgt.rb +0 -9
  320. data/db/migrate/20160927205604_add_foreign_key_indices_and_null_constraints.rb +0 -20
  321. data/db/migrate/20160928080104_add_foreign_keys.rb +0 -27
  322. data/lib/alchemy/touching.rb +0 -42
  323. data/lib/alchemy/upgrader/tasks/available_contents_upgrader.rb +0 -161
  324. data/lib/alchemy/upgrader/tasks/install_asset_manifests.rb +0 -15
  325. data/lib/alchemy/upgrader/tasks/install_dragonfly_config.rb +0 -14
  326. data/lib/alchemy/upgrader/tasks/nestable_elements_migration.rb +0 -71
  327. data/lib/alchemy/upgrader/tasks/three_point_two_task.rb +0 -31
  328. data/lib/alchemy/upgrader/three_point_five.rb +0 -32
  329. data/lib/alchemy/upgrader/three_point_four.rb +0 -52
  330. data/lib/alchemy/upgrader/three_point_one.rb +0 -54
  331. data/lib/alchemy/upgrader/three_point_three.rb +0 -50
  332. data/lib/alchemy/upgrader/three_point_two.rb +0 -40
  333. data/lib/alchemy/upgrader/three_point_zero.rb +0 -92
  334. data/vendor/assets/javascripts/jquery_plugins/jquery.floatThead.min.js +0 -3
  335. data/vendor/assets/javascripts/tinymce/langs/de.js +0 -219
  336. data/vendor/assets/javascripts/tinymce/langs/es.js +0 -219
  337. data/vendor/assets/javascripts/tinymce/langs/fr.js +0 -219
  338. data/vendor/assets/javascripts/tinymce/langs/it.js +0 -219
  339. data/vendor/assets/javascripts/tinymce/langs/nl.js +0 -219
  340. data/vendor/assets/javascripts/tinymce/langs/ru.js +0 -219
@@ -15,6 +15,11 @@ FactoryBot.define do
15
15
  name 'slider'
16
16
  end
17
17
 
18
+ trait :nested do
19
+ association :parent_element, factory: :alchemy_element, name: 'slider'
20
+ name 'slide'
21
+ end
22
+
18
23
  trait :with_contents do
19
24
  create_contents_after_create true
20
25
  end
@@ -1,7 +1,7 @@
1
1
  RSpec.shared_context 'with invalid file' do
2
2
  let(:invalid_file) do
3
3
  fixture_file_upload(
4
- File.expand_path('../../../../spec/fixtures/users.yml', __FILE__),
4
+ File.expand_path('../../../spec/fixtures/users.yml', __dir__),
5
5
  'text/x-yaml'
6
6
  )
7
7
  end
@@ -5,7 +5,6 @@ module Alchemy
5
5
  mattr_accessor :languages, :plugins
6
6
 
7
7
  @@plugins = %w(alchemy_link anchor autoresize charmap code directionality fullscreen hr link paste tabfocus table)
8
- @@languages = ['en', 'de']
9
8
  @@init = {
10
9
  skin: 'alchemy',
11
10
  width: '100%',
@@ -22,7 +21,8 @@ module Alchemy
22
21
  convert_urls: false,
23
22
  entity_encoding: 'raw',
24
23
  paste_as_text: true,
25
- element_format: 'html'
24
+ element_format: 'html',
25
+ branding: false
26
26
  }
27
27
 
28
28
  class << self
@@ -0,0 +1,42 @@
1
+ require_relative 'tasks/harden_acts_as_taggable_on_migrations'
2
+
3
+ module Alchemy
4
+ class Upgrader::FourPointOne < Upgrader
5
+ class << self
6
+ def harden_acts_as_taggable_on_migrations
7
+ desc 'Harden `acts_as_taggable_on_migrations`'
8
+ `bundle exec rake railties:install:migrations FROM=acts_as_taggable_on_engine`
9
+ Alchemy::Upgrader::Tasks::HardenActsAsTaggableOnMigrations.new.patch_migrations
10
+ `bundle exec rake db:migrate`
11
+ end
12
+
13
+ def alchemy_4_1_todos
14
+ notice = <<-NOTE
15
+
16
+ Changed tagging provider to Gutentag
17
+ ------------------------------------
18
+
19
+ The automatic updater that just ran updated all existing `acts_as_taggable_on_migrations`,
20
+ so that they don't blow up if the `acts_as_taggable_on` gem is no longer available.
21
+
22
+ All your existing tags have been migrated to `Gutentag::Tag`s.
23
+
24
+ Removed Rails and non-English translations
25
+ ------------------------------------------
26
+
27
+ Removed the Rails translations from our translation files and moved all non-english translation
28
+ files into the newly introduced `alchemy_i18n` gem.
29
+
30
+ If you need more translations than the default English one you can either put `alchemy_i18n`
31
+ in to your apps `Gemfile` or - recommended - copy only the translation files you need into your
32
+ apps `config/locales` folder.
33
+
34
+ For the Rails translations either put the rails-i18n gem into your apps Gemfile or - recommended -
35
+ copy only the translation files you need into your apps config/locales folder.
36
+
37
+ NOTE
38
+ todo notice, 'Alchemy v4.1 changes'
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,27 @@
1
+ require 'thor'
2
+
3
+ module Alchemy::Upgrader::Tasks
4
+ class HardenActsAsTaggableOnMigrations < Thor
5
+ include Thor::Actions
6
+
7
+ no_tasks do
8
+ def patch_migrations
9
+ sentinel = /add_column.*/
10
+ aato_file = Dir.glob('db/migrate/*_add_taggings_counter_cache_to_tags.*.rb').first
11
+ if aato_file
12
+ inject_into_file aato_file,
13
+ "\n\n # inserted by Alchemy CMS upgrader\n return unless defined?(ActsAsTaggableOn)",
14
+ { after: sentinel, verbose: true }
15
+ end
16
+
17
+ sentinel = /def up/
18
+ aato_file = Dir.glob('db/migrate/*_change_collation_for_tag_names.*.rb').first
19
+ if aato_file
20
+ inject_into_file aato_file,
21
+ "\n # inserted by Alchemy CMS upgrader\n return unless defined?(ActsAsTaggableOn)\n",
22
+ { after: sentinel, verbose: true }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "4.0.6"
4
+ VERSION = "4.1.0.beta"
5
5
 
6
6
  def self.version
7
7
  VERSION
data/lib/alchemy_cms.rb CHANGED
@@ -5,13 +5,12 @@ end
5
5
 
6
6
  # Require globally used external libraries
7
7
  require 'acts_as_list'
8
- require 'acts-as-taggable-on'
9
8
  require 'action_view/dependency_tracker'
10
9
  require 'active_model_serializers'
11
10
  require 'awesome_nested_set'
12
- require 'bourbon'
13
11
  require 'cancan'
14
12
  require 'dragonfly'
13
+ require 'gutentag'
15
14
  require 'handlebars_assets'
16
15
  require 'jquery-rails'
17
16
  require 'jquery-ui-rails'
@@ -53,7 +52,7 @@ require_relative 'alchemy/sass_support'
53
52
  require_relative 'alchemy/ssl_protection'
54
53
  require_relative 'alchemy/resource'
55
54
  require_relative 'alchemy/tinymce'
56
- require_relative 'alchemy/touching'
55
+ require_relative 'alchemy/taggable'
57
56
 
58
57
  # Require hacks
59
58
  require_relative 'kaminari/scoped_pagination_url_helper'
@@ -1,10 +1,10 @@
1
- require File.join(__FILE__, '../../base')
1
+ require_relative '../base'
2
2
 
3
3
  module Alchemy
4
4
  module Generators
5
5
  class ElementsGenerator < Base
6
6
  desc "This generator generates your elements view partials."
7
- source_root File.expand_path('templates', File.dirname(__FILE__))
7
+ source_root File.expand_path('templates', __dir__)
8
8
 
9
9
  def create_partials
10
10
  @elements = load_alchemy_yaml('elements.yml')
@@ -5,7 +5,7 @@ module Alchemy
5
5
  class EssenceGenerator < ::Rails::Generators::Base
6
6
  desc "This generator generates an Alchemy essence for you."
7
7
  argument :essence_name, banner: "YourEssenceName"
8
- source_root File.expand_path('templates', File.dirname(__FILE__))
8
+ source_root File.expand_path('templates', __dir__)
9
9
 
10
10
  def init
11
11
  @essence_name = essence_name.underscore
@@ -10,7 +10,7 @@ module Alchemy
10
10
  default: false,
11
11
  desc: "Skip creation of demo element, page and application layout."
12
12
 
13
- source_root File.expand_path('files', File.dirname(__FILE__))
13
+ source_root File.expand_path('files', __dir__)
14
14
 
15
15
  def copy_config
16
16
  copy_file "#{config_path}/config.yml", "config/alchemy/config.yml"
@@ -18,7 +18,7 @@ module Alchemy
18
18
 
19
19
  def copy_yml_files
20
20
  %w(elements page_layouts).each do |file|
21
- template "#{current_path}/templates/#{file}.yml.tt", "config/alchemy/#{file}.yml"
21
+ template "#{__dir__}/templates/#{file}.yml.tt", "config/alchemy/#{file}.yml"
22
22
  end
23
23
  end
24
24
 
@@ -56,17 +56,13 @@ module Alchemy
56
56
  end
57
57
 
58
58
  def copy_dragonfly_config
59
- template "#{current_path}/templates/dragonfly.rb.tt", "config/initializers/dragonfly.rb"
59
+ template "#{__dir__}/templates/dragonfly.rb.tt", "config/initializers/dragonfly.rb"
60
60
  end
61
61
 
62
62
  private
63
63
 
64
64
  def config_path
65
- @_config_path ||= File.expand_path('../../../../../config/alchemy', current_path)
66
- end
67
-
68
- def current_path
69
- @_current_path ||= File.dirname(__FILE__)
65
+ @_config_path ||= File.expand_path('../../../../../config/alchemy', __dir__)
70
66
  end
71
67
  end
72
68
  end
@@ -5,7 +5,7 @@ module Alchemy
5
5
  class ModuleGenerator < ::Rails::Generators::Base
6
6
  desc "This generator generates an Alchemy module for you."
7
7
  argument :module_name, banner: "your_module_name"
8
- source_root File.expand_path('templates', File.dirname(__FILE__))
8
+ source_root File.expand_path('templates', __dir__)
9
9
 
10
10
  def init
11
11
  @module_name = module_name.downcase
@@ -1,10 +1,10 @@
1
- require File.join(__FILE__, '../../base')
1
+ require_relative '../base'
2
2
 
3
3
  module Alchemy
4
4
  module Generators
5
5
  class PageLayoutsGenerator < Base
6
6
  desc "This generator generates your page_layouts view partials."
7
- source_root File.expand_path('templates', File.dirname(__FILE__))
7
+ source_root File.expand_path('templates', __dir__)
8
8
 
9
9
  def create_partials
10
10
  @page_layouts = load_alchemy_yaml('page_layouts.yml')
@@ -1,10 +1,10 @@
1
- require File.join(__FILE__, '../../base')
1
+ require_relative '../base'
2
2
 
3
3
  module Alchemy
4
4
  module Generators
5
5
  class SiteLayoutsGenerator < Base
6
6
  desc "This generator generates your site layouts view partials."
7
- source_root File.expand_path('templates', File.dirname(__FILE__))
7
+ source_root File.expand_path('templates', __dir__)
8
8
 
9
9
  def create_partials
10
10
  @sites = Alchemy::Site.all
@@ -17,7 +17,7 @@ module Alchemy
17
17
  default: nil,
18
18
  desc: "List of views not to copy. Available views are #{ALCHEMY_VIEWS.to_sentence}."
19
19
 
20
- source_root File.expand_path("../../../../../app/views/alchemy", File.dirname(__FILE__))
20
+ source_root File.expand_path("../../../../../app/views/alchemy", __dir__)
21
21
 
22
22
  def copy_alchemy_views
23
23
  views_to_copy.each do |dir|
@@ -1,10 +1,11 @@
1
1
  require 'shellwords'
2
2
  require 'alchemy/seeder'
3
3
  require 'alchemy/tasks/helpers'
4
- include Alchemy::Tasks::Helpers
5
4
 
6
5
  namespace :alchemy do
7
6
  namespace :db do
7
+ include Alchemy::Tasks::Helpers
8
+
8
9
  desc "Seeds the database with Alchemy defaults"
9
10
  task seed: [:environment] do
10
11
  Alchemy::Seeder.seed!
@@ -8,7 +8,6 @@ namespace :alchemy do
8
8
  Rake::Task['alchemy:tidy:element_positions'].invoke
9
9
  Rake::Task['alchemy:tidy:content_positions'].invoke
10
10
  Rake::Task['alchemy:tidy:remove_orphaned_records'].invoke
11
- Rake::Task['alchemy:tidy:remove_duplicate_folded_pages'].invoke
12
11
  end
13
12
 
14
13
  desc "Creates missing cells for pages."
@@ -57,10 +56,5 @@ namespace :alchemy do
57
56
  task remove_orphaned_contents: [:environment] do
58
57
  Alchemy::Tidy.remove_orphaned_contents
59
58
  end
60
-
61
- desc "Remove duplicate folded pages."
62
- task remove_duplicate_folded_pages: [:environment] do
63
- Alchemy::Tidy.remove_duplicate_folded_pages
64
- end
65
59
  end
66
60
  end
@@ -5,12 +5,7 @@ namespace :alchemy do
5
5
  desc "Upgrades your app to AlchemyCMS v#{Alchemy::VERSION}."
6
6
  task upgrade: [
7
7
  'alchemy:upgrade:prepare',
8
- 'alchemy:upgrade:3.0:run', 'alchemy:upgrade:3.0:todo',
9
- 'alchemy:upgrade:3.1:todo',
10
- 'alchemy:upgrade:3.2:run', 'alchemy:upgrade:3.2:todo',
11
- 'alchemy:upgrade:3.3:run', 'alchemy:upgrade:3.3:todo',
12
- 'alchemy:upgrade:3.4:run', 'alchemy:upgrade:3.4:todo',
13
- 'alchemy:upgrade:3.5:run', 'alchemy:upgrade:3.5:todo'
8
+ 'alchemy:upgrade:4.1:run', 'alchemy:upgrade:4.1:todo'
14
9
  ] do
15
10
  Alchemy::Upgrader.display_todos
16
11
  end
@@ -40,153 +35,25 @@ namespace :alchemy do
40
35
  end
41
36
  end
42
37
 
43
- desc 'Upgrade Alchemy to v3.0'
44
- task '3.0' => [
38
+ desc 'Upgrade Alchemy to v4.1'
39
+ task '4.1' => [
45
40
  'alchemy:upgrade:prepare',
46
- 'alchemy:upgrade:3.0:run',
47
- 'alchemy:upgrade:3.0:todo'
41
+ 'alchemy:upgrade:4.1:run',
42
+ 'alchemy:upgrade:4.1:todo'
48
43
  ] do
49
44
  Alchemy::Upgrader.display_todos
50
45
  end
51
46
 
52
- namespace '3.0' do
53
- task run: [
54
- 'alchemy:upgrade:3.0:rename_registered_role_ro_member',
55
- 'alchemy:upgrade:3.0:publish_unpublished_public_pages'
56
- ]
47
+ namespace '4.1' do
48
+ task run: ['alchemy:upgrade:4.1:harden_acts_as_taggable_on_migrations']
57
49
 
58
- desc 'Rename the `registered` user role to `member`'
59
- task rename_registered_role_ro_member: [:environment] do
60
- Alchemy::Upgrader::ThreePointZero.rename_registered_role_ro_member
61
- end
62
-
63
- desc 'Sets `published_at` of public pages without a `published_at` date set to their `updated_at` value'
64
- task publish_unpublished_public_pages: [:environment] do
65
- Alchemy::Upgrader::ThreePointZero.publish_unpublished_public_pages
66
- end
67
-
68
- task :todo do
69
- Alchemy::Upgrader::ThreePointZero.alchemy_3_0_todos
70
- end
71
- end
72
-
73
- desc 'Upgrade Alchemy to v3.1'
74
- task '3.1' => [
75
- 'alchemy:upgrade:prepare',
76
- 'alchemy:upgrade:3.1:todo'
77
- ] do
78
- Alchemy::Upgrader.display_todos
79
- end
80
-
81
- namespace '3.1' do
82
- task :todo do
83
- Alchemy::Upgrader::ThreePointOne.alchemy_3_1_todos
84
- end
85
- end
86
-
87
- desc 'Upgrade Alchemy to v3.2'
88
- task '3.2' => [
89
- 'alchemy:upgrade:prepare',
90
- 'alchemy:upgrade:3.2:run',
91
- 'alchemy:upgrade:3.2:todo'
92
- ] do
93
- Alchemy::Upgrader.display_todos
94
- end
95
-
96
- namespace '3.2' do
97
- task run: [
98
- 'alchemy:upgrade:3.2:upgrade_acts_as_taggable_on_migrations',
99
- 'alchemy:upgrade:3.2:inject_seeder'
100
- ]
101
-
102
- desc 'Install and patch acts_as_taggable_on migrations.'
103
- task upgrade_acts_as_taggable_on_migrations: [:environment] do
104
- Alchemy::Upgrader::ThreePointTwo.upgrade_acts_as_taggable_on_migrations
105
- end
106
-
107
- desc 'Add Alchemy seeder to `db/seeds.rb` file.'
108
- task inject_seeder: [:environment] do
109
- Alchemy::Upgrader::ThreePointTwo.inject_seeder
110
- end
111
-
112
- task :todo do
113
- Alchemy::Upgrader::ThreePointTwo.alchemy_3_2_todos
114
- end
115
- end
116
-
117
- desc 'Upgrade Alchemy to v3.3'
118
- task '3.3' => [
119
- 'alchemy:upgrade:prepare',
120
- 'alchemy:upgrade:3.3:run',
121
- 'alchemy:upgrade:3.3:todo'
122
- ] do
123
- Alchemy::Upgrader.display_todos
124
- end
125
-
126
- namespace '3.3' do
127
- task run: [
128
- 'alchemy:upgrade:3.3:convert_available_contents',
129
- 'alchemy:upgrade:3.3:migrate_existing_elements'
130
- ]
131
-
132
- desc 'Convert `available_contents` config to `nestable_elements`.'
133
- task convert_available_contents: [:environment] do
134
- Alchemy::Upgrader::ThreePointThree.convert_available_contents
135
- end
136
-
137
- desc 'Migrate existing elements to `nestable_elements`.'
138
- task migrate_existing_elements: [:environment] do
139
- Alchemy::Upgrader::ThreePointThree.migrate_existing_elements
140
- end
141
-
142
- task :todo do
143
- Alchemy::Upgrader::ThreePointThree.alchemy_3_3_todos
144
- end
145
- end
146
-
147
- desc 'Upgrade Alchemy to v3.4'
148
- task '3.4' => ['alchemy:upgrade:prepare', 'alchemy:upgrade:3.4:run']
149
-
150
- namespace '3.4' do
151
- task run: [
152
- 'alchemy:upgrade:3.4:install_asset_manifests',
153
- 'alchemy:upgrade:3.4:store_image_file_format'
154
- ]
155
-
156
- desc 'Install asset manifests into `vendor/assets`'
157
- task install_asset_manifests: [:environment] do
158
- Alchemy::Upgrader::ThreePointFour.install_asset_manifests
159
- end
160
-
161
- desc 'Store image file format on Alchemy pictures.'
162
- task store_image_file_format: [:environment] do
163
- Alchemy::Upgrader::ThreePointFour.store_image_file_format
164
- end
165
-
166
- task :todo do
167
- Alchemy::Upgrader::ThreePointFour.alchemy_3_4_todos
168
- end
169
- end
170
-
171
- desc 'Upgrade Alchemy to v3.5'
172
- task '3.5' => [
173
- 'alchemy:upgrade:prepare',
174
- 'alchemy:upgrade:3.5:run',
175
- 'alchemy:upgrade:3.5:todo'
176
- ] do
177
- Alchemy::Upgrader.display_todos
178
- end
179
-
180
- namespace '3.5' do
181
- task run: ['alchemy:upgrade:3.5:install_dragonfly_config']
182
-
183
- desc 'Install dragonfly config into `config/initializers`'
184
- task install_dragonfly_config: [:environment] do
185
- Alchemy::Upgrader::ThreePointFive.install_dragonfly_config
50
+ desc 'Harden acts_as_taggable_on migrations'
51
+ task harden_acts_as_taggable_on_migrations: [:environment] do
52
+ Alchemy::Upgrader::FourPointOne.harden_acts_as_taggable_on_migrations
186
53
  end
187
54
 
188
55
  task :todo do
189
- Alchemy::Upgrader::ThreePointFive.alchemy_3_5_todos
56
+ Alchemy::Upgrader::FourPointOne.alchemy_4_1_todos
190
57
  end
191
58
  end
192
59
  end