alchemy_cms 3.4.2 → 3.5.0.rc1

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 (247) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +9 -3
  3. data/.teatro.yml +1 -0
  4. data/.travis.yml +14 -17
  5. data/CHANGELOG.md +44 -6
  6. data/Gemfile +7 -4
  7. data/README.md +60 -10
  8. data/Rakefile +1 -1
  9. data/alchemy_cms.gemspec +5 -8
  10. data/app/assets/javascripts/alchemy/admin.js +2 -0
  11. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +1 -0
  12. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +1 -0
  13. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +1 -1
  14. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +9 -7
  15. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +1 -0
  16. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +11 -7
  17. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
  18. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +8 -3
  19. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +10 -0
  20. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +104 -73
  21. data/app/assets/stylesheets/alchemy/_defaults.scss +1 -4
  22. data/app/assets/stylesheets/alchemy/_extends.scss +13 -35
  23. data/app/assets/stylesheets/alchemy/_mixins.scss +82 -18
  24. data/app/assets/stylesheets/alchemy/_variables.scss +21 -8
  25. data/app/assets/stylesheets/alchemy/admin.scss +4 -0
  26. data/app/assets/stylesheets/alchemy/archive.scss +8 -12
  27. data/app/assets/stylesheets/alchemy/attachments.scss +39 -0
  28. data/app/assets/stylesheets/alchemy/base.scss +26 -15
  29. data/app/assets/stylesheets/alchemy/buttons.scss +59 -31
  30. data/app/assets/stylesheets/alchemy/dashboard.scss +3 -3
  31. data/app/assets/stylesheets/alchemy/dialogs.scss +10 -8
  32. data/app/assets/stylesheets/alchemy/elements.scss +65 -41
  33. data/app/assets/stylesheets/alchemy/errors.scss +7 -0
  34. data/app/assets/stylesheets/alchemy/flash.scss +1 -1
  35. data/app/assets/stylesheets/alchemy/form_fields.scss +0 -37
  36. data/app/assets/stylesheets/alchemy/forms.scss +18 -27
  37. data/app/assets/stylesheets/alchemy/frame.scss +104 -204
  38. data/app/assets/stylesheets/alchemy/hints.scss +62 -0
  39. data/app/assets/stylesheets/alchemy/icon-font.scss +2 -1
  40. data/app/assets/stylesheets/alchemy/icons.scss +9 -4
  41. data/app/assets/stylesheets/alchemy/image_library.scss +6 -6
  42. data/app/assets/stylesheets/alchemy/jquery-ui.scss +6 -4
  43. data/app/assets/stylesheets/alchemy/lists.scss +0 -1
  44. data/app/assets/stylesheets/alchemy/menubar.scss +3 -4
  45. data/app/assets/stylesheets/alchemy/modules.scss +0 -6
  46. data/app/assets/stylesheets/alchemy/navigation.scss +242 -0
  47. data/app/assets/stylesheets/alchemy/pagination.scss +3 -3
  48. data/app/assets/stylesheets/alchemy/print.scss +1 -0
  49. data/app/assets/stylesheets/alchemy/resource_info.scss +45 -0
  50. data/app/assets/stylesheets/alchemy/search.scss +72 -1
  51. data/app/assets/stylesheets/alchemy/selects.scss +38 -44
  52. data/app/assets/stylesheets/alchemy/sitemap.scss +89 -79
  53. data/app/assets/stylesheets/alchemy/tables.scss +6 -10
  54. data/app/assets/stylesheets/alchemy/toolbar.scss +7 -36
  55. data/app/assets/stylesheets/alchemy/upload.scss +12 -3
  56. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +6 -3
  57. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +58 -170
  58. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
  59. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
  60. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +124 -148
  61. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
  62. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
  63. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +426 -144
  64. data/app/controllers/alchemy/admin/attachments_controller.rb +24 -16
  65. data/app/controllers/alchemy/admin/clipboard_controller.rb +1 -1
  66. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
  67. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +9 -8
  68. data/app/controllers/alchemy/admin/layoutpages_controller.rb +1 -0
  69. data/app/controllers/alchemy/admin/pages_controller.rb +2 -2
  70. data/app/controllers/alchemy/admin/resources_controller.rb +2 -2
  71. data/app/controllers/alchemy/admin/tags_controller.rb +1 -1
  72. data/app/controllers/alchemy/api/pages_controller.rb +16 -0
  73. data/app/controllers/alchemy/messages_controller.rb +1 -1
  74. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +2 -2
  75. data/app/helpers/alchemy/admin/attachments_helper.rb +11 -0
  76. data/app/helpers/alchemy/admin/base_helper.rb +37 -4
  77. data/app/helpers/alchemy/admin/contents_helper.rb +11 -4
  78. data/app/helpers/alchemy/admin/elements_helper.rb +0 -19
  79. data/app/helpers/alchemy/admin/essences_helper.rb +7 -30
  80. data/app/helpers/alchemy/admin/navigation_helper.rb +13 -51
  81. data/app/helpers/alchemy/admin/pages_helper.rb +21 -16
  82. data/app/helpers/alchemy/admin/pictures_helper.rb +9 -0
  83. data/app/helpers/alchemy/deprecated_pages_helper.rb +54 -0
  84. data/app/helpers/alchemy/essences_helper.rb +1 -1
  85. data/app/helpers/alchemy/pages_helper.rb +8 -109
  86. data/app/helpers/alchemy/url_helper.rb +8 -13
  87. data/app/models/alchemy/attachment.rb +7 -4
  88. data/app/models/alchemy/cell.rb +2 -2
  89. data/app/models/alchemy/content.rb +2 -2
  90. data/app/models/alchemy/content/factory.rb +12 -9
  91. data/app/models/alchemy/element.rb +6 -3
  92. data/app/models/alchemy/essence_file.rb +1 -1
  93. data/app/models/alchemy/essence_picture.rb +37 -47
  94. data/app/models/alchemy/essence_picture_view.rb +8 -1
  95. data/app/models/alchemy/folded_page.rb +3 -2
  96. data/app/models/alchemy/legacy_page_url.rb +3 -3
  97. data/app/models/alchemy/page.rb +50 -5
  98. data/app/models/alchemy/page/fixed_attributes.rb +63 -0
  99. data/app/models/alchemy/page/page_elements.rb +10 -7
  100. data/app/models/alchemy/page/page_natures.rb +19 -0
  101. data/app/models/alchemy/picture.rb +1 -0
  102. data/app/models/alchemy/picture/transformations.rb +1 -1
  103. data/app/models/alchemy/picture/url.rb +82 -0
  104. data/app/serializers/alchemy/page_tree_serializer.rb +29 -8
  105. data/app/views/alchemy/_edit_mode.html.erb +2 -0
  106. data/app/views/alchemy/_menubar.html.erb +1 -1
  107. data/app/views/alchemy/_preview_mode_code.html.erb +6 -0
  108. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -1
  109. data/app/views/alchemy/admin/attachments/_attachment.html.erb +25 -5
  110. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +26 -0
  111. data/app/views/alchemy/admin/attachments/index.html.erb +1 -1
  112. data/app/views/alchemy/admin/attachments/show.html.erb +52 -0
  113. data/app/views/alchemy/admin/elements/_element_header.html.erb +6 -3
  114. data/app/views/alchemy/admin/elements/create.js.erb +0 -2
  115. data/app/views/alchemy/admin/elements/trash.js.erb +0 -1
  116. data/app/views/alchemy/admin/elements/update.js.erb +0 -2
  117. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -4
  118. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +1 -1
  119. data/app/views/alchemy/admin/languages/index.html.erb +1 -0
  120. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +26 -27
  121. data/app/views/alchemy/admin/layoutpages/edit.html.erb +1 -1
  122. data/app/views/alchemy/admin/pages/_form.html.erb +13 -40
  123. data/app/views/alchemy/admin/pages/_locked_page.html.erb +1 -1
  124. data/app/views/alchemy/admin/pages/_page.html.erb +119 -61
  125. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +4 -2
  126. data/app/views/alchemy/admin/pages/_page_infos.html.erb +12 -12
  127. data/app/views/alchemy/admin/pages/_page_status.html.erb +1 -1
  128. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +35 -0
  129. data/app/views/alchemy/admin/pages/edit.html.erb +13 -2
  130. data/app/views/alchemy/admin/pages/index.html.erb +3 -8
  131. data/app/views/alchemy/admin/pages/info.html.erb +15 -2
  132. data/app/views/alchemy/admin/pages/sort.js.erb +1 -1
  133. data/app/views/alchemy/admin/pages/update.js.erb +1 -14
  134. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +12 -8
  135. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +4 -4
  136. data/app/views/alchemy/admin/partials/_search_form.html.erb +1 -1
  137. data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +9 -6
  138. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
  139. data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -6
  140. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -6
  141. data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
  142. data/app/views/alchemy/admin/pictures/show.html.erb +1 -6
  143. data/app/views/alchemy/admin/uploader/_button.html.erb +4 -4
  144. data/app/views/alchemy/base/500.html.erb +15 -1
  145. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +13 -15
  146. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -3
  147. data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -2
  148. data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -2
  149. data/app/views/alchemy/essences/_essence_file_editor.html.erb +2 -7
  150. data/app/views/alchemy/essences/_essence_file_view.html.erb +1 -3
  151. data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -2
  152. data/app/views/alchemy/essences/_essence_html_view.html.erb +1 -3
  153. data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -2
  154. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -2
  155. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +47 -49
  156. data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -3
  157. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -2
  158. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -3
  159. data/app/views/alchemy/essences/_essence_select_editor.html.erb +27 -29
  160. data/app/views/alchemy/essences/_essence_select_view.html.erb +1 -3
  161. data/app/views/alchemy/essences/_essence_text_editor.html.erb +17 -19
  162. data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -2
  163. data/app/views/alchemy/pages/_meta_data.html.erb +9 -0
  164. data/app/views/layouts/alchemy/admin.html.erb +9 -11
  165. data/bin/alchemy +1 -2
  166. data/config/alchemy/config.yml +1 -1
  167. data/config/alchemy/modules.yml +0 -16
  168. data/config/initializers/dragonfly.rb +0 -18
  169. data/config/initializers/mini_profiler.rb +6 -0
  170. data/config/locales/alchemy.de.yml +9 -1
  171. data/config/locales/alchemy.en.yml +7 -1
  172. data/config/locales/alchemy.es.yml +6 -0
  173. data/config/locales/alchemy.fr.yml +2 -0
  174. data/config/locales/alchemy.it.yml +3 -1
  175. data/config/locales/alchemy.nl.yml +2 -0
  176. data/config/locales/alchemy.ru.yml +2 -0
  177. data/config/routes.rb +3 -8
  178. data/db/migrate/20160912223112_add_index_to_alchemy_pages_rgt.rb +9 -0
  179. data/db/migrate/20160927205604_add_foreign_key_indices_and_null_constraints.rb +20 -0
  180. data/db/migrate/20160928080104_add_foreign_keys.rb +27 -0
  181. data/lib/alchemy/admin/locale.rb +4 -3
  182. data/lib/alchemy/engine.rb +2 -4
  183. data/lib/alchemy/errors.rb +9 -2
  184. data/lib/alchemy/forms/builder.rb +8 -0
  185. data/lib/alchemy/modules.rb +20 -19
  186. data/lib/alchemy/permissions.rb +15 -4
  187. data/lib/alchemy/resources_helper.rb +4 -2
  188. data/lib/alchemy/sass_support.rb +9 -0
  189. data/lib/alchemy/seeder.rb +89 -1
  190. data/lib/alchemy/test_support/essence_shared_examples.rb +2 -0
  191. data/lib/alchemy/test_support/factories/attachment_factory.rb +1 -1
  192. data/lib/alchemy/test_support/factories/content_factory.rb +1 -0
  193. data/lib/alchemy/test_support/factories/element_factory.rb +1 -0
  194. data/lib/alchemy/test_support/factories/picture_factory.rb +1 -1
  195. data/lib/alchemy/test_support/fixtures/image.png +0 -0
  196. data/lib/alchemy/tinymce.rb +2 -6
  197. data/lib/alchemy/upgrader.rb +4 -55
  198. data/lib/alchemy/upgrader/tasks/install_dragonfly_config.rb +14 -0
  199. data/lib/alchemy/upgrader/three_point_five.rb +32 -0
  200. data/lib/alchemy/upgrader/three_point_four.rb +2 -8
  201. data/lib/alchemy/upgrader/three_point_one.rb +30 -30
  202. data/lib/alchemy/upgrader/three_point_three.rb +31 -31
  203. data/lib/alchemy/upgrader/three_point_two.rb +25 -25
  204. data/lib/alchemy/upgrader/three_point_zero.rb +59 -59
  205. data/lib/alchemy/version.rb +1 -1
  206. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +1 -1
  207. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +1 -1
  208. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +1 -1
  209. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -3
  210. data/lib/rails/generators/alchemy/install/files/_article_view.html.erb +1 -1
  211. data/lib/rails/generators/alchemy/install/files/application.html.erb +3 -4
  212. data/lib/rails/generators/alchemy/install/install_generator.rb +4 -0
  213. data/lib/rails/generators/alchemy/install/templates/dragonfly.rb.tt +35 -0
  214. data/lib/rails/generators/alchemy/module/module_generator.rb +1 -1
  215. data/lib/tasks/alchemy/db.rake +6 -0
  216. data/lib/tasks/alchemy/tidy.rake +85 -0
  217. data/lib/tasks/alchemy/upgrade.rake +165 -16
  218. data/vendor/assets/javascripts/clipboard.min.js +7 -0
  219. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +4 -4
  220. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +2 -2
  221. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +29 -14
  222. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +2 -2
  223. data/vendor/assets/javascripts/tinymce/langs/es.js +2 -2
  224. data/vendor/assets/javascripts/tinymce/langs/fr.js +1 -1
  225. data/vendor/assets/javascripts/tinymce/langs/it.js +1 -1
  226. data/vendor/assets/javascripts/tinymce/langs/nl.js +3 -3
  227. data/vendor/assets/javascripts/tinymce/tinymce.min.js +15 -12
  228. metadata +44 -88
  229. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/readme.md +0 -1
  230. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.eot +0 -0
  231. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.eot +0 -0
  232. data/app/assets/stylesheets/tinymce/skins/alchemy/img/wline.gif +0 -0
  233. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.ie7.min.css +0 -1
  234. data/app/controllers/alchemy/pictures_controller.rb +0 -97
  235. data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +0 -8
  236. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.min.js +0 -1
  237. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +0 -1
  238. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +0 -1
  239. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +0 -1
  240. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +0 -1
  241. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +0 -1
  242. data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.min.js +0 -1
  243. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +0 -1
  244. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +0 -1
  245. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +0 -1
  246. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +0 -1
  247. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +0 -1
