alchemy_cms 4.1.2 → 4.2.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -5
  3. data/.rubocop.yml +4 -1
  4. data/.travis.yml +3 -3
  5. data/CHANGELOG.md +29 -10
  6. data/Gemfile +5 -7
  7. data/README.md +114 -62
  8. data/Rakefile +2 -2
  9. data/alchemy_cms.gemspec +5 -5
  10. data/app/assets/images/alchemy/icon.svg +1 -1
  11. data/app/assets/javascripts/alchemy/admin.js +2 -0
  12. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -24
  13. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +11 -9
  14. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +7 -24
  15. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +9 -8
  16. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +38 -0
  17. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -4
  18. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +1 -1
  19. data/app/assets/stylesheets/alchemy/_mixins.scss +2 -1
  20. data/app/assets/stylesheets/alchemy/_variables.scss +7 -2
  21. data/app/assets/stylesheets/alchemy/admin.scss +2 -1
  22. data/app/assets/stylesheets/alchemy/archive.scss +18 -4
  23. data/app/assets/stylesheets/alchemy/buttons.scss +1 -1
  24. data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
  25. data/app/assets/stylesheets/alchemy/elements.scss +154 -90
  26. data/app/assets/stylesheets/alchemy/filter_field.scss +30 -0
  27. data/app/assets/stylesheets/alchemy/flatpickr.scss +839 -0
  28. data/app/assets/stylesheets/alchemy/forms.scss +5 -1
  29. data/app/assets/stylesheets/alchemy/frame.scss +6 -14
  30. data/app/assets/stylesheets/alchemy/navigation.scss +109 -98
  31. data/app/assets/stylesheets/alchemy/search.scss +11 -29
  32. data/app/assets/stylesheets/alchemy/tables.scss +0 -23
  33. data/app/assets/stylesheets/alchemy/tags.scss +4 -27
  34. data/app/assets/stylesheets/alchemy/toolbar.scss +12 -2
  35. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +4 -33
  36. data/app/controllers/alchemy/admin/attachments_controller.rb +1 -12
  37. data/app/controllers/alchemy/admin/contents_controller.rb +2 -24
  38. data/app/controllers/alchemy/admin/elements_controller.rb +11 -49
  39. data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
  40. data/app/controllers/alchemy/admin/pictures_controller.rb +1 -14
  41. data/app/controllers/alchemy/api/contents_controller.rb +1 -1
  42. data/app/controllers/alchemy/api/elements_controller.rb +1 -1
  43. data/app/controllers/alchemy/api/pages_controller.rb +1 -1
  44. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +20 -0
  45. data/app/helpers/alchemy/admin/base_helper.rb +8 -18
  46. data/app/helpers/alchemy/admin/elements_helper.rb +55 -85
  47. data/app/helpers/alchemy/admin/pictures_helper.rb +0 -23
  48. data/app/helpers/alchemy/elements_helper.rb +80 -120
  49. data/app/helpers/alchemy/pages_helper.rb +5 -24
  50. data/app/models/alchemy/content.rb +0 -1
  51. data/app/models/alchemy/content/factory.rb +33 -57
  52. data/app/models/alchemy/element.rb +46 -66
  53. data/app/models/alchemy/element/element_contents.rb +2 -2
  54. data/app/models/alchemy/page.rb +34 -4
  55. data/app/models/alchemy/page/page_elements.rb +30 -122
  56. data/app/serializers/alchemy/attachment_serializer.rb +0 -2
  57. data/app/serializers/alchemy/content_serializer.rb +0 -2
  58. data/app/serializers/alchemy/element_serializer.rb +0 -3
  59. data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -2
  60. data/app/serializers/alchemy/essence_date_serializer.rb +0 -2
  61. data/app/serializers/alchemy/essence_file_serializer.rb +0 -2
  62. data/app/serializers/alchemy/essence_html_serializer.rb +0 -2
  63. data/app/serializers/alchemy/essence_link_serializer.rb +0 -2
  64. data/app/serializers/alchemy/essence_picture_serializer.rb +0 -2
  65. data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -2
  66. data/app/serializers/alchemy/essence_select_serializer.rb +0 -2
  67. data/app/serializers/alchemy/essence_text_serializer.rb +0 -2
  68. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -3
  69. data/app/serializers/alchemy/page_serializer.rb +2 -8
  70. data/app/serializers/alchemy/page_tree_serializer.rb +1 -1
  71. data/app/serializers/alchemy/picture_serializer.rb +0 -2
  72. data/app/views/alchemy/admin/clipboard/index.html.erb +2 -2
  73. data/app/views/alchemy/admin/clipboard/insert.js.erb +9 -12
  74. data/app/views/alchemy/admin/contents/create.js.erb +4 -30
  75. data/app/views/alchemy/admin/elements/_element.html.erb +27 -12
  76. data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +1 -1
  77. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +0 -10
  78. data/app/views/alchemy/admin/elements/create.js.erb +12 -12
  79. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  80. data/app/views/alchemy/admin/elements/index.html.erb +20 -19
  81. data/app/views/alchemy/admin/elements/publish.js.erb +5 -0
  82. data/app/views/alchemy/admin/elements/trash.js.erb +4 -1
  83. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -7
  84. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -22
  85. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -4
  86. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  87. data/app/views/alchemy/admin/pages/index.html.erb +14 -10
  88. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
  89. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
  90. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +7 -5
  91. data/app/views/alchemy/admin/partials/_routes.html.erb +0 -1
  92. data/app/views/alchemy/admin/partials/_search_form.html.erb +6 -4
  93. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +6 -3
  94. data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
  95. data/app/views/alchemy/admin/trash/index.html.erb +8 -7
  96. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  97. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +4 -19
  98. data/app/views/layouts/alchemy/admin.html.erb +1 -0
  99. data/bin/rspec +0 -5
  100. data/config/alchemy/config.yml +3 -0
  101. data/config/brakeman.ignore +1 -1
  102. data/config/locales/alchemy.en.yml +6 -12
  103. data/config/routes.rb +1 -5
  104. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -29
  105. data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +6 -0
  106. data/lib/alchemy/admin/locale.rb +1 -1
  107. data/lib/alchemy/cache_digests/template_tracker.rb +4 -27
  108. data/lib/alchemy/elements_finder.rb +111 -0
  109. data/lib/alchemy/errors.rb +0 -4
  110. data/lib/alchemy/modules.rb +49 -18
  111. data/lib/alchemy/tasks/tidy.rb +3 -40
  112. data/lib/alchemy/test_support/controller_requests.rb +1 -1
  113. data/lib/alchemy/test_support/essence_shared_examples.rb +1 -1
  114. data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -3
  115. data/lib/alchemy/test_support/factories/content_factory.rb +4 -4
  116. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +5 -5
  117. data/lib/alchemy/test_support/factories/element_factory.rb +12 -7
  118. data/lib/alchemy/test_support/factories/essence_text_factory.rb +1 -1
  119. data/lib/alchemy/test_support/factories/language_factory.rb +13 -13
  120. data/lib/alchemy/test_support/factories/page_factory.rb +18 -17
  121. data/lib/alchemy/test_support/factories/picture_factory.rb +6 -4
  122. data/lib/alchemy/test_support/factories/site_factory.rb +6 -6
  123. data/lib/alchemy/tinymce.rb +1 -1
  124. data/lib/alchemy/upgrader/four_point_two.rb +68 -0
  125. data/lib/alchemy/upgrader/tasks/cells_migration.rb +41 -0
  126. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +146 -0
  127. data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +65 -0
  128. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +195 -0
  129. data/lib/alchemy/version.rb +1 -1
  130. data/lib/alchemy_cms.rb +1 -0
  131. data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -0
  132. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -3
  133. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -3
  134. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -3
  135. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -14
  136. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -10
  137. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -10
  138. data/lib/tasks/alchemy/tidy.rake +1 -23
  139. data/lib/tasks/alchemy/upgrade.rake +44 -1
  140. data/vendor/assets/javascripts/flatpickr/flatpickr.min.js +2 -0
  141. data/vendor/assets/javascripts/tinymce/license.txt +0 -0
  142. data/vendor/assets/javascripts/tinymce/tinymce.min.js +2 -2
  143. metadata +25 -31
  144. data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +0 -478
  145. data/app/models/alchemy/cell.rb +0 -95
  146. data/app/models/alchemy/page/page_cells.rb +0 -69
  147. data/app/serializers/alchemy/cell_serializer.rb +0 -19
  148. data/app/views/alchemy/admin/contents/new.html.erb +0 -11
  149. data/app/views/alchemy/admin/contents/order.js.erb +0 -3
  150. data/app/views/alchemy/admin/elements/_add_picture.html.erb +0 -14
  151. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +0 -24
  152. data/bin/spring +0 -16
  153. data/lib/alchemy/test_support/factories/cell_factory.rb +0 -9
  154. data/vendor/assets/javascripts/date-formatter.js +0 -161
  155. data/vendor/assets/javascripts/jquery_plugins/jquery.datetimepicker.full.min.js +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db300f6230e8da3eb2bd841e89b07e8eb2b217f7bb6b1e7767a7c4030e3ca32e
