Sulu and the Other Guys - Symfony Live Berlin 2015

Preview:

Citation preview

Sulu and the other guysWie Sulu mit anderen Applikationen zusammenspielt.

Wer sind wir?

Ursprung?

Ursprung?

Ursprung?

Ursprung?

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Hintergrund

– MASSIVE ART

- Online Agentur

- 50 Mitarbeiter

- Kunden im Dachraum

– Eigenes Sulu Team

- 6 Personen

- + Studenten

- + Praktikanten

– 29 Github-Contributors im Core

1998 Erstes CMS

ZOOLU

18. Oktober 2013 Erster Sulu Commit

Juli 2014 erster Einsatz in Produktion

1. Juli 2015 1.0.0

November 2015 1.1

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

@joemoeAT

- bis 2008 Flash Programmierer

- Symfony Entwickler seit 2010

- Tendenz weg von der Implementierung

- Community Guy

- Allrounder

- Sulu

–Dokumentation

–Testing

–Community

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

@joemoeAT

- bis 2008 Flash Programmierer

- Symfony Entwickler seit 2010

- Tendenz weg von der Implementierung

- Community Guy

- Allrounder

- Sulu

–Dokumentation

–Testing

–Community

Was ist Sulu?Offen, modern & schnell

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sulu

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sulu

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sulu

Content Management Platform• Symfony• Für Unternehmen• Entwickler• Redakteure • Simple UI• State of the art•

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Für Unternehmen

Open Source• Akzeptierte Technologie• Mehrsprachigkeit• Multiportal•Erweiterbar• Skalierbar•

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Für Entwickler

100 % Symfony• Semantik• Twig• Inhalte als Basis•

CSSJS

HTML PHP

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Für Redakteure

Einfach und intuitives Interface• Durchgängige User Experience• Konfigurierbare Inhaltstypen• Live Preview• Responsive•

Von Fahrrädern und LKWsWie fährt Sulu?

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ ! Autos

Viele können damit fahren, Manche können

sie reparieren.(Typo3 etc.)

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ ! Autos

Viele können damit fahren, Manche können

sie reparieren.(Typo3 etc.)

" LKW

Benötigen eine spezielle Fahrerlaubnis. Werden

individuell von Experten konfiguriert.

(EZpublisher, PimCore etc.)

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ ! Autos

Viele können damit fahren, Manche können

sie reparieren.(Typo3 etc.)

" LKW

Benötigen eine spezielle Fahrerlaubnis. Werden

individuell von Experten konfiguriert.

(EZpublisher, PimCore etc.)

# Flugzeug

Hoch spezialisiertes Personal. Teuer und sehr

komplex im Betrieb.(Hybris, OpenText etc.)

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ ! Autos

Viele können damit fahren, Manche können

sie reparieren.(Typo3 etc.)

" LKW

Benötigen eine spezielle Fahrerlaubnis. Werden

individuell von Experten konfiguriert.

(EZpublisher, PimCore etc.)

# Flugzeug

Hoch spezialisiertes Personal. Teuer und sehr

komplex im Betrieb.(Hybris, OpenText etc.)

CMS? Again? WTF?

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHP

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHP

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY

NO LEGACY CODE

CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY

PHPCRNO LEGACY CODE

CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY

MULTI-PORTAL

PHPCRNO LEGACY CODE

CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

PHPSYMFONY

MULTI-LANGUAGE

MULTI-PORTAL

PHPCRNO LEGACY CODE

CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Warum noch ein CMS?Apache Roller, OpenCms, Ametys CMS, Liferay, eXo Platform, DSpace, Enonic, Fedora Commons, Dotcms, LogicalDOC, Nuxeo EP, Alfresco

Community Edition, Magnolia, Hippo CMS, VosaoCMS, OpenWGA, Jahia Community Distribution, OpenKM, Thingamablog, XWiki, Apache Lenya,