@@ -6,6 +6,8 @@ shared_examples_for "an essence" do
6
6
  let(:content_definition) { {'name' => 'foo'} }
7
7
 
8
8
  it "touches the content after update" do
9
+ element = create(:alchemy_element)
10
+ content = create(:alchemy_content, element: element)
9
11
  essence.save
10
12
  content.update(essence: essence, essence_type: essence.class.name)
11
13
  date = content.updated_at
@@ -2,7 +2,7 @@ require 'factory_girl'
2
2
 
3
3
  FactoryGirl.define do
4
4
  factory :alchemy_attachment, class: 'Alchemy::Attachment' do
5
- file File.new(File.expand_path('../../../../../spec/fixtures/image.png', __FILE__))
5
+ file File.new(Alchemy::Engine.root.join('lib', 'alchemy', 'test_support', 'fixtures', 'image.png'))
6
6
  name 'image'
7
7
  file_name 'image.png'
8
8
  end
@@ -6,5 +6,6 @@ FactoryGirl.define do
6
6
  name "text"
7
7
  essence_type "Alchemy::EssenceText"
8
8
  association :essence, factory: :alchemy_essence_text
9
+ association :element, factory: :alchemy_element
9
10
  end
10
11
  end
@@ -4,6 +4,7 @@ FactoryGirl.define do
4
4
  factory :alchemy_element, class: 'Alchemy::Element' do
