Decoupling Content Management

Download Decoupling Content Management

Post on 14-May-2015

957 views

Category:

Technology

2 download

Embed Size (px)

DESCRIPTION

Presentation from DrupalCon Munich 2012

TRANSCRIPT

<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 bergie.iki.fi 3. "TheMidgardProjectisborn." Launching our first Open Source CMS effort bergie.iki.fi, 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 Communitywww.iks-project.eu 11. decoupledcms.org 12. Create.jsCreate.jsisacomprehensivewebediting interfaceforContentManagementSystems.Itisdesignedtoprovideamodern,fullybrowser basedHTML5environmentformanaging content.Createcanbeadaptedtoworkon almostanycontentmanagementbackend. 13. BuildaCMS,noformsallowed 14. http://hallojs.org &amp; http://github.com/bergie/blogsiple 15. http://aloha-editor.org 16. Manage Collections Content can be added to any collections 17. Image handling 18. Tagging and annotationshttp://szabyg.github.com/annotate.js/ 19. Never lose content 20. Symfony CMF 21. OpenCms 22. Drupal 23. Drupal 24. Drupal 25. Create.js for Drupaldrupal.org/project/create 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 http://groups.drupal.org/node/237443 33. Framework for Semantic Interaction - viejs.org 34. Create.js and PHPCreatePHPGenerate RDFa annotations from your content modelhttps://github.com/flack/createphpDrupal CreateDrupal 7 integration of Create.jshttp://drupal.org/project/createLiipVieBundleSymfony2 integration of Create.jshttps://github.com/liip/LiipVieBundle 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, ...jackalope.github.com midgard-project.org/phpcr 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 createjs.org hallojs.org viejs.org phpcr.github.com iks-project.eu </p>