SlideShare ist ein Scribd-Unternehmen logo
1 von 39
one|content
joomla! on steroids




      j and beyond 2010
      paul delbar, delius
objectives

explain why we built one|content
explain the basic concepts
show a simple demo
talk about advanced features
get feedback, comments, suggestions, …
why ? tell me why !
example: mgxbymaterialise.com

complex product catalog website
example: axolot.nl

IT training supplier
example: 11.be

consortium of non-profits working in the south
example: 11.be

everything is related to most other things
example: hdp.be

corporate site for HR services company
complex content construction strategies

content projection (everything is an article)
   makes it difficult for customers to manage content
hacking com_content
   simply never a good idea
developing a number of com_whatevercontent
   takes on average 2 days per content type
   very flexible, but complex to build and hard to maintain
use a CCK extension
   do not address content relations very well (sic)
what if we could …

build structured content sites
   in a declarative style
   using concepts the customer understands already
   with minimal coding
   integrating content from any data source
using a toolkit that
   is CMS-agnostic
   is suited for an integrator (not for end-users)
   is mildly extensible (but not a framework)
the one|content vision

everything is content.       content is everything.

  really everything, like    content-based navigation
     articles                  often the most logical way
     countries               content-based views
     speakers                  build a consistent UI
     inventory items           OO view concept
     orders
     searches
     users
the content cloud


                                          shared content
              non-CMS data



                             local data




  corporate      campaign    intranet       divisional     application
   website        website                    website
the basic concepts
representing real-world concepts
schemes

a scheme defines the meta-structure of an item




attributes
  individual data values, not visual types !
model

a model is an instance of a scheme
  has specific values for each attribute




comparison using com_content
  article view : shows one model
  category blog view : shows a list (selection) of models
relations

in real life, stuff is related to other stuff
different types of relations
   categorization : categories, topics
   composition: regions, subregions, countries
   reflexive: hierarchies, graphs
other projection techniques
   sections, categories, ...
   tags
view

an OO approach to views
for every scheme, build (at least)
   a detail view : introducing nanoScript
   a list view : link to the detail view
admin view
   list view
   edit view
controller

controller tasks
  list
  detail
  edit/add
  delete
how to access the content
  com_one
  mod_nano
  nano content plugin and one package
MVC elements




      let’s demo !
nanoScript basics
overall principle

PHP-level library (autoloaded)
similar to Smarty (but better, haha)
  any content can contain nano tags (eg. HTML, XML, ...)
  the parser constructs a script execution tree
  use: instantiate, load script, inject data, execute
  <?php

  $ns = new nScript();
  $ns->load( ‘template.html’ );
  $ns->set( ‘conference’, ‘J and Beyond’ );

  echo $ns->execute();
example
tags and expressions

unary tags
binary tags (closures)
can be extended (class hierarchy)
  used for things like {tidy}…{/tidy}


  {set release = 1.6}

  {if release > 1.5}
    <h1>Congratulations on releasing version {= release} !</h1>
  {else}
    <p class="late">Still at 1.5 !</p>
  {endif}
variables

handles a number of formats
  scalar variables
  arrays
  objects
expressions
  The temperature is {= temp} degrees.

  The second competitor's name is {= competitor[1]}.

  The address is {= person->address}.


  The order total is {= order->net + order->vat}.
control structures

the usual
  if, then, else
  while, endwhile
  loop


  {if count(entries) > 0}
    <ul>The nominees for extension of the year are
      {loop entries e}
          <li>{= e->name]}</li>
      {endloop}
  </ul>
  {endif}
structured HTML

section tag
@ tag
namespaces


  {section QUESTION title}
    <div class="question">
      <h1 class="question">{= title}</h1>
    </div>
  {endsection}

  <img src="{@ icon:question}" />
  {@ QUESTION "Why did we develop one ?"}
nanoScript search path

sets folder sequence / hierarchy to check
applications of it
  could be used to implement template overrides
  language-dependent script loading
packages

makes nanoScript extensible with
  helper functionality
  Joomla functions



  {if count(entries) > 0}
    <ul>The nominees for extension of the year are
      {loop entries e}
          <li>{= e->name]}</li>
      {endloop}
  </ul>
  {endif}
custom nodes

extend the syntax with unary or binary nodes
useful examples
  tidy
  Excel or PDF generator


  <p>Comment:</p>
  <div>
    <h1>{= entry->title}</h1>
    {tidy}
      {= entry->introText}
      {= entry->fullText}
    {endtidy}
  </div>
the nanoScript content plugin

placed inside an article
  similar to a content plugin, but more generic
  makes content extremely dynamic
how would you use this ?
  show content depending on the user access level
     access user info using a package
  include one|content views
