SlideShare a Scribd company logo
Decoupling Content Management
   with Create.js and PHPCR
Henri Bergius

           Director of R&D
           Nemein Berlin

           @bergie

           bergie.iki.fi
github.com/bergie/noflo
github.com/bergie/phpflo
Your CMS is a monolith


        Content
       Management
         System




        Database
        Database
"We like the user interface, but our 
  IT doesn't 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

       Content
      Management
        System

                              Web Framework




Database       File system   Content Repository
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
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
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. 
“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




              Web Framework
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 Create's 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
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. 
Symfony CMF


         Friday 15:00, Track A
          Lukas Kahwe Smith

Build your decoupled CMS with Symfony2
PHPCR


The 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. 
PHPCR is a collection of interfaces
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
"Developers write against a single API

Implementations can be chosen based 
      on deployment needs"
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
“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

        Nodes can also have child nodes
Connecting to a repository: Jackrabbit
●
    Start Jackrabbit:
    $ java -jar jackrabbit-standalone-2.4.1.jar
●
    Connect to repository:
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-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
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

More Related Content

PDF
Decoupling Content Management
PDF
Create - Decoupled CMS interface
PDF
Create.js - Inline editing for any website
PDF
Midgard Create and editing content via RDFa
ODP
CreateJS hackathon in Zurich
PDF
Decoupling Content Management with Create.js
PDF
VIE - Using RDFa to make content editable
PDF
Midgard & Nemein - when an open source project and company evolve together
Decoupling Content Management
Create - Decoupled CMS interface
Create.js - Inline editing for any website
Midgard Create and editing content via RDFa
CreateJS hackathon in Zurich
Decoupling Content Management with Create.js
VIE - Using RDFa to make content editable
Midgard & Nemein - when an open source project and company evolve together

What's hot (20)

PDF
Create JS - A new kind of web editing interface
PDF
Midgard2: Content repository for desktop and the web
PDF
Midgard Create and VIE
PDF
Semantic editor
PDF
PHPCR - Standard Content Repository for PHP
PDF
Symfony2 for Midgard Developers
PDF
Proggis - Business Analytics with Linked Data
PPT
Full stack JavaScript - the folly of choice
PPT
Introduction to JavaScript Full Stack
PDF
Modern Javascript
PPTX
Віталій Бобров — Web components, Polymer and Drupal
PDF
Moving from PHP to a nodejs full stack CMS
PDF
Keystone.js 101
PDF
CollegeDiveIn presentation
PDF
Come abbiamo scalato Dazn con micro-architetture
PDF
Refactoring to a Single Page Application
PDF
Front end architecture
PDF
Modern web application devlopment workflow
PDF
Gatsby (Code.Talks) 2019
Create JS - A new kind of web editing interface
Midgard2: Content repository for desktop and the web
Midgard Create and VIE
Semantic editor
PHPCR - Standard Content Repository for PHP
Symfony2 for Midgard Developers
Proggis - Business Analytics with Linked Data
Full stack JavaScript - the folly of choice
Introduction to JavaScript Full Stack
Modern Javascript
Віталій Бобров — Web components, Polymer and Drupal
Moving from PHP to a nodejs full stack CMS
Keystone.js 101
CollegeDiveIn presentation
Come abbiamo scalato Dazn con micro-architetture
Refactoring to a Single Page Application
Front end architecture
Modern web application devlopment workflow
Gatsby (Code.Talks) 2019
Ad

Similar to Decoupling Content Management with Create.js and PHPCR (20)

KEY
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
KEY
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
PDF
flickr's architecture & php
PDF
A content repository for your PHP application or CMS?
PDF
Flickr Architecture Presentation
PDF
Flickr Architecture Presentation
PPTX
Agile Tools for PHP
PPTX
Ran Mizrahi - Symfony2 meets Drupal8
PDF
Implementing a JSR-283 Content Repository in PHP
PDF
A Content Repository for TYPO3 5.0
PDF
Modern php
PDF
Flickr and PHP - Cal Henderson
PDF
WordPress Code Architecture
PPS
Flickr Services
PPS
Flickr Services
PPTX
Webdevcon Keynote hh-2012-09-18
PDF
PPTX
JavaScript on the server - Node.js
PPS
Flickr Php
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
flickr's architecture & php
A content repository for your PHP application or CMS?
Flickr Architecture Presentation
Flickr Architecture Presentation
Agile Tools for PHP
Ran Mizrahi - Symfony2 meets Drupal8
Implementing a JSR-283 Content Repository in PHP
A Content Repository for TYPO3 5.0
Modern php
Flickr and PHP - Cal Henderson
WordPress Code Architecture
Flickr Services
Flickr Services
Webdevcon Keynote hh-2012-09-18
JavaScript on the server - Node.js
Flickr Php
Ad

More from Henri Bergius (15)

PDF
Bisnesdata - Tietojärjestelmien kätköistä tableteille
PDF
NoFlo - Flow-Based Programming for Node.js
PDF
Location awareness in MeeGo
PDF
Midgard2 - Content Repository for mobile applications
PDF
Midgard2 Content Repository at FSCONS 2009
ODP
Location-aware applications with GeoClue
PDF
ODP
Location-aware desktop
PDF
Midgard and the Interactive Knowledge System
PDF
Midgard 2 - The cloud you can control
PDF
Attention Profiling for smarter web services
PDF
GeoClue - geo-information framework
PDF
GeoClue - geo-information framework
PDF
GeoClue and Gypsy
ODP
Nemein ja Midgard - yritys open source -projektin keskipisteessä
Bisnesdata - Tietojärjestelmien kätköistä tableteille
NoFlo - Flow-Based Programming for Node.js
Location awareness in MeeGo
Midgard2 - Content Repository for mobile applications
Midgard2 Content Repository at FSCONS 2009
Location-aware applications with GeoClue
Location-aware desktop
Midgard and the Interactive Knowledge System
Midgard 2 - The cloud you can control
Attention Profiling for smarter web services
GeoClue - geo-information framework
GeoClue - geo-information framework
GeoClue and Gypsy
Nemein ja Midgard - yritys open source -projektin keskipisteessä

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Spectroscopy.pptx food analysis technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Empathic Computing: Creating Shared Understanding
PPT
Teaching material agriculture food technology
20250228 LYD VKU AI Blended-Learning.pptx
Review of recent advances in non-invasive hemoglobin estimation
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectroscopy.pptx food analysis technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
The Rise and Fall of 3GPP – Time for a Sabbatical?
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Weekly Chronicles - August'25 Week I
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Programs and apps: productivity, graphics, security and other tools
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Big Data Technologies - Introduction.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
MYSQL Presentation for SQL database connectivity
MIND Revenue Release Quarter 2 2025 Press Release
Empathic Computing: Creating Shared Understanding
Teaching material agriculture food technology

Decoupling Content Management with Create.js and PHPCR