symfony cmf experiences

39
Een Open Source Online Management System op basis van het Symfony2 CMF

Upload: mdekrijger

Post on 05-Jul-2015

583 views

Category:

Technology


2 download

DESCRIPTION

Symfony Based Online Management System based on Symfony CMF

TRANSCRIPT

Page 1: Symfony CMF experiences

Een Open Source Online Management System op basis van het Symfony2 CMF

Page 2: Symfony CMF experiences

Wie ben ik

Voorliefde voor:● Architectuur● UML● Agile

Page 3: Symfony CMF experiences

Deze presentatie

● Hoe zijn we tot een nieuw CMS gekomen gebaseerd op het Symfony CMF

● Uitleg over wat Symfony CMF is● Implementatieproblemen● Roadmap

Page 4: Symfony CMF experiences

Hoe zijn we gekomen tot een nieuw CMS

Page 5: Symfony CMF experiences

Monolithische systemen

● One size fits all syndroom● Beoogt gebruiksklaar product te zijn● Uitzonderingen en maatwerk worden

standaard

Page 6: Symfony CMF experiences

Monolithische systemen

● One size fits all syndroom● Beoogt gebruiksklaar product te zijn● Uitzonderingen en maatwerk worden

standaard

Bugfixes in core

Page 7: Symfony CMF experiences

Plugin/module systemen

● Maatwerk loskoppelen van core● Nog steeds monolitisch● Simplistische plugin architectuur of veel

dependencies van core

Page 8: Symfony CMF experiences

Plugin/module systemen

● Maatwerk loskoppelen van core● Nog steeds monolitisch● Simplistische plugin architectuur of veel

dependencies van core

Making patches

Page 9: Symfony CMF experiences

Groeiende architectuur behoefte

Bron: Automatiseringsgids 22 (6-12-2012) – Gevraagd nieuwe Agile IT-principesBron: Automatiseringsgids 22 (6-12-2012) – Gevraagd nieuwe Agile IT-principes

Page 10: Symfony CMF experiences

Groeiende architectuur behoefte

Bron: Automatiseringsgids 22 (6-12-2012) – Gevraagd nieuwe Agile IT-principesBron: Automatiseringsgids 22 (6-12-2012) – Gevraagd nieuwe Agile IT-principes

Page 11: Symfony CMF experiences

Doelstelling van nieuw CMS

Schaalbare oplossing

+ Open source

+ Ruimte voor maatwerk

+ Archipel principes

+ Uitgebreide standaard voor module/plugin architectuur

Page 12: Symfony CMF experiences

Doelstelling van nieuw CMS

Schaalbare oplossing

+ Open source

+ Ruimte voor maatwerk

+ Archipel principes

+ Uitgebreide standaard voor module/plugin architectuur

= Symfony2

Page 13: Symfony CMF experiences

Een CMS op Symfony 2

● Functionele verantwoordelijkheden opdelen in zelfstandige functionerende “eilandjes van code”

● Aan elkaar koppelen dmv de Symfony2 DIC

Page 14: Symfony CMF experiences
Page 15: Symfony CMF experiences

Symfony CMF

Content management framework,

not content management system● Use what you can● Replace what you need● Ignore what you do not need● Collection of modular tools to do content

management● Not a ready-to-use application for end users

Page 16: Symfony CMF experiences

Symfony CMF

● PHPCR (gebaseerd op JCR 2)– NoSQL

– Graph DB (Tree structures)

– Versioning van content

– Full text search

– Rechtenbeheer * (not yet)

Page 17: Symfony CMF experiences

Symfony CMF - PHPCR

● Drie hiërarchise bomen die je terug kunt vinden in CMF

Content Menu Routing

Page 18: Symfony CMF experiences

Symfony CMF

● Symfony 2 control flow

Page 19: Symfony CMF experiences

Symfony CMF

● Symfony 2 control flow

Page 20: Symfony CMF experiences

Symfony CMF

Page 21: Symfony CMF experiences

Symfony CMF - Content● Class - controller mapping in config.yml● Class - template mapping in config.yml● Hiërarchische dependencies

– Selectie/verwijderen (bijv blogpost → comments)

– Houd rekening met rechten

– Voorkom te diepe nesting (user → blogposts → comments)

Content Menu Routing

Page 22: Symfony CMF experiences

Implementatie

Page 23: Symfony CMF experiences

Data models en bundles

● Interfaces gebruiken om functionaliteit toe te voegen aan models (beter PHP 5.4 traits)– Doctrine Listeners op deze interfaces zetten voor

CRUD acties

– Sonata Admin extensions om forms uit te breiden (compiler pass van sonata)

– Dmv traits properties toevoegen

Page 24: Symfony CMF experiences

Voorbeeld

class Page implements SeoInterface, CallToActionInterface{

   protected $metaTitle;

   protected $metaDescription;

   protected $callToActions; ...

PageBundle, SeoBundle en CallToActionBundle

Page 25: Symfony CMF experiences

Node path generator

/**

 * @PHPCRODM\Document(referenceable=true)

 * @OMS\NodeNameCompiler(    class="PropertyNodeNameCompiler",    options={"pattern"="[title]"},    basePath="pages/landingpage")

 */

class LandingPage extends Page {...

Page 26: Symfony CMF experiences

Route generator

/**

 * @PHPCRODM\Document(referenceable=true)

 * @ROUTING\Routing(      routeName="[title]",      basepath="product"   )

 */

class Product extends Page {...

Page 27: Symfony CMF experiences

Route collection per document

● Auto route ( meeveranderende route op basis van bijv titel )

● Primary route ( intial route, aka permalink)● Default route (welke route gebruikt moet

worden, bijv bij menu)● Redirect route(s) (alle andere routes dan

default route)

Page 28: Symfony CMF experiences

Referential integrity

Page 29: Symfony CMF experiences

Zelf bouwen

● Path generator (mkdir -p)● Path validation● Sonata phpcr admin uitbreidingen● Multi site router

Page 30: Symfony CMF experiences

Implementatieproblemen

Page 31: Symfony CMF experiences

Menu is geen menu

● Menu is geen menu– Menu,

– Kruimelpad

– Sitemap

Content Menu Routing

Page 32: Symfony CMF experiences

Routing concept => nok

http://candystore.com/chocolate/m-and-ms● Object conversions● Chocolate is node en chocolate moet een link

worden● Of hele link moet een redirect worden naar

http://m-and-ms.com

Object conversions tricky in PHPCR, en groot riscico bij verwijderen/wijzigen van tussenliggende nodes

Page 33: Symfony CMF experiences

PHPCR / Jackalope● Document caching gebeurt zowel in Doctrine

ODM als in Jackalope PHPCR● Validation van nodenames ontbreekt● Referential integrity ontbreekt

Page 34: Symfony CMF experiences

Innovatie risico

● Bugs en (deels) ongeteste code● Sonata niet “af” genoeg voor phpcr● Layout van Sonata● Zie mailinglist cmf-devs

Page 35: Symfony CMF experiences

● Jackrabbit explorer

http://blog.netvlies.nl/techniek-code/phpcr-repository-admin/

Page 36: Symfony CMF experiences

Screenshots

Page 37: Symfony CMF experiences

Screenshots

Page 38: Symfony CMF experiences

Roadmap

● PR's voor reeds gebouwde functionaliteit● SOMS sandbox release● Meer mensen inspireren tot gebruik van CMF

Page 39: Symfony CMF experiences

Waar te beginnen

● cmf.symfony.com● Join mailinglist● Download sandbox