5
5
  name 'article'
6
6
  create_contents_after_create false
7
+ association :page, factory: :alchemy_page
7
8
 
8
9
  trait :unique do
9
10
  unique true
@@ -2,7 +2,7 @@ require 'factory_girl'
2
2
 
3
3
  FactoryGirl.define do
4
4
  factory :alchemy_picture, class: 'Alchemy::Picture' do
5
- image_file File.new(File.expand_path('../../../../../spec/fixtures/image.png', __FILE__))
5
+ image_file File.new(Alchemy::Engine.root.join('lib', 'alchemy', 'test_support', 'fixtures', 'image.png'))
6
6
  name 'image'
7
7
  image_file_name 'image.png'
8
8
  upload_hash Time.current.hash
@@ -32,12 +32,8 @@ module Alchemy
32
32
  @@init
33
33
  end
34
34
 
35
- def custom_config_contents(page = nil)
36
- if page
37
- content_definitions_from_elements(page.element_definitions)
38
- else
39
- content_definitions_from_elements(Element.definitions)
40
- end
35
+ def custom_config_contents(page)
36
+ content_definitions_from_elements(page.descendent_element_definitions)
41
37
  end
42
38
 
43
39
  private
@@ -1,63 +1,12 @@
1
- require 'alchemy/seeder'
1
+ require 'alchemy/shell'
2
2
 