Daisy, Composite C1, DotNetNuke, Kooboo, mojoPortal, Orchard Project, Umbraco, BetterCMS, blosxom, Bricolage, EPrints, Foswiki, Ikiwiki,

Movable Type Open Source, TWiki, SPINE, WebGUI, ATutor, b2evolution, BEdita, Chevereto, CMSimple, CMS Made Simple, concrete5, Contao,

Cotonti, DokuWiki, Dotclear, Drupal, DynPG, Exponent CMS, eZ Publish, Geeklog, Habari, ImpressCMS, ImpressPages, Jamroom, Joomla!, Kajona,

Known, Magento, Mambo, MediaWiki, MiaCMS, Midgard CMS, MODX, Moodle, Novius OS, Nucleus CMS, Ocportal, OctoberCMS, papaya CMS,

pH7CMS, Phire CMS, PHP-Fusion, PHP-Nuke, phpWebLog, phpWebSite, phpWiki, pimcore, PivotX, Pixie (CMS), Pluck, PmWiki, Prestashop,

ProcessWire, RavenNuke CMS, SMW+, Serendipity, SilverStripe, SPIP, TangoCMS, Textpattern, Tiki Wiki CMS Groupware, TYPO3, Wolf CMS,

WordPress, Xaraya, XOOPS, Yellow, Zenario, Zikula, Mezzanine, Django-cms, MoinMoin, Plone, Wagtail, BrowserCMS, Radiant, Refinery CMS, Typo,

ContentBox Modular CMS, Mura CMS, FarCry CMS, Ghost, OpenACS, TiddlyWiki, Zotonic, Contentful, Huddle, Accrisoft Freedom, Adobe Business

Catalyst, Alfresco Cloud, Polopoly Web CMS, Cascade Cloud (Cascade Server), eXo Cloud, Clickability (Limelight Networks), Content SORT,

CrownPeak CMS (CrownPeak), DotNetNuke, Frontis Archive Publishing System, Microsoft Office 365, nuBuilder, Windows Live, Worldnow[96], OU

Campus, XaitPorter, uCoz, O3Spaces, Alfresco (Enterprise & Community Edition), Altitude3.Net, Ayoola Framework (formerly Vanity Web), Cascade

Server, Contentverse, Contegro, CoreMedia WCM, DotNetNuke, dot.orange, Ektron CMS, Elcom CMS, EMC Documentum ECM, EPiServer CMS,

ExpressionEngine, Hyland OnBase ECM, IBM Enterprise Content Management, Autonomy Interwoven Teamsite CMS, Jadu, Jahia Enterprise

Distribution, Kentico CMS, Librex, Movable Type, nuBuilder, XaitPorter (local license), OpenText ECM Suite, OpenText Web Experience Management,

OpenText Web Site Management, Oracle WebCenter Content, OU Campus, Percussion Software CM System, Percussion Software Percussion CMS,

Pulse CMS, SharePoint, Sitecore, Sitekit CMS, Solodev, Telligent Community, TerminalFour, Titan CMS, Webnodes CMS

SYMFONYPHP

MULTI-LANGUAGE

MULTI-PORTAL

PHPCRNO LEGACY CODE

CUSTOM FRONTEND

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Wann entscheide ich mich für Sulu?

JA

Symfony

Mehrsprachigkeit

Multi-Portal

Spezifische Anforderungen

Custom Frontend

NEIN

Standardanforderungen

Existierendes Theme reicht aus

Breite CMS-Features

Kein Symfony Know-how

Für Entwickler

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Grundgerüst

Auf den Schultern von Giganten• Gegen das Not-invented-here-Syndrom• Inhaltsverwaltung am höchsten Qualitätsstand•

Individualisierbar: MySQL/MariaDB/Jackrabbitt• Elastic Search• Varnish•

© 2015 MASSIVE ART WebServices GmbH | www.massiveart.com

Ein bisschen PHPCR?

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Einfache Installation

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Einfache Installation

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Einfache Installation

[sulu@sulu-io]$ git clone https://github.com/sulu-io/sulu-standard.git

