Building Mura CMS Plugins with FW/1 at MuraCon 2011


Published on

My presentation about building Plugins in Mura CMS using FW/1.

Presented August 2011 in Sacramento at MuraCon 2011. Any questions please find me @JasPanesar.

Published in: Technology, Art & Photos
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Building Mura CMS Plugins with FW/1 at MuraCon 2011

  1. 1. Mura CMS Plugins with FW/1 MuraCon - Aug 24 2011@JasPanesar Jas@Panesar.Net
  2. 2. TodayIntro Why Mura Why FW/ FW/1 Sean Q/A Plugins 1? Plugin Throws ... or Rock? Quickstart Tomatoes5 min 10 min 25 min 10 min ~50 minutes to Mura Plugin Zen
  3. 3. Me• Made in Canada• I like building + connecting stuff > inventing technologies• Started SMB + Enterprise consulting in 99.• 20 in 10 years• Lead Software Architect / System Integrator @ Damaag• Custom web + desktop dev for SMB & Enterprise products, projects across NA
  4. 4. ColdFusion• Discovered ColdFusion in 98• Custom development in retail, manufacturing, shipping, logistics, workflow, legal, eLearning, eServices, eCommerce...• Connecting the dots: Reporting, BI, accounting systems, ERP, shipping systems, JIT / lean manufacturing, barcoding and scanning everything, workflow management systems• Whatever wells "I can probably figure it out" has thrown me down.
  5. 5. The Mura + Jas Love Story• First site Mura 5.1 ish before plugins• Wondered why it was called a CMS, seemed like more of a platform• The kind of platform.. Where have you been all my life?
  6. 6. Mura + Jas Date• My "list" for a relationship: • Do things one way, in one place • Actually "reuse code" • Avoid the 80% of apps we build over and over • I just want to build business logic and solve problems! • Fusebox, Coldbox have been nice, but I wanted more platform with the framework
  7. 7. Jas is skeptical• 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• Jas is unhappy Mura didnt exist like this in 1999.
  8. 8. Poll• How many designers? Devs?• Years of CFML experience?• Mura experience?• Plugin experience? With FW/1?
  9. 9. Why do pluginsMake the world go round?
  10. 10. Plugins make it easier*• Plugins help every skill level.• Plugins reduce egos to re-invent the wheel.• Plugins encourage code re-use and the right kind of lazy programming.• Every plugin saves time. * May only be in Mura
  11. 11. Plugin Zen• Installing plugins is a cinch.• Before receiving, there must be giving.• Before giving, there must be creating.• Creating and sharing is caring.• We all like being cared about.
  12. 12. Plugins Grow Ecosystems• What kind of ecosystems? • Your Personal Ecosystems of apps and sites • Mura Ecosystems • ColdFusion Ecosystems • Designer Ecosystems (WP, etc) • CMS Ecosystems (Drupal, Joomla, etc.)
  13. 13. Plugins are a big deal for Mura Developers• Avoid The Application Logic trap• Mura Plugins actually make customization easier• Mura is actually, easily extendible unlike other CMS• Build your custom business logic very quickly• Build modular, reusable code• Spend your time on more interesting work and solving actual problems
  14. 14. Plugins are a big deal for Designers• Extremely quick Turn-key websites ala WP• More output.. Less hours• Self managed websites = happy clients• Great to theme in, plugins are growing, easy to install plugins• Developers can be found to do your custom coding.
  15. 15. Plugins are a big deal for Managers• The #1 cost in software dev is Developer time• Mura gets more done, with less effort.• Custom Mura plugins let you connect + share data locked in any 3rd system• Extend your competitive advantage into new areas• Easier to answer the one question everyone asks.. Where is everything at?
  16. 16. Why Mura Plugins? Plugins Develop Ecosystems by Making it Easier. Customers Need it Mura CMS all! Agencies Designers Plugins ThemesI wish I had one I wish I had one If we build it, they wont just place to get place to do come.. more and more are everything.. everything.. already here looking for it.
  17. 17. Plugins + Themes Grow Mura. More Mura, Plugins and Themes Mura uptake Easier Usage++ design + Community++ More dev Commerce++ Customer needs grow
  18. 18. Everyone needs plugins, even that weird one.• No plugin is too lonely, simple, or has code thats too ugly, especially if you use FW/1.  • Put it on GitHub, and let someone else improve it with you.  • If it worked for you, chances are it will work for someone else.
  19. 19. Every plugin is special and valuable like you.• "I cant 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
  20. 20. I throw many gauntlets at your heads.• Build a simple plugin and put it on GitHub. Let it be embarrassing. Let it be too simple.• Designers: throw some ideas out for what you need on the Mura Forums.• Developers: solve the next small problem you have with a plugin, or one on the Forum, or find a WP plugin ;)
  21. 21. Join the Mura is easy train.• Build a plugin in the next.• Not glorious. Simple. Essential. Not my crowning achievement in life.
  22. 22. So, now you want tomaybe build a plugin..I use FW/1? Besides the fact Sean is in the room?
  23. 23. FW/1 is like, different.• FW/1 is invisible. The most invisible MVC framework Ive seen.• FW/1 does everything, and nothing. Does nothing but leaves nothing undone.• FW/1 stays out of the way. Doesnt aim to solve every problem Ive ever had before I have it.• FW/1 lets you do it your way. Roll your own user login, or use entire Mura platform in FW/1.
  24. 24. FW/1 fits all.• Cowboy coding / Proof of concept. Faster to build a plugin than a straight script for a demo.• Weekend/hobby projects. FW/1 is perfect to build and organize it as you go.• Build entire web apps. Ever dream of just starting to build business logic functionality without caring about login/out/security...?• Software as a Service breakfast eater. Between CF, Mura and FW/1, I dare you.
  25. 25. FW/1 + Mura, sitting in a tree...• First, Mura plugins fit Mura perfectly. Plugins and CMS fit each other so well that I havent found in any other CMS.• Mura and FW/1 may be a perfect marriage.• Effortless. Mura handles app logic. FW/1 keeps your business logic organized.• How can you start solving your problems today?
  26. 26. Mura PluginQuickStart!So quick Ill do it hands free.
  27. 27. How 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. Thats all.• Thanks Grant, Steve and Sean.
  28. 28. Layers ofFW/1 Plugin File Structure • Config Layer We need to edit/set these up before starting. • Sub-systems Easily seperate admin screens from public/end-user screens.
  29. 29. Mura FW/1 folders • /assets store your Plugins Assets, css, Etc. • /model created manually to store ORM or DAL. - Admin pages rendering inside Mura Admin - Public Subsystem pages rendering in CMS pages for end-user
  30. 30. 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.$
  31. 31. Step 1: Download.• Download the latest FW/1 base plugin from Marketplace•• Mura FW/1 Plugin is an *almost* ready-to-upload ZIP file • ... with a tiny bit of config .. ..we pre-package the plugin for development
  32. 32. 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)
  33. 33. 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 - this will feed ?PackageNameAction=subsystem:cfcName.FunctionName • set framework.reloadApplicationOnEveryRequest = true;• Zip the folder up into an archive to load into your Mura install.
  34. 34. Step 2: Configure.
  35. 35. Step 3: Upload• Upload your updated plugin file into Mura via Mura Admin > Global Settings > Plugins• We are almost ready to start coding a plugin!
  36. 36. Step 3: Upload.
  37. 37. Step 4: Develop.• Let’s build an Admin feature• New admin subsystem action called users.list to list all users in the system
  38. 38. Step 4. Before we begin.. FW/1 MVC Refresh • 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) •
  39. 39. Step 4. Before we begin.. Datasources • Prefix all field + table names (“mcp_”) • No matter how, prefix custom tables ie.. “mcp_” for muraConPlugin • Mura Datasource • Seperate Datasource • ORM
  40. 40. Step 4: Develop.
  41. 41. Step 4: Develop• Let’s build an public feature• New public subsystem action called users.list to list all users in the system
  42. 42. Step 4: Public Dev
  43. 43. Step 4b: Forms..!
  44. 44. Step 5: Package it.• Download your completed plugin as a zip file• SCM is possible with Mura / Plugins too..
  45. 45. Step 7: Release.• Upload your plugin to GitHub and Mura Plugin Marketplace• Seriously.
  46. 46. Step 8: Repeat.• Betcha cant make just one.• Need a Plugin contest.. like Twilio
  47. 47. Links and stuff.••••
  48. 48. Q&A MuraCon - Building Plugins with FW/1@JasPanesar Jas@Panesar.Net