mura intergration-slides

35
New CMS & Legacy Apps Don’t Re-Write — Integrate! Thursday, 15 May 14

Upload: coldfusionconference

Post on 03-Sep-2014

200 views

Category:

Software


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Mura intergration-slides

New CMS& Legacy AppsDon’t Re-Write — Integrate!

Thursday, 15 May 14

Page 2: Mura intergration-slides

Thursday, 15 May 14

Page 3: Mura intergration-slides

Agenda• Overview of Mura CMS• Integration Options• Quick-start Plugins

Thursday, 15 May 14

Page 4: Mura intergration-slides

Overviewof Mura CMS (demo)

Thursday, 15 May 14

Page 5: Mura intergration-slides

IntegrationOptions

Thursday, 15 May 14

Page 6: Mura intergration-slides

What Can I Use?• Use any front-end framework you want

Thursday, 15 May 14

Page 7: Mura intergration-slides

What Can I Use?• Use any JavaScript framework you want

Thursday, 15 May 14

Page 8: Mura intergration-slides

What Can I Use?• Use any CFML framework you want

Thursday, 15 May 14

Page 9: Mura intergration-slides

DemoApp1 : Uber Simple

Thursday, 15 May 14

Page 10: Mura intergration-slides

App1 Review• Copied application to the theme’s display_objects directory

• Converted index.cfm into a front-end controller• Added the application as a display object using a code snippet

• [m]$.dspThemeInclude(‘display_objects/app1/index.cfm’)[/m]

Thursday, 15 May 14

Page 11: Mura intergration-slides

Mura $cope• Bean Factory:

• $.getBean(‘someBean’)

• $.getBean(‘user’).loadBy(username=‘Steve’)

• Mura Events:• $.event(), announceEvent(‘yourEvent’)

• Sub-$copes:• $.content(), $.currentUser(), $.globalConfig(), $.siteConfig()

• Helpers:• $.getContentRenderer(), $.getPlugin(), $.getImageURL(), $.addToHTMLHeadQueue()

Thursday, 15 May 14

Page 12: Mura intergration-slides

Mura $cope: Helpers• $.siteConfig(‘themeAssetPath’)

• Outputs the path to your theme directory• /{SiteID}/includes/themes/{ThemeName}

Thursday, 15 May 14

Page 13: Mura intergration-slides

Mura $cope: Helpers• $.dspThemeInclude(‘path/to/file/cfm’)

• Dynamic CFinclude of the desired file• <cfinclude template=”/{SiteID}/includes/themes/{ThemeName}/path/to/file.cfm”>

Thursday, 15 May 14

Page 14: Mura intergration-slides

Mura Events• Application Flow:

• Chain of events that fire in sequence• Each link in the chain can be intercepted to:

• Provide additional OR,• Even replace business logic

• eventHandler.cfc (Site & Theme)

Thursday, 15 May 14

Page 15: Mura intergration-slides

Event Handlers• Front End Requests: onSiteRequestStart, on{Type}{SubType}BodyRender• Contextual Events

• Admin Life-Cycle Events: onGlobalRequestStart, onAdminRequestStart• Application Events: onApplicationLoad, onGlobalError, onSiteError• Admin Rendering Events: onContentEdit• Content Tab Events• Login Events• Content Events: onBefore{Type}{SubType}Save• Feed Events• User Events

• Custom Events

Thursday, 15 May 14

Page 16: Mura intergration-slides

DemoApp2 : Subfolders

Thursday, 15 May 14

Page 17: Mura intergration-slides

App2 Review• Copied application to the theme’s display_objects directory• Converted index.cfm into a front-end controller• Added a onSite404()event listener in the SITE eventHandler.cfc

• Added the application as a display object using a code snippet

• [m]$.dspThemeInclude(‘display_objects/app2/index.cfm’)[/m]

• Used $.addToHTMLHeadQueue() to add custom JS & CSS to head

Thursday, 15 May 14

Page 18: Mura intergration-slides

DemoApp3 : Application.cfc

Thursday, 15 May 14

Page 19: Mura intergration-slides

App3 Review• Copied application to the theme’s display_objects

directory• Converted index.cfm into a front-end controller• Added a custom eventHandler using the onApplicationLoad() event in the THEME eventHandler.cfc

• Added the application as a display object using a code snippet

• [m]$.dspThemeInclude(‘display_objects/app3/index.cfm’)[/m]

Thursday, 15 May 14

Page 20: Mura intergration-slides

Quick StartPlugins

Thursday, 15 May 14

Page 21: Mura intergration-slides

Why Plugins?• Update-Safe Customizations:

• Extend Mura CMS• Add new functionality

• Distribute Code Across Sites / Installs• Custom Administrator• Integrate Existing Applications• GPL 2.0 License

Thursday, 15 May 14

Page 22: Mura intergration-slides

Plugin Anatomy• index.cfm*• license.txt*• /plugin

• /config.xml.cfm• /plugin.cfc*• /config.cfm*

• *Optional

Thursday, 15 May 14

Page 23: Mura intergration-slides

/plugin/config.xml.cfm• Setup Variables (base & custom)• Register Your Plugin’s:

• Display Objects• Event Handlers

Thursday, 15 May 14

Page 24: Mura intergration-slides

/plugin/config.xml.cfm

Thursday, 15 May 14

Page 25: Mura intergration-slides

Display Objectsregistered via config.xml.cfm

Thursday, 15 May 14

Page 26: Mura intergration-slides

Display Objects: .CFM

Thursday, 15 May 14

Page 27: Mura intergration-slides

Display Objects: .CFC

Thursday, 15 May 14

Page 28: Mura intergration-slides

Display Objects

Thursday, 15 May 14

Page 29: Mura intergration-slides

Event Handlersregistered via config.xml.cfm

Thursday, 15 May 14

Page 30: Mura intergration-slides

eventHandler.cfc

Thursday, 15 May 14

Page 31: Mura intergration-slides

Admin Template• Optionally use the Mura CMS look and feel

Thursday, 15 May 14

Page 32: Mura intergration-slides

Advanced Options• Configurable Display Objects• Custom Events• Object Relational Mapping (ORM)• Bundle Options:

• toBundle(), fromBundle()• CFML Frameworks:

• FW/1, Model-Glue, Fusebox, etc.

Thursday, 15 May 14

Page 33: Mura intergration-slides

Plugin Examples• MuraPlugin• MuraFW1• Visit https://github.com/stevewithington/muracms-integration for a list of many more

Thursday, 15 May 14

Page 34: Mura intergration-slides

Thanks,You Rock.

Thursday, 15 May 14

Page 35: Mura intergration-slides

Resources• GetMura.com• BlueRiver.com• github.com/BlueRiver• github.com/SteveWithington• gist.github.com/SteveWithington• Mura CMS Developers on Google Groups & LinkedIn• Paid Support Plans: Short-Term & Annual• Hosted, On-site & Online Training

Thursday, 15 May 14