alchemy_cms 4.0.5 → 4.1.0.beta

Sign up to get free protection for your applications and to get access to all the features.
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 +8 -11
  7. data/CHANGELOG.md +5 -20
  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 +6 -2
  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 +77 -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
@@ -1,8 +1,7 @@
1
1
  <%- if @elements.blank? -%>
2
- <div class="info">
3
- <%= render_icon('info') %>
2
+ <%= render_message do %>
4
3
  <%= Alchemy.t(:no_more_elements_to_add) %>
5
- </div>
4
+ <% end %>
6
5
  <%- else -%>
7
6
  <%= alchemy_form_for [:admin, @element] do |form| %>
8
7
  <%= form.hidden_field :page_id %>
@@ -10,9 +10,7 @@
10
10
  </li>
11
11
  <% end %>
12
12
  </ul>
13
- <div id="cell_for_other_elements"
14
- class="sortable_cell for_other_elements_cell"
15
- data-droppable-elements="<%= @page.element_names_from_definition.join(' ') %>">
13
+ <div id="cell_for_other_elements" class="sortable_cell for_other_elements_cell">
16
14
  <%= render partial: 'alchemy/admin/elements/element',
17
15
  collection: @page.elements.not_trashed.not_in_cell %>
18
16
  </div>
@@ -20,7 +18,7 @@
20
18
  <%= content_tag :div,
21
19
  id: "cell_#{cell.name}",
22
20
  class: ["sortable_cell", "#{cell.name}_cell"].join(' '),
23
- data: {'cell-id' => cell.id, 'droppable-elements' => cell.element_definitions.join(' ')} do %>
21
+ data: {'cell-id' => cell.id, 'data-droppable-elements' => cell.element_definitions.join(' ')} do %>
24
22
  <%= render partial: 'alchemy/admin/elements/element', collection: elements %>
25
23
  <% end %>
26
24
  <% end %>
@@ -11,8 +11,7 @@
11
11
  </div>
12
12
  <div id="paste_element_tab">
13
13
  <%= alchemy_form_for([:admin, @element]) do |f| %>
14
- <%= f.hidden_field :page_id %>
15
- <%= f.hidden_field :parent_element_id, value: @parent_element.try(:id) %>
14
+ <%= f.hidden_field(:page_id) %>
16
15
  <div class="input select">
17
16
  <label for="paste_from_clipboard" class="control-label"><%= Alchemy.t("Element") %></label>
18
17
  <%= select_tag 'paste_from_clipboard',
@@ -1,14 +1,14 @@
1
1
  var el = $('.element-editor[data-element-id="<%= @element.id %>"]');
2
- var icon = el.find('> .element-header > .element-handle .icon:not(.element)');
2
+ var icon = el.find('> .element-header > .element-handle > .icon');
3
3
  var label = el.find('> .element-toolbar .publish-element-button label');
4
4
 
5
5
  <%- if @element.public? -%>
6
- icon.removeClass('element_draft');
7
- icon.addClass('element_public');
6
+ icon.removeClass('fa-window-close fas');
7
+ icon.addClass('fa-window-maximize far');
8
8
  label.text('<%= Alchemy.t(:hide_element) %>');
9
9
  <%- else -%>
10
- icon.removeClass('element_public');
11
- icon.addClass('element_draft');
10
+ icon.removeClass('fa-window-maximize far');
11
+ icon.addClass('fa-window-close fas');
12
12
  label.text('<%= Alchemy.t(:show_element) %>');
13
13
  <%- end -%>
14
14
 
@@ -21,28 +21,23 @@
21
21
  <%= Alchemy::PageLayout.human_layout_name(language.page_layout) %>
22
22
  </td>
23
23
  <td class="center">
24
- <%= language.public? ? render_icon('true') : '' %>
24
+ <%= language.public? ? render_icon(:check) : nil %>
25
25
  </td>
26
26
  <td class="center">
27
- <%= language.default? ? render_icon('true') : '' %>
27
+ <%= language.default? ? render_icon(:check) : nil %>
28
28
  </td>
29
29
  <td class="tools">
30
30
  <%- if can?(:destroy, language) -%>
31
31
  <%= delete_button resource_path(language) %>
32
32
  <%- end -%>
33
33
  <%- if can?(:edit, language) -%>