3
3
  module Alchemy
4
- class Upgrader < Alchemy::Seeder
5
- Dir["#{File.dirname(__FILE__)}/upgrader/*.rb"].each { |f| require f }
4
+ class Upgrader
5
+ extend Alchemy::Shell
6
6
 
7
- extend Alchemy::Upgrader::ThreePointFour
8
- extend Alchemy::Upgrader::ThreePointThree
9
- extend Alchemy::Upgrader::ThreePointTwo
10
- extend Alchemy::Upgrader::ThreePointOne
11
- extend Alchemy::Upgrader::ThreePointZero
7
+ Dir["#{File.dirname(__FILE__)}/upgrader/*.rb"].each { |f| require f }
12
8
 
13
9
  class << self
14
- # Runs ugrades
15
- #
16
- def run!
17
- upgrade_tasks.each do |task|
18
- send(task)
19
- end
20
- puts "\n"
21
- log "Upgrade done!"
22
- if todos.any?
23
- display_todos
24
- log "\nThere are some follow ups to do", :message
25
- log '-------------------------------', :message
26
- log "\nPlease follow the TODOs above.", :message
27
- else
28
- log "\nThat's it.", :message
29
- end
30
- end
31
-
32
- # Tasks that should run.
33
- #
34
- # Set UPGRADE env variable to only run a specific task.
35
- #
36
- # Run +rake alchemy:upgrade:list+ for all available tasks
37
- #
38
- def upgrade_tasks
39
- if ENV['UPGRADE'].present?
40
- ENV['UPGRADE'].split(',')
41
- else
42
- all_upgrade_tasks
43
- end
44
- end
45
-
46
- # All available upgrade tasks
47
- #
48
- def all_upgrade_tasks
49
- private_methods - Object.private_methods - superclass.private_methods
50
- end
51
-
52
- private
53
-
54
- # Setup task
55
- def setup
56
- Rake::Task['alchemy:install:migrations'].invoke
57
- Rake::Task['db:migrate'].invoke
58
- Seeder.seed!
59
- end
60
-
61
10
  def copy_new_config_file
