SlideShare une entreprise Scribd logo
1  sur  47
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
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
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
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
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
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
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
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
Why do plugins
                Make the world go 'round?



Wednesday, 10 October, 12                   9
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
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
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
Plugins Grow Ecosystems
                     • Your Personal Ecosystems apps and sites

                     • Mura Ecosystems

                     • ColdFusion Ecosystems

                     • Designer Ecosystems (WP, etc)

                     • CMS Ecosystems (Drupal, Joomla, etc.)


Wednesday, 10 October, 12                                        13
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
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
Plugins + Themes.

                                              More Mura, Plugins +
                                              Themes




                                                                     uptake
                                                                     Easier Mura
                                                  Usage++
                              More design +




                                                Community++
                                  dev




                                                Commerce++



                                                       Customer
                                                       needs grow




Wednesday, 10 October, 12                                                          16
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
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
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
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
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
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
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
Mura Plugin QuickStart!
                            So quick I'll do it hands free.




Wednesday, 10 October, 12                                     24
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
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
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
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
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
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
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
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
Step 2: Configure.




Wednesday, 10 October, 12                       33
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
Step 3: Upload.




Wednesday, 10 October, 12                     35
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
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
Step 4b. Let’s refresh..
                                        Datasources
             • Prefix all field + table names
                  (“mcp_”)


             • No matter how, prefix custom tables
                  ie.. “mcp_” for muraConPlugin


                       • Mura Datasource

                       • Seperate Datasource

                       • ORM

Wednesday, 10 October, 12                             38
Step 4c: Develop.




Wednesday, 10 October, 12                       39
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
Step 4d: Public Dev




Wednesday, 10 October, 12                     41
Step 4e: Forms..!




Wednesday, 10 October, 12                       42
Step 5: Package it.
                • Download your completed plugin as a zip file

                • SCM is possible with Mura / Plugins too..




Wednesday, 10 October, 12                                       43
Step 6: Release.
                • Upload your plugin to GitHub and Mura
                  Plugin Marketplace


                • Seriously.




Wednesday, 10 October, 12                                 44
Step 7: Repeat.
                • Betcha can't make just one.

                • Need a Plugin contest.. like Twilio




Wednesday, 10 October, 12                               45
Next steps..
                • Start some conversations
                     • About plugin ideas while you’re here.
                • Links
                     • bit.ly/mura-fw1-plugin
                     • bit.ly/murafw1cheatsheet
                     • http://bit.ly/submit-fw1-plugin
                     • github.com
                • Contact Me
                     • Jas Panesar
                       jas.panesar@damaag.com
                       Twitter: @JasPanesar


Wednesday, 10 October, 12                                      46
Q&A
                            MuraCon - Creating Mura CMS Plugins with FW/1
                                @JasPanesar blog: www.panesar.net
                               www.damaag.com - Jas@Damaag.Com
                                      Connect with me anytime!




Wednesday, 10 October, 12                                                   47

Contenu connexe

Similaire à MuraCon 2012 - Creating a Mura CMS plugin with FW/1

A year in the life of a Grails startup
A year in the life of a Grails startupA year in the life of a Grails startup
A year in the life of a Grails startuptomaslin
 
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...Citrix
 
Cloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloudCamp Chicago
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldSimon Haslam
 
Cloud Foundry the Open PaaS - OpenTour Austin Keynote
Cloud Foundry the Open PaaS - OpenTour Austin KeynoteCloud Foundry the Open PaaS - OpenTour Austin Keynote
Cloud Foundry the Open PaaS - OpenTour Austin KeynotePatrick Chanezon
 
Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012Patrick Chanezon
 
NCA GTUG 2012 - Cloud is such stuff as dreams are made on
NCA GTUG 2012 - Cloud is such stuff as dreams are made onNCA GTUG 2012 - Cloud is such stuff as dreams are made on
NCA GTUG 2012 - Cloud is such stuff as dreams are made onPatrick Chanezon
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT Group
 
Dev/Test in the Cloud - F
Dev/Test in the Cloud - FDev/Test in the Cloud - F
Dev/Test in the Cloud - FChris Riley ☁
 
Hw09 Whats New From Cloudera
Hw09   Whats New From ClouderaHw09   Whats New From Cloudera
Hw09 Whats New From ClouderaCloudera, Inc.
 
How My Website Learned to Stop Worrying and Love the Cloud
How My Website Learned to Stop Worrying and Love the CloudHow My Website Learned to Stop Worrying and Love the Cloud
How My Website Learned to Stop Worrying and Love the CloudMike Richwalsky
 
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!a_c_m
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect WorkshopPatrick Chanezon
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmyWojciech Seliga
 
