alchemy cms: first user group (berlin)
DESCRIPTION
These are the slides from the first Alchemy CMS User Group. Alchemy CMS is a Ruby On Rails Content Management System.TRANSCRIPT
First Alchemy CMS User Group
Welcome to the first Alchemy CMS UG• Who are we?
• What is Alchemy?
• Alchemy 3.0
• Roadmap for 2014 / 2015
Who are we? • magic labs* GmbH
• Berlin & Hamburg
• Core maintainers: @tvdeyen & @robinboening
• Also here with us: @dweinhardt, Niels, @moritzs
• Deep investment in the Open Source community
OMFGPNAOSCMSWAHX* !!
*Oh my f*#&ing god, please not another opensource CMS, we already have X!
• Motivation: flexible like Typo3, but easy to use and w/o PHP
• 2007 to 2010 as proprietary software:
• Maintenance / New Features
• Warranty
• Exploitation Rights
• Since 2010 OpenSource
History
„Open Source makes me a better developer — since my work is open to the public I always strive to deliver high
quality code and double-check it“
@tvdeyen
• Rails 3 & 4 Engine
• Mountable in any Rails App
• SQL Database
• ImageMagick
• BSD New License
• 95% Test Coverage
Facts
• Alchemy speichert Inhalte einer Web-Seite in kleinsten Einheiten:
• Atome
• Moleküle
• Zellen
Was macht Alchemy?
@page.body = <<BODY <h1>Welcome</h1> <p>
Lorem ipsum dolor <img style="float: right" src="image.jpg">
</p> BODY @page.meta_description = "fancy rails cms" @page.save
What Alchemy does not do:
• Alchemy saves Contents of a website in the smallest objects:
• Essences
• Elements
• Cells
What Alchemy actually does:
• 100% Trennung zwischen Inhalt und Styling
• Extrem flexible Anpassungsmöglichkeiten
• Wie in einem Chemiebaukasten liefert Alchemy nur die grundlegenden Essenzen
• Welche Elemente daraus zusammengestellt werden ist komplett dem Entwickler überlassen
What you need is what you get
Rendering Tree• Application Layout
➡ app/views/layouts/application.html.erb
• Page
➡ app/views/alchemy/page_layouts/_standard.html.erb
• Cell
➡ app/views/alchemy/cells/_right_column.html.erb
• Element
➡ app/views/alchemy/elements/_article_view.html.erb
• Essence
➡ app/views/alchemy/essences/_essence_text_view.html.erb
RussianDoll Caching
Code!
Example page_layouts.yml#config/alchemy/page_layouts.yml - name: standard elements: [headline, article, gallery] autogenerate: [headline] !- name: news feed: true elements: [news] !- name: contact unique: true cache: false elements: [contactform] autogenerate: [contactform]
Example elements.yml#config/alchemy/elements.yml - name: article contents:
- name: headline type: EssenceText validate: - presence - format: headline_formatter - name: text type: EssenceRichtext - name: image type: EssencePicture
!- name: news contents:
- name: title type: EssenceText - name: date type: EssenceDate - name: body type: EssenceRichtext
Example layout:
# app/views/layouts/pages.html.erb <!DOCTYPE> <html> <head> <%= stylesheet_link_tag "application" %> </head> <body> <div id="page"> <div id="navigation"> <%= render_navigation %> </div> <div id="content"> <%= yield %> </div> </div> </body> </html>
Example page layout partial:
# app/views/alchemy/page_layouts/_standard.html.erb <div id="main_content">
<%= render_elements(:except => 'right_info') %> </div> <div id="right_column">
<%= render_elements(:only => 'right_info') %> </div>
Example elements view partial:
# app/views/alchemy/elements/_article_view.html.erb <% cache element do %> <%= element_view_for element, tag: 'article' do |el| %> <h1><%= el.render 'headline' %></h1>
<p> <%= el.render 'image',
image_size: '80x120', crop: true %> <%= el.render 'text' %>
</p> <% end %>
<% end %>
Example elements editor partial:
# app/views/alchemy/elements/_article_editor.html.erb <%= element_editor_for element do |el| %> <%= el.edit :headline %> <%= el.edit :text %> <%= render_picture_editor element,
image_size: "80x120", crop: true %>
<% end %>
There is a task for that!• Create new project
➡ alchemy new fancypage -d postgresql
• Install into existing Rails app
➡ rake alchemy:install
➡ rake -T alchemy
• Upgrade Alchemy
➡ rake alchemy:upgrade
• Deploy script
➡ rails g alchemy:deploy_script
➡ bundle exec cap -T alchemy
➡ bundle exec cap alchemy:import:all
We want your help <3We love contributors:
• Development
• Documentation
• Testing
• Bug Reporting
• Community Support
!
!
!
!https://github.com/magiclabs/alchemy_cms
!Follow me: @alchemy_cms
Help us!
Alchemy 3.0 - Key facts• Rails 4 compatibility
• Removes action caching
• Extracts the User class
• Changes authorization library
• Extracts ferret based full text search
• Upgrades to TinyMCE 4.0
• New public JSON API
• Enhances the User Interface
3.0 - Last task before we release• Changed interface:
Add button has newposition
• This leads to inconsistent / changed user experience
Discussion
Roadmap 2014 / 2015• Rewrite Alchemy to a content storage API
• Rewrite of admin UI
• Redesign
Feature whish list• Versioning
• Editorial publishing workflow
• Visual Element builder
• Element exchange platform
• SOLR/ElasticSearch Integration
• … What would you like?
Thanks! @alchemy_cms
First Alchemy CMS User Group