4
- data.tar.gz: 36e05ea420184ae4da7b5c8cc64df3777aeb0d61d052c6e049a6b9020e4f6543
3
+ metadata.gz: 258008e3dd974388f2361414d385f0b607dae59a2f2f1e425cc409517efc1682
4
+ data.tar.gz: 99d7b710b6e90b2b71dcd08658767b21ea2f845380aa14889467f73c80c554d3
5
5
  SHA512:
6
- metadata.gz: 96f10788dedab7ceb86f2ed794736ede95bfe0d2141acd37ea93ee3fa439b71f2ad3077851b30521eda58e59896724675f789c1b147552a5a8da26d8fae147f3
7
- data.tar.gz: '01380625e93c7fe360bbdc4affc77ee3e876e64a47c36005c34e2e003bb3c847db25198edec337bfcec735b0c056a7554638479cd5c8860d6d6097c080d4e24e'
6
+ metadata.gz: 448bf16870286563145c0d903a2e1ec2b1d4a4951f8122911847088bf941df0d9f00bb8f45dbd87ab1b9a41e2a291e031e4374a0906e59873735b963518f5d20
7
+ data.tar.gz: e2b0a2887b4121c1606b46710342ad609322997a69cfa0af2263acb78cfb5d3bbba4efb950a06c185326ae0ceb16168469b5985e921629cb788747169b2ce5df
@@ -20,8 +20,3 @@ Tell us what happens instead
20
20
 