62
11
  desc "Copy configuration file."
63
12
  config_file = Rails.root.join('config/alchemy/config.yml')
@@ -0,0 +1,14 @@
1
+ module Alchemy::Upgrader::Tasks
2
+ class InstallDragonflyConfig < Thor
3
+ include Thor::Actions
4
+
5
+ source_root File.expand_path('../../../rails/generators/alchemy/install/templates',
6
+ File.dirname(__FILE__))
7
+
8
+ no_tasks do
9
+ def install
10
+ template "dragonfly.rb.tt", "config/initializers/dragonfly.rb"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'tasks/install_dragonfly_config'
2
+
3
+ module Alchemy
4
+ class Upgrader::ThreePointFive < Upgrader
5
+ class << self
6
+ def install_dragonfly_config
7
+ desc 'Install dragonfly config into `config/initializers`'
8
+ Alchemy::Upgrader::Tasks::InstallDragonflyConfig.new.install
9
+ end
10
+
11
+ def alchemy_3_5_todos
12
+ notice = <<-NOTE
13
+
14
+ Picture rendering switched to Dragonfly middleware
15
+ --------------------------------------------------
16
+
17
+ Alchemy now uses the Dragonfly middleware to render the pictures and
18
+ REMOVED THE LOCAL PICTURE CACHING!
19
+
20
+ This has effect on your production setup and NEEDS FURTHER ACTION in order to
21
+ provide a caching option that works for your setup.
22
+
23
+ Please follow the guidelines about picture caching on the Dragonfly homepage:
24
+
25
+ http://markevans.github.io/dragonfly/cache/
26
+
27
+ NOTE
28
+ todo notice, 'Alchemy v3.5 changes'
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,16 +1,10 @@
1
1
  require_relative 'tasks/install_asset_manifests'
2
2
 
3
3
  module Alchemy
4
- module Upgrader::ThreePointFour
5
- private
6
-
7
- def install_asset_manifests
4
+ class Upgrader::ThreePointFour < Upgrader
5
+ def self.install_asset_manifests
8
6
  desc 'Install asset manifests into `vendor/assets`'
9
7
  Alchemy::Upgrader::Tasks::InstallAssetManifests.new.install
10
8
  end
11
-
12
- def alchemy_3_4_todos
13
- todo "Nothing todo for Alchemy 3.4 |o/", 'Alchemy v3.4 changes'
14
- end
15
9
  end
16
10
  end
@@ -1,54 +1,54 @@
1
1
  module Alchemy
2
- module Upgrader::ThreePointOne
3
- private
2
+ class Upgrader::ThreePointOne < Upgrader
3
+ class << self
4
+ def alchemy_3_1_todos
5
+ notice = <<-NOTE
4
6
 
5
- def alchemy_3_1_todos
6
- notice = <<-NOTE
7
+ JSON API moved into '/api' namespace
8
+ ------------------------------------
7
9
 
8
- JSON API moved into '/api' namespace
9
- ------------------------------------
10
+ The JSON API now lives under /api and not as additional format to default controllers.
11
+ Also the serialization changed into more useful payload.
10
12
 
11
- The JSON API now lives under /api and not as additional format to default controllers.
12
- Also the serialization changed into more useful payload.
13
+ Please upgrade your API calls to use the new /api namespace.
13
14
 
14
- Please upgrade your API calls to use the new /api namespace.
15
15
 
16
+ TinyMCE default paste behavior changed
17
+ --------------------------------------
16
18
 
17
- TinyMCE default paste behavior changed
18
- --------------------------------------
19
+ Text is now always pasted in as plain text. To change this, the user has to
20
+ disable it with the toolbar button, as they had to before to enable it.
19
21
 
20
- Text is now always pasted in as plain text. To change this, the user has to
21
- disable it with the toolbar button, as they had to before to enable it.
22
+ If you have a custom TinyMCE configuration you have to enable this by adding
22
23
 
23
- If you have a custom TinyMCE configuration you have to enable this by adding
24
+ paste_as_text: true
24
25
 
25
- paste_as_text: true
26
+ into you custom TinyMCE configuration.
26
27
 
27
- into you custom TinyMCE configuration.
28
28
 
29
+ TinyMCE toolbar config has changed
30
+ ----------------------------------
29
31
 
30
- TinyMCE toolbar config has changed
31
- ----------------------------------
32
+ The 'toolbar' configuration now takes an array of toolbar rows, instead of
33
+ using 'toolbarN' syntax. Please update your TinyMCE configuration.
32
34
 
33
- The 'toolbar' configuration now takes an array of toolbar rows, instead of
34
- using 'toolbarN' syntax. Please update your TinyMCE configuration.
35
+ Visit http://www.tinymce.com/wiki.php/Configuration:toolbar for more information.
35
36
 
36
- Visit http://www.tinymce.com/wiki.php/Configuration:toolbar for more information.
37
37
 