34
- <%= link_to_dialog(
35
- '',
34
+ <%= link_to_dialog render_icon(:edit),
36
35
  alchemy.edit_admin_language_path(language),
37
36
  {
38
37
  title: Alchemy.t("Edit"),
39
38
  size: "430x415"
40
39
  },
41
- {
42
- class: "icon edit",
43
- title: Alchemy.t("Edit")
44
- }
45
- ) -%>
40
+ title: Alchemy.t("Edit") %>
46
41
  <%- end -%>
47
42
  </td>
48
43
  </tr>
@@ -36,7 +36,7 @@
36
36
  <%= render_resources %>
37
37
  </tbody>
38
38
  </table>
39
- <%- elsif params[:q].present? -%>
39
+ <%- elsif search_filter_params[:q].present? -%>
40
40
  <p><%= Alchemy.t('Nothing found') %></p>
41
41
  <%- end -%>
42
42
 
@@ -3,7 +3,7 @@
3
3
  <% content_for :toolbar do %>
4
4
  <div class="toolbar_buttons">
5
5
  <%= render 'alchemy/admin/partials/site_select' %>
6
- <%= toolbar_button icon: 'create',
6
+ <%= toolbar_button icon: :plus,
7
7
  label: label_title,
8
8
  url: new_resource_path,
9
9
  title: label_title,
@@ -4,14 +4,14 @@
4
4
  <% if layoutpage.definition.blank? %>
5
5
  <%= page_layout_missing_warning %>
6
6
  <% else %>
7
- <%= render_icon(:page) %>
7
+ <i class="icon far fa-file fa-lg"></i>
8
8
  <% end %>
9
9
  </div>
10
10
  <div class="sitemap_right_tools">
11
11
  <%- if can?(:configure, layoutpage) -%>
12
12
  <div class="button_with_label sitemap_tool">