21
21
  - Alchemy Version:
22
22
  - Rails Version:
23
- - Contents of your `Gemfile.lock`
24
-
25
- ```ruby
26
- # Replace with Gemfile.lock content
27
- ```
@@ -9,7 +9,7 @@ AllCops:
9
9
  - 'alchemy_cms.gemspec'
10
10
  - 'Rakefile'
11
11
 
12
- TargetRubyVersion: 2.2
12
+ TargetRubyVersion: 2.3
13
13
 
14
14
  # Really, rubocop?
15
15
  Bundler/OrderedGems:
@@ -94,6 +94,9 @@ Layout/MultilineMethodCallBraceLayout:
94
94
  Layout/MultilineMethodCallIndentation:
95
95
  Enabled: false
96
96
 
97
+ Layout/MultilineOperationIndentation:
98
+ EnforcedStyle: indented
99
+
97
100
  Layout/SpaceBeforeBlockBraces:
98
101
  Enabled: false
99
102
  StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
@@ -8,9 +8,9 @@ addons:
8
8
  cache:
9
9
  bundler: true
10
10
  rvm:
11
- - 2.3.5
12
- - 2.4.2
13
- - 2.5.0
11
+ - 2.4.5
12
+ - 2.5.3
13
+ - 2.6.0
14
14
  before_install:
15
15
  - gem install bundler
16
16
  before_script:
