alchemy_cms 3.4.2 → 3.5.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a482527053faccf5a3d21008ed94817829efa6f
4
- data.tar.gz: 69120e0dfd8aafa399b87bba05d3735b306ee853
3
+ metadata.gz: 4fe515cb79092ae441a7980d07d5da38e3023221
4
+ data.tar.gz: e5d16e9d4d83c30b7025cd69b14a9288e5c8ac23
5
5
  SHA512:
6
- metadata.gz: cf528b58dda0d36a2d8d3a8cf32e91147ba657d2680ee180a6d3c887fa175d70098e0828b5c1a94b49fbdce76179bdd1d9589b2e6bd49d417cec0e26728d6dc2
7
- data.tar.gz: 31a828f7c4f707a3ba7054ce8c58d4e6cb181c7e4c1dc98f31deccca416996da85492cb9d8db8b32dd5d5a755f15cbd45d3864539f37e64b87a5e51ef6d67885
6
+ metadata.gz: 079aab266840a0ae38173832d45bcceb9eb17a6294e53284cad2182933603b3839ab239bfb7ad601640590db4c4bfca87841f89b232b933e20f7a5a08d471c92
7
+ data.tar.gz: 48957ac1b40ed2f58e312e5924f427955605213a2760dfa9eda8f1d704e4ae8706ff750355999ff419aeddf4ea07ef7b32399e786ef34dd26acca557a0cd53df
@@ -8,6 +8,10 @@ engines:
8
8
  enabled: false
9
9
  duplication:
10
10
  enabled: true
11
+ exclude_paths:
12
+ - "lib/alchemy/permissions.rb"
13
+ - "lib/tasks/alchemy/tidy.rake"
14
+ - "lib/tasks/alchemy/upgrade.rake"
11
15
  config:
12
16
  languages:
13
17
  - ruby
@@ -23,6 +27,8 @@ ratings:
23
27
  - "**.erb"
24
28
  - "**.rb"
25
29
  exclude_paths:
26
- - config/
27
- - db/
28
- - spec/
30
+ - "config/"
31
+ - "db/"
32
+ - "spec/"
33
+ - "lib/alchemy/upgrader/"
34
+ - "lib/rails/"
@@ -4,4 +4,5 @@ project:
4
4
  stage:
5
5
  before: cd spec/dummy
6
6
  database: bin/rake db:setup RAILS_ENV=production
7
+ assets: bin/rake assets:precompile RAILS_ENV=production
7
8
  run: bin/rails server -e production
@@ -1,35 +1,32 @@
1
1
  language: ruby
2
2
  sudo: false
3
- cache: bundler
3
+ cache:
4
+ bundler: true
5
+ directories:
6
+ - "travis_phantomjs"
4
7
  rvm:
5
8
  - 2.1
6
9
  - 2.2
7
10
  - 2.3.0
8
11
  branches:
9
12
  only:
10
- - 3.4-stable
13
+ - 3.5-stable
14
+
11
15
  before_install:
16
+ - "phantomjs --version"
17
+ - "export PATH=$PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH"
18
+ - "phantomjs --version"
19
+ - "if [ $(phantomjs --version) != '2.1.1' ]; then rm -rf $PWD/travis_phantomjs; mkdir -p $PWD/travis_phantomjs; fi"
20
+ - "if [ $(phantomjs --version) != '2.1.1' ]; then wget https://assets.membergetmember.co/software/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2; fi"
21
+ - "if [ $(phantomjs --version) != '2.1.1' ]; then tar -xvf $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; fi"
22
+ - "phantomjs --version"
12
23
  - gem install bundler
13
24
  before_script: bundle exec rake alchemy:spec:prepare
14
25
  script: bundle exec rspec
26
+ after_success: bundle exec codeclimate-test-reporter
15
27
  env:
16
28
  - DB=mysql
17
29
  - DB=postgresql
18
30
  notifications:
19
- irc:
20
- on_success: change
21
- on_failure: always
22
- use_notice: true
23
- channels:
24
- - irc.freenode.org#alchemy_cms
25
31
  slack:
