SlideShare a Scribd company logo
1 of 57
Download to read offline
Au
                               g   22
                                        nd
                                             20
                                               12




Decoupling Content Management
   with Create.js and PHPCR
Henri Bergius

           Director of R&D
           Nemein Berlin

           @bergie

           bergie.iki.fi
"The Midgard Project is born."

         Launching our first Open Source CMS effort
                         bergie.iki.fi, April 25th 1998
Your CMS is a monolith


             Content
            Management
              System




 Database                File System
"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"
"Marketing wants this CMS, but 
 we can't develop our app on it"
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
Semantic CMS Community
  www.iks-project.eu
decoupledcms.org
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
Symfony CMF
OpenCms
Drupal
Drupal
Drupal
Create.js for Drupal

drupal.org/project/create
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
JSON-LD
"Our recommendation at this time is to make 
 JSON­LD our primary supported web services 
data format. It is quite flexible, and supports the 
   self­discovery capabilities that we want to 
                     support."

            Drupal WSCCI Web Services Format Sprint Report
                     http://groups.drupal.org/node/237443
Framework for Semantic Interaction - viejs.org
Create.js and PHP
●
    CreatePHP
    Generate RDFa annotations from your content model
    https://github.com/flack/createphp
●
    Drupal Create
    Drupal 7 integration of Create.js
    http://drupal.org/project/create
●
    LiipVieBundle
    Symfony2 integration of Create.js
    https://github.com/liip/LiipVieBundle
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
PHPCR is a collection of tests
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




       Drupal




       PHPCR
Decoupling means collaboration
Questions?

       @bergie

       createjs.org
       hallojs.org
       viejs.org

       phpcr.github.com
       iks-project.eu

More Related Content

What's hot

Midgard2: Content repository for desktop and the web
Midgard2: Content repository for desktop and the webMidgard2: Content repository for desktop and the web
Midgard2: Content repository for desktop and the web
Henri Bergius
 
Proggis - Business Analytics with Linked Data
Proggis - Business Analytics with Linked DataProggis - Business Analytics with Linked Data
Proggis - Business Analytics with Linked Data
Henri Bergius
 
Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3
Karambir Singh Nain
 

What's hot (20)

Semantic editor
Semantic editorSemantic editor
Semantic editor
 
Midgard2: Content repository for desktop and the web
Midgard2: Content repository for desktop and the webMidgard2: Content repository for desktop and the web
Midgard2: Content repository for desktop and the web
 
Create JS - A new kind of web editing interface
Create JS  - A new kind of web editing interfaceCreate JS  - A new kind of web editing interface
Create JS - A new kind of web editing interface
 
Midgard Create and VIE
Midgard Create and VIEMidgard Create and VIE
Midgard Create and VIE
 
Proggis - Business Analytics with Linked Data
Proggis - Business Analytics with Linked DataProggis - Business Analytics with Linked Data
Proggis - Business Analytics with Linked Data
 
Symfony2 for Midgard Developers
Symfony2 for Midgard DevelopersSymfony2 for Midgard Developers
Symfony2 for Midgard Developers
 
WebDAV - April 15 2008
WebDAV - April 15 2008WebDAV - April 15 2008
WebDAV - April 15 2008
 
Connect your Javascript web app to ownCloud over the WebDAV interface
Connect your Javascript web app to ownCloud over the WebDAV interface Connect your Javascript web app to ownCloud over the WebDAV interface
Connect your Javascript web app to ownCloud over the WebDAV interface
 
CollegeDiveIn presentation
CollegeDiveIn presentationCollegeDiveIn presentation
CollegeDiveIn presentation
 
Modern Javascript
Modern JavascriptModern Javascript
Modern Javascript
 
Keystone.js 101
Keystone.js 101Keystone.js 101
Keystone.js 101
 
Moving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMSMoving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMS
 
Orion - IDE on the cloud
Orion - IDE on the cloudOrion - IDE on the cloud
Orion - IDE on the cloud
 
Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3
 
Sgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki ConceptsSgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki Concepts
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Hybrid Mobile Apps | Ionic & AngularJS
Hybrid Mobile Apps | Ionic & AngularJSHybrid Mobile Apps | Ionic & AngularJS
Hybrid Mobile Apps | Ionic & AngularJS
 
Modern web application devlopment workflow
Modern web application devlopment workflowModern web application devlopment workflow
Modern web application devlopment workflow
 
Node.js - Greece JS Meetup 2012
Node.js - Greece JS Meetup 2012Node.js - Greece JS Meetup 2012
Node.js - Greece JS Meetup 2012
 
Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
 

Viewers also liked

Logística, Atacado e Varejo
Logística, Atacado e VarejoLogística, Atacado e Varejo
Logística, Atacado e Varejo
guestd7ede7
 

Viewers also liked (14)

Editing
EditingEditing
Editing
 
Integrating the Social Web into your Communication Strategy
Integrating the Social Web into your Communication StrategyIntegrating the Social Web into your Communication Strategy
Integrating the Social Web into your Communication Strategy
 