[sulu@sulu-io]$ composer install

[sulu@sulu-io]$ app/console sulu:build dev

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Konfigurierbar

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Konfigurierbar

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Konfigurierbar

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Konfigurierbar Webspace

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Konfigurierbar Webspace

Page Template

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Wunderbarer Administrationsbereich

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Ohne Frontend / Ohne Theme

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Coden wo es Spaß macht

Router

Sulu

ORM

TwigController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Coden wo es Spaß macht

Router

Sulu

ORM

TwigController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Coden wo es Spaß macht

Router

Sulu

ORM

TwigController HTML

RestController

PHPCR

Konfigurieren

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Coden wo es Spaß macht

Router

Sulu

ORM

TwigController HTML

RestController

PHPCR

Konfigurieren

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Coden wo es Spaß macht

Router

Sulu

ORM

TwigController HTML

RestController

PHPCR

Konfigurieren Implementieren

Sulu and the other guys

Router

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sinn und Zweck

– Bestehendes Bundle mit Sulu verwenden

– Bundle eines Drittanbieters mit Sulu darstellen

– Sulu um Bereiche erweitern

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom Bundle

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom Bundle

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom Bundle

Mr. Sulu

Mr. Sulu

Mr. SAP-Connector

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Controller<?phpnamespace Sulu\SFLDemoBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class DefaultController extends Controller{ /** @Route("/") */ public function indexAction() { $sap = $this->get('sap.adapter')->getOverview(); return $this->render('SuluSFLDemoBundle:Default:index.html.twig', $sap); }}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Zwei Kernel

– Website

- Frontend

– Admin

- Administrationsbereich

- Security

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Controller (+Admin Action)<?phpnamespace Sulu\SFLDemoBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class DefaultController extends Controller{ /** @Route("/") */ public function indexAction() { $sap = $this->get('sap.adapter')->getOverview(); return $this->render('SuluSFLDemoBundle:Default:index.html.twig', $sap); }

public function adminAction() { $sap = $this->get('sap.adapter')->getOverview(); return $this->render('SuluSFLDemoBundle:Default:admin.html.twig', $sap); }}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Routing (Admin)#Sulu/SFLDemoBundle/Resources/config/router_admin.ymlsulu_sfl_demo_homepage: path: / defaults: { _controller: SuluSFLDemoBundle:Default:admin }

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Routing (Admin)#Sulu/SFLDemoBundle/Resources/config/router_admin.ymlsulu_sfl_demo_homepage: path: / defaults: { _controller: SuluSFLDemoBundle:Default:admin }

#app/config/admin/router.ymlsulu_sfldemo: prefix: /admin/sfldemo resource: "@SuluSFLDemoBundle/Resources/config/router_admin.yml"

Controller

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sinn und Zweck

– Content über Sulu managen

– Daten manipulieren

– Daten adaptieren

– Alternative Templates

– Context sensitive Darstellung

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

Custom Controller

Mr. Sulu

Mr. Sulu

Mr. ElasticSearch-Content

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Controller<?phpnamespace Sulu\SFLDemoBundle\Controller;use Sulu\Bundle\WebsiteBundle\Controller\WebsiteController;use Sulu\Component\Content\Compat\StructureInterface;

class PageController extends WebsiteController{ public function indexAction(StructureInterface $structure, $preview = false, $partial = false ) { $result = $this->get('elasticsearch')->currentIssues(); return $this->renderStructure($structure, $result, $preview, $partial); }}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Page Configuration<!-- app/Resources/pages/default.xml --><?xml version="1.0" ?><template xmlns="http://schemas.sulu.io/template/template"> <key>default</key> <view>ClientWebsiteBundle:templates:default</view> <controller>SuluWebsiteBundle:Default:index</controller> <cacheLifetime>2400</cacheLifetime> <meta> <title lang="en">Default</title> </meta> <properties> <property name="title" type="text_line" mandatory="true"> <meta> <title lang="en">Title</title> </meta> <tag name="sulu.rlp.part"/> </property> </properties></template>

