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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -5
- data/.rubocop.yml +4 -1
- data/.travis.yml +3 -3
- data/CHANGELOG.md +29 -10
- data/Gemfile +5 -7
- data/README.md +114 -62
- data/Rakefile +2 -2
- data/alchemy_cms.gemspec +5 -5
- data/app/assets/images/alchemy/icon.svg +1 -1
- data/app/assets/javascripts/alchemy/admin.js +2 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -24
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +11 -9
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +7 -24
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +9 -8
- data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +38 -0
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -4
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +1 -1
- data/app/assets/stylesheets/alchemy/_mixins.scss +2 -1
- data/app/assets/stylesheets/alchemy/_variables.scss +7 -2
- data/app/assets/stylesheets/alchemy/admin.scss +2 -1
- data/app/assets/stylesheets/alchemy/archive.scss +18 -4
- data/app/assets/stylesheets/alchemy/buttons.scss +1 -1
- data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
- data/app/assets/stylesheets/alchemy/elements.scss +154 -90
- data/app/assets/stylesheets/alchemy/filter_field.scss +30 -0
- data/app/assets/stylesheets/alchemy/flatpickr.scss +839 -0
- data/app/assets/stylesheets/alchemy/forms.scss +5 -1
- data/app/assets/stylesheets/alchemy/frame.scss +6 -14
- data/app/assets/stylesheets/alchemy/navigation.scss +109 -98
- data/app/assets/stylesheets/alchemy/search.scss +11 -29
- data/app/assets/stylesheets/alchemy/tables.scss +0 -23
- data/app/assets/stylesheets/alchemy/tags.scss +4 -27
- data/app/assets/stylesheets/alchemy/toolbar.scss +12 -2
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +4 -33
- data/app/controllers/alchemy/admin/attachments_controller.rb +1 -12
- data/app/controllers/alchemy/admin/contents_controller.rb +2 -24
- data/app/controllers/alchemy/admin/elements_controller.rb +11 -49
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pictures_controller.rb +1 -14
- data/app/controllers/alchemy/api/contents_controller.rb +1 -1
- data/app/controllers/alchemy/api/elements_controller.rb +1 -1
- data/app/controllers/alchemy/api/pages_controller.rb +1 -1
- data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +20 -0
- data/app/helpers/alchemy/admin/base_helper.rb +8 -18
- data/app/helpers/alchemy/admin/elements_helper.rb +55 -85
- data/app/helpers/alchemy/admin/pictures_helper.rb +0 -23
- data/app/helpers/alchemy/elements_helper.rb +80 -120
- data/app/helpers/alchemy/pages_helper.rb +5 -24
- data/app/models/alchemy/content.rb +0 -1
- data/app/models/alchemy/content/factory.rb +33 -57
- data/app/models/alchemy/element.rb +46 -66
- data/app/models/alchemy/element/element_contents.rb +2 -2
- data/app/models/alchemy/page.rb +34 -4
- data/app/models/alchemy/page/page_elements.rb +30 -122
- data/app/serializers/alchemy/attachment_serializer.rb +0 -2
- data/app/serializers/alchemy/content_serializer.rb +0 -2
- data/app/serializers/alchemy/element_serializer.rb +0 -3
- data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_date_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_file_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_html_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_link_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_picture_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_select_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_text_serializer.rb +0 -2
- data/app/serializers/alchemy/legacy_element_serializer.rb +0 -3
- data/app/serializers/alchemy/page_serializer.rb +2 -8
- data/app/serializers/alchemy/page_tree_serializer.rb +1 -1
- data/app/serializers/alchemy/picture_serializer.rb +0 -2
- data/app/views/alchemy/admin/clipboard/index.html.erb +2 -2
- data/app/views/alchemy/admin/clipboard/insert.js.erb +9 -12
- data/app/views/alchemy/admin/contents/create.js.erb +4 -30
- data/app/views/alchemy/admin/elements/_element.html.erb +27 -12
- data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +0 -10
- data/app/views/alchemy/admin/elements/create.js.erb +12 -12
- data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
- data/app/views/alchemy/admin/elements/index.html.erb +20 -19
- data/app/views/alchemy/admin/elements/publish.js.erb +5 -0
- data/app/views/alchemy/admin/elements/trash.js.erb +4 -1
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -7
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -22
- data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -4
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pages/index.html.erb +14 -10
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +7 -5
- data/app/views/alchemy/admin/partials/_routes.html.erb +0 -1
- data/app/views/alchemy/admin/partials/_search_form.html.erb +6 -4
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +6 -3
- data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
- data/app/views/alchemy/admin/trash/index.html.erb +8 -7
- data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +4 -19
- data/app/views/layouts/alchemy/admin.html.erb +1 -0
- data/bin/rspec +0 -5
- data/config/alchemy/config.yml +3 -0
- data/config/brakeman.ignore +1 -1
- data/config/locales/alchemy.en.yml +6 -12
- data/config/routes.rb +1 -5
- data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -29
- data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +6 -0
- data/lib/alchemy/admin/locale.rb +1 -1
- data/lib/alchemy/cache_digests/template_tracker.rb +4 -27
- data/lib/alchemy/elements_finder.rb +111 -0
- data/lib/alchemy/errors.rb +0 -4
- data/lib/alchemy/modules.rb +49 -18
- data/lib/alchemy/tasks/tidy.rb +3 -40
- data/lib/alchemy/test_support/controller_requests.rb +1 -1
- data/lib/alchemy/test_support/essence_shared_examples.rb +1 -1
- data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -3
- data/lib/alchemy/test_support/factories/content_factory.rb +4 -4
- data/lib/alchemy/test_support/factories/dummy_user_factory.rb +5 -5
- data/lib/alchemy/test_support/factories/element_factory.rb +12 -7
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/language_factory.rb +13 -13
- data/lib/alchemy/test_support/factories/page_factory.rb +18 -17
- data/lib/alchemy/test_support/factories/picture_factory.rb +6 -4
- data/lib/alchemy/test_support/factories/site_factory.rb +6 -6
- data/lib/alchemy/tinymce.rb +1 -1
- data/lib/alchemy/upgrader/four_point_two.rb +68 -0
- data/lib/alchemy/upgrader/tasks/cells_migration.rb +41 -0
- data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +146 -0
- data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +65 -0
- data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +195 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -0
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -3
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -3
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -3
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -14
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -10
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -10
- data/lib/tasks/alchemy/tidy.rake +1 -23
- data/lib/tasks/alchemy/upgrade.rake +44 -1
- data/vendor/assets/javascripts/flatpickr/flatpickr.min.js +2 -0
- data/vendor/assets/javascripts/tinymce/license.txt +0 -0
- data/vendor/assets/javascripts/tinymce/tinymce.min.js +2 -2
- metadata +25 -31
- data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +0 -478
- data/app/models/alchemy/cell.rb +0 -95
- data/app/models/alchemy/page/page_cells.rb +0 -69
- data/app/serializers/alchemy/cell_serializer.rb +0 -19
- data/app/views/alchemy/admin/contents/new.html.erb +0 -11
- data/app/views/alchemy/admin/contents/order.js.erb +0 -3
- data/app/views/alchemy/admin/elements/_add_picture.html.erb +0 -14
- data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +0 -24
- data/bin/spring +0 -16
- data/lib/alchemy/test_support/factories/cell_factory.rb +0 -9
- data/vendor/assets/javascripts/date-formatter.js +0 -161
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 258008e3dd974388f2361414d385f0b607dae59a2f2f1e425cc409517efc1682
|
4
|
+
data.tar.gz: 99d7b710b6e90b2b71dcd08658767b21ea2f845380aa14889467f73c80c554d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 448bf16870286563145c0d903a2e1ec2b1d4a4951f8122911847088bf941df0d9f00bb8f45dbd87ab1b9a41e2a291e031e4374a0906e59873735b963518f5d20
|
7
|
+
data.tar.gz: e2b0a2887b4121c1606b46710342ad609322997a69cfa0af2263acb78cfb5d3bbba4efb950a06c185326ae0ceb16168469b5985e921629cb788747169b2ce5df
|
data/.rubocop.yml
CHANGED
@@ -9,7 +9,7 @@ AllCops:
|
|
9
9
|
- 'alchemy_cms.gemspec'
|
10
10
|
- 'Rakefile'
|
11
11
|
|
12
|
-
TargetRubyVersion: 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
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,32 @@
|
|
1
|
-
## 4.
|
2
|
-
|
3
|
-
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
-
|
8
|
-
-
|
9
|
-
-
|
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 '
|
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.
|
42
|
-
gem 'shoulda-matchers', '~>
|
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
|
-
[![
|
7
|
+
[![Depfu](https://badges.depfu.com/badges/ebe56d2dd7b7044a8ae700cc81212a8e/overview.svg)](https://depfu.com/github/AlchemyCMS/alchemy_cms?project_id=4600)
|
6
8
|
|
7
|
-
|
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
|
-
|
15
|
+
<img src="./app/assets/images/alchemy/alchemy-logo.svg" width=300>
|
11
16
|
|
12
|
-
|
17
|
+
Alchemy is an open source CMS engine written in Ruby on Rails.
|
13
18
|
|
14
|
-
Alchemy
|
19
|
+
Read more about Alchemy on the [website](https://alchemy-cms.com) and in the [guidelines](https://guides.alchemy-cms.com).
|
15
20
|
|
16
|
-
|
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
|
-
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
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
|
-
##
|
167
|
+
## 🏗 Customization
|
161
168
|
|
162
|
-
Alchemy has very flexible ways to organize and manage content. Please be sure to read [the introduction guide](
|
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
|
-
|
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
|
-
|
214
|
+
|
215
|
+
```bash
|
208
216
|
$ bundle update alchemy_cms
|
209
217
|
```
|
218
|
+
|
210
219
|
you should **always run the upgrader**:
|
211
|
-
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
253
|
-
$ bin/rake alchemy:upgrade:
|
262
|
+
```bash
|
263
|
+
$ bin/rake alchemy:upgrade:4.1
|
254
264
|
```
|
255
265
|
|
256
|
-
runs only the Alchemy
|
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](
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
301
|
+
```bash
|
292
302
|
$ bundle exec rspec
|
293
303
|
```
|
294
304
|
|
295
305
|
**Alternatively** you can just run*:
|
296
306
|
|
297
|
-
```
|
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
|
-
```
|
317
|
+
```bash
|
308
318
|
$ cd spec/dummy
|
309
|
-
$ bin/
|
319
|
+
$ bin/setup
|
310
320
|
$ bin/rails s
|
311
321
|
```
|
312
322
|
|
313
|
-
**A note about RSpec version:**
|
314
323
|
|
315
|
-
|
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:
|
321
|
-
* Read the documentation:
|
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)
|
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](
|
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: <
|
332
|
-
* Live-Demo: <
|
333
|
-
* API Documentation: <
|
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
|
-
##
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
412
|
+
Thank you!
|
413
|
+
|
414
|
+
## ❤️
|