13
13
  <%= link_to_dialog(
14
- render_icon('configure_page'),
14
+ render_icon(:cog),
15
15
  alchemy.edit_admin_layoutpage_path(layoutpage),
16
16
  {
17
17
  title: Alchemy.t(:edit_page_properties),
@@ -24,7 +24,7 @@
24
24
  <%- if can?(:copy, layoutpage) -%>
25
25
  <div class="button_with_label sitemap_tool">
26
26
  <%= link_to(
27
- render_icon("copy_page"),
27
+ render_icon(:copy),
28
28
  alchemy.insert_admin_clipboard_path(
29
29
  remarkable_type: layoutpage.class.name.demodulize.underscore.pluralize,
30
30
  remarkable_id: layoutpage.id
@@ -38,7 +38,7 @@
38
38
  <%- if can?(:destroy, layoutpage) -%>
39
39
  <div class="button_with_label sitemap_tool">
40
40
  <%= link_to_confirm_dialog(
41
- render_icon('delete_page'),
41
+ render_icon(:minus),
42
42
  Alchemy.t(:confirm_to_delete_page),
43
43
  url_for(
44
44
  controller: 'pages',
@@ -50,7 +50,7 @@
50
50
  </div>
51
51
  <%- end -%>
52
52
  </div>
53
- <div class="sitemap_sitename">
53
+ <div class="sitemap_sitename without-status">
54
54
  <%= link_to(
55
55
  layoutpage.name,
56
56
  alchemy.edit_admin_page_path(layoutpage),
@@ -3,7 +3,7 @@
3
3
  <%= render 'alchemy/admin/partials/site_select' %>
4
4
  <%= render 'alchemy/admin/partials/language_tree_select' %>
5
5
  <%= toolbar_button(
6
- icon: 'add_page',
6
+ icon: :plus,
7
7
  url: alchemy.new_admin_page_path(parent_id: @layout_root.id, layoutpage: true),
8
8
  hotkey: 'alt+n',
9
9
  dialog_options: {
@@ -16,15 +16,16 @@
16
16
  if_permitted_to: [:create, Alchemy::Page]
17
17
  ) %>
18
18
  <%= toolbar_button(
19
- icon: "clipboard#{clipboard_empty?('pages') ? '' : ' full'}",
19
+ icon: clipboard_empty?('pages') ? 'clipboard' : 'paste',
20
20
  url: alchemy.admin_clipboard_path(remarkable_type: 'pages'),
21
21
  dialog_options: {
22
22
  title: Alchemy.t('Clipboard'),
23
23
  size: '380x270'
24
24
  },
25
25
  title: Alchemy.t('Show clipboard'),
26
- id: "clipboard_button",
27
- label: Alchemy.t('Show clipboard')
26
+ link_options: {id: "clipboard_button"},
27
+ label: Alchemy.t('Show clipboard'),
28
+ if_permitted_to: [:create, Alchemy::Page]
28
29
  ) %>
29
30
  </div>
30
31
  <% end %>
@@ -3,7 +3,7 @@
3
3
  <% end %>
4
4
  <p class="buttons">
5
5
  <label><%= Alchemy.t("Do you want to") %></label>
6
- <%= link_to Alchemy.t('stay logged in'), alchemy.root_path, class: 'button' %>
6
+ <%= link_to Alchemy.t('stay logged in'), alchemy.root_path, class: 'button secondary' %>
7
7
  </p>
8
8
  <%= form_tag Alchemy.logout_path, method: 'delete', class: 'buttons' do %>
9
9
  <label><%= Alchemy.t('or to completely') %></label>
@@ -5,7 +5,7 @@
5
5
  edit_admin_legacy_page_url_path(legacy_page_url, page_id: @page.id),
6
6
  {size: '400x125', title: Alchemy.t('Edit link')},
7
7
  {title: Alchemy.t(:edit)} %>
8
- <%= link_to_confirm_dialog render_icon(:destroy),
8
+ <%= link_to_confirm_dialog render_icon(:minus),
9
9
  Alchemy.t('Are you sure?'),
10
10
  admin_legacy_page_url_path(legacy_page_url, page_id: @page.id),
11
11
  {title: Alchemy.t(:remove)} %>
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <div class="right-column">
14
14
  <button class="with_icon">
15
- <%= render_icon(:create) %>
15
+ <%= render_icon(:plus, size: 'xs') %>
16
16
  <%= Alchemy.t(:add) %>
17
17
  </button>
18
18
  </div>
@@ -40,7 +40,7 @@
40
40
  hint: Alchemy.t('pages.update.comma_seperated') %>
41
41
 
42
42
  <% if @page.taggable? %>
43
- <div class="input string">
43
+ <div class="input string autocomplete_tag_list">
44
44
  <%= f.label :tag_list %>
45
45
  <%= render 'alchemy/admin/partials/autocomplete_tag_list', f: f %>
46
46
  </div>
@@ -7,7 +7,7 @@
7
7
  <% end %>
8
8
  <%= form_tag(alchemy.unlock_admin_page_path(locked_page), remote: true) do %>
9
9
  <button class="icon_button small" title="<%= Alchemy.t(:explain_unlocking) %>">
10
- <%= render_icon('close small') %>
10
+ <%= render_icon(:times, size: 'xs') %>
11
11
  </button>
12
12
  <% end %>
13
13
  </div>
@@ -4,34 +4,42 @@
4
4
  <% unless @sorting %>
5
5
  {{#unless root_or_leaf}}
6
6
  <%= link_to(
7
- '',
8
7
  alchemy.fold_admin_page_path(page),
9
8
  remote: true,
10
9
  method: :post,
11
- class: "page_folder {{#if folded}}folded{{else}}collapsed{{/if}}",
10
+ class: "page_folder",
12
11
  title: "{{#if folded}}#{Alchemy.t('Show childpages')}{{else}}#{Alchemy.t('Hide childpages')}{{/if}}",
13
12
  id: "fold_button_{{id}}"
14
- )
15
- %>
13
+ ) do %>
14
+ {{#if folded}}
15
+ <i class="far fa-plus-square fa-fw"></i>
16
+ {{else}}
17
+ <i class="far fa-minus-square fa-fw"></i>
18
+ {{/if}}
19
+ <% end %>
16
20
  {{/unless}}
17
21
  <% end %>
18
22
  {{#if definition_missing}}
19
23
  <%= page_layout_missing_warning %>
20
24
  {{else}}
21
25
  {{#if permissions.edit_content}}
22
- <div class="page icon{{#if locked}} with-hint{{/if}}">
23
- {{#if locked}}
26
+ {{#if locked}}
27
+ <span class="with-hint">
28
+ <i class="icon fas fa-edit fa-fw"></i>
24
29
  <span class="hint-bubble">
25
30
  {{locked_notice}}
26
31
  </span>
27
- {{/if}}
28
- </div>
32
+ </span>
33
+ {{else}}
34
+ <i class="icon far fa-file fa-lg"></i>
35
+ {{/if}}
29
36
  {{else}}
30
- <div class="page icon with-hint not-allowed">
37
+ <span class="with-hint">
38
+ <i class="icon fas fa-ban fa-fw"></i>
31
39
  <span class="hint-bubble">
32
40
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
33
41
  </span>
34
- </div>
42
+ </span>
35
43
  {{/if}}
36
44
  {{/if}}
37
45
  </div>
@@ -40,7 +48,7 @@
40
48
  {{#if permissions.info}}
41
49
  <div class="button_with_label sitemap_tool">
42
50
  <%= link_to_dialog(
43
- render_icon(:info),
51
+ render_icon('info-circle'),
44
52
  alchemy.info_admin_page_path(page),
45
53
  {
46
54
  title: Alchemy.t(:page_infos),
@@ -50,7 +58,7 @@
50
58
  <label class="center"><%= Alchemy.t(:page_infos) %></label>
51
59
  {{else}}
52
60
  <div class="sitemap_tool disabled with-hint">
53
- <%= render_icon(:info) %>
61
+ <%= render_icon('info-circle') %>
54
62
  <span class="hint-bubble">
55
63
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
56
64
  </span>
@@ -59,7 +67,7 @@
59
67
  {{#if permissions.configure}}
60
68
  <div class="button_with_label sitemap_tool">
61
69
  <%= link_to_dialog(
62
- render_icon(:configure_page),
70
+ render_icon(:cog),
63
71
  alchemy.configure_admin_page_path(page),
64
72
  {
65
73
  title: Alchemy.t(:edit_page_properties),
@@ -69,7 +77,7 @@
69
77
  <label class="center"><%= Alchemy.t(:edit_page_properties) %></label>
70
78
  {{else}}
71
79
  <div class="sitemap_tool disabled with-hint">
72
- <%= render_icon(:configure_page) %>
80
+ <%= render_icon(:cog) %>
73
81
  <span class="hint-bubble">
74
82
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
75
83
  </span>
@@ -78,7 +86,7 @@
78
86
  {{#if permissions.copy}}
79
87
  <div class="button_with_label sitemap_tool">
80
88
  <%= link_to(
81
- render_icon(:copy_page),
89
+ render_icon(:copy),
82
90
  alchemy.insert_admin_clipboard_path(
83
91
  remarkable_type: page.class.name.demodulize.underscore.pluralize,
84
92
  remarkable_id: '__ID__',
@@ -89,7 +97,7 @@
89
97
  <label class="center"><%= Alchemy.t(:copy_page) %></label>
90
98
  {{else}}
91
99
  <div class="sitemap_tool disabled with-hint">
92
- <%= render_icon(:copy_page) %>
100
+ <%= render_icon(:copy) %>
93
101
  <span class="hint-bubble">
94
102
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
95
103
  </span>
@@ -98,7 +106,7 @@
98
106
  {{#if permissions.destroy}}
99
107
  <div class="button_with_label sitemap_tool">
100
108
  <%= link_to_confirm_dialog(
101
- render_icon(:delete_page),
109
+ render_icon(:minus),
102
110
  Alchemy.t(:confirm_to_delete_page),
103
111
  url_for(
104
112
  controller: 'pages',
@@ -109,7 +117,7 @@
109
117
  <label class="center"><%= Alchemy.t(:delete_page) %></label>
110
118
  {{else}}
111
119
  <div class="sitemap_tool disabled with-hint">
112
- <%= render_icon(:delete_page) %>
120
+ <%= render_icon(:minus) %>
113
121
  <span class="hint-bubble">
114
122
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
115
123
  </span>
@@ -118,7 +126,7 @@
118
126
  {{#if permissions.create}}
119
127
  <div class="button_with_label sitemap_tool">
120
128
  <%= link_to_dialog(
121
- render_icon(:add_page),
129
+ render_icon(:plus),
122
130
  alchemy.new_admin_page_path(parent_id: '__ID__').gsub('__ID__', '{{id}}'),
123
131
  {
124
132
  title: Alchemy.t(:create_page),
@@ -129,7 +137,7 @@
129
137
  <label class="left"><%= Alchemy.t(:create_page) %></label>
130
138
  {{else}}
131
139
  <div class="sitemap_tool disabled with-hint">
132
- <%= render_icon(:add_page) %>
140
+ <%= render_icon(:plus) %>
133
141
  <span class="hint-bubble">
134
142
  <%= Alchemy.t('Your user role does not allow you to edit this page') %>
135
143
  </span>
@@ -139,15 +147,15 @@
139
147
  </div>
140
148
  <div class="page_infos" id="page_<%= page.id %>_infos">
141
149
  <span class="page_status with-hint">
142
- <span class="icon {{#unless public}}not_{{/unless}}public"></span>
150
+ <i class="icon fas fa-fw fa-compass {{#unless public}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
143
151
  <span class="hint-bubble">{{status_titles.public}}</span>
144
152
  </span>
145
153
  <span class="page_status with-hint">
146
- <span class="icon {{#unless visible}}not_{{/unless}}visible"></span>
154
+ <i class="icon fas fa-fw fa-eye {{#unless visible}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
147
155
  <span class="hint-bubble">{{status_titles.visible}}</span>
148
156
  </span>
149
157
  <span class="page_status with-hint">
150
- <span class="icon {{#unless restricted}}not_{{/unless}}restricted"></span>
158
+ <i class="icon fas fa-fw fa-lock {{#unless restricted}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
151
159
  <span class="hint-bubble">{{status_titles.restricted}}</span>
152
160
  </span>
153
161
  </div>
@@ -1,12 +1,12 @@
1
1
  <li>
2
2
  <div class="sitemap_page ">
3
3
  <div class="sitemap_left_images">
4
- <%= render_icon(:page) %>
4
+ <i class="icon far fa-file fa-lg"></i>
5
5
  </div>
6
6
  <div class="sitemap_right_tools">
7
7
  {{#unless redirects_to_external}}
8
8
  <div class="button_with_label sitemap_tool">
9
- <%= link_to render_icon(:element_window),
9
+ <%= link_to render_icon('th-list'),
10
10
  alchemy.list_admin_elements_path(page_id: '__ID__').gsub('__ID__', '{{id}}'),
11
11
  remote: true,
12
12
  data: {
@@ -21,13 +21,13 @@
21
21
  </div>
22
22
  <div class="page_infos">
23
23
  <span class="page_status">
24
- <span class="icon {{#unless public}}not_{{/unless}}public"></span>
24
+ <i class="icon fas fa-fw fa-compass {{#unless public}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
25
25
  </span>
26
26
  <span class="page_status">
27
- <span class="icon {{#unless visible}}not_{{/unless}}visible"></span>
27
+ <i class="icon fas fa-fw fa-eye {{#unless visible}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
28
28
  </span>
29
29
  <span class="page_status">
30
- <span class="icon {{#unless restricted}}not_{{/unless}}restricted"></span>
30
+ <i class="icon fas fa-fw fa-lock {{#unless restricted}}disabled{{/unless}}" data-fa-transform="shrink-2"></i>
31
31
  </span>
32
32
  </div>
33
33
  <div class="sitemap_sitename" id="sitemap_sitename_{{id}}" name="/<%= "#{Alchemy::Language.current.code}/" if multi_language? %>{{urlname}}">
@@ -1,12 +1,12 @@
1
1
  <span class="page_status with-hint">
2
- <%= render_icon page.public? ? :public : :not_public %>
2
+ <%= render_icon(:compass, transform: 'shrink-2', class: @page.public? ? nil : 'disabled') %>
3
3
  <span class="hint-bubble"><%= page.status_title(:public) %></span>
4
4
  </span>
5
5
  <span class="page_status with-hint">
6
- <%= render_icon page.visible? ? :visible : :not_visible %>
6
+ <%= render_icon(:eye, transform: 'shrink-2', class: @page.visible? ? nil : 'disabled') %>
7
7
  <span class="hint-bubble"><%= page.status_title(:visible) %></span>
8
8
  </span>
9
9
  <span class="page_status with-hint">
10
- <%= render_icon page.restricted? ? :restricted : :not_restricted %>
10
+ <%= render_icon(:lock, transform: 'shrink-2', class: @page.restricted? ? nil : 'disabled') %>
11
11
  <span class="hint-bubble"><%= page.status_title(:restricted) %></span>
12
12
  </span>
@@ -1,5 +1,5 @@
1
1
  <% checkbox = check_box_tag :page_public, nil, @page.public?, name: nil,
2
- data: {date_format: I18n.t(:datetimepicker, scope: 'time.formats')},
2
+ data: {date_format: I18n.t(:datetimepicker, scope: 'time.formats.alchemy')},
3
3
  disabled: @page.attribute_fixed?(:public_on) %>
4
4
 
5
5
  <label class="checkbox">