From AARGH to AAAHH: Web Content Strategy
From AARGH to AAAHH: Web Content StrategyFrom AARGH to AAAHH: Web Content Strategy
From AARGH to AAAHH: Web Content Strategy
 
Editing and content management
Editing and content managementEditing and content management
Editing and content management
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)
 
Suco de laranja
Suco de laranja Suco de laranja
Suco de laranja
 
Symfony and eZ Publish: boarding now!
Symfony and eZ Publish: boarding now!Symfony and eZ Publish: boarding now!
Symfony and eZ Publish: boarding now!
 
Supply chain laranja
Supply chain   laranjaSupply chain   laranja
Supply chain laranja
 
Apresentação de pesquisa Cultivo de laranja e produção de suco
Apresentação de pesquisa Cultivo de laranja e produção de sucoApresentação de pesquisa Cultivo de laranja e produção de suco
Apresentação de pesquisa Cultivo de laranja e produção de suco
 
Seminário de enzimologia
Seminário de enzimologia Seminário de enzimologia
Seminário de enzimologia
 
Ocupação Territorial da Amazônia
Ocupação Territorial da AmazôniaOcupação Territorial da Amazônia
Ocupação Territorial da Amazônia
 
Logística, Atacado e Varejo
Logística, Atacado e VarejoLogística, Atacado e Varejo
Logística, Atacado e Varejo
 
Models for hierarchical data
Models for hierarchical dataModels for hierarchical data
Models for hierarchical data
 

Similar to Decoupling Content Management

01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Gabriel Villa
 

Similar to Decoupling Content Management (20)

PHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPPHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHP
 
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
OpenCms Days 2012 - OpenCms 8.5: Creating "in place" editable pages with the ...
 
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason FreyDesign Summit - Technology Vision - Oleg Barenboim and Jason Frey
Design Summit - Technology Vision - Oleg Barenboim and Jason Frey
 
Drupal training-1-in-mumbai
Drupal training-1-in-mumbaiDrupal training-1-in-mumbai
Drupal training-1-in-mumbai
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)
 
FISL: Content Management Primer
FISL: Content Management PrimerFISL: Content Management Primer
FISL: Content Management Primer
 
Seminar.pptx
Seminar.pptxSeminar.pptx
Seminar.pptx
 
BEdita, a development platform
BEdita, a development platformBEdita, a development platform
BEdita, a development platform
 
Introducing MongoDB into your Organization
Introducing MongoDB into your OrganizationIntroducing MongoDB into your Organization
Introducing MongoDB into your Organization
 
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
Symfony CMF: un nuovo paradigma per la gestione dei contenutiSymfony CMF: un nuovo paradigma per la gestione dei contenuti
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
 
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
Symfony CMF: un nuovo paradigma per la gestione dei contenutiSymfony CMF: un nuovo paradigma per la gestione dei contenuti
Symfony CMF: un nuovo paradigma per la gestione dei contenuti
 
Juju presentation
Juju presentationJuju presentation
Juju presentation
 
IDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionIDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase Session
 
PHP at Yahoo!
PHP at Yahoo!PHP at Yahoo!
PHP at Yahoo!
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
 
Node.js an Exectutive View
Node.js an Exectutive ViewNode.js an Exectutive View
Node.js an Exectutive View
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
Develop a Quick and Dirty Web interface to your database: for the DBA and oth...
 

More from Henri Bergius

Bisnesdata - Tietojärjestelmien kätköistä tableteille
Bisnesdata - Tietojärjestelmien kätköistä tableteilleBisnesdata - Tietojärjestelmien kätköistä tableteille
Bisnesdata - Tietojärjestelmien kätköistä tableteille
Henri Bergius
 
NoFlo - Flow-Based Programming for Node.js
NoFlo - Flow-Based Programming for Node.jsNoFlo - Flow-Based Programming for Node.js
NoFlo - Flow-Based Programming for Node.js
Henri Bergius
 
Location awareness in MeeGo
Location awareness in MeeGoLocation awareness in MeeGo
Location awareness in MeeGo
Henri Bergius
 
Midgard2 Content Repository at FSCONS 2009
Midgard2 Content Repository at FSCONS 2009Midgard2 Content Repository at FSCONS 2009
Midgard2 Content Repository at FSCONS 2009
Henri Bergius
 
Location-aware desktop
Location-aware desktopLocation-aware desktop
Location-aware desktop
Henri Bergius
 
Midgard and the Interactive Knowledge System
Midgard and the Interactive Knowledge SystemMidgard and the Interactive Knowledge System
Midgard and the Interactive Knowledge System
Henri Bergius
 
Nemein ja Midgard - yritys open source -projektin keskipisteessä
Nemein ja Midgard - yritys open source -projektin keskipisteessäNemein ja Midgard - yritys open source -projektin keskipisteessä
Nemein ja Midgard - yritys open source -projektin keskipisteessä
Henri Bergius
 

More from Henri Bergius (15)

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

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Decoupling Content Management