Creating a Mura CMS Plugin with FW/1 involves the following steps:
1. Download the FW/1 base plugin template from the Mura Marketplace.
2. Configure the plugin by naming it and setting the app and package names.
3. Upload the configured plugin to Mura via the admin global settings plugins tab.
4. Develop the plugin functionality by adding controllers, views, and other files within the FW/1 folder structure and reloading Mura.
[2024]Digital Global Overview Report 2024 Meltwater.pdf
MuraCon 2012 - Creating a Mura CMS plugin with FW/1
1. Creating a Mura CMS
Plugin with FW/1
@JasPanesar jas@damaag.com blog: panesar.net
MuraCon 2012 - Washington, DC - October 10 2012
Wednesday, 10 October, 12 1
2. Today
Why Mura FW/1
Why Q/A
Intro Plugins Plugin
FW/1 ... or
Rock Quickstart
~50 minutes to Mura Plugin Zen
Wednesday, 10 October, 12 2
3. Jas
• Made in Canada, eh.
• Lead Architect + Integrator @ Damaag.com
• I love building and integrating software systems
that answer one question: Where is everything at?
• Custom web + mobile development of product Enterprise
products, projects across NA
• 20 in 10: SMB + Enterprise consulting since '99.
• Big fan of lean methodologies.
Wednesday, 10 October, 12 3
4. Jas: ColdFusion +
• ColdFusion since '98 just as 4.0 came out.
Fusebox, ColdBox..
• Guilty Polyglot: .NET, J2EE, Lotus Notes, SAP + more
• Custom development for retail (The Brick), manufacturing,
shipping, logistics, workflow, legal, eLearning, eServices,
eCommerce + beyond.
• Connecting the dots: Reporting, BI, accounting systems, ERP,
shipping systems, JIT / lean manufacturing, barcoding and
scanning everything imaginable, workflow management systems
• CFML has remained the vital and productive glue
to connect everything to everything and more.
Wednesday, 10 October, 12 4
5. My Journey to Mura
• Started: Mura 5.1 ish before plugins.
Lots of potential, upgrading was tougher after customizing.
• Mura seemed more like a platform
than a CMS to me.
• Mura seemed very different than the other
CMS’ I used.
Wednesday, 10 October, 12 5
6. What I needed from Mura
• Do things one way, in one place.
• Actually "reuse code".
• Modularity in both back and front end.
• Avoid the 80% of app support logic we
implement over and over
• I just want to build business logic and solve problems!
• Frameworks like Coldbox are great, but I want more platform
with the framework.
Wednesday, 10 October, 12 6
7. I was hesitant..
• Like anyone unsure about a new system.
• Jas bugs Malcolm about A/B testing
• Jas bugs Matt about something
• Jas meets the Grant
• Jas asks the Grant "how do you best do.." x1000.
Eureka.
• Jas is unhappy Mura didn't exist in 1999.
Wednesday, 10 October, 12 7
8. Let’s connect you to plugins
• How many Designers? Devs? Managers?
• Years of CFML experience?
• Mura experience?
• Plugin experience? With FW/1?
Wednesday, 10 October, 12 8
9. Why do plugins
Make the world go 'round?
Wednesday, 10 October, 12 9
10. Plugins make life easier*
• Plugins aid every skill level.
• Plugins reduce re-inventing the wheel.
• Plugins encourage time to be spent solving
new problems.
• Every plugin saves time.
* May only be in Mura CMS
Wednesday, 10 October, 12 10
11. Why Plugins are a big deal
for Developers
• Mura Plugins make + keep customization easier
• Mura is actually, easily extensible & easily upgradeable.
• Avoid The Application Logic trap and
build your custom business logic quickly
• Spend your time on solving actual problems
instead of wasting cycles on your stack.
• Ever tried writing / understanding a plugin
for any other CMS?
Wednesday, 10 October, 12 11
12. Why Plugins are a big deal
for Designers
• More output from less hours:
Extremely quick Turn-key websites ala WP, if not quicker.
• Extremely easy to develop themes for.
Convert existing, or create a new one.
• Enjoy website backup + restoration with site bundler.
Why spend $75 on BackupBuddy plugin for WP?
• Themes that actually work and load the first time.
Ever tried loading / creating a theme made for another CMS?
• Mura’s site manager is yet to intimidate a non-technical end user.
Self managed sites = happy clients.
• Developers can be found to do custom coding.
If a dev knows FW/1 or Coldbox, they can start with Mura.
Wednesday, 10 October, 12 12
14. Plugins are a big deal for
Managers
• The #1 cost in software dev is labour.
• Easier to answer the one question every org asks..
Where is everything at?
• Mura gets more done, with less effort.
Using CFML is another multiplier.
• Custom Mura plugins let you connect + share data in any
separate system to a central Mura portal easily.
• Boost profitability, savings, and value by connecting information
to create insights that weren’t as easily possible.
Wednesday, 10 October, 12 14
15. Why Mura Plugins?
Plugins grow ecosystems.
Customers Need it all! Mura CMS
Agencies Designers
Consultants Plugins Themes
Developers
I wish I had one I wish I had one
More plugins + themes =
place to get place to do
Easier, and easier adoption.
everything.. everything..
Wednesday, 10 October, 12 15
16. Plugins + Themes.
More Mura, Plugins +
Themes
uptake
Easier Mura
Usage++
More design +
Community++
dev
Commerce++
Customer
needs grow
Wednesday, 10 October, 12 16
17. Everyone needs plugins,
even that weird one.
• No plugin is too lonely, simple, or has code
that's too ugly, especially if you use FW/1.
• Put it on GitHub, and let someone improve it
with you.
Wednesday, 10 October, 12 17
18. Why does every plugin
have value?
• "I can't be the first one with this need...
There has to be a plugin.."
• Small plugins still save big time.
In the short + long term, do you really want to hand code the
weather in?
• Big plugins = entire applications.
Plugins + FW/1 let create apps inside Mura easily
Wednesday, 10 October, 12 18
19. A small challenge.
• Today, get involved in the plugin conversation.
Let’s keep talking. Let it be any idea.
• Designers: throw some ideas out on the Mura forums
See if someone’s interested.
• Developers: solve the next small problem you
have with a plugin, or one on the Forum, or find a
WP plugin you like and..
Wednesday, 10 October, 12 19
20. Maybe building a plugin isn’t
so bad after all..
But is it really that easy?
How can FW/1 make it easy when
so many other CMS’ can’t?
Wednesday, 10 October, 12 20
21. FW/1 is not your average
framework.
• FW/1 is invisible.
Convention > Configuration =
One of the most invisible MVC frameworks I've enjoyed.
• FW/1 does everything, and nothing.
Does nothing but leaves nothing undone. Performant too.
• FW/1 stays out of the way.
Doesn't aim to solve every problem I've ever had before I have it.
I appreciate that.
• FW/1 let's you do it your way.
Roll your own user login, tie into external authentication,
or use entire Mura platform in FW/1.
Wednesday, 10 October, 12 21
22. FW/1 fits all situations.
• Proof of concept.
Extremely quick to build a plugin instead of throwaway code.
• Weekend/hobby projects.
FW/1 builds and organizes as you go. It grows with you.
• Build entire web apps.
Ever dream of just starting to build business logic functionality
without caring about login/out/security...?
• Software as a Service startup.
Between CF, Mura and FW/1.
Wednesday, 10 October, 12 22
23. They say you know when
you know..
• FW/1 plugins complement Mura perfectly.
Plugins and CMS fit each other so well that
I haven't found in many other CMS’.
• Mura and FW/1 may be a near perfect marriage.
Mura handles app logic. FW/1 keeps your business logic
organized.
• How can you start solving your problems today?
Wednesday, 10 October, 12 23
25. First, How do Mura Plugins
work?
• Plugins are installed globally.
All sites can be given access to it in
Site Settings > Global Settings > Plugins Tab
• Plugins have display objects.
Display objects are a plugins’ views that embed in a
page. FW/1 manages these views very well.
• Display objects are embedded in a Mura
page under Content Objects.
That's all.
Wednesday, 10 October, 12 25
26. Layers of
FW/1 Plugin File Structure
• Config Layer
We need to edit/set these up
before starting.
• Sub-system Layer
Easily separate admin screens
from public/end-user screens.
- Admin pages render inside Mura Admin
- Public Subsystem pages render in CMS
Pages
Wednesday, 10 October, 12 26
27. Mura FW/1 folders
• /assets stores your Plugins
Assets, css, Etc.
• /model can be created
manually to store ORM or DAL
using FW/1 examples.
Wednesday, 10 October, 12 27
28. Mura FW/1 structure
• FW/1 Subsystems separate
Client + Admin Logic
• Mura Plugin has Admin + Public
subsystems as default.
- Admin pages rendering inside Mura Admin
- Public Subsystem pages rendering in CMS pages for
end-user
• Access Mura scope inside plugin
via rc.$
Wednesday, 10 October, 12 28
29. Step 1: Download.
• Download the latest FW/1 base
plugin from Marketplace
• http://bit.ly/mura-fw1-plugin
• Mura FW/1 Plugin is an *almost*
ready-to-upload ZIP file
• ... first a tiny bit of config ..
... then zip up the plugin folder to deploy the plugin
Wednesday, 10 October, 12 29
30. Step 2a: Configure.
• Before we begin... Name the plugin
• We need a display App name
App Name: “MuraCon Plugin”
• We need a unique package name
Pkg Name: “MuraConPlugin” (Unique, no spaces)
Wednesday, 10 October, 12 30
31. Step 2b: Configure.
• Setup the plugin with a unique app name + unique package
name
App Name: “MuraCon Plugin” Pkg Name: “MuraConPlugin”
• /plugin/config.xml.cfm
• Plugin Name
• Package Name
• Unique Version #
• /fw1config.cfm
• UNIQUE Package Name is used everywhere!
?PackageNameAction=subsystem:cfcName.FunctionName
• set framework.reloadApplicationOnEveryRequest = true;
• Zip the folder up into an archive to load into your Mura install.
Wednesday, 10 October, 12 31
32. Step 2c: Auto Deploy Plugin.
• New since MuraCon 2011
• config/settings.ini.cfm
set autoDiscoverPlugins=true
• ..clone your plugin into /plugins and reload
Mura!
• plugin/config.xml
set <autodeploy>true</autodeploy>
to make it live <siteid>siteA,siteB</siteID>
• ...autodeploy a site straight from source code control!
Wednesday, 10 October, 12 32
34. Step 3: Upload
• Upload your updated plugin file into Mura
via Mura Admin > Global Settings > Plugins
• We’re almost ready to start coding a plugin
while installed in Mura.
Wednesday, 10 October, 12 34
36. Step 4: Develop.
• Let’s build an Admin feature
• New admin subsystem action called
users.list to list all users in the system
Wednesday, 10 October, 12 36
37. Step 4a. Let’s refresh..
FW/1 MVC
• If your plugin URL is
?PackageNameaction=public:main.home ..
FW/1 will call in this order:
• First the code in a function called home() located in
{Mura Dir}/{plugin dir}/public/controllers/main.cfc
• Second your view (output to screen) in
{Mura Dir}/plugin dir}/public/views/main/home.cfm
• *** Move information between controller
and view through the request context (rc)
• Get the FW/1 Cheatsheet! http://bit.ly/fw1cheatsheet
Wednesday, 10 October, 12 37
40. Step 4d: Develop
• Let’s build an public feature
• New public subsystem action called
users.list to list all users in the system
Wednesday, 10 October, 12 40