135
Sulu and the other guys Wie Sulu mit anderen Applikationen zusammenspielt.

Sulu and the Other Guys - Symfony Live Berlin 2015

  • Upload
    sulu

  • View
    859

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Sulu and the Other Guys - Symfony Live Berlin 2015

Sulu and the other guysWie Sulu mit anderen Applikationen zusammenspielt.

Page 2: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 3: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 4: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 5: Sulu and the Other Guys - Symfony Live Berlin 2015

Wer sind wir?

Page 6: Sulu and the Other Guys - Symfony Live Berlin 2015

Ursprung?

Page 7: Sulu and the Other Guys - Symfony Live Berlin 2015

Ursprung?

Page 8: Sulu and the Other Guys - Symfony Live Berlin 2015

Ursprung?

Page 9: Sulu and the Other Guys - Symfony Live Berlin 2015

Ursprung?

Page 10: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 11: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 12: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 13: Sulu and the Other Guys - Symfony Live Berlin 2015

Was ist Sulu?Offen, modern & schnell

Page 14: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Sulu

Page 15: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Sulu

Page 16: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 17: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 18: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 19: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 20: Sulu and the Other Guys - Symfony Live Berlin 2015

Von Fahrrädern und LKWsWie fährt Sulu?

Page 21: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 22: Sulu and the Other Guys - Symfony Live Berlin 2015

Fahrrad

Jeder kann es fahren, viele können es

reparieren.(WordPress etc.)

Ƕ

Page 23: Sulu and the Other Guys - Symfony Live Berlin 2015

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.)

Page 24: Sulu and the Other Guys - Symfony Live Berlin 2015

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.)

Page 25: Sulu and the Other Guys - Symfony Live Berlin 2015

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.)

Page 26: Sulu and the Other Guys - Symfony Live Berlin 2015

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.)

Page 27: Sulu and the Other Guys - Symfony Live Berlin 2015

CMS? Again? WTF?

Page 28: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 29: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 30: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 31: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 32: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 33: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 34: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 35: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 36: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 37: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 38: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 39: Sulu and the Other Guys - Symfony Live Berlin 2015

Für Entwickler

Page 40: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 41: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Ein bisschen PHPCR?

Page 42: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Einfache Installation

Page 43: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Einfache Installation

Page 44: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 45: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Konfigurierbar

Page 46: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Konfigurierbar

Page 47: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Konfigurierbar

Page 48: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Konfigurierbar Webspace

Page 49: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Konfigurierbar Webspace

Page Template

Page 50: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Wunderbarer Administrationsbereich

Page 51: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Ohne Frontend / Ohne Theme

Page 52: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 53: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 54: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 55: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 56: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 57: Sulu and the Other Guys - Symfony Live Berlin 2015

Sulu and the other guys

Page 58: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 59: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 60: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 61: Sulu and the Other Guys - Symfony Live Berlin 2015

Router

Page 62: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 63: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Page 64: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 65: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 66: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 67: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 68: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Page 69: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mr. SAP-Connector

Page 70: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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); }}

Page 71: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Zwei Kernel

– Website

- Frontend

– Admin

- Administrationsbereich

- Security

Page 72: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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); }}

Page 73: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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 }

Page 74: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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"

Page 75: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 76: Sulu and the Other Guys - Symfony Live Berlin 2015

Controller

Page 77: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 78: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router

Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Page 79: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 80: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 81: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 82: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

Page 83: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

Page 84: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router

Sulu

ORM

Twig

WebsiteController HTML

RestController

PHPCR

Page 85: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 86: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 87: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Page 88: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mr. ElasticSearch-Content

Page 89: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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); }}

Page 90: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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>

Page 91: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 92: Sulu and the Other Guys - Symfony Live Berlin 2015

Event Listener

Page 93: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 94: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Page 95: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 96: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 97: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 98: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Page 99: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mrs. Intranet-Pusher

Page 100: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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 }}

Page 101: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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 }

Page 102: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 103: Sulu and the Other Guys - Symfony Live Berlin 2015

API

Page 104: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Sinn und Zweck

– Frontend App

– Webapp

– Mobile App

– Cron

– …

Page 105: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Was passiert?

Router Sulu

ORM

TwigWebsiteController HTML

RestController

PHPCR

Page 106: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 107: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

Page 108: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 109: Sulu and the Other Guys - Symfony Live Berlin 2015

Mrs. SPA

Page 110: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

}}

Page 111: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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);}

});};

Page 112: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

}}

Page 113: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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);

}

Page 114: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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

}}

Page 115: Sulu and the Other Guys - Symfony Live Berlin 2015

➜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}

Page 116: Sulu and the Other Guys - Symfony Live Berlin 2015

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}

Page 117: Sulu and the Other Guys - Symfony Live Berlin 2015

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

API Security Roles

Page 118: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 119: Sulu and the Other Guys - Symfony Live Berlin 2015

Summary

Page 120: Sulu and the Other Guys - Symfony Live Berlin 2015

Sulu and the other guys

Page 121: Sulu and the Other Guys - Symfony Live Berlin 2015

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

…so Sulu is there…

Page 122: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 123: Sulu and the Other Guys - Symfony Live Berlin 2015

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

…ready to play…

Page 124: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 125: Sulu and the Other Guys - Symfony Live Berlin 2015

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

…with the guys hanging around at your server!

Page 126: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 127: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Page 128: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mr. SAP-Connector

Page 129: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mr. ElasticSearch-Content

Mr. SAP-Connector

Page 130: Sulu and the Other Guys - Symfony Live Berlin 2015

Mr. Sulu

Mr. ElasticSearch-Content

Mr. SAP-Connector

Mrs. Intranet-Pusher

Page 131: Sulu and the Other Guys - Symfony Live Berlin 2015

© 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!

Page 132: Sulu and the Other Guys - Symfony Live Berlin 2015

Meet us at the Hack Day!

Page 133: Sulu and the Other Guys - Symfony Live Berlin 2015

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

Page 134: Sulu and the Other Guys - Symfony Live Berlin 2015
Page 135: Sulu and the Other Guys - Symfony Live Berlin 2015