Alchemy CMS Präsentation Rails UG HH 09.2011

Post on 22-Nov-2014

5.255 views 1 download

description

Ruby On Rails based Alchemy CMS presentation.

Transcript of Alchemy CMS Präsentation Rails UG HH 09.2011

Moin, moin!• Thomas von Deyen (@tvdeyen)

• 1976 geb. in Hamburg

• verheiratet, 1 Sohn

• HAW Hamburg Medientechnik

• 2007: PHP2Ruby

• macabi

• 2007..2009

• ThinkWorkDone

• 2009..2010

• magic labs*

• 2010..Time.now

Donnerstag, 15. September 11

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

Donnerstag, 15. September 11

• Motivation: flexibel wie Typo 3, trotzdem bedienbar

• Von 2007 bis 2010 als proprietäre Software:

• Softwarepflege / Weiterentwicklung

• Gewährleistung

• Verwertungsrechte

• Seit 2010 OpenSource

History

Donnerstag, 15. September 11

• Rails Engine

• Rails 2 (plugin)

• Rails 3 (gem)

• RMagick

• Ferret*

• FastGettext

• GPLv3

Facts

*WTF?

Donnerstag, 15. September 11

• 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

Was macht Alchemy nicht?

Donnerstag, 15. September 11

• Alchemy speichert Inhalte einerWeb-Seite in kleinsten Einheiten:

• Atome

• Moleküle

• Zellen

Was macht Alchemy?

Donnerstag, 15. September 11

• 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

Donnerstag, 15. September 11

Rendering Tree• Layout

➡ app/views/layout/pages.html.erb

• PageLayout

➡ app/views/page_layouts/_standard.html.erb

• Cell

➡ app/views/cells/_right_column.html.erb

• Element

➡ app/views/elements/_article_view.html.erb

• Essence

➡ app/views/layout/_essence_text_view.html.erb

ActionCaching

Donnerstag, 15. September 11

Code!

Donnerstag, 15. September 11

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]

Donnerstag, 15. September 11

Example elements.yml#config/alchemy/elements.yml- name: article contents:

- name: headline type: EssenceText- name: text type: EssenceRichtext- name: image type: EssencePicture

- name: news contents:

- name: title type: EssenceText- name: date type: EssenceDate- name: body type: EssenceRichtext

Donnerstag, 15. September 11

Example layout:

# app/views/layouts/pages.html.erb<!DOCTYPE><html> <head> <%= stylesheet_link_tag "styles" %> </head> <body> <div id="page"> <div id="navigation"> <%= render_navigation %> </div> <div id="content"> <%= yield %> </div> </div> </body></html>

Donnerstag, 15. September 11

Example page layout partial:

# app/views/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>

Donnerstag, 15. September 11

Example elements view partial:

# app/views/elements/_article_view.html.erb<div class="article">

<h1><%= render_essence_view_by_name(element, 'headline') %>

</h1><p>

<%= render_essence_view_by_name(element, 'text') %><%= render_essence_view_by_type(element,

'EssencePicture',:image_size => "80x120",:crop => true

) %></p>

</div>

Donnerstag, 15. September 11

Example elements editor partial:

# app/views/elements/_article_editor.html.erb<%= render_essence_editor_by_name(element, 'headline') %><%= render_essence_editor_by_name(element, 'text') %><%= render_picture_editor(element,

:image_size => "80x120",:crop => true

) %>

Donnerstag, 15. September 11

There is a task* for that!

• Create new project

➡ alchemy new fancypage

• Or prepare existing rails app for Alchemy

➡ rake alchemy:prepare

• Scaffold necessary folders and files

➡ rails g alchemy:scaffold:all

• Install standard set (default layout)

➡ rake alchemy:standard_set:install

* and or generator

Donnerstag, 15. September 11

Demo

Donnerstag, 15. September 11

We need help!

Wir brauchen Contributer:

• Entwicklung

• Dokumentation

• Testing

• Bug Reporting

Donnerstag, 15. September 11

https://github.com/magiclabs/alchemy_cms

Follow me: @alchemy_cms

Help us!

Donnerstag, 15. September 11

Danke!@alchemy_cms

Donnerstag, 15. September 11