Decoupling Content Management

Download Decoupling Content Management

Post on 14-May-2015




2 download

Embed Size (px)


Presentation from DrupalCon Munich 2012


<ul><li>1.Au g 22nd 20 12Decoupling Content Management with Create.js and PHPCR</li></ul> <p>2. Henri Bergius Director of R&amp;D Nemein Berlin @bergie 3. "TheMidgardProjectisborn." Launching our first Open Source CMS effort, April 25th 1998 4. Your CMS is a monolith ContentManagementSystem DatabaseFile System 5. "Weliketheuserinterface,butourITdoesntwanttorunPHP" 6. "Wewantedtohavea.NetCMS,butourusershatetheUI" 7. "MarketingwantsthisCMS,but wecantdevelopourapponit" 8. Decoupling Content Management Monolithic approach Decoupled approachWeb Editing Tool ContentManagementSystemWeb FrameworkDatabase File System Content Repository 9. Clean separation of concernsWeb Editing ToolTools that user needs to create,manipulate, and publish contentWeb FrameworkRendering and serving content andhandling business logicContent RepositoryData storage and retrieval. Accesscontrols, validations, full-text search 10. Semantic CMS 11. 12. Create.jsCreate.jsisacomprehensivewebediting interfaceforContentManagementSystems.Itisdesignedtoprovideamodern,fullybrowser basedHTML5environmentformanaging content.Createcanbeadaptedtoworkon almostanycontentmanagementbackend. 13. BuildaCMS,noformsallowed 14. &amp; 15. 16. Manage Collections Content can be added to any collections 17. Image handling 18. Tagging and annotations 19. Never lose content 20. Symfony CMF 21. OpenCms 22. Drupal 23. Drupal 24. Drupal 25. Create.js for 26. Interfacing with Create.jsWeb Editing ToolHTML+RDFaJSON-LD over RESTWeb Framework 27. RDFa: Your Content, Explained 28. RDFa: Your Content, Explained 29. Suddenly JavaScript can understand 30. Bonus: SEO 31. JSON-LD 32. "Ourrecommendationatthistimeistomake JSONLDourprimarysupportedwebservicesdataformat.Itisquiteflexible,andsupportsthe selfdiscoverycapabilitiesthatwewantto support."Drupal WSCCI Web Services Format Sprint Report 33. Framework for Semantic Interaction - 34. Create.js and PHPCreatePHPGenerate RDFa annotations from your content model CreateDrupal 7 integration of Create.js integration of Create.js 35. PHPCRThePHPContentRepositoryisanadaptionoftheJavaContentRepository(JCR)standard,anopenAPIspecificationdefinedinJSR283. TheAPIdefineshowtohandlehierarchicalsemistructureddatainaconsistentway. 36. PHPCR is a collection of interfaces 37. PHPCR is a collection of tests 38. Same API, multiple repositoriesJackalope Midgard2 Apache Jackrabbit: GObject-orientedJava-based repositoryrepository libraryserver, accessible accessible throughthrough WebDAV PHP extension Doctrine DBAL: pure- Python, JavaScript,PHP repository library Java, 39. "DeveloperswriteagainstasingleAPIImplementationscanbechosenbasedondeploymentneeds" 40. Repository capabilitiesTree access XML import andAccess by UUID exportWorkspaces PermissionsVersioning Capability discoveryMulti-value properties ObservationQueries: SQL2, QOM Locking &amp; Transactions 41. Simplestuffshouldbeeasy,butcomplexstuffshouldstillbepossible 42. PHPCR 43. In PHPCR, all content is stored in a tree of nodesNodes have a name, a type, and a set ofpropertiesNodes can also have child nodes 44. Connecting to a repository: JackrabbitStart Jackrabbit:$ java -jar jackrabbit-standalone-2.4.1.jarConnect to repository: 45. This is the only repository-specific part 46. Working with the tree 47. About Node typesNode types determine what properties and what kind ofchild nodes a node can haveSome built-in types: nt:file, nt:folder, nt:resource,nt:unstructuredNode types can be amended with mixin types, likemix:lastModified, mix:languageMost repositories allow you to define your own typesRecommendation:Start with nt:unstructured, add more strict definitionswhen you know your data model 48. Queries: SQL2 49. Queries: Query Object Model 50. Versioning: enable 51. Versioning: commit 52. Versioning: restore 53. Export and import 54. Export and import 55. Your decoupled CMSCreate.js Drupal PHPCR 56. Decoupling means collaboration 57. Questions? @bergie </p>