Your SlideShare is downloading. ×
0
Decoupling Content Management   with Create.js and PHPCR
Henri Bergius           Director of R&D           Nemein Berlin           @bergie           bergie.iki.fi
github.com/bergie/noflogithub.com/bergie/phpflo
Your CMS is a monolith        Content       Management         System        Database        Database
"We like the user interface, but our   IT doesnt want to run PHP"
"We wanted to have a .Net CMS,   but our users hate the UI"
Decoupling Content Management   Monolithic approach       Decoupled approach                              Web Editing Tool...
Clean separation of concerns      Web Editing Tool      Tools that user needs to create,      manipulate, and publish cont...
Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common      web development pr...
Create.js    Create.js is a comprehensive web editing  interface for Content Management Systems. It is designed to provide...
“Build a CMS, no forms allowed”
http://hallojs.org & http://github.com/bergie/blogsiple
http://aloha-editor.org
Manage Collections       Content can be added to       any collections
Image handling
Tagging and annotations    http://szabyg.github.com/annotate.js/
Never lose content
CMF Front-end Editor
OpenCms
Interfacing with Create.js              Web Editing Tool  HTML+RDFa                      JSON-LD over REST              We...
RDFa: Your Content, Explained
RDFa: Your Content, Explained
Suddenly JavaScript can understand
Bonus: SEO
Framework for Semantic Interaction - viejs.org
Create.js and PHP●    LiipVieBundle    Handle Creates RESTful JSON-LD communications with    Doctrine ODM    https://githu...
Symfony CMF The Symfony CMF project makes it easier for    developers to add CMS functionality to   applications built wit...
Symfony CMF         Friday 15:00, Track A          Lukas Kahwe SmithBuild your decoupled CMS with Symfony2
PHPCRThe PHP Content Repository is an adaption of the Java Content Repository (JCR) standard, an open API specification de...
PHPCR is a collection of interfaces
Same API, multiple repositories●    Jackalope                    ●                                     Midgard2    –   Apa...
"Developers write against a single APIImplementations can be chosen based       on deployment needs"
Repository capabilities●    Tree access              ●                                 XML import and●    Access by UUID  ...
“Simple stuff should be easy, but complex stuff should still be possible”
PHPCR
In PHPCR, all content is stored in a tree of nodes    Nodes have a name, a type, and a set of                  properties ...
Connecting to a repository: Jackrabbit●    Start Jackrabbit:    $ java -jar jackrabbit-standalone-2.4.1.jar●    Connect to...
This is the only repository-specific part
Working with the tree
About Node types●    Node types determine what properties and what kind of    child nodes a node can have●    Some built-i...
Queries: SQL2
Queries: Query Object Model
Versioning: enable
Versioning: commit
Versioning: restore
Export and import
Export and import
Your decoupled CMS      Create.js     Symfony CMF       PHPCR
Decoupling means collaboration
Questions?       @bergie       createjs.org       hallojs.org       viejs.org       phpcr.github.com       cmf.symfony.com
Upcoming SlideShare
Loading in...5
×

Decoupling Content Management with Create.js and PHPCR

2,816

Published on

Talk from Symfony Live 2012

Published in: Technology

