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

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

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