@@ -1,12 +1,32 @@
1
- ## 4.1.2 (2019-08-13)
2
-
3
- - Fallback to default locale if unavailable locale requested [#1610](https://github.com/AlchemyCMS/alchemy_cms/pull/1610) ([mamhoff](https://github.com/mamhoff))
4
-
5
- ## 4.1.1 (2019-08-09)
6
-
7
- - Fix image gallery individual image CSS height [#1586](https://github.com/AlchemyCMS/alchemy_cms/pull/1586) ([mamhoff](https://github.com/mamhoff))
8
- - Remove invalid bytecode handler [#1581](https://github.com/AlchemyCMS/alchemy_cms/pull/1581) ([tvdeyen](https://github.com/tvdeyen))
9
- - Allow Ransack 1.x [#1579](https://github.com/AlchemyCMS/alchemy_cms/pull/1579) ([tvdeyen](https://github.com/tvdeyen))
1
+ ## 4.2.0 (unreleased)
2
+
3
+ - Use element name local in generators [#1556](https://github.com/AlchemyCMS/alchemy_cms/pull/1556) ([tvdeyen](https://github.com/tvdeyen))
4
+ - Remove invalid bytecode handler [#1555](https://github.com/AlchemyCMS/alchemy_cms/pull/1555) ([tvdeyen](https://github.com/tvdeyen))
5
+ - Separate render element calls [#1554](https://github.com/AlchemyCMS/alchemy_cms/pull/1554) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Expose the element into partials as local object [#1553](https://github.com/AlchemyCMS/alchemy_cms/pull/1553) ([tvdeyen](https://github.com/tvdeyen))
7
+ - Allow admins to switch all languages [#1552](https://github.com/AlchemyCMS/alchemy_cms/pull/1552) ([tvdeyen](https://github.com/tvdeyen))
8
+ - Raise targeted Ruby version to 2.3 [#1545](https://github.com/AlchemyCMS/alchemy_cms/pull/1545) ([tvdeyen](https://github.com/tvdeyen))
9
+ - Introduces an Elements finder class [#1544](https://github.com/AlchemyCMS/alchemy_cms/pull/1544) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Fixate sqlite dep for bug fix [#1543](https://github.com/AlchemyCMS/alchemy_cms/pull/1543) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Upgrade shoulda-matchers to version 4.0.0 [#1542](https://github.com/AlchemyCMS/alchemy_cms/pull/1542) ([depfu](https://github.com/apps/depfu))
12
+ - Upgrade factory_bot_rails to version 5.0.1 [#1540](https://github.com/AlchemyCMS/alchemy_cms/pull/1540) ([depfu](https://github.com/apps/depfu))
13
+ - Use Flatpickr as Datepicker [#1533](https://github.com/AlchemyCMS/alchemy_cms/pull/1533) ([mamhoff](https://github.com/mamhoff))
14
+ - Use system tests over feature specs [#1528](https://github.com/AlchemyCMS/alchemy_cms/pull/1528) ([tvdeyen](https://github.com/tvdeyen))
15
+ - Flexible width for admin navigation entry labels [#1527](https://github.com/AlchemyCMS/alchemy_cms/pull/1527) ([tvdeyen](https://github.com/tvdeyen))
16
+ - Responsive elements window and sidebar [#1519](https://github.com/AlchemyCMS/alchemy_cms/pull/1519) ([tvdeyen](https://github.com/tvdeyen))
17
+ - Change element eye icon on public state [#1517](https://github.com/AlchemyCMS/alchemy_cms/pull/1517) ([oniram88](https://github.com/oniram88))
18
+ - Maximize element window if Tinymce is fullscreen [#1515](https://github.com/AlchemyCMS/alchemy_cms/pull/1515) ([tvdeyen](https://github.com/tvdeyen))
19
+ - Remove cells in favour of fixed elements [#1514](https://github.com/AlchemyCMS/alchemy_cms/pull/1514) ([tvdeyen](https://github.com/tvdeyen))
20
+ - Feature: Autogenerate nestable elements [#1513](https://github.com/AlchemyCMS/alchemy_cms/pull/1513) ([tvdeyen](https://github.com/tvdeyen))
21
+ - Allow "data" key for module navigations [#1512](https://github.com/AlchemyCMS/alchemy_cms/pull/1512) ([mamhoff](https://github.com/mamhoff))
22
+ - Allow to define layout for page previews [#1500](https://github.com/AlchemyCMS/alchemy_cms/pull/1500) ([westonganger](https://github.com/westonganger))
23
+ - Fix capitalization for login/logout/leave [#1497](https://github.com/AlchemyCMS/alchemy_cms/pull/1497) ([westonganger](https://github.com/westonganger))
24
+ - Verify controller keys within `register_module` [#1495](https://github.com/AlchemyCMS/alchemy_cms/pull/1495) ([westonganger](https://github.com/westonganger))
25
+ - Update bundled Tinymce to 4.8.3 [#1491](https://github.com/AlchemyCMS/alchemy_cms/pull/1491) ([tvdeyen](https://github.com/tvdeyen))
26
+ - Use dynamic attributes in factories [#1484](https://github.com/AlchemyCMS/alchemy_cms/pull/1484) ([tvdeyen](https://github.com/tvdeyen))
27
+ - Migrating to active_model_serializers ~> 0.10.0 [#1478](https://github.com/AlchemyCMS/alchemy_cms/pull/1478) ([pmashchak](https://github.com/pmashchak))
28
+ - Replace picture galleries with nestable elements [#1358](https://github.com/AlchemyCMS/alchemy_cms/pull/1358) ([tvdeyen](https://github.com/tvdeyen))
29
+ - Add a compact nested element style [#1357](https://github.com/AlchemyCMS/alchemy_cms/pull/1357) by [tvdeyen](https://github.com/tvdeyen)
10
30
 
11
31
  ## 4.1.0 (2018-09-22)
12
32
 
@@ -459,4 +479,3 @@ No changes
459
479
  ## 3.0.0 (2014-07-03)
460
480
 
461
481
  [Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.0.0)
462
-
data/Gemfile CHANGED
@@ -7,13 +7,14 @@ gem 'rails', '~> 5.2.0'
7
7
  # Profiling
8
8
  gem 'rack-mini-profiler', group: :development, require: false
9
9
 
10
- gem 'sqlite3' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
10
+ gem 'sqlite3', '~> 1.3.6' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
11
11
  gem 'mysql2', '~> 0.5.1' if ENV['DB'] == 'mysql'
12
12
  gem 'pg', '~> 1.0' if ENV['DB'] == 'postgresql'
13
13
  gem 'sassc-rails'
14
14
 
15
15
  group :development, :test do
16
16
  gem 'simplecov', require: false
17
+ gem 'bootsnap', require: false
17
18
  if ENV['TRAVIS']
18
19
  gem 'codeclimate-test-reporter', '~> 1.0', require: false
19
20
  end
@@ -24,8 +25,6 @@ group :development, :test do
24
25
  gem 'yard'
25
26
  gem 'redcarpet'
26
27
  gem 'pry-byebug'
27
- gem 'spring'
28
- gem 'spring-commands-rspec'
29
28
  gem 'rubocop', require: false
30
29
  gem 'listen'
31
30
  gem 'localeapp', '~> 3.0', require: false
@@ -34,12 +33,11 @@ group :development, :test do
34
33
  end
35
34
  gem 'capybara', '~> 3.0'
36
35
  gem 'capybara-screenshot', '~> 1.0'
37
- gem 'database_cleaner', '~> 1.3'
38
- gem 'factory_bot_rails', '~> 4.5'
36
+ gem 'factory_bot_rails', '~> 5.0'
39
37
  gem 'selenium-webdriver', '~> 3.8'
40
38
  gem 'rspec-activemodel-mocks', '~> 1.0'
41
- gem 'rspec-rails', '~> 3.0'
42
- gem 'shoulda-matchers', '~> 3.1'
39
+ gem 'rspec-rails', '~> 3.7'
40
+ gem 'shoulda-matchers', '~> 4.0'
43
41
  gem 'rails-controller-testing', '~> 1.0'
44
42
  end
45
43
 
data/README.md CHANGED
@@ -1,22 +1,27 @@
1
+ # AlchemyCMS
2
+
1
3
  [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](http://badge.fury.io/rb/alchemy_cms)
2
4
  [![Build Status](https://travis-ci.org/AlchemyCMS/alchemy_cms.svg?branch=master)](https://travis-ci.org/AlchemyCMS/alchemy_cms)
3
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/maintainability)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/maintainability)
4
6
  [![Test Coverage](https://api.codeclimate.com/v1/badges/196c56c56568ed24a697/test_coverage)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/test_coverage)
5
- [![Slack Status](http://slackin.alchemy-cms.com/badge.svg)](http://slackin.alchemy-cms.com)
7
+ [![Depfu](https://badges.depfu.com/badges/ebe56d2dd7b7044a8ae700cc81212a8e/overview.svg)](https://depfu.com/github/AlchemyCMS/alchemy_cms?project_id=4600)
6
8
 
7
- **CAUTION: This master branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (4.1-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.1-stable).**
9
+ [![Slack Status](https://slackin.alchemy-cms.com/badge.svg)](https://slackin.alchemy-cms.com)
10
+ [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)
8
11
 
12
+ [![Backers on Open Collective](https://opencollective.com/alchemy_cms/backers/badge.svg?color=blue)](#backers)
13
+ [![Sponsors on Open Collective](https://opencollective.com/alchemy_cms/sponsors/badge.svg?color=blue)](#sponsors)
9
14
 
10
- ## About
15
+ <img src="./app/assets/images/alchemy/alchemy-logo.svg" width=300>
11
16
 
12
- ![Alchemy CMS](app/assets/images/alchemy/alchemy-logo.png)
17
+ Alchemy is an open source CMS engine written in Ruby on Rails.
13
18
 
14
- Alchemy is a headless Rails CMS.
19
+ Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [guidelines](https://guides.alchemy-cms.com).
15
20
 
16
- Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [guidelines](https://guides.alchemy-cms.com/stable/).
21
+ **CAUTION: This master branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms), or the [latest stable branch (4.1-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/4.1-stable).**
17
22
 
18
23
 
19
- ## Features
24
+ ## Features
20
25
 
21
26
  - Flexible templating that separates content from markup
22
27
  - A rich RESTful API
@@ -33,7 +38,7 @@ Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [gu
33
38
  - Flexible caching
34
39
  - Hostable on any Server that supports Ruby on Rails, a SQL Database and ImageMagick
35
40
 
36
- ## Demo
41
+ ## 🎮 Demo
37
42
 
38
43
  Deploy your own free demo on Heroku
39
44
 
@@ -44,7 +49,7 @@ or visit the existing demo at https://alchemy-demo.herokuapp.com
44
49
  - Login: `demo`
45
50
  - Password: `demo123`
46
51
 
47
- ## Rails Version
52
+ ## 🚂 Rails Version
48
53
 
49
54
  **This version of Alchemy CMS runs with Rails 5 only**
50
55
 
@@ -56,9 +61,11 @@ or visit the existing demo at https://alchemy-demo.herokuapp.com
56
61
  * For a Rails 2.3 compatible version use the [`1.6-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/1.6-stable).
57
62
 
58
63
 
59
- ## Ruby Version
64
+ ## 💎 Ruby Version
65
+
66
+ Alchemy runs with Ruby >= 2.3.0.
60
67
 
61
- Alchemy runs with Ruby >= 2.2.2.
68
+ For a Ruby 2.2 compatible version use the [`4.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/4.1-stable).
62
69
 
63
70
  For a Ruby 2.1 compatible version use the [`3.6-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.6-stable).
64
71
 
@@ -69,7 +76,7 @@ For a Ruby 1.9.3 compatible version use the [`3.1-stable` branch](https://github
69
76
  For a Ruby 1.8.7 compatible version use the [`2.3-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/2.3-stable).
70
77
 
71
78
 
72
- ## Installation
79
+ ## ⌨️ Installation
73
80
 
74
81
  #### 1. Add the Alchemy gem:
75
82
 
@@ -83,7 +90,7 @@ gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: 'master'
83
90
 
84
91
  #### 2. Update your bundle:
85
92
 
86
- ```shell
93
+ ```bash
87
94
  $ bundle install
88
95
  ```
89
96
 
@@ -104,7 +111,7 @@ gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: 'master'
104
111
 
105
112
  Then run:
106
113
 
107
- ```shell
114
+ ```bash
108
115
  $ bundle install
109
116
  $ bin/rake alchemy_devise:install:migrations
110
117
  ```
@@ -146,7 +153,7 @@ Please follow [this guide](http://guides.alchemy-cms.com/stable/custom_authentic
146
153
 
147
154
  **After** you set the user model you need to run the Alchemy install task:
148
155
 
149
- ```shell
156
+ ```bash
150
157
  $ bin/rake alchemy:install
151
158
  ```
152
159
 
@@ -157,9 +164,9 @@ Now everything should be set up and you should be able to visit the Alchemy Dash
157
164
  *) Use your custom path if you mounted Alchemy at something else then `'/'`
158
165
 
159
166
 
160
- ## Customizing
167
+ ## 🏗 Customization
161
168
 
162
- Alchemy has very flexible ways to organize and manage content. Please be sure to read [the introduction guide](http://guides.alchemy-cms.com/stable/index.html) in order to understand the basic idea of how Alchemy works.
169
+ Alchemy has very flexible ways to organize and manage content. Please be sure to read [the introduction guide](https://guides.alchemy-cms.com/about.html) in order to understand the basic idea of how Alchemy works.
163
170
 
164
171
 
165
172
  ### Custom Controllers
@@ -169,6 +176,7 @@ Beginning with Alchemy 3.1 we do not patch the `ApplicationController` anymore.
169
176
  ### Custom admin interface routing
170
177
 
171
178
  By default, Alchemy Dashboard is accessible at <http://example.com/admin>. You can change this by setting `Alchemy.admin_path` and `Alchemy.admin_constraints`.
179
+
172
180
  For example, these settings:
173
181
 
174
182
  ```ruby
@@ -184,31 +192,33 @@ will move the dashboard to <http://hidden.example.com/backend>.
184
192
 
185
193
  Alchemy uses the Dragonfly gem to render pictures on-the-fly.
186
194
 
187
- To make this as performant as possible the rendered picture gets stored into `public/pictures`
188
- so the web server can pick up the file and serve it without hitting the Rails process at all.
195
+ To make this as performant as possible the rendered picture gets stored into `public/pictures` so the web server can pick up the file and serve it without hitting the Rails process at all.
189
196
 
190
- This may or may not what you want. Especially for multi server setups you eventually want to use
191
- something like S3.
197
+ This may or may not what you want. Especially for multi server setups you eventually want to use something like S3.
192
198
 
193
199
  Please follow the guidelines about picture caching on the Dragonfly homepage for further instructions:
194
200
 
195
201
  http://markevans.github.io/dragonfly/cache
196
202
 
197
- ### Localization
203
+ We also provide an [extension for Cloudinary](https://github.com/AlchemyCMS/alchemy_cloudinary)
204
+
205
+ ## 🌍 Localization
198
206
 
199
207
  Alchemy ships with one default English translation for the admin interface. If you want to use the admin interface in other languages please have a look at the [`alchemy_i18n` project](https://github.com/AlchemyCMS/alchemy_i18n).
200
208
 
201
- ## Upgrading
209
+ ## Upgrading
202
210
 
203
- We, the Alchemy team, take upgrades very seriously and we try to make them as smooth as possible.
204
- Therefore we have build an upgrade task, that tries to automate the upgrade procedure as much as possible.
211
+ We, the Alchemy team, take upgrades very seriously and we try to make them as smooth as possible. Therefore we have build an upgrade task, that tries to automate the upgrade procedure as much as possible.
205
212
 
206
213
  That's why after the Alchemy gem has been updated, with explicit call to:
207
- ```shell
214
+
215
+ ```bash
208
216
  $ bundle update alchemy_cms
209
217
  ```
218
+
210
219
  you should **always run the upgrader**:
211
- ```shell
220
+
221
+ ```bash
212
222
  $ bin/rake alchemy:upgrade
213
223
  ```
214
224
 
@@ -225,7 +235,7 @@ The Alchemy upgrader comes prepared with several rake tasks in a specific order.
225
235
  This is sometimes not what you want or could even break upgrades.
226
236
  In order to customize the upgrade preparation process you can instead run each of the tasks on their own.
227
237
 
228
- ```shell
238
+ ```bash
229
239
  $ bin/rake alchemy:install:migrations
230
240
  $ bin/rake db:migrate
231
241
  $ bin/rake alchemy:db:seed
@@ -241,7 +251,7 @@ we can't ensure smooth upgrades for you.
241
251
 
242
252
  You can also run an individual upgrade on its own:
243
253
 
244
- ```shell
254
+ ```bash
245
255
  $ bin/rake -T alchemy:upgrade
246
256
  ```
247
257
 
@@ -249,38 +259,38 @@ provides you with a list of each upgrade you can run individually.
249
259
 
250
260
  #### Example
251
261
 
252
- ```shell
253
- $ bin/rake alchemy:upgrade:3.2
262
+ ```bash
263
+ $ bin/rake alchemy:upgrade:4.1
254
264
  ```
255
265
 
256
- runs only the Alchemy 3.2 upgrade
266
+ runs only the Alchemy 4.1 upgrade
257
267
 
258
- ## Deployment
268
+ ## 🚀 Deployment
259
269
 
260
270
  Alchemy has an official Capistrano extension which takes care of everything you need to deploy an Alchemy site.
261
271
 
262
- Please use https://github.com/AlchemyCMS/capistrano-alchemy, if you want to deploy with Capistrano.
272
+ Please use [capistrano-alchemy](https://github.com/AlchemyCMS/capistrano-alchemy), if you want to deploy with Capistrano.
263
273
 
264
274
  ### Without Capistrano
265
275
 
266
276
  If you don't use Capistrano you have to **make sure** that the `uploads`, `tmp/cache/assets`, `public/assets` and `public/pictures` folders get **shared between deployments**, otherwise you **will loose data**. No, not really, but you know, just keep them in sync.
267
277
 
268
278
 
269
- ## Testing
279
+ ## 🚧 Testing
270
280
 
271
- If you want to contribute to Alchemy ([and we encourage you to do so](https://github.com/AlchemyCMS/alchemy_cms/blob/master/CONTRIBUTING.md)) we have a strong test suite that helps you to not break anything.
281
+ If you want to contribute to Alchemy ([and we encourage you to do so](CONTRIBUTING.md)) we have a strong test suite that helps you to not break anything.
272
282
 
273
283
  ### Preparation
274
284
 
275
285
  First of all you need to clone your fork to your local development machine. Then you need to install the dependencies with bundler.
276
286
 
277
- ```shell
287
+ ```bash
278
288
  $ bundle install
279
289
  ```
280
290
 
281
291
  To prepare the tests of your Alchemy fork please make sure to run the preparation task:
282
292
 
283
- ```shell
293
+ ```bash
284
294
  $ bundle exec rake alchemy:spec:prepare
285
295
  ```
286
296
 
@@ -288,13 +298,13 @@ to set up the database for testing.
288
298
 
289
299
  ### Run your tests with:
290
300
 
291
- ```shell
301
+ ```bash
292
302
  $ bundle exec rspec
293
303
  ```
294
304
 
295
305
  **Alternatively** you can just run*:
296
306
 
297
- ```shell
307
+ ```bash
298
308
  $ bundle exec rake
299
309
  ```
300
310
 
@@ -304,42 +314,52 @@ $ bundle exec rake
304
314
 
305
315
  You can even start the dummy app and use it to manually test your changes with:
306
316
 
307
- ```shell
317
+ ```bash
308
318
  $ cd spec/dummy
309
- $ bin/rake db:setup
319
+ $ bin/setup
310
320
  $ bin/rails s
311
321
  ```
312
322
 
313
- **A note about RSpec version:**
314
323
 
315
- Alchemy specs are written **in RSpec 3**. Please **do not use deprecated RSpec 2.x syntax**. Thanks
324
+ ## 📦 Releasing
325
+
326
+ ### Update the changelog
327
+
328
+ ```bash
329
+ $ export GITHUB_ACCESS_TOKEN=...
330
+ $ PREVIOUS_VERSION=4.1.0 bundle exec rake alchemy:changelog:update
331
+ ```
332
+
333
+ ### Release a new version
334
+
335
+ ```bash
336
+ $ bundle exec rake release
337
+ ```
316
338
 
317
339
 
318
- ## Getting Help
340
+ ## Getting Help
319
341
 
320
- * Read the guidelines: http://guides.alchemy-cms.com.
321
- * Read the documentation: http://rubydoc.info/github/AlchemyCMS/alchemy_cms
322
- * If you found a bug please use the [issue tracker on Github](https://github.com/AlchemyCMS/alchemy_cms/issues).
323
- * For questions about general usage please use [Stack Overflow](http://stackoverflow.com/questions/tagged/alchemy-cms), [the User Group](http://groups.google.com/group/alchemy-cms) or the [Slack](https://slackin.alchemy-cms.com).
342
+ * Read the guidelines: https://guides.alchemy-cms.com.
343
+ * Read the documentation: https://www.rubydoc.info/github/AlchemyCMS/alchemy_cms
344
+ * If you think you found a bug please use the [issue tracker on Github](https://github.com/AlchemyCMS/alchemy_cms/issues).
345
+ * For questions about general usage please use [Stack Overflow](http://stackoverflow.com/questions/tagged/alchemy-cms) or the [Slack](https://slackin.alchemy-cms.com).
324
346
  * New features should be discussed on our [Trello Board](https://trello.com/alchemycms).
325
347
 
326
- **PLEASE** don't use the Github issues for feature requests. If you want to contribute to Alchemy please [read the contribution guidelines](https://github.com/AlchemyCMS/alchemy_cms/blob/master/CONTRIBUTING.md) before doing so.
348
+ **PLEASE** don't use the Github issues for feature requests. If you want to contribute to Alchemy please [read the contribution guidelines](CONTRIBUTING.md) before doing so.
327
349
 
328
350
 
329
- ## Resources
351
+ ## 🔗 Resources
330
352
 
331
- * Homepage: <http://alchemy-cms.com>
332
- * Live-Demo: <http://demo.alchemy-cms.com> (user: demo, password: demo123)
333
- * API Documentation: <http://rubydoc.info/github/AlchemyCMS/alchemy_cms>
353
+ * Homepage: <https://alchemy-cms.com>
354
+ * Live-Demo: <https://demo.alchemy-cms.com> (user: demo, password: demo123)
355
+ * API Documentation: <https://www.rubydoc.info/github/AlchemyCMS/alchemy_cms>
334
356
  * Issue-Tracker: <https://github.com/AlchemyCMS/alchemy_cms/issues>
335
357
  * Sourcecode: <https://github.com/AlchemyCMS/alchemy_cms>
336
- * User Group: <http://groups.google.com/group/alchemy-cms>
337
358
  * Slack: <https://slackin.alchemy-cms.com>
338
- * Discussion Board: <https://trello.com/alchemycms>
339
359
  * Twitter: <https://twitter.com/alchemy_cms>
340
360
 
341
361
 
342
- ## Authors
362
+ ## ✍️ Authors
343
363
 
344
364
  * Thomas von Deyen: <https://github.com/tvdeyen>
345
365
  * Robin Böning: <https://github.com/robinboening>
@@ -348,15 +368,47 @@ Alchemy specs are written **in RSpec 3**. Please **do not use deprecated RSpec 2
348
368
  * Carsten Fregin: <https://github.com/cfregin>
349
369
 
350
370
 
351
- ## License
371
+ ## 🏅 Contributors
372
+
373
+ This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
374
+ <a href="https://github.com/undefined/undefinedgraphs/contributors"><img src="https://opencollective.com/alchemy_cms/contributors.svg?width=890&button=false" /></a>
375
+
376
+
377
+ ## 💵 Backers
378
+
379
+ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/alchemy_cms#backer)]
380
+
381
+ <a href="https://opencollective.com/alchemy_cms#backers" target="_blank"><img src="https://opencollective.com/alchemy_cms/backers.svg?width=890"></a>
382
+
352
383
 
353
- * BSD: <https://raw.githubusercontent.com/AlchemyCMS/alchemy_cms/master/LICENSE>
384
+ ## 💰 Sponsors
354
385
 
386
+ Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/alchemy_cms#sponsor)]
355
387
 
356
- ## Spread the love
388
+ <a href="https://opencollective.com/alchemy_cms/sponsor/0/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/0/avatar.svg"></a>
389
+ <a href="https://opencollective.com/alchemy_cms/sponsor/1/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/1/avatar.svg"></a>
390
+ <a href="https://opencollective.com/alchemy_cms/sponsor/2/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/2/avatar.svg"></a>
391
+ <a href="https://opencollective.com/alchemy_cms/sponsor/3/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/3/avatar.svg"></a>
392
+ <a href="https://opencollective.com/alchemy_cms/sponsor/4/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/4/avatar.svg"></a>
393
+ <a href="https://opencollective.com/alchemy_cms/sponsor/5/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/5/avatar.svg"></a>
394
+ <a href="https://opencollective.com/alchemy_cms/sponsor/6/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/6/avatar.svg"></a>
395
+ <a href="https://opencollective.com/alchemy_cms/sponsor/7/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/7/avatar.svg"></a>
396
+ <a href="https://opencollective.com/alchemy_cms/sponsor/8/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/8/avatar.svg"></a>
397
+ <a href="https://opencollective.com/alchemy_cms/sponsor/9/website" target="_blank"><img src="https://opencollective.com/alchemy_cms/sponsor/9/avatar.svg"></a>
357
398
 
358
- If you like Alchemy, please help us to spread the word about Alchemy and star this repo [on GitHub](https://github.com/AlchemyCMS/alchemy_cms), upvote it [on The Ruby Toolbox](https://www.ruby-toolbox.com/projects/alchemy_cms), mention us [on Twitter](https://twitter.com/alchemy_cms) and vote for it [on Bitnami](https://bitnami.com/stack/alchemy).
399
+
400
+
401
+ ## 📜 License
402
+
403
+ [BSD-3-Clause](LICENSE)
404
+
405
+
406
+ ## 📢 Spread the love
407
+
408
+ If you like Alchemy, please help us to spread the word about Alchemy and star this repo [on GitHub](https://github.com/AlchemyCMS/alchemy_cms), upvote it [on The Ruby Toolbox](https://www.ruby-toolbox.com/projects/alchemy_cms), mention us [on Twitter](https://twitter.com/alchemy_cms).
359
409
 
360
410
  That will help us to keep Alchemy awesome.
361
411
 
362
- Thank you <3!
412
+ Thank you!
413
+
414
+ ## ❤️