advanced topics




   with real-life examples
more controller stuff

selecting models
  how does the select task work ?
  the query object
influencing selections
  filters
  querying multiple related schemes
what about performance (caching, joins, …)
  building a custom model factory
building a multi-scheme search form

similar to the edit form
different widgets
  can include operators (like, begins with, …)
  find items related to one or more of …
example from MGX
permissions : an open permissions system

controller permissions
form permissions
build your own terms
behaviors

 search and the search plugin (search behavior)
    slug
    calendar
    google
    rss
 other examples of behaviors
    publish
    versioning
    multilingual
    wiki
    class
stores and factories

data resides in different places
   the Joomla/Nooku database
   other MySQL tables
   SQL Server, Oracle, …
   behind a SOAP service
schemes and stores
   separates the logical and physical layers
stores and strategies
   encapsulate the data-level adapter
custom controllers and admins

framework-like extensions
task-oriented
  duplicate
  publish
wizard-like
  duplicate
  import/export
build semantic admins
thanks !

Weitere ähnliche Inhalte

Ähnlich wie one|content : joomla on steroids

Adopting AnswerModules ModuleSuite
Adopting AnswerModules ModuleSuiteAdopting AnswerModules ModuleSuite
Adopting AnswerModules ModuleSuite
AnswerModules
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Karen Thompson
 
Patterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docxPatterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docx
danhaley45372
 
Super applied in a sitecore migration project
Super applied in a sitecore migration projectSuper applied in a sitecore migration project
Super applied in a sitecore migration project
dodoshelu
 

Ähnlich wie one|content : joomla on steroids (20)

Ad507
Ad507Ad507
Ad507
 
CUST-3 Document Management with Share
CUST-3 Document Management with ShareCUST-3 Document Management with Share
CUST-3 Document Management with Share
 
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
 
Adopting AnswerModules ModuleSuite
Adopting AnswerModules ModuleSuiteAdopting AnswerModules ModuleSuite
Adopting AnswerModules ModuleSuite
 
Dita for the web: Make Adaptive Content Simple for Writers and Developer
Dita for the web: Make Adaptive Content Simple for Writers and DeveloperDita for the web: Make Adaptive Content Simple for Writers and Developer
Dita for the web: Make Adaptive Content Simple for Writers and Developer
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Approaches to mobile site development
Approaches to mobile site developmentApproaches to mobile site development
Approaches to mobile site development
 
Things Made Easy: One Click CMS Integration with Solr & Drupal
Things Made Easy: One Click CMS Integration with Solr & DrupalThings Made Easy: One Click CMS Integration with Solr & Drupal
Things Made Easy: One Click CMS Integration with Solr & Drupal
 
Typescript design patterns applied to sharepoint framework - Sharepoint Satur...
Typescript design patterns applied to sharepoint framework - Sharepoint Satur...Typescript design patterns applied to sharepoint framework - Sharepoint Satur...
Typescript design patterns applied to sharepoint framework - Sharepoint Satur...
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
 
CG_CS25010_Lecture
CG_CS25010_LectureCG_CS25010_Lecture
CG_CS25010_Lecture
 
Orchard
OrchardOrchard
Orchard
 
Overview of atg framework
Overview of atg frameworkOverview of atg framework
Overview of atg framework
 
Oleksandr Krakovetskyi - Orchard CMS
Oleksandr Krakovetskyi - Orchard CMSOleksandr Krakovetskyi - Orchard CMS
Oleksandr Krakovetskyi - Orchard CMS
 
Patterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docxPatterns (contd)Software Development ProcessDesign patte.docx
Patterns (contd)Software Development ProcessDesign patte.docx
 
IRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHP
 
SPSNYC14 - Must Love Term Sets: The New and Improved Managed Metadata Service...
SPSNYC14 - Must Love Term Sets: The New and Improved Managed Metadata Service...SPSNYC14 - Must Love Term Sets: The New and Improved Managed Metadata Service...
SPSNYC14 - Must Love Term Sets: The New and Improved Managed Metadata Service...
 
Introducing Ruby/MVC/RoR
Introducing Ruby/MVC/RoRIntroducing Ruby/MVC/RoR
Introducing Ruby/MVC/RoR
 
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
 
Super applied in a sitecore migration project
Super applied in a sitecore migration projectSuper applied in a sitecore migration project
Super applied in a sitecore migration project
 

Kürzlich hochgeladen

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