Event Listener

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sinn und Zweck

– Auf Ereignisse reagieren

– Ereignisse modifizieren

– Ereignisse manipulieren

– Ereignisse validieren

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

Mr. Sulu

Mr. Sulu

Mrs. Intranet-Pusher

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Event Subscriber<?phpnamespace Sulu\SFLDemoBundle\EventListener;use Sulu\Component\Content\Mapper\Event\ContentNodeEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Sulu\Component\Content\Mapper\ContentEvents;class EventSubscriber implements EventSubscriberInterface{ public static function getSubscribedEvents() { return [ ContentEvents::NODE_POST_SAVE => 'onContentNodePostSave' ]; } public function onContentNodePostSave(ContentNodeEvent $event) { #push content to intranet }}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

services.yml#Sulu/SFLDemoBundle/Resources/config/services.ymlservices: sulu.sfldemo.event_subscriber: class: Sulu\SFLDemoBundle\EventListener\EventSubscriber tags: - { name: kernel.event_subscriber }

+----------------------+| Event |+----------------------+| persist || hydrate || remove || refresh || copy || move || create || clear || find || reorder || flush || query.create || query.create_builder || query.execute || configure_options |+----------------------+

API

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Sinn und Zweck

– Frontend App

– Webapp

– Mobile App

– Cron

– …

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Custom app

Mrs. SPA

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

jQuery-Implementierungfunction SuluAPI() {

var config = {BASE_URL: "/",LOGIN_URL: "admin/login_check",API_URL: "admin/api/"

};var login = function(username, password, cb) {

$.ajax({url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};var api = function(ap, cb, data, method) {

var obj = {url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}var checkLogin = function(cb) {

api("languages", function(success, response) {if(success) cb(true, response);else cb(false, response);

});}return {

login: login,config: config,api: api,checkLogin: checkLogin

}}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

jQuery-Implementierungfunction SuluAPI() {

var config = {BASE_URL: "/",LOGIN_URL: "admin/login_check",API_URL: "admin/api/"

};var login = function(username, password, cb) {

$.ajax({url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};var api = function(ap, cb, data, method) {

var obj = {url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}var checkLogin = function(cb) {

api("languages", function(success, response) {if(success) cb(true, response);else cb(false, response);

});}return {

login: login,config: config,api: api,checkLogin: checkLogin

}}

var login = function(username, password, cb) {$.ajax({

url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

jQuery-Implementierungfunction SuluAPI() {

var config = {BASE_URL: "/",LOGIN_URL: "admin/login_check",API_URL: "admin/api/"

};var login = function(username, password, cb) {

$.ajax({url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};var api = function(ap, cb, data, method) {

var obj = {url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}var checkLogin = function(cb) {

api("languages", function(success, response) {if(success) cb(true, response);else cb(false, response);

});}return {

login: login,config: config,api: api,checkLogin: checkLogin

}}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

jQuery-Implementierungfunction SuluAPI() {

var config = {BASE_URL: "/",LOGIN_URL: "admin/login_check",API_URL: "admin/api/"

};var login = function(username, password, cb) {

$.ajax({url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};var api = function(ap, cb, data, method) {

var obj = {url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}var checkLogin = function(cb) {

api("languages", function(success, response) {if(success) cb(true, response);else cb(false, response);

});}return {

login: login,config: config,api: api,checkLogin: checkLogin

}}

var api = function(ap, cb, data, method) {var obj = {

url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

jQuery-Implementierungfunction SuluAPI() {

var config = {BASE_URL: "/",LOGIN_URL: "admin/login_check",API_URL: "admin/api/"

};var login = function(username, password, cb) {

$.ajax({url: config.BASE_URL + config.LOGIN_URL, data: {

_username: username, _password: password

}, method: "post",success: function(response) {

cb(true, response);}, error: function(response) {

cb(false, response);}

});};var api = function(ap, cb, data, method) {

var obj = {url: config.BASE_URL + config.API_URL + ap,success: function(response) {

cb(response, response);}, error: function(response) {

cb(false, response);}

};if(data) obj.data = data;if(method) obj.method = method;$.ajax(obj);

}var checkLogin = function(cb) {

api("languages", function(success, response) {if(success) cb(true, response);else cb(false, response);

});}return {

login: login,config: config,api: api,checkLogin: checkLogin

}}

➜sulu-standard app/console router:debug | grep "/admin/api" get_tag_fields GET ANY ANY /admin/api/tags/fields.{_format} put_tag_fields PUT ANY ANY /admin/api/tags/fields.{_format} get_tag GET ANY ANY /admin/api/tags/{id}.{_format} get_tags GET ANY ANY /admin/api/tags.{_format} post_tag POST ANY ANY /admin/api/tags.{_format} put_tag PUT ANY ANY /admin/api/tags/{id}.{_format} delete_tag DELETE ANY ANY /admin/api/tags/{id}.{_format} post_tag_merge POST ANY ANY /admin/api/tags/merge.{_format} patch_tagtags PATCH ANY ANY /admin/api/tags.{_format} fields_contact GET ANY ANY /admin/api/contacts/fields.{_format} get_contacts GET ANY ANY /admin/api/contacts.{_format} delete_contact DELETE ANY ANY /admin/api/contacts/{id}.{_format} get_contact GET ANY ANY /admin/api/contacts/{id}.{_format} post_contact POST ANY ANY /admin/api/contacts.{_format} put_contact PUT ANY ANY /admin/api/contacts/{id}.{_format} fields_account GET ANY ANY /admin/api/accounts/fields.{_format} multipledeleteinfo_account GET ANY ANY /admin/api/accounts/multipledeleteinfo.{_format} get_account GET ANY ANY /admin/api/accounts/{id}.{_format} get_account_contacts GET ANY ANY /admin/api/accounts/{id}/contacts.{_format} get_account_addresses GET ANY ANY /admin/api/accounts/{id}/addresses.{_format} put_account_contacts PUT ANY ANY /admin/api/accounts/{accountId}/contacts/{contactId}.{_format} delete_account_contacts DELETE ANY ANY /admin/api/accounts/{accountId}/contacts/{contactId}.{_format} get_accounts GET ANY ANY /admin/api/accounts.{_format} post_account POST ANY ANY /admin/api/accounts.{_format} put_account PUT ANY ANY /admin/api/accounts/{id}.{_format} patch_account PATCH ANY ANY /admin/api/accounts/{id}.{_format} delete_account DELETE ANY ANY /admin/api/accounts/{id}.{_format} get_account_deleteinfo GET ANY ANY /admin/api/accounts/{id}/deleteinfo.{_format} get_contact_title GET ANY ANY /admin/api/contact/titles/{id}.{_format} get_contact_titles GET ANY ANY /admin/api/contact/titles.{_format} post_contact_title POST ANY ANY /admin/api/contact/titles.{_format} put_contact_title PUT ANY ANY /admin/api/contacts/{id}/title.{_format} delete_contact_title DELETE ANY ANY /admin/api/contact/titles/{id}.{_format} patch_contact_title PATCH ANY ANY /admin/api/contact/titles.{_format} get_position GET ANY ANY /admin/api/contact/positions/{id}.{_format} get_positions GET ANY ANY /admin/api/contact/positions.{_format} post_position POST ANY ANY /admin/api/contact/positions.{_format} put_position PUT ANY ANY /admin/api/positions/{id}.{_format} delete_position DELETE ANY ANY /admin/api/contact/positions/{id}.{_format} patch_position PATCH ANY ANY /admin/api/contact/positions.{_format}

get_nodes GET ANY ANY /admin/api/nodes.{_format} put_node PUT ANY ANY /admin/api/nodes/{uuid}.{_format} post_node POST ANY ANY /admin/api/nodes.{_format} delete_node DELETE ANY ANY /admin/api/nodes/{uuid}.{_format} post_node_trigger POST ANY ANY /admin/api/nodes/{uuid}.{_format} get_node_seo GET ANY ANY /admin/api/nodes/{uuid}/seo.{_format} post_node_seo POST ANY ANY /admin/api/nodes/{uuid}/seos.{_format} get_webspace_localizations GET ANY ANY /admin/api/webspace/localizations.{_format} get_collection_fields GET ANY ANY /admin/api/collection/fields.{_format} put_collection_fields PUT ANY ANY /admin/api/collection/fields.{_format} get_collection GET ANY ANY /admin/api/collections/{id}.{_format} get_collections GET ANY ANY /admin/api/collections.{_format} post_collection POST ANY ANY /admin/api/collections.{_format} put_collection PUT ANY ANY /admin/api/collections/{id}.{_format} delete_collection DELETE ANY ANY /admin/api/collections/{id}.{_format} post_collection_trigger POST ANY ANY /admin/api/collections/{id}.{_format} cget_media GET ANY ANY /admin/api/media.{_format} get_media_fields GET ANY ANY /admin/api/media/fields.{_format} get_media GET ANY ANY /admin/api/media/{id}.{_format} post_media POST ANY ANY /admin/api/media.{_format} put_media PUT ANY ANY /admin/api/media/{id}.{_format} delete_media DELETE ANY ANY /admin/api/media/{id}.{_format} post_media_trigger POST ANY ANY /admin/api/media/{id}.{_format} get_category_fields GET ANY ANY /admin/api/categories/fields.{_format} get_category GET ANY ANY /admin/api/categories/{id}.{_format} get_category_children GET ANY ANY /admin/api/categories/{key}/children.{_format} get_categories GET ANY ANY /admin/api/categories.{_format} post_category POST ANY ANY /admin/api/categories.{_format} put_category PUT ANY ANY /admin/api/categories/{id}.{_format} patch_category PATCH ANY ANY /admin/api/categories/{id}.{_format} delete_category DELETE ANY ANY /admin/api/categories/{id}.{_format} get_snippets GET ANY ANY /admin/api/snippets.{_format} get_snippet GET ANY ANY /admin/api/snippets/{uuid}.{_format} post_snippet POST ANY ANY /admin/api/snippets.{_format} put_snippet PUT ANY ANY /admin/api/snippets/{uuid}.{_format} delete_snippet DELETE ANY ANY /admin/api/snippets/{uuid}.{_format} get_snippet_fields GET ANY ANY /admin/api/snippet/fields.{_format} cget_snippet_types GET ANY ANY /admin/api/snippet/types.{_format} get_snippet_types GET ANY ANY /admin/api/snippet/types.{_format} get_languages GET ANY ANY /admin/api/languages.{_format} get_localizations GET ANY ANY /admin/api/localizations.{_format}

© 2015 MASSIVE ART WebServices GmbH | www.massiveart.com

API Security Roles

Summary

Sulu and the other guys

© 2015 MASSIVE ART WebServices GmbH | www.massiveart.com

…so Sulu is there…

© 2015 MASSIVE ART WebServices GmbH | www.massiveart.com

…ready to play…

© 2015 MASSIVE ART WebServices GmbH | www.massiveart.com

…with the guys hanging around at your server!

Mr. Sulu

Mr. Sulu

Mr. SAP-Connector

Mr. Sulu

Mr. ElasticSearch-Content

Mr. SAP-Connector

Mr. Sulu

Mr. ElasticSearch-Content

Mr. SAP-Connector

Mrs. Intranet-Pusher

© 2015 | Sulu® is released under the terms of the MIT license | www.sulu.io

Community

– github.com/sulu-io

– docs.sulu.io

– twitter.com/sulu_io

– stackoverflow.com/questions/tagged/sulu

– sulu.io/contact#Slack

– We’d love to learn from your feedback!

Meet us at the Hack Day!

http://joind.in/talk/view/15070