38
+ ApplicationController patch removed
39
+ -----------------------------------
38
40
 
39
- ApplicationController patch removed
40
- -----------------------------------
41
+ If you have controllers that loads Alchemy content or uses Alchemy helpers in
42
+ the views (i.e. `render_navigation` or `render_elements`) you should
41
43
 
42
- If you have controllers that loads Alchemy content or uses Alchemy helpers in
43
- the views (i.e. `render_navigation` or `render_elements`) you should
44
+ include Alchemy::ControllerActions
44
45
 
45
- include Alchemy::ControllerActions
46
+ in these controllers.
46
47
 
47
- in these controllers.
48
48
 
49
-
50
- NOTE
51
- todo notice, 'Alchemy v3.1 changes'
49
+ NOTE
50
+ todo notice, 'Alchemy v3.1 changes'
51
+ end
52
52
  end
53
53
  end
54
54
  end
@@ -2,49 +2,49 @@ require_relative 'tasks/available_contents_upgrader'
2
2
  require_relative 'tasks/nestable_elements_migration'
3
3
 
4
4
  module Alchemy
5
- module Upgrader::ThreePointThree
6
- private
5
+ class Upgrader::ThreePointThree < Upgrader
6
+ class << self
7
+ def convert_available_contents
8
+ desc 'Convert `available_contents` config to `nestable_elements`.'
9
+ Alchemy::Upgrader::Tasks::AvailableContentsUpgrader.new.convert_available_contents
10
+ end
7
11
 
8
- def convert_available_contents
9
- desc 'Convert `available_contents` config to `nestable_elements`.'
10
- Alchemy::Upgrader::Tasks::AvailableContentsUpgrader.new.convert_available_contents
11
- end
12
-
13
- def migrate_existing_elements
14
- desc 'Migrate existing elements to `nestable_elements`.'
15
- Alchemy::Upgrader::Tasks::NestableElementsMigration.new.migrate_existing_elements
16
- end
12
+ def migrate_existing_elements
13
+ desc 'Migrate existing elements to `nestable_elements`.'
14
+ Alchemy::Upgrader::Tasks::NestableElementsMigration.new.migrate_existing_elements
15
+ end
17
16
 
18
- def alchemy_3_3_todos
19
- notice = <<-NOTE
17
+ def alchemy_3_3_todos
18
+ notice = <<-NOTE
20
19
 
21
- Element's "available_contents" feature removed
22
- ----------------------------------------------
20
+ Element's "available_contents" feature removed
21
+ ----------------------------------------------
23
22
 
24
- The `available_contents` feature of elements was removed and has been replaced by nestable elements.
23
+ The `available_contents` feature of elements was removed and has been replaced by nestable elements.
25
24
 
26
- The automatic updater that just ran updated your `config/alchemy/elements.yml`. A backup was made.
27
- Nevertheless, you should have a look into it and double check the changes.
25
+ The automatic updater that just ran updated your `config/alchemy/elements.yml`. A backup was made.
26
+ Nevertheless, you should have a look into it and double check the changes.
28
27
 
29
- We defined elements for each content type former defined in `available_contents` and put its name
30
- into a new `nestable_elements` collection in the elements definition.
28
+ We defined elements for each content type former defined in `available_contents` and put its name
29
+ into a new `nestable_elements` collection in the elements definition.
31
30
 
32
- We also updated your element view partials so they render the child elements.
33
- Please review and fix markup, if necessary.
31
+ We also updated your element view partials so they render the child elements.
32
+ Please review and fix markup, if necessary.
34
33
 
35
- The code for the available contents buttons and links in the element editor partials were removed
36
- without replacement, because the nested elements editor partials render automatically.
34
+ The code for the available contents buttons and links in the element editor partials were removed
35
+ without replacement, because the nested elements editor partials render automatically.
37
36
 
38
- PLEASE DOUBLE CHECK YOUR ELEMENT PARTIALS AND ADJUST ACCORDINGLY!
37
+ PLEASE DOUBLE CHECK YOUR ELEMENT PARTIALS AND ADJUST ACCORDINGLY!
39
38
 
40
- Uploader `allowed_filetypes` setting changed
41
- --------------------------------------------
39
+ Uploader `allowed_filetypes` setting changed
40
+ --------------------------------------------
42
41
 
43
- The name of the model is now namespaced. `alchemy/pictures` instead of just `pictures`.
44
- Please ensure, to copy the new setting from the `config.yml.defaults` file.
42
+ The name of the model is now namespaced. `alchemy/pictures` instead of just `pictures`.
43
+ Please ensure, to copy the new setting from the `config.yml.defaults` file.
45
44
 
46
- NOTE
47
- todo notice, 'Alchemy v3.3 changes'
45
+ NOTE
46
+ todo notice, 'Alchemy v3.3 changes'
47
+ end
48
48
  end
49
49
  end
50
50
  end
@@ -1,40 +1,40 @@
1
1
  require_relative 'tasks/three_point_two_task'