Databricks for Dummies
Databricks for DummiesDatabricks for Dummies
Databricks for DummiesRodney Joyce
 
How to grow to a modern workplace in 16 steps with microsoft 365
How to grow to a modern workplace in 16 steps with microsoft 365How to grow to a modern workplace in 16 steps with microsoft 365
How to grow to a modern workplace in 16 steps with microsoft 365Tim Hermie ☁️
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production Matthew Reynolds
 

Similaire à MuraCon 2012 - Creating a Mura CMS plugin with FW/1 (20)

A year in the life of a Grails startup
A year in the life of a Grails startupA year in the life of a Grails startup
A year in the life of a Grails startup
 
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
 
Cloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentations
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle World
 
Cloud Foundry the Open PaaS - OpenTour Austin Keynote
Cloud Foundry the Open PaaS - OpenTour Austin KeynoteCloud Foundry the Open PaaS - OpenTour Austin Keynote
Cloud Foundry the Open PaaS - OpenTour Austin Keynote
 
Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012
 
NCA GTUG 2012 - Cloud is such stuff as dreams are made on
NCA GTUG 2012 - Cloud is such stuff as dreams are made onNCA GTUG 2012 - Cloud is such stuff as dreams are made on
NCA GTUG 2012 - Cloud is such stuff as dreams are made on
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worst
 
Dev/Test in the Cloud - F
Dev/Test in the Cloud - FDev/Test in the Cloud - F
Dev/Test in the Cloud - F
 
Hw09 Whats New From Cloudera
Hw09   Whats New From ClouderaHw09   Whats New From Cloudera
Hw09 Whats New From Cloudera
 
How My Website Learned to Stop Worrying and Love the Cloud
How My Website Learned to Stop Worrying and Love the CloudHow My Website Learned to Stop Worrying and Love the Cloud
How My Website Learned to Stop Worrying and Love the Cloud
 
The Sun Cloud
The Sun CloudThe Sun Cloud
The Sun Cloud
 
Stackato
StackatoStackato
Stackato
 
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!
Drupal Cloud to the rescue? Servers, Files, CDNs and Fun!
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy
 
Databricks for Dummies
Databricks for DummiesDatabricks for Dummies
Databricks for Dummies
 
How to grow to a modern workplace in 16 steps with microsoft 365
How to grow to a modern workplace in 16 steps with microsoft 365How to grow to a modern workplace in 16 steps with microsoft 365
How to grow to a modern workplace in 16 steps with microsoft 365
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 

Dernier

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Dernier (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[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
  • 13. Plugins Grow Ecosystems • Your Personal Ecosystems apps and sites • Mura Ecosystems • ColdFusion Ecosystems • Designer Ecosystems (WP, etc) • CMS Ecosystems (Drupal, Joomla, etc.) Wednesday, 10 October, 12 13
  • 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
  • 24. Mura Plugin QuickStart! So quick I'll do it hands free. Wednesday, 10 October, 12 24
  • 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
  • 33. Step 2: Configure. Wednesday, 10 October, 12 33
  • 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
  • 35. Step 3: Upload. Wednesday, 10 October, 12 35
  • 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
  • 38. Step 4b. Let’s refresh.. Datasources • Prefix all field + table names (“mcp_”) • No matter how, prefix custom tables ie.. “mcp_” for muraConPlugin • Mura Datasource • Seperate Datasource • ORM Wednesday, 10 October, 12 38
  • 39. Step 4c: Develop. Wednesday, 10 October, 12 39
  • 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
  • 41. Step 4d: Public Dev Wednesday, 10 October, 12 41
  • 42. Step 4e: Forms..! Wednesday, 10 October, 12 42
  • 43. Step 5: Package it. • Download your completed plugin as a zip file • SCM is possible with Mura / Plugins too.. Wednesday, 10 October, 12 43
  • 44. Step 6: Release. • Upload your plugin to GitHub and Mura Plugin Marketplace • Seriously. Wednesday, 10 October, 12 44
  • 45. Step 7: Repeat. • Betcha can't make just one. • Need a Plugin contest.. like Twilio Wednesday, 10 October, 12 45
  • 46. Next steps.. • Start some conversations • About plugin ideas while you’re here. • Links • bit.ly/mura-fw1-plugin • bit.ly/murafw1cheatsheet • http://bit.ly/submit-fw1-plugin • github.com • Contact Me • Jas Panesar jas.panesar@damaag.com Twitter: @JasPanesar Wednesday, 10 October, 12 46
  • 47. Q&A MuraCon - Creating Mura CMS Plugins with FW/1 @JasPanesar blog: www.panesar.net www.damaag.com - Jas@Damaag.Com Connect with me anytime! Wednesday, 10 October, 12 47