alchemy cms: first user group (berlin)

28
First Alchemy CMS User Group

Upload: moritzs

Post on 22-Nov-2014

1.864 views

Category:

Technology


1 download

DESCRIPTION

These are the slides from the first Alchemy CMS User Group. Alchemy CMS is a Ruby On Rails Content Management System.

TRANSCRIPT

Page 1: Alchemy CMS: First User Group (Berlin)

First Alchemy CMS User Group

Page 2: Alchemy CMS: First User Group (Berlin)

Welcome to the first Alchemy CMS UG• Who are we?

• What is Alchemy?

• Alchemy 3.0

• Roadmap for 2014 / 2015

Page 3: Alchemy CMS: First User Group (Berlin)

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

Page 4: Alchemy CMS: First User Group (Berlin)

OMFGPNAOSCMSWAHX* !!

*Oh my f*#&ing god, please not another opensource CMS, we already have X!

Page 5: Alchemy CMS: First User Group (Berlin)

• 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

Page 6: Alchemy CMS: First User Group (Berlin)

„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

Page 7: Alchemy CMS: First User Group (Berlin)

• Rails 3 & 4 Engine

• Mountable in any Rails App

• SQL Database

• ImageMagick

• BSD New License

• 95% Test Coverage

Facts

Page 8: Alchemy CMS: First User Group (Berlin)

• 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:

Page 9: Alchemy CMS: First User Group (Berlin)

• Alchemy saves Contents of a website in the smallest objects:

• Essences

• Elements

• Cells

What Alchemy actually does:

Page 10: Alchemy CMS: First User Group (Berlin)

• 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

Page 11: Alchemy CMS: First User Group (Berlin)

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

Page 12: Alchemy CMS: First User Group (Berlin)

Code!

Page 13: Alchemy CMS: First User Group (Berlin)

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]

Page 14: Alchemy CMS: First User Group (Berlin)

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

Page 15: Alchemy CMS: First User Group (Berlin)

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>

Page 16: Alchemy CMS: First User Group (Berlin)

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>

Page 17: Alchemy CMS: First User Group (Berlin)

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 %>

Page 18: Alchemy CMS: First User Group (Berlin)

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 %>

Page 19: Alchemy CMS: First User Group (Berlin)

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

Page 20: Alchemy CMS: First User Group (Berlin)

We want your help <3We love contributors:

• Development

• Documentation

• Testing

• Bug Reporting

• Community Support

Page 21: Alchemy CMS: First User Group (Berlin)

!

!

!

!https://github.com/magiclabs/alchemy_cms

!Follow me: @alchemy_cms

Help us!

Page 22: Alchemy CMS: First User Group (Berlin)

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

Page 23: Alchemy CMS: First User Group (Berlin)

3.0 - Last task before we release• Changed interface:

Add button has newposition

• This leads to inconsistent / changed user experience

Page 24: Alchemy CMS: First User Group (Berlin)

Discussion

Page 25: Alchemy CMS: First User Group (Berlin)

Roadmap 2014 / 2015• Rewrite Alchemy to a content storage API

• Rewrite of admin UI

• Redesign

Page 26: Alchemy CMS: First User Group (Berlin)

Feature whish list• Versioning

• Editorial publishing workflow

• Visual Element builder

• Element exchange platform

• SOLR/ElasticSearch Integration

• … What would you like?

Page 27: Alchemy CMS: First User Group (Berlin)

Thanks! @alchemy_cms

Page 28: Alchemy CMS: First User Group (Berlin)

First Alchemy CMS User Group