Alchemy CMS Präsentation Rails UG HH 09.2011

20
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

description

Ruby On Rails based Alchemy CMS presentation.

Transcript of Alchemy CMS Präsentation Rails UG HH 09.2011

Page 1: 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

Page 2: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Donnerstag, 15. September 11

Page 3: Alchemy CMS Präsentation Rails UG HH 09.2011

• 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

Page 4: Alchemy CMS Präsentation Rails UG HH 09.2011

• Rails Engine

• Rails 2 (plugin)

• Rails 3 (gem)

• RMagick

• Ferret*

• FastGettext

• GPLv3

Facts

*WTF?

Donnerstag, 15. September 11

Page 5: Alchemy CMS Präsentation Rails UG HH 09.2011

• 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>[email protected]_description = "fancy rails cms"@page.save

Was macht Alchemy nicht?

Donnerstag, 15. September 11

Page 6: Alchemy CMS Präsentation Rails UG HH 09.2011

• Alchemy speichert Inhalte einerWeb-Seite in kleinsten Einheiten:

• Atome

• Moleküle

• Zellen

Was macht Alchemy?

Donnerstag, 15. September 11

Page 7: Alchemy CMS Präsentation Rails UG HH 09.2011

• 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

Page 8: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 9: Alchemy CMS Präsentation Rails UG HH 09.2011

Code!

Donnerstag, 15. September 11

Page 10: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 11: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 12: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 13: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 14: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 15: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 16: Alchemy CMS Präsentation Rails UG HH 09.2011

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

Page 17: Alchemy CMS Präsentation Rails UG HH 09.2011

Demo

Donnerstag, 15. September 11

Page 18: Alchemy CMS Präsentation Rails UG HH 09.2011

We need help!

Wir brauchen Contributer:

• Entwicklung

• Dokumentation

• Testing

• Bug Reporting

Donnerstag, 15. September 11

Page 19: Alchemy CMS Präsentation Rails UG HH 09.2011

https://github.com/magiclabs/alchemy_cms

Follow me: @alchemy_cms

Help us!

Donnerstag, 15. September 11

Page 20: Alchemy CMS Präsentation Rails UG HH 09.2011

Danke!@alchemy_cms

Donnerstag, 15. September 11