Post on 22-Nov-2014
description
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