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

Ezobject wrapper workshop
Ezobject wrapper workshopEzobject wrapper workshop
Ezobject wrapper workshopKaliop-slide
 
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 AnglePablo Godel
 
WordCamp Detroit 2010 Wordpress Theme Hacks
WordCamp Detroit 2010 Wordpress Theme HacksWordCamp Detroit 2010 Wordpress Theme Hacks
WordCamp Detroit 2010 Wordpress Theme HacksJohn Pratt
 
Associations & JavaScript
Associations & JavaScriptAssociations & JavaScript
Associations & JavaScriptJoost Elfering
 
Modularizing Rails Apps with Cells
Modularizing Rails Apps with CellsModularizing Rails Apps with Cells
Modularizing Rails Apps with CellsFlavian Missi
 
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 frameworkDinh Pham
 
Railties
RailtiesRailties
RailtiesDefV
 
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)Future Insights
 
Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Jeff Potts
 
永不止步的“重构”
永不止步的“重构”永不止步的“重构”
永不止步的“重构”Kejun Zhang
 
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 AtlantaChris Scott
 
Dress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesDress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesLaurie M. Rauch
 
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 OrlandoChris Scott
 
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 developmentzroger
 
An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin DevelopmentShinichi Nishikawa
 

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

Alchemy CMS: First User Group (Berlin)
Alchemy CMS: First User Group (Berlin)Alchemy CMS: First User Group (Berlin)
Alchemy CMS: First User Group (Berlin)Moritz Scholz
 
Getting Started with React-Nathan Smith
Getting Started with React-Nathan SmithGetting Started with React-Nathan Smith
Getting Started with React-Nathan SmithTandemSeven
 
xml-motor ~ What,Why,How
xml-motor ~ What,Why,Howxml-motor ~ What,Why,How
xml-motor ~ What,Why,HowAbhishek Kumar
 
Getting Started with React
Getting Started with ReactGetting Started with React
Getting Started with ReactNathan Smith
 
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 analysisAndreas Sahle
 
Angular.JS: Do it right
Angular.JS: Do it rightAngular.JS: Do it right
Angular.JS: Do it rightEugene Zharkov
 
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 CachingPeter Giacomo Lombardo
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2Rory Gianni
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracketjnewmanux
 
Make your Backbone Application dance
Make your Backbone Application danceMake your Backbone Application dance
Make your Backbone Application danceNicholas Valbusa
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesBenoit Bénézech
 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapMarcio Marinho
 
RoR (Ruby on Rails)
RoR (Ruby on Rails)RoR (Ruby on Rails)
RoR (Ruby on Rails)scandiweb
 
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 AngularJSPablo Godel
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à RubyMicrosoft
 

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

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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.pdfsudhanshuwaghmare1
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

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