SlideShare a Scribd company logo
ContentBox
Modular CMS
Time to release
your content
from it’s box!
Who am I?
Luis Majano - Computer Engineer
Born in El Salvador ------------------>
President of Ortus Solutions
Manager of the IECFUG
(www.iecfug.com)
Creator of ColdBox, MockBox,
LogBox, CacheBox, WireBox,
ContentBox, or anything Box!
Documentation Weirdo!
@lmajano, @ortussolutions
Agenda
ContentBox Overview + Technology
ContentBox Modularity
Deployment + Scalability
Features
Build Stuff
ContentBox Modular CMS
Modular CMS
Powered by ColdBox
OO Content Model
Powered by ORM
Built to scale, cluster and deploy securely
Public release August 2012
Professional Open Source
www.gocontentbox.org
Why Modules?
ContentBox Modularity
ANY

ColdBox MVC
Application
ContentBox
Admin
ContentBox
UI
ContentBox
Core
Forum eCommerce
Custom
App
Custom
Security
Views Model
Events
ColdBox Modules
Security
Modular Architecture
ContentBox
Admin
ContentBox
UI
ContentBox
Core
Forum
eCommer
ce
Custom
Module
Flex/Air

Remote
RESTful QA Module
Google
Analytics
Modular Deployment
Traditional Deployment
Monolithic APP,
ADMIN, TOOLS,
API

DMZ
Database
Modular Segregated Deployment
ContentBox UI
DMZ
Database
ContentBox
Admin
ContentBox
Core
ContentBox Core
Reportin Security SAP
REST
ContentBox Modules
Extended ColdBox Modules
Managed by ContentBox Admin
Activated/Deactivated
Installed/Uninstalled
Extend ContentBox or ColdBox Application
ContentBox is a collection of modules
wiki.coldbox.org/wiki/Modules.cfm
ContentBox Modules
Features
ContentBox menu contributions
Custom events
ContentBox admin events
Application events
Custom Views
More services/models
URL Mappings
Widgets
Environment detection
ForgeBox Connected
Coming: Themes + ColdBox 4 Support
Interceptors
Majority of extensions
are via Interceptors!
!
Event Driven
Programming
IDE + Tools
ContentBox Utilities
Anatomy of a Module
ModuleConfig.cfc
handlers
layouts
models
modules
Module Name

(unique on disk)
box.json
views
widgets
box.json
ModuleConfig.cfc
Simple CFC
Bootstraps your module
Must exist in the root of your module folder
Has public properties
configure() for configuration
4 callback methods:
onLoad(), onUnload(), onActivate(), onDeactivate()
Tier-detection enabled
It’s an interceptor too!
ModuleConfig.cfc
Important
Services
cbHelper@cb
settingservice@cb
adminMenuService@cb
widgetService@cb
pageService@cb
entryService@cb
contentService@cb
contentStoreService@cb
CBHelper
One stop shop for anything ContentBox
API Docs
Module Methods
buildModuleLink( module, linkTo, queryString, ssl )
setNextModuleEvent( module, event, queryString .... )
Extend: Widgets
Based on ColdBox plugins
Simple interface: renderit()
Self-documenting
Use in editors, layouts and as ColdBox Plugins
any function renderIt(required slug, defaultValue){	
	 	 var entry = entryService.findWhere({slug=arguments.slug});	
	 	 	
	 	 if( !isNull(entry) ){	
	 	 	 return entry.getContent();	 	
	 	 }	
	 	 	
	 	 // default value	
	 	 if( structKeyExists(arguments, "defaultValue") ){	
	 	 	 return arguments.defaultValue;	
	 	 }	
	 	 	
	 	 throw(message="The content slug '#arguments.slug#' does not exist",type="CustomHTMLWidget.InvalidEntrySlug");	
	 }