Transcript of "Decoupling Content Management with Create.js and PHPCR"

  1. 1. Decoupling Content Management with Create.js and PHPCR
  2. 2. Henri Bergius Director of R&D Nemein Berlin @bergie bergie.iki.fi
  3. 3. github.com/bergie/noflogithub.com/bergie/phpflo
  4. 4. Your CMS is a monolith Content Management System Database Database
  5. 5. "We like the user interface, but our  IT doesnt want to run PHP"
  6. 6. "We wanted to have a .Net CMS,  but our users hate the UI"
  7. 7. Decoupling Content Management Monolithic approach Decoupled approach Web Editing Tool Content Management System Web FrameworkDatabase File system Content Repository
  8. 8. Clean separation of concerns Web Editing Tool Tools that user needs to create, manipulate, and publish content Web Framework Rendering and serving content and handling business logic Content Repository Data storage and retrieval. Access controls, validations, full-text search
  9. 9. Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common  web development problems. http://fabien.potencier.org/article/49/what-is-symfony2
  10. 10. Create.js Create.js is a comprehensive web editing  interface for Content Management Systems. It is designed to provide a modern, fully browser­ based HTML5 environment for managing  content. Create can be adapted to work on  almost any content management backend. 
  11. 11. “Build a CMS, no forms allowed”
  12. 12. http://hallojs.org & http://github.com/bergie/blogsiple
  13. 13. http://aloha-editor.org
  14. 14. Manage Collections Content can be added to any collections
  15. 15. Image handling
  16. 16. Tagging and annotations http://szabyg.github.com/annotate.js/
  17. 17. Never lose content
  18. 18. CMF Front-end Editor
  19. 19. OpenCms
  20. 20. Interfacing with Create.js Web Editing Tool HTML+RDFa JSON-LD over REST Web Framework
  21. 21. RDFa: Your Content, Explained
  22. 22. RDFa: Your Content, Explained
  23. 23. Suddenly JavaScript can understand
  24. 24. Bonus: SEO
  25. 25. Framework for Semantic Interaction - viejs.org
  26. 26. Create.js and PHP● LiipVieBundle Handle Creates RESTful JSON-LD communications with Doctrine ODM https://github.com/liip/LiipVieBundle● CreatePHP Generate RDFa annotations from your content model https://github.com/flack/createphp
  27. 27. Symfony CMF The Symfony CMF project makes it easier for  developers to add CMS functionality to  applications built with the Symfony2 PHP framework. Key development principles for the  provided set of bundles are scalability,  usability, documentation and testing. 
  28. 28. Symfony CMF Friday 15:00, Track A Lukas Kahwe SmithBuild your decoupled CMS with Symfony2
  29. 29. PHPCRThe PHP Content Repository is an adaption of the Java Content Repository (JCR) standard, an open API specification defined in JSR­283. The API defines how to handle hierarchical  semi­structured data in a consistent way. 
  30. 30. PHPCR is a collection of interfaces
  31. 31. Same API, multiple repositories● Jackalope ● Midgard2 – Apache Jackrabbit: – GObject-oriented Java-based repository repository library server, accessible accessible through through WebDAV PHP extension – Doctrine DBAL: pure- – Python, JavaScript, PHP repository library Java, ...● jackalope.github.com ● midgard-project.org/phpcr
  32. 32. "Developers write against a single APIImplementations can be chosen based  on deployment needs"
  33. 33. Repository capabilities● Tree access ● XML import and● Access by UUID export● Workspaces ● Permissions● Versioning ● Capability discovery● Multi-value properties ● Observation● Queries: SQL2, QOM ● Locking & Transactions
  34. 34. “Simple stuff should be easy, but complex stuff should still be possible”
  35. 35. PHPCR
  36. 36. In PHPCR, all content is stored in a tree of nodes Nodes have a name, a type, and a set of properties Nodes can also have child nodes
  37. 37. Connecting to a repository: Jackrabbit● Start Jackrabbit: $ java -jar jackrabbit-standalone-2.4.1.jar● Connect to repository:
  38. 38. This is the only repository-specific part
  39. 39. Working with the tree
  40. 40. About Node types● Node types determine what properties and what kind of child nodes a node can have● Some built-in types: nt:file, nt:folder, nt:resource, nt:unstructured● Node types can be amended with “mixin” types, like mix:lastModified, mix:language● Most repositories allow you to define your own types● Recommendation: Start with nt:unstructured, add more strict definitions when you know your data model
  41. 41. Queries: SQL2
  42. 42. Queries: Query Object Model
  43. 43. Versioning: enable
  44. 44. Versioning: commit
  45. 45. Versioning: restore
  46. 46. Export and import
  47. 47. Export and import
  48. 48. Your decoupled CMS Create.js Symfony CMF PHPCR
  49. 49. Decoupling means collaboration
  50. 50. Questions? @bergie createjs.org hallojs.org viejs.org phpcr.github.com cmf.symfony.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×