one|content : joomla on steroids

  • 1. one|content joomla! on steroids j and beyond 2010 paul delbar, delius
  • 2. objectives explain why we built one|content explain the basic concepts show a simple demo talk about advanced features get feedback, comments, suggestions, …
  • 3. why ? tell me why !
  • 6. example: 11.be consortium of non-profits working in the south
  • 7. example: 11.be everything is related to most other things
  • 8. example: hdp.be corporate site for HR services company
  • 9. complex content construction strategies content projection (everything is an article) makes it difficult for customers to manage content hacking com_content simply never a good idea developing a number of com_whatevercontent takes on average 2 days per content type very flexible, but complex to build and hard to maintain use a CCK extension do not address content relations very well (sic)
  • 10. what if we could … build structured content sites in a declarative style using concepts the customer understands already with minimal coding integrating content from any data source using a toolkit that is CMS-agnostic is suited for an integrator (not for end-users) is mildly extensible (but not a framework)
  • 11. the one|content vision everything is content. content is everything.  really everything, like  content-based navigation  articles  often the most logical way  countries  content-based views  speakers  build a consistent UI  inventory items  OO view concept  orders  searches  users
  • 12. the content cloud shared content non-CMS data local data corporate campaign intranet divisional application website website website
  • 15. schemes a scheme defines the meta-structure of an item attributes individual data values, not visual types !
  • 16. model a model is an instance of a scheme has specific values for each attribute comparison using com_content article view : shows one model category blog view : shows a list (selection) of models
  • 17. relations in real life, stuff is related to other stuff different types of relations categorization : categories, topics composition: regions, subregions, countries reflexive: hierarchies, graphs other projection techniques sections, categories, ... tags
  • 18. view an OO approach to views for every scheme, build (at least) a detail view : introducing nanoScript a list view : link to the detail view admin view list view edit view
  • 19. controller controller tasks list detail edit/add delete how to access the content com_one mod_nano nano content plugin and one package
  • 20. MVC elements let’s demo !
  • 22. overall principle PHP-level library (autoloaded) similar to Smarty (but better, haha) any content can contain nano tags (eg. HTML, XML, ...) the parser constructs a script execution tree use: instantiate, load script, inject data, execute <?php $ns = new nScript(); $ns->load( ‘template.html’ ); $ns->set( ‘conference’, ‘J and Beyond’ ); echo $ns->execute();
  • 24. tags and expressions unary tags binary tags (closures) can be extended (class hierarchy) used for things like {tidy}…{/tidy} {set release = 1.6} {if release > 1.5} <h1>Congratulations on releasing version {= release} !</h1> {else} <p class="late">Still at 1.5 !</p> {endif}
  • 25. variables handles a number of formats scalar variables arrays objects expressions The temperature is {= temp} degrees. The second competitor's name is {= competitor[1]}. The address is {= person->address}. The order total is {= order->net + order->vat}.
  • 26. control structures the usual if, then, else while, endwhile loop {if count(entries) > 0} <ul>The nominees for extension of the year are {loop entries e} <li>{= e->name]}</li> {endloop} </ul> {endif}
  • 27. structured HTML section tag @ tag namespaces {section QUESTION title} <div class="question"> <h1 class="question">{= title}</h1> </div> {endsection} <img src="{@ icon:question}" /> {@ QUESTION "Why did we develop one ?"}
  • 28. nanoScript search path sets folder sequence / hierarchy to check applications of it could be used to implement template overrides language-dependent script loading
  • 29. packages makes nanoScript extensible with helper functionality Joomla functions {if count(entries) > 0} <ul>The nominees for extension of the year are {loop entries e} <li>{= e->name]}</li> {endloop} </ul> {endif}
  • 30. custom nodes extend the syntax with unary or binary nodes useful examples tidy Excel or PDF generator <p>Comment:</p> <div> <h1>{= entry->title}</h1> {tidy} {= entry->introText} {= entry->fullText} {endtidy} </div>
  • 31. the nanoScript content plugin placed inside an article similar to a content plugin, but more generic makes content extremely dynamic how would you use this ? show content depending on the user access level access user info using a package include one|content views
  • 32. advanced topics with real-life examples
  • 33. more controller stuff selecting models how does the select task work ? the query object influencing selections filters querying multiple related schemes what about performance (caching, joins, …) building a custom model factory
  • 34. building a multi-scheme search form similar to the edit form different widgets can include operators (like, begins with, …) find items related to one or more of … example from MGX
  • 35. permissions : an open permissions system controller permissions form permissions build your own terms
  • 36. behaviors  search and the search plugin (search behavior)  slug  calendar  google  rss  other examples of behaviors  publish  versioning  multilingual  wiki  class
  • 37. stores and factories data resides in different places the Joomla/Nooku database other MySQL tables SQL Server, Oracle, … behind a SOAP service schemes and stores separates the logical and physical layers stores and strategies encapsulate the data-level adapter
  • 38. custom controllers and admins framework-like extensions task-oriented duplicate publish wizard-like duplicate import/export build semantic admins