2
2
 
3
3
  module Alchemy
4
- module Upgrader::ThreePointTwo
5
- private
6
-
7
- def upgrade_acts_as_taggable_on_migrations
8
- desc 'Installs acts_as_taggable_on migrations.'
9
- if !`bundle exec rake railties:install:migrations FROM=acts_as_taggable_on_engine`.empty?
10
- Alchemy::Upgrader::Tasks::ThreePointTwoTask.new.patch_acts_as_taggable_on_migrations
4
+ class Upgrader::ThreePointTwo < Upgrader
5
+ class << self
6
+ def upgrade_acts_as_taggable_on_migrations
7
+ desc 'Install and patch acts_as_taggable_on migrations.'
8
+ if !`bundle exec rake railties:install:migrations FROM=acts_as_taggable_on_engine`.empty?
9
+ Alchemy::Upgrader::Tasks::ThreePointTwoTask.new.patch_acts_as_taggable_on_migrations
10
+ end
11
+ `bundle exec rake db:migrate`
11
12
  end
12
- `bundle exec rake db:migrate`
13
- end
14
13
 
15
- def inject_seeder
16
- desc 'Add Alchemy seeder to `db/seeds.rb` file.'
17
- Alchemy::Upgrader::Tasks::ThreePointTwoTask.new.inject_seeder
18
- end
14
+ def inject_seeder
15
+ desc 'Add Alchemy seeder to `db/seeds.rb` file.'
16
+ Alchemy::Upgrader::Tasks::ThreePointTwoTask.new.inject_seeder
17
+ end
19
18
 
20
- def alchemy_3_2_todos
21
- notice = <<-NOTE
19
+ def alchemy_3_2_todos
20
+ notice = <<-NOTE
22
21
 
23
- Capistrano 2 deploy script removed
24
- ----------------------------------
22
+ Capistrano 2 deploy script removed
23
+ ----------------------------------
25
24
 
26
- The Capistrano 2 based deploy script has been removed and replaced by an Capistrano 3 extension.
25
+ The Capistrano 2 based deploy script has been removed and replaced by an Capistrano 3 extension.
27
26
 
28
- Please update your Gemfile:
27
+ Please update your Gemfile:
29
28
 
30
- group :development do
31
- gem 'capistrano-alchemy', github: 'AlchemyCMS/capistrano-alchemy', branch: 'master', require: false
32
- end
29
+ group :development do
30
+ gem 'capistrano-alchemy', github: 'AlchemyCMS/capistrano-alchemy', branch: 'master', require: false
31
+ end
33
32
 
34
- For more information please visit https://github.com/AlchemyCMS/capistrano-alchemy.
33
+ For more information please visit https://github.com/AlchemyCMS/capistrano-alchemy.
35
34
 
36
- NOTE
37
- todo notice, 'Alchemy v3.2 changes'
35
+ NOTE
36
+ todo notice, 'Alchemy v3.2 changes'
37
+ end
38
38
  end
39
39
  end
40
40
  end
@@ -1,92 +1,92 @@
1
1
  module Alchemy
2
- module Upgrader::ThreePointZero
3
- private
4
-
5
- def rename_registered_role_ro_member
6
- if Alchemy.user_class.column_names.include?('alchemy_roles')
7
- desc 'Rename the `registered` user role to `member`'
8
- registered_users = Alchemy.user_class.where("alchemy_roles LIKE '%registered%'")
9
- if registered_users.any?
10
- registered_users.each do |user|
11
- roles = user.read_attribute(:alchemy_roles).sub(/registered/, 'member')
12
- user.update_column(:alchemy_roles, roles)
13
- log "Renamed #{user.inspect} role to `member`"
2
+ class Upgrader::ThreePointZero < Upgrader
3
+ class << self
4
+ def rename_registered_role_ro_member
5
+ if Alchemy.user_class.column_names.include?('alchemy_roles')
6
+ desc 'Rename the `registered` user role to `member`'
7
+ registered_users = Alchemy.user_class.where("alchemy_roles LIKE '%registered%'")
8
+ if registered_users.any?
9
+ registered_users.each do |user|
10
+ roles = user.read_attribute(:alchemy_roles).sub(/registered/, 'member')
11
+ user.update_column(:alchemy_roles, roles)
12
+ log "Renamed #{user.inspect} role to `member`"
13
+ end
14
+ else
15
+ log 'No users with `registered` role found.', :skip
14
16
  end
15
17
  else
16
- log 'No users with `registered` role found.', :skip
18
+ log 'No users with `alchemy_roles` database column found.', :skip
17
19
  end
18
- else
19
- log 'No users with `alchemy_roles` database column found.', :skip
20
20
  end
21
- end
22
21
 
23
- def publish_unpublished_public_pages
24
- desc 'Sets `published_at` of public pages without a `published_at` date set to their `updated_at` value'
25
- public_pages = Alchemy::Page.published.where('published_at IS NULL')
26
- if public_pages.any?
27
- public_pages.each do |page|
28
- page.update_column(:published_at, page.updated_at)
29
- log "Sets `published_at` of #{page.name} to #{page.updated_at}"
22
+ def publish_unpublished_public_pages
23
+ desc 'Sets `published_at` of public pages without a `published_at` date set to their `updated_at` value'
24
+ public_pages = Alchemy::Page.published.where('published_at IS NULL')
25
+ if public_pages.any?
26
+ public_pages.each do |page|
27
+ page.update_column(:published_at, page.updated_at)
28
+ log "Sets `published_at` of #{page.name} to #{page.updated_at}"
29
+ end
30
+ else
31
+ log 'No unpublished public pages found.', :skip
30
32
  end
31
- else
32
- log 'No unpublished public pages found.', :skip
33
33
  end
34
- end
35
34
 
36
- def alchemy_3_0_todos
37
- notice = <<-NOTE
35
+ def alchemy_3_0_todos
36
+ notice = <<-NOTE
38
37
 
39
- Alchemy User Class Removed
40
- --------------------------
38
+ Alchemy User Class Removed
39
+ --------------------------
41
40
 
42
- We removed the users model from Alchemy core!
41
+ We removed the users model from Alchemy core!
43
42
 
44
- You have to provide your own user model or
45
- add the `alchemy-devise` gem to your Gemfile.
43
+ You have to provide your own user model or
44
+ add the `alchemy-devise` gem to your Gemfile.
46
45
 
47
- If you want to use the default user class from Alchemy:
46
+ If you want to use the default user class from Alchemy:
48
47
 
49
- # Gemfile
50
- gem 'alchemy-devise'
48
+ # Gemfile
49
+ gem 'alchemy-devise'
51
50
 
52
- $ bin/rake alchemy_devise:install:migrations db:migrate
51
+ $ bin/rake alchemy_devise:install:migrations db:migrate
53
52
 
54
- In order to add your own user class to Alchemy, please
55
- make shure it meets the API:
53
+ In order to add your own user class to Alchemy, please
54
+ make shure it meets the API:
56
55
 
57
- https://github.com/magiclabs/alchemy_cms/blob/master/lib/alchemy/auth_accessors.rb
56
+ https://github.com/magiclabs/alchemy_cms/blob/master/lib/alchemy/auth_accessors.rb
58
57
 
59
58
 
60
- TinyMCE 4 Upgrade
61
- -----------------
59
+ TinyMCE 4 Upgrade
60
+ -----------------
62
61
 
63
- The TinyMCE configuration syntax has changed!
62
+ The TinyMCE configuration syntax has changed!
64
63
 
65
- If you have custom TinyMCE confugurations, like a customized toolbar
66
- then you have to upgrade the syntax to a TinyMCE 4 compatible one.
64
+ If you have custom TinyMCE confugurations, like a customized toolbar
65
+ then you have to upgrade the syntax to a TinyMCE 4 compatible one.
67
66
 
68
- Please have a look in the default TinyMCE configuration from Alchemy and
69
- also read the official TinyMCE documentation in how to upgrade.
67
+ Please have a look in the default TinyMCE configuration from Alchemy and
68
+ also read the official TinyMCE documentation in how to upgrade.
70
69
 
71
- Alchemy default TinyMCE config: https://github.com/magiclabs/alchemy_cms/blob/master/lib/alchemy/tinymce.rb#L5-L19
72
- Offical TinyMCE documentation: http://www.tinymce.com/wiki.php/Configuration
70
+ Alchemy default TinyMCE config: https://github.com/magiclabs/alchemy_cms/blob/master/lib/alchemy/tinymce.rb#L5-L19
71
+ Offical TinyMCE documentation: http://www.tinymce.com/wiki.php/Configuration
73
72
 
74
73
 
75
- Essence Validation Syntax changed
76
- ---------------------------------
74
+ Essence Validation Syntax changed
75
+ ---------------------------------
77
76
 
78
- The API of the format validations for essences has changed.
79
- You can now define individual format matchers in the config.yml.
77
+ The API of the format validations for essences has changed.
78
+ You can now define individual format matchers in the config.yml.
80
79
 
81
- * `format_as` and `format_with` options has been removed and renamed to simply `format`
80
+ * `format_as` and `format_with` options has been removed and renamed to simply `format`
82
81
 
83
- Pleae have a look at this commit:
84
- https://github.com/AlchemyCMS/alchemy_cms/commit/44866dbebaed00ffa3b77201f93a04616001b955
82
+ Pleae have a look at this commit:
83
+ https://github.com/AlchemyCMS/alchemy_cms/commit/44866dbebaed00ffa3b77201f93a04616001b955
85
84
 
86
- for a detailed explanation.
85
+ for a detailed explanation.
87
86
 
88
- NOTE
89
- todo notice, 'Alchemy v3.0 changes'
87
+ NOTE
88
+ todo notice, 'Alchemy v3.0 changes'
89
+ end
90
90
  end
91
91
  end
92
92
  end