Live Content
Finding new ways to Publish



     By Christopher Imrie
     Lead Developer, Moresoda
Christopher Imrie
Lead Developer, Moresoda


• Aerospace Engineer

• Ex-freelancer

• Adobe Certified Instructor

• PHP, JS, MySQL

• CodeIgniter, ExpressionEngine

• Problem Solver
3 Ideas

                               •   Live Content

                               •   Better ? Different?




          Flexible publish page
            Client side data
             Data services
Ideas & Techniques




   • New ideas lead to new techniques
   • My techniques != your techniques
   • Not gospel, just showing whats
     possible
The aim?




     Look at ExpressionEngine as
different kind of publishing platform
Live Content
Finding new ways to publish


Flexible Publish Page
Publish Page
Publish Page



   • Easy to understand
   • Clients love it
   • Flexible
   • Extendible with Custom
     Fieldtypes
   • Could be better?
Publish Page




  Channel       Fieldgroups   Fieldtypes


  • Tedious?
  • Could be better?
  • Arcane?
What would be better?




  Channel                         Fieldtypes


  • Remove the fieldgroup concept?
  • Brandon Kelly proposed this (Aug 2010)
  • Problem persists...
The Problem




  Developer makes all the
       connections
Article / OpenDNS
Article / Next American City
WYSIWYG Editors


   • Designed as one size fits all
   • Bloat
   • HTML produced can be bag of
     hurt
   • Just awful for certain tasks
     (Blogging about code anyone?)
   • Developers love the control
A better way
Let the publisher create
fields as they need them
What would this look
       like?
Composer

  Demo
Technical Overview



   • JavaScript Fieldtype Framework
   • Powered by RequireJS
     (AMD, load on demand)
   • Many fields work without
     modification
   • A fieldtype can be a single JS file
Front end control
         Article Page

 Title


     WYSWYG
                        • “Linear” story allows layout
                          control
         Gallery        • Each “block” can be targeted
                          with CSS

     WYSWYG             • RSS + Atom feeds still work



         Image
Open Source




               Github
              Coming Soon...
Live Content
Finding new ways to publish


Client Side Data
Data




   • Store thousands of entries
   • Channels, Categories & Status
   • Extensible suite of template tags
Data




       What about client side data?
Client Side Data



    Control Panel                 Templates
 1. AJAX request to custom   1. AJAX request to custom JS/XML
    module method               template

 2. Parse AJAX request       2. Channel Entries Tag

 3. Query DB
                             Not flexible enough
 4. EE->output->             No query strings
    send_ajax_response()
Channel Entries API




   • PHP
   • Create, Update, Delete...
   • No Read API (!)
EE JavaScript API


    • Why doesn’t it exist?
    • Fieldtypes tricky
    • What about:
        • Channels
        • Categories
        • Entry meta data
        • Site preferences
    • Standardised & predictable
EE JavaScript API




     What would this look
            like?
EEJS

Demo
EEJS Overview


   • JavaScript Utility
   • Async (jQuery Deferreds)
   • Methods for:
       • Accessing Configuration
       • Building URLs (Templates, Actions,
         CP etc)
       • Channels and Channel Entries
   • Works in CP & Templates
EEJS in Templates




   • Works outside the Control Panel
   • Integrates with Web Apps
   • Makes your life easier
Open Source




              Github
         github.com/ckimrie/eejs
Live Content
Finding new ways to publish


Data Services
Data Services



   • EEJS makes working with data
     easy
   • CP & Templates
   • What about off-site?
   • APIs
   • Mobile Apps
Data Services




   • No standard external API
   • Custom APIs possible with
     templates
   • Tedious
Data Services




   Like EEJS, standardised data can
          be made available
Considerations




   • REST
   • CodeIgniter, not ExpressionEngine
   • Performance                EE Sessions,
                                template tracking,
                                template parsing,

   • Output format              are not needed !
Data Services




     What would this look
            like?
Data API

  Demo
Data API Overview



   • CodeIgniter Application
   • No installation
   • Uses EE configuration
   • Cacheable
   • Separate App = Customisable
Open Source




                Github
       github.com/ckimrie/ee-data-api
So you’ve seen...




                 3 Ideas
     that make ExpressionEngine a different
           kind of publishing platform
3 Ideas




          Flexible Publishing
           Client Side Data
            Data Services
Thank You


@chrisimrie

github.com/ckimrie

chris@moresoda.co.uk

Live Content: Finding new ways to publish

  • 1.
    Live Content Finding newways to Publish By Christopher Imrie Lead Developer, Moresoda
  • 2.
    Christopher Imrie Lead Developer,Moresoda • Aerospace Engineer • Ex-freelancer • Adobe Certified Instructor • PHP, JS, MySQL • CodeIgniter, ExpressionEngine • Problem Solver
  • 3.
    3 Ideas • Live Content • Better ? Different? Flexible publish page Client side data Data services
  • 4.
    Ideas & Techniques • New ideas lead to new techniques • My techniques != your techniques • Not gospel, just showing whats possible
  • 5.
    The aim? Look at ExpressionEngine as different kind of publishing platform
  • 6.
    Live Content Finding newways to publish Flexible Publish Page
  • 7.
  • 8.
    Publish Page • Easy to understand • Clients love it • Flexible • Extendible with Custom Fieldtypes • Could be better?
  • 9.
    Publish Page Channel Fieldgroups Fieldtypes • Tedious? • Could be better? • Arcane?
  • 10.
    What would bebetter? Channel Fieldtypes • Remove the fieldgroup concept? • Brandon Kelly proposed this (Aug 2010) • Problem persists...
  • 11.
    The Problem Developer makes all the connections
  • 12.
  • 13.
    Article / NextAmerican City
  • 14.
    WYSIWYG Editors • Designed as one size fits all • Bloat • HTML produced can be bag of hurt • Just awful for certain tasks (Blogging about code anyone?) • Developers love the control
  • 15.
  • 16.
    Let the publishercreate fields as they need them
  • 17.
    What would thislook like?
  • 18.
  • 19.
    Technical Overview • JavaScript Fieldtype Framework • Powered by RequireJS (AMD, load on demand) • Many fields work without modification • A fieldtype can be a single JS file
  • 20.
    Front end control Article Page Title WYSWYG • “Linear” story allows layout control Gallery • Each “block” can be targeted with CSS WYSWYG • RSS + Atom feeds still work Image
  • 21.
    Open Source Github Coming Soon...
  • 22.
    Live Content Finding newways to publish Client Side Data
  • 23.
    Data • Store thousands of entries • Channels, Categories & Status • Extensible suite of template tags
  • 24.
    Data What about client side data?
  • 25.
    Client Side Data Control Panel Templates 1. AJAX request to custom 1. AJAX request to custom JS/XML module method template 2. Parse AJAX request 2. Channel Entries Tag 3. Query DB Not flexible enough 4. EE->output-> No query strings send_ajax_response()
  • 26.
    Channel Entries API • PHP • Create, Update, Delete... • No Read API (!)
  • 27.
    EE JavaScript API • Why doesn’t it exist? • Fieldtypes tricky • What about: • Channels • Categories • Entry meta data • Site preferences • Standardised & predictable
  • 28.
    EE JavaScript API What would this look like?
  • 29.
  • 30.
    EEJS Overview • JavaScript Utility • Async (jQuery Deferreds) • Methods for: • Accessing Configuration • Building URLs (Templates, Actions, CP etc) • Channels and Channel Entries • Works in CP & Templates
  • 31.
    EEJS in Templates • Works outside the Control Panel • Integrates with Web Apps • Makes your life easier
  • 32.
    Open Source Github github.com/ckimrie/eejs
  • 33.
    Live Content Finding newways to publish Data Services
  • 34.
    Data Services • EEJS makes working with data easy • CP & Templates • What about off-site? • APIs • Mobile Apps
  • 35.
    Data Services • No standard external API • Custom APIs possible with templates • Tedious
  • 36.
    Data Services Like EEJS, standardised data can be made available
  • 37.
    Considerations • REST • CodeIgniter, not ExpressionEngine • Performance EE Sessions, template tracking, template parsing, • Output format are not needed !
  • 38.
    Data Services What would this look like?
  • 39.
  • 40.
    Data API Overview • CodeIgniter Application • No installation • Uses EE configuration • Cacheable • Separate App = Customisable
  • 41.
    Open Source Github github.com/ckimrie/ee-data-api
  • 42.
    So you’ve seen... 3 Ideas that make ExpressionEngine a different kind of publishing platform
  • 43.
    3 Ideas Flexible Publishing Client Side Data Data Services
  • 44.