26
32
  secure: QzOFw1Ph69pzwWBFgtIVkOnjbcRxB9HPRQ+RYjK+2tg+fsbiTJ+wYgHcZL49tPYcLAls4kymkFWzWBF3PCAXJMfKgUCqXzdQ2FuJC/JoVRTLll4wDnZFPG33jsm5tVznmycZ3ma4+ZWfJQ+C+elEBOba6v1kG9eGIy6sH2cvXfE=
27
- webhooks:
28
- urls:
29
- - https://webhooks.gitter.im/e/4dc02992aca8b4fd883b
30
- on_success: always
31
- on_failure: always
32
- on_start: never
33
- addons:
34
- code_climate:
35
- secure: qmOMqc4FUBRP25XqaYIKuxZQ/GrGLKjIc3vUqZa+XfkQKh6xLXvOF7YUM/XJZ5u6D6hk0Ly8UxjctvDY+tQxEAK49lFwK51i7bODfkQjfVBrFzfht7QhxY5HJKx7F0HHmpyNJet4n8mR0gGlhwVyXv+Tz7Rm6O3Hq3+TEbY9+pk=
@@ -1,14 +1,49 @@
1
1
  # Change Log
2
2
 
3
- ## 3.4.2 (2016-12-22)
3
+ ## 3.5.0 (unreleased)
4
+
5
+ __New Features__
6
+
7
+ * New API endpoint for retrieving a nested page tree (#1155)
8
+ `api/pages/nested` returns a nested JSON tree of all pages.
9
+ * Add page and user seeding support (#1160)
10
+ * Files of attachments are replaceable now (#1167)
11
+ * Add fixed page attributes (#1168)
12
+ Page attributes can be defined as fixed_attributes to prevent changes by the user.
13
+ * Allow to declare which user role can edit page content on the page layout level.
4
14
 
5
15
  __Notable Changes__
6
16
 
7
- * Allow users to manually publish changes on global pages
17
+ * The essence view partials don't get cached anymore (#1099)
18
+ * The essence editor partials don't get cached anymore (#1171)
19
+ * Removes update_essence_select_elements (#1103)
20
+ * The admin resource form now uses the datetime-picker instead of the date-picker for datetime fields.
21
+ * The `preview_mode_code` helper is moved to a partial in `alchemy/preview_mode_code`. (#1110)
22
+ * The `render_meta_data` helper is moved to a partial in `alchemy/pages/meta_data` and can be rendered with the same options as before but now passed in as locals. (#1110)
23
+ * The view helpers `preview_mode_code`, `render_meta_data`, `render_meta_tag`, `render_page_title`, `render_title_tag` are now deprecated. (#1110)
24
+ * An easy way to include several edit mode related partials is now available (#1120):
25
+ `render 'alchemy/edit_mode'` loads `menubar` and `preview_mode_code` at once
26
+ * Add support for Turbolinks 5.0 (#1095)
27
+ * Use Dragonfly middleware to render pictures and remove our custom solution (#1084)
28
+ * `image_size` option is now deprecated. Please use just `size` (#1084)
29
+ * `show_alchemy_picture_path` helper is now deprecated. Please use `picture.url` instead (#1084)
30
+ * Display download information on the Attachment Modal Dialog (#1137)
31
+ * Added foreign keys to important associations (#1149)
32
+ * Also destroy trashed elements when page gets destroyed (#1149)
33
+ * Upgrade tasks can now be run separately (#1152)
34
+ * Update to Tinymce 4.4.3
35
+ * New sitemap UI (#1172)
8
36
 
9
37
  __Fixed Bugs__
10
38
 
11
- * Fixes alchemy module generator (#1159)
39
+ * Fix setting of locale when `current_alchemy_user.language` doesn't return a Symbol (#1097)
40
+ * Presence validation of EssenceFile is not working (#1096)
41
+
42
+ ## 3.4.2 (unreleased)
43
+
44
+ __Notable Changes__
45
+
46
+ * Allow users to manually publish changes on global pages
12
47
 
13
48
  ## 3.4.1 (2016-08-31)
14
49
 
@@ -57,16 +92,19 @@ __Notable Changes__
57
92
  * List pages from all sites in currently locked pages tabs and Dashboard widget (#1067)
58
93
  * The locked value on page is now a timestamp (`locked_at`), so we can order locked pages by (#1070)
59
94
  * Persist user in dummy app
95
+ * When publishing a page with the publish button, `Page#public_on` does not get
96
+ reset to the current time when it is already set and in the past, and
97
+ `Page#public_until` does not get nilled when it is in the future.
60
98
 
61
99
  __Fixed Bugs__
62
100
 
101
+ * Fix table width for attachments and resources on small window sizes.
63
102
  * Generators don't delete directories any more (#850)
64
103
  * Some elements crashed the backend's JS when being saved (#1091)
65
104
 
66
- ## 3.3.3 (2016-08-31)
105
+ ## 3.3.3 (2016-09-11)
67
106
 
68
- * Fix bug that rendered duplicate nested elements within a cell (#1100)
69
- * Merge `html_options` in EssenceFile view (#1115)
107
+ * Fix bug that rendered duplicate nested elements within a cell after copying a parent element.
70
108
 
71
109
  ## 3.3.2 (2016-08-02)
72
110
 
data/Gemfile CHANGED
@@ -2,17 +2,20 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ # Profiling
6
+ gem 'rack-mini-profiler', group: :development, require: false
7
+
5
8
  gem 'sqlite3' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
6
9
  gem 'mysql2', '~> 0.3.18' if ENV['DB'] == 'mysql'
7
10
  gem 'pg' if ENV['DB'] == 'postgresql'
11
+ gem 'sassc-rails'
8
12
 
9
13
  group :development, :test do
10
14
  gem 'jasmine-rails', github: 'searls/jasmine-rails'
11
15
  gem 'jasmine-jquery-rails', github: 'travisjeffery/jasmine-jquery-rails'
16
+ gem 'simplecov', require: false
12
17
  if ENV['TRAVIS']
13
- gem "codeclimate-test-reporter", require: false
14
- else
15
- gem 'simplecov', require: false
18
+ gem 'codeclimate-test-reporter', '~> 1.0', require: false
16
19
  end
17
20
  unless ENV['CI']
18
21
  gem 'launchy'
@@ -28,7 +31,7 @@ group :development, :test do
28
31
  gem 'capybara', '~> 2.4'
29
32
  gem 'database_cleaner', '~> 1.3'
30
33
  gem 'factory_girl_rails', '~> 4.5'
31
- gem 'poltergeist', '~> 1.5'
34
+ gem 'poltergeist', '~> 1.10'
32
35
  gem 'rspec-activemodel-mocks', '~> 1.0'
33
36
  gem 'rspec-rails', '~> 3.0'
34
37
  gem 'shoulda-matchers', '~> 3.1'
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](http://badge.fury.io/rb/alchemy_cms)
2
- [![Build Status](https://travis-ci.org/AlchemyCMS/alchemy_cms.svg?branch=3.4-stable)](https://travis-ci.org/AlchemyCMS/alchemy_cms)
2
+ [![Build Status](https://travis-ci.org/AlchemyCMS/alchemy_cms.svg?branch=3.5-stable)](https://travis-ci.org/AlchemyCMS/alchemy_cms)
3
3
  [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy_cms.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms)
4
4
  [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms)
5
5
  [![Slack Status](http://slack.alchemy-cms.com/badge.svg)](http://slack.alchemy-cms.com)
@@ -22,7 +22,7 @@ Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [gu
22
22
  - User Access Control
23
23
  - Build in contact form mailer
24
24
  - Attachments and downloads
25
- - Powerful image rendering
25
+ - On-the-fly image rendering
26
26
  - Extendable via Rails engines
27
27
  - Integrates into existing Rails Apps
28
28
  - Flexible caching
@@ -56,7 +56,7 @@ For a Ruby 1.8.7 compatible version use the [`2.3-stable` branch](https://github
56
56
  Use the installer:
57
57
 
58
58
  ```shell
59
- $ gem install alchemy_cms
59
+ $ gem install alchemy_cms --pre
60
60
  $ alchemy new my_magicpage
61
61
  ```
62
62
 
@@ -75,7 +75,7 @@ $ alchemy --help
75
75
  Put this into your `Gemfile`:
76
76
 
77
77
  ```ruby
78
- gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: '3.4-stable'
78
+ gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: '3.5-stable'
79
79
  ```
80
80
 
81
81
  If you want to use Russian translation and have better i18n support, you should put:
@@ -102,11 +102,9 @@ the Devise based user model that Alchemy provides and was extracted [into its ow
102
102
  If you don't have your own user class, you can use the Alchemy user model. Just add the following gem into your `Gemfile`:
103
103
 
104
104
  ```ruby
105
- gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: '3.4-stable'
105
+ gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: '3.5-stable'
106
106
  ```
107
107
 
108
- **NOTE:** You normally want to use a stable branch, like `3.3-stable`.
109
-
110
108
  Then run:
111
109
 
112
110
  ```shell
@@ -185,9 +183,25 @@ Alchemy.admin_constraints = {subdomain: 'hidden'}
185
183
 
186
184
  will move the dashboard to <http://hidden.example.com/backend>.
187
185
 
186
+ ### Picture caching
187
+
188
+ Alchemy uses the Dragonfly gem to render pictures on-the-fly.
189
+
190
+ To make this as performant as possible the rendered picture gets stored into `public/pictures`
191
+ so the web server can pick up the file and serve it without hitting the Rails process at all.
192
+
193
+ This may or may not what you want. Especially for multi server setups you eventually want to use
194
+ something like S3.
195
+
196
+ Please follow the guidelines about picture caching on the Dragonfly homepage for further instructions:
197
+
198
+ http://markevans.github.io/dragonfly/cache/
199
+
200
+
188
201
  ## Upgrading
189
202
 
190
- The Alchemy team takes upgrades very seriously and tries to make them as smooth as we can. Therefore we have build in upgrade tasks, that try to automate as much as possible.
203
+ The Alchemy team takes upgrades very seriously and tries to make them as smooth as we can.
204
+ Therefore we have build in upgrade tasks, that try to automate as much as possible.
191
205
 
192
206
  That's why after updating the Alchemy gem you should **always run the upgrader**:
193
207
 
@@ -196,12 +210,48 @@ $ bundle update alchemy_cms
196
210
  $ bin/rake alchemy:upgrade
197
211
  ```
198
212
 
199
- Alchemy will print out useful information after running the automated tasks that help a smooth upgrade path. So please **take your time and read them**.
213
+ Alchemy will print out useful information after running the automated tasks that help a smooth upgrade path.
214
+ So please **take your time and read them**.
200
215
 
201
216
  Always be sure to keep an eye on the `config/alchemy/config.yml.defaults` file and update your `config/alchemy/config.yml` accordingly.
202
217
 
203
- Also, `git diff` is your friend. You are using git to track changes of your projects, right?
218
+ Also, `git diff` is your friend.
219
+
220
+ ### Customize the upgrade preparation
221
+
222
+ The Alchemy upgrader comes prepared with with several rake tasks in a specific order.
223
+ This is sometimes not what you want or could even break upgrades.
224
+ In order to customize the upgrade preparation process you can instead run each of the tasks on their own.
225
+
226
+ ```shell
227
+ $ bin/rake alchemy:install:migrations
228
+ $ bin/rake db:migrate
229
+ $ bin/rake alchemy:db:seed
230
+ $ bin/rake alchemy:upgrade:config
231
+ $ bin/rake alchemy:upgrade:run
232
+ ```
233
+
234
+ **WARNING:** This is only recommended, if you have problems with the default `rake alchemy:upgrade` task and need to
235
+ repair your data in between. The upgrader depends on these upgrade tasks running in this specific order, otherwise
236
+ we can't ensure smooth upgrades for you.
237
+
238
+ ### Run an individual upgrade
239
+
240
+ You can also run an individual upgrade on its own:
241
+
242
+ ```shell
243
+ $ bin/rake -T alchemy:upgrade
244
+ ```
245
+
246
+ provides you with a list of each upgrade you can run individually.
247
+
248
+ #### Example
249
+
250
+ ```shell
251
+ $ bin/rake alchemy:upgrade:3.2
252
+ ```
204
253
 
254
+ runs only the Alchemy 3.2 upgrade
205
255
 
206
256
  ## Deployment
207
257
 
data/Rakefile CHANGED
@@ -40,7 +40,7 @@ namespace :alchemy do
40
40
  namespace :spec do
41
41
  desc "Prepares database for testing Alchemy"
42
42
  task :prepare do
43
- system 'cd spec/dummy && RAILS_ENV=test bundle exec rake db:setup && cd -'
43
+ system 'cd spec/dummy && RAILS_ENV=test bundle exec rake db:drop db:create db:migrate:reset && cd -'
44
44
  end
45
45
  end
46
46
  end
@@ -19,30 +19,27 @@ Gem::Specification.new do |gem|
19
19
  gem.executables = 'alchemy'
20
20
  gem.require_paths = ['lib']
21
21
 
22
- gem.add_runtime_dependency 'actionpack-page_caching', ['~> 1.0.0']
23
22
  gem.add_runtime_dependency 'active_model_serializers', ['~> 0.9.0']
24
23
  gem.add_runtime_dependency 'acts_as_list', ['~> 0.3']
25
- gem.add_runtime_dependency 'acts-as-taggable-on', ['~> 3.1']
26
- gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.0.0']
24
+ gem.add_runtime_dependency 'acts-as-taggable-on', ['~> 4.0']
25
+ gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
26
+ gem.add_runtime_dependency 'bourbon', ['~> 4.2']
27
27
  gem.add_runtime_dependency 'cancancan', ['~> 1.9']
28
28
  gem.add_runtime_dependency 'coffee-rails', ['~> 4.0']
29
- gem.add_runtime_dependency 'compass-rails', ['>= 2.0.4', '< 4.0']
30
29
  gem.add_runtime_dependency 'dragonfly', ['~> 1.0.1']
31
30
  gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
32
31
  gem.add_runtime_dependency 'jquery-rails', ['~> 4.0']
33
32
  gem.add_runtime_dependency 'jquery-ui-rails', ['~> 5.0.0']
34
33
  gem.add_runtime_dependency 'kaminari', ['~> 0.15']
35
- gem.add_runtime_dependency 'magiclabs-userstamp', ['~> 2.1.0']
34
+ gem.add_runtime_dependency 'magiclabs-userstamp', ['~> 3.0']
36
35
  gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
37
36
  gem.add_runtime_dependency 'rails', ['>= 4.2.0', '< 5.0']
38
37
  gem.add_runtime_dependency 'ransack', ['~> 1.4']
39
38
  gem.add_runtime_dependency 'request_store', ['~> 1.2']
40
39
  gem.add_runtime_dependency 'responders', ['~> 2.0']
41
- gem.add_runtime_dependency 'sass-rails', ['~> 5.0']
42
- gem.add_runtime_dependency 'sassy-buttons', ['~> 0.2.6']
43
40
  gem.add_runtime_dependency 'select2-rails', ['>= 3.5.9.1', '< 4.0']
44
41
  gem.add_runtime_dependency 'simple_form', ['~> 3.0']
45
- gem.add_runtime_dependency 'turbolinks', ['~> 2.5']
42
+ gem.add_runtime_dependency 'turbolinks', ['>= 2.5']
46
43
 
47
44
  gem.post_install_message = <<-MSG
48
45
  -------------------------------------------------------------
@@ -10,6 +10,7 @@
10
10
  //= require jquery-ui/tabs
11
11
  //= require tinymce/tinymce.min
12
12
  //= require_tree ../../../../vendor/assets/javascripts/jquery_plugins/
13
+ //= require clipboard.min
13
14
  //= require spin.min
14
15
  //= require keymaster
15
16
  //= require requestAnimationFrame
@@ -49,5 +50,6 @@
49
50
  //= require alchemy/alchemy.sitemap
50
51
  //= require alchemy/alchemy.spinner
51
52
  //= require alchemy/alchemy.tinymce
53
+ //= require alchemy/alchemy.tooltips
52
54
  //= require alchemy/alchemy.translations
53
55
  //= require alchemy/alchemy.trash_window
@@ -47,6 +47,7 @@ class window.Alchemy.Dialog
47
47
 
48
48
  # Closes the Dialog and removes it from the DOM
49
49
  close: ->
50
+ @dialog.trigger 'DialogClose.Alchemy'
50
51
  @$document.off 'keydown'
51
52
  @dialog_container.removeClass('open')
52
53
  @overlay.removeClass('open') if @overlay?
@@ -7,6 +7,7 @@ Alchemy.GUI =
7
7
  init: (scope) ->
8
8
  Alchemy.SelectBox(scope)
9
9
  Alchemy.Datepicker(scope)
10
+ Alchemy.Tooltips(scope)
10
11
  Alchemy.Buttons.observe(scope)
11
12
  Alchemy.watchForDialogs(scope)
12
13
  Alchemy.Hotkeys(scope)
@@ -13,7 +13,7 @@ Alchemy.Hotkeys = (scope) ->
13
13
  key.unbind(hotkey)
14
14
 
15
15
  # Binds keyboard shortcuts to search fields.
16
- $search_fields = $('#search_field, #search_input_field', scope)
16
+ $search_fields = $('.search_input_field', scope)
17
17
  $search_fields_clear = $('.search_field_clear, .js_filter_field_clear', scope)
18
18
 
19
19
  key 'alt+f', ->
@@ -15,8 +15,8 @@ Alchemy.Initializer = ->
15
15
  Alchemy.Growler.fade()
16
16
 
17
17
  # Add observer for please wait overlay.
18
- $('a.please_wait, #main_navi a.main_navi_entry, div.button_with_label form :submit, #sub_navigation .subnavi_tab a, .pagination a')
19
- .not('*[data-alchemy-confirm], #locked_pages .subnavi_tab button')
18
+ $('.please_wait, #main_navi a, .button_with_label form :submit, .locked_page a, .pagination a')
19
+ .not('*[data-alchemy-confirm], .locked_page button')
20
20
  .click ->
21
21
  unless Alchemy.isPageDirty()
22
22
  Alchemy.pleaseWaitOverlay()
@@ -55,16 +55,18 @@ Alchemy.Initializer = ->
55
55
  scrollingTop: 122,
56
56
  zIndex: 1
57
57
 
58
- # Enabling the Turbolinks Progress Bar
59
- Turbolinks.enableProgressBar()
58
+ # Enabling the Turbolinks Progress Bar for v2.5
59
+ Turbolinks.enableProgressBar() if Turbolinks.enableProgressBar
60
60
 
61
- # Turbolinks DOM Ready
62
- $(document).on 'page:change', ->
61
+ # Turbolinks DOM Ready.
62
+ # Handle both v2.5(page:change), and v.5.0 (turbolinks:load)
63
+ $(document).on 'page:change turbolinks:load', ->
63
64
  Alchemy.Initializer()
64
65
  return
65
66
 
66
67
  # Turbolinks before parsing a new page
67
- $(document).on 'page:receive', ->
68
+ # Handle both v2.5(page:receive), and v.5.0 (turbolinks:request-end)
69
+ $(document).on 'page:receive turbolinks:request-end', ->
68
70
  # Ensure that all tinymce editors get removed before parsing a new page
69
71
  Alchemy.Tinymce.removeFrom $('.has_tinymce')
70
72
  return