SlideShare a Scribd company logo
1 of 20
Download to read offline
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
History
                • Motivation: flexibel wie Typo 3, trotzdem bedienbar

                • Von 2007 bis 2010 als proprietäre Software:

                     • Softwarepflege / Weiterentwicklung

                     • Gewährleistung

                     • Verwertungsrechte

                • Seit 2010 OpenSource




Donnerstag, 15. September 11
Facts
                • Rails Engine

                     • Rails 2 (plugin)

                     • Rails 3 (gem)

                • RMagick

                • Ferret*

                • FastGettext

                • GPLv3



               *WTF?
Donnerstag, 15. September 11
Was macht Alchemy?nicht?
                         Alchemy
                • Alchemy speichert Inhalte einer Web-Seite in kleinsten Einheiten:

                  • Atome
                @page.body = <<BODY
                  <h1>Welcome</h1>
                  • Moleküle
                  <p>
                  • Lorem ipsum dolor
                    Zellen
                    <img style="float: right" src="image.jpg">
                  </p>
                BODY
                @page.meta_description = "fancy rails cms"
                @page.save




Donnerstag, 15. September 11
Was macht Alchemy?
                • Alchemy speichert Inhalte einer
                  Web-Seite in kleinsten Einheiten:
                     • Atome

                     • Moleküle

                     • Zellen




Donnerstag, 15. September 11
What you need is what you get
                • 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




Donnerstag, 15. September 11
Rendering Tree
                • Layout

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

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




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




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
Help us!




                         https://github.com/magiclabs/alchemy_cms

                                 Follow me: @alchemy_cms



Donnerstag, 15. September 11
Danke!
                               @alchemy_cms




Donnerstag, 15. September 11

More Related Content

What's hot

永不止步的“重构”
永不止步的“重构”永不止步的“重构”
永不止步的“重构”
Kejun Zhang
 

What's hot (20)

Ezobject wrapper workshop
Ezobject wrapper workshopEzobject wrapper workshop
Ezobject wrapper workshop
 
Custom Fields & Custom Metaboxes Overview
Custom Fields & Custom Metaboxes OverviewCustom Fields & Custom Metaboxes Overview
Custom Fields & Custom Metaboxes Overview
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
 
WordCamp Detroit 2010 Wordpress Theme Hacks
WordCamp Detroit 2010 Wordpress Theme HacksWordCamp Detroit 2010 Wordpress Theme Hacks
WordCamp Detroit 2010 Wordpress Theme Hacks
 
Twig
TwigTwig
Twig
 
Cucumber
CucumberCucumber
Cucumber
 
Associations & JavaScript
Associations & JavaScriptAssociations & JavaScript
Associations & JavaScript
 
Modularizing Rails Apps with Cells
Modularizing Rails Apps with CellsModularizing Rails Apps with Cells
Modularizing Rails Apps with Cells
 
How to learn to build your own PHP framework
How to learn to build your own PHP frameworkHow to learn to build your own PHP framework
How to learn to build your own PHP framework
 
Redmine Betabeers SVQ
Redmine Betabeers SVQRedmine Betabeers SVQ
Redmine Betabeers SVQ
 
Fapi
FapiFapi
Fapi
 
Railties
RailtiesRailties
Railties
 
Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)
 
Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1
 
永不止步的“重构”
永不止步的“重构”永不止步的“重构”
永不止步的“重构”
 
You're Doing it Wrong - WordCamp Atlanta
You're Doing it Wrong - WordCamp AtlantaYou're Doing it Wrong - WordCamp Atlanta
You're Doing it Wrong - WordCamp Atlanta
 
Dress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesDress Your WordPress with Child Themes
Dress Your WordPress with Child Themes
 
You're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp OrlandoYou're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp Orlando
 
Leveraging the Chaos tool suite for module development
Leveraging the Chaos tool suite  for module developmentLeveraging the Chaos tool suite  for module development
Leveraging the Chaos tool suite for module development
 
An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
 

Similar to Alchemy CMS Präsentation Rails UG HH 09.2011

Similar to Alchemy CMS Präsentation Rails UG HH 09.2011 (20)

Alchemy CMS: First User Group (Berlin)
Alchemy CMS: First User Group (Berlin)Alchemy CMS: First User Group (Berlin)
Alchemy CMS: First User Group (Berlin)
 
Getting Started with React-Nathan Smith
Getting Started with React-Nathan SmithGetting Started with React-Nathan Smith
Getting Started with React-Nathan Smith
 
xml-motor ~ What,Why,How
xml-motor ~ What,Why,Howxml-motor ~ What,Why,How
xml-motor ~ What,Why,How
 
Getting Started with React
Getting Started with ReactGetting Started with React
Getting Started with React
 
Sherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysisSherlock Markup and Sammy Semantic - drupal theming forensic analysis
Sherlock Markup and Sammy Semantic - drupal theming forensic analysis
 
Angular.JS: Do it right
Angular.JS: Do it rightAngular.JS: Do it right
Angular.JS: Do it right
 
The War on ActionView with Russian Doll Caching
The War on ActionView with Russian Doll CachingThe War on ActionView with Russian Doll Caching
The War on ActionView with Russian Doll Caching
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracket
 
Make your Backbone Application dance
Make your Backbone Application danceMake your Backbone Application dance
Make your Backbone Application dance
 
Empezando con Twig
Empezando con TwigEmpezando con Twig
Empezando con Twig
 
Rails::Engine
Rails::EngineRails::Engine
Rails::Engine
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practices
 
Backbone
BackboneBackbone
Backbone
 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter Bootstrap
 
RoR (Ruby on Rails)
RoR (Ruby on Rails)RoR (Ruby on Rails)
RoR (Ruby on Rails)
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
Angular js
Angular jsAngular js
Angular js
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
Sprockets
SprocketsSprockets
Sprockets
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Alchemy CMS Präsentation Rails UG HH 09.2011

  • 1. 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
  • 2. OMFGPNAOSCMSWAHX* *Oh my f*#&ing god, please not another opensource CMS, we already have X! Donnerstag, 15. September 11
  • 3. History • Motivation: flexibel wie Typo 3, trotzdem bedienbar • Von 2007 bis 2010 als proprietäre Software: • Softwarepflege / Weiterentwicklung • Gewährleistung • Verwertungsrechte • Seit 2010 OpenSource Donnerstag, 15. September 11
  • 4. Facts • Rails Engine • Rails 2 (plugin) • Rails 3 (gem) • RMagick • Ferret* • FastGettext • GPLv3 *WTF? Donnerstag, 15. September 11
  • 5. Was macht Alchemy?nicht? Alchemy • Alchemy speichert Inhalte einer Web-Seite in kleinsten Einheiten: • Atome @page.body = <<BODY <h1>Welcome</h1> • Moleküle <p> • Lorem ipsum dolor Zellen <img style="float: right" src="image.jpg"> </p> BODY @page.meta_description = "fancy rails cms" @page.save Donnerstag, 15. September 11
  • 6. Was macht Alchemy? • Alchemy speichert Inhalte einer Web-Seite in kleinsten Einheiten: • Atome • Moleküle • Zellen Donnerstag, 15. September 11
  • 7. What you need is what you get • 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 Donnerstag, 15. September 11
  • 8. Rendering Tree • Layout ➡ app/views/layout/pages.html.erb • PageLayout ➡ app/views/page_layouts/_standard.html.erb ActionCaching • 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 Donnerstag, 15. September 11
  • 10. 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
  • 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 18. We need help! Wir brauchen Contributer: • Entwicklung • Dokumentation • Testing • Bug Reporting Donnerstag, 15. September 11
  • 19. Help us! https://github.com/magiclabs/alchemy_cms Follow me: @alchemy_cms Donnerstag, 15. September 11
  • 20. Danke! @alchemy_cms Donnerstag, 15. September 11