Extend: Editors
Page, Blog and Custom HTML Editors accept widgets via {{{ }}} notations
//Executes the renderit() by convention	
{{{WidgetName arg1=value arg2=value}}}
// Execute ANY method	
{{{WidgetName.method arg1=value arg2=value}}}
UI Way
Extend: Events
Based on ColdBox interceptors
Event driven programming
Over 100 different events
function cbadmin_postAuthorSave(event,interceptData){	
	 	 var author 	 	 = arguments.interceptData.author;	
	 	 var currentAuthor = securityService.getAuthorSession();	
	 	 // get mail payload	
	 	 var bodyTokens = {	
	 	 	 authorName	 = author.getName(),	
	 	 	 authorRole	 = author.getRole().getRole(),	
	 	 	 authorEmail	 = author.getEmail(),	
	 	 	 authorURL 	 = CBHelper.linkAdmin("authors.editor.authorID.#author.getAuthorID()#"),	
	 	 	 currentAuthor		 = currentAuthor.getName(),	
	 	 	 currentAuthorEmail 	 = currentAuthor.getEmail()	
	 	 };	
	 	 var mail = mailservice.newMail(to=settings.cb_site_email,	
	 	 	 	 	 	 	 	 	 from=settings.cb_site_outgoingEmail,	
	 	 	 	 	 	 	 	 	 subject="#settings.cb_site_name# - Author Created - #bodyTokens.authorName#",	
	 	 	 	 	 	 	 	 	 bodyTokens=bodyTokens);	
	 	 // generate content for email from template	
	 	 mail.setBody( renderer.renderView(view="email_templates/author_new",module="contentbox") );	
	 	 // send it out	
	 	 mailService.send( mail );	
	 }
Extend the admin/layouts interface
Use as filters
Produce output
Content Rendering
cb_onContentRendering
cb_onCustomHTMLRendering
Admin Events
Admin Events
Admin Events
UI Module Events
Security Events
Media Manager
Events
Code Time!
Thanks!
Q & A

More Related Content

PDF
Cassandra Summit 2014: Highly Scalable Web Application in the Cloud with Cass...
PPT
jclouds overview
PPT
Shindig in 2 hours
PPSX
Azure DocumentDB
PPTX
Azure container instances
PPTX
Azure functions
PDF
Deploying artifacts to archiva
PPTX
Continuous Integration (& Mr Jenkins)
Cassandra Summit 2014: Highly Scalable Web Application in the Cloud with Cass...
jclouds overview
Shindig in 2 hours
Azure DocumentDB
Azure container instances
Azure functions
Deploying artifacts to archiva
Continuous Integration (& Mr Jenkins)

What's hot (20)

PPTX
Log in to a Linux VM in Azure using AAD authentication
PDF
User authentication and authorizarion in Kubernetes
PPTX
Monitoring as Code - Ignite
PPTX
Realm mobile database
PPTX
Azure Table Storage: The Good, the Bad, the Ugly (full talk)
PDF
Apache jclouds and Docker
PPTX
Icinga Camp Bangalore - Icinga2 API use cases and BlueJeans Inc.
PPTX
Deploy Elasticsearch Cluster on Kubernetes
PPTX
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
PDF
Making App Developers More Productive
PPTX
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
PDF
Elasticsearch on Kubernetes
PPTX
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
PDF
Next.Net event - Use Azure Active Directory Managed Identities for your servi...
PPTX
Securing sensitive data with Azure Key Vault
PPTX
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
PPTX
Event sourcing your React-Redux applications
PPTX
Whirlwind tour of activiti 7
PPTX
Building IAM for OpenStack
PPTX
Google Drive & Google Drive SDK
Log in to a Linux VM in Azure using AAD authentication
User authentication and authorizarion in Kubernetes
Monitoring as Code - Ignite
Realm mobile database
Azure Table Storage: The Good, the Bad, the Ugly (full talk)
Apache jclouds and Docker
Icinga Camp Bangalore - Icinga2 API use cases and BlueJeans Inc.
Deploy Elasticsearch Cluster on Kubernetes
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
Making App Developers More Productive
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Elasticsearch on Kubernetes
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
Next.Net event - Use Azure Active Directory Managed Identities for your servi...
Securing sensitive data with Azure Key Vault
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Event sourcing your React-Redux applications
Whirlwind tour of activiti 7
Building IAM for OpenStack
Google Drive & Google Drive SDK
Ad

Viewers also liked (20)

PPTX
話題呼
PPTX
Michael jackson
PDF
ITB2016 -BDD testing and automation from the trenches
PDF
Where to find $59 Trillion: A Map for Nonprofits
DOCX
Planning booklet
PPTX
ideological and material structure of Widowhood
PPTX
MFP week1 presentation
PDF
CMigrating to mvc with cold box 3.8
PPTX
Storyboard final
PPT
forces
PPTX
Tugas trigger
PPTX
PPTX
Flow Drinks statements november 2011
PPTX
Michael Jackson
PPTX
Invitación al Italiano
PPTX
El Greco
PPTX
PPTX
Story book evaluation
PDF
ORM Pink Unicorns
PPTX
ITB2015 - Go Commando with CommandBox CLI
話題呼
Michael jackson
ITB2016 -BDD testing and automation from the trenches
Where to find $59 Trillion: A Map for Nonprofits
Planning booklet
ideological and material structure of Widowhood
MFP week1 presentation
CMigrating to mvc with cold box 3.8
Storyboard final
forces
Tugas trigger
Flow Drinks statements november 2011
Michael Jackson
Invitación al Italiano
El Greco
Story book evaluation
ORM Pink Unicorns
ITB2015 - Go Commando with CommandBox CLI
Ad

Similar to CBDW2014 - Building ContentBox Modules (20)

PPTX
Developing your first application using FIWARE
PDF
Modern frontend development with VueJs
PPTX
Developing your first application using FI-WARE
PDF
Web Components and Modular CSS
PDF
RESTful Web Applications with Apache Sling
PPTX
Use Eclipse technologies to build a modern embedded IDE
PPTX
Introduction to Jquery
PPTX
Google Cloud Build - Overview and Examples
PPTX
Jquery dojo slides
PDF
Nuxeo - OpenSocial
PPTX
[NDC 2019] Enterprise-Grade Serverless
PPTX
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
PPTX
ODP
Rapid JCR Applications Development with Sling
PPTX
01 Introduction - JavaScript Development
PPTX
A serverless IoT story from design to production and monitoring
PPTX
A serverless IoT Story From Design to Production and Monitoring
KEY
Html5 For Jjugccc2009fall
PDF
Web Components Everywhere
PDF
Mobile Software Engineering Crash Course - C06 WindowsPhone
Developing your first application using FIWARE
Modern frontend development with VueJs
Developing your first application using FI-WARE
Web Components and Modular CSS
RESTful Web Applications with Apache Sling
Use Eclipse technologies to build a modern embedded IDE
Introduction to Jquery
Google Cloud Build - Overview and Examples
Jquery dojo slides
Nuxeo - OpenSocial
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
Rapid JCR Applications Development with Sling
01 Introduction - JavaScript Development
A serverless IoT story from design to production and monitoring
A serverless IoT Story From Design to Production and Monitoring
Html5 For Jjugccc2009fall
Web Components Everywhere
Mobile Software Engineering Crash Course - C06 WindowsPhone

More from Ortus Solutions, Corp (20)

PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
PDF
June Webinar: BoxLang-Dynamic-AWS-Lambda
PDF
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
PDF
What's-New-with-BoxLang-Brad Wood.pptx.pdf
PDF
Getting Started with BoxLang - CFCamp 2025.pdf
PDF
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
PDF
What's New with BoxLang Led by Brad Wood.pdf
PDF
Vector Databases and the BoxLangCFML Developer.pdf
PDF
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
PDF
Use JSON to Slash Your Database Performance.pdf
PDF
Portable CI wGitLab and Github led by Gavin Pickin.pdf
PDF
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
PDF
Supercharging CommandBox with Let's Encrypt.pdf
PDF
Spice up your site with cool animations using GSAP..pdf
PDF
Passkeys and cbSecurity Led by Eric Peterson.pdf
PDF
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
PDF
Integrating the OpenAI API in Your Coldfusion Apps.pdf
PDF
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
PDF
Geting-started with BoxLang Led By Raymon Camden.pdf
PDF
From Zero to CRUD with ORM - Led by Annette Liskey.pdf
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
June Webinar: BoxLang-Dynamic-AWS-Lambda
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Getting Started with BoxLang - CFCamp 2025.pdf
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
What's New with BoxLang Led by Brad Wood.pdf
Vector Databases and the BoxLangCFML Developer.pdf
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Use JSON to Slash Your Database Performance.pdf
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Supercharging CommandBox with Let's Encrypt.pdf
Spice up your site with cool animations using GSAP..pdf
Passkeys and cbSecurity Led by Eric Peterson.pdf
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Geting-started with BoxLang Led By Raymon Camden.pdf
From Zero to CRUD with ORM - Led by Annette Liskey.pdf

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Approach and Philosophy of On baking technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Approach and Philosophy of On baking technology
Dropbox Q2 2025 Financial Results & Investor Presentation
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
20250228 LYD VKU AI Blended-Learning.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Network Security Unit 5.pdf for BCA BBA.
“AI and Expert System Decision Support & Business Intelligence Systems”
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Spectral efficient network and resource selection model in 5G networks
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Understanding_Digital_Forensics_Presentation.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

CBDW2014 - Building ContentBox Modules