SlideShare a Scribd company logo
OCTOBER 16, 2014 
MAGNOLIA APP 
DEVELOPMENT
ZAK GREANT 
TECHNICAL EVANGELIST @ MAGNOLIA 
Credit:
BACKGROUND INFO 
Need more background information on 
Magnolia 5 and Apps? 
Watch the recording of the “Start Developing 
Apps for Magnolia 5” webinar here: 
http://magnolia-cms.com/company/events/ 
start-developing-apps-for-magnolia-five.html
QUESTIONS? 
Use the GoToWebinar control 
panel. 
When possible, we’ll answer questions 
immediately via text. 
We’ll repeat key questions at the end of 
the webinar as well. 
We may not be able to answer all 
questions during the webinar.
ANDREAS WEDER 
HEAD OF USER EXPERIENCE @ MAGNOLIA
JAN HADERKA 
CHIEF INTEGRATION OFFICER @ MAGNOLIA
MIKAËL GELJIĆ 
SOFTWARE ENGINEER @ MAGNOLIA
HOW APPS WORK 
Split work into smaller tasks 
Use an app to solve each task 
Piece the results together
A GREAT APP … 
adds clear value for users 
has a narrow focus 
plays well with other apps 
is easy to understand and use.
An app fulfills a need.
An app works well.
An app is a single piece …
… of an entire experience.
HOW DO I BUILD GREAT APPS? 
Quick-bite recipe cards that capture best practices 
for making your apps look // work // play well.
APP DESIGN GUIDELINES 
Part of our online documentation at: 
https://wiki.magnolia-cms.com/x/CAFcAw
WHEN TO USE WHICH ALERT STYLE?
HOW TO NAME AND SPELL ACTIONS?
SHOULD THIS ERROR INTERRUPT THE USER?
WHAT TYPE OF APP SHOULD I BUILD? 
Content apps - great for managing custom data sets 
Custom apps - if you need something really different
CONTENT APPS
CONTENT APPS 
By config, no Java necessary 
Design guidelines 
Cookbook in Magnolia documentation
“LIBERATED” CONTENT APPS
LIBERATED CONTENT APPS 
A new (5.3) type of content app 
Liberated from the JCR 
Java coding required 
Vaadin know-how is helpful 
Blossom can help customize just about anything
CUSTOM APPS
APP SETUP 
Define a module 
Write a service to encapsulate business logic 
Create app launcher entry 
Define & implement subapps 
Define & implement actions
APP BASE CLASSES 
Might be able to use EmbeddedPageSubApp 
(which shows external content in iframe) 
Use BaseSubApp 
Try to use SmallAppLayout
MAVEN ARCHETYPE 
mvn archetype:generate -DarchetypeCatalog= 
http://nexus.magnolia-cms.com/content/groups/public/
SCRIPT DEMO
JCR 
CONTENT APP
LIBERATED CONTENT APPS 
Available since Magnolia 5.3 
Key terms: Containers, ContentConnectors, itemIds... 
Great, where should I start? 
Here's your shot of Vaadin 
Photo scout app 
A content app displaying photos from Instagram, over their REST API
PHOTO SCOUT 
A content app displaying photos from Instagram 
! 
Demo time
FROM PLAIN VAADIN... 
com.vaadin.ui 
com.vaadin.data 
UI Container 
Data source 
Table / TreeTable 
Item Item 
Item Item Item
...OFF TO MAGNOLIA 
com.vaadin.ui com.vaadin.data 
CUoI ntent app Container 
Data source 
TWaobrlkeb /e TnrceheTable 
Item Item 
Item Item Item 
ContentConnector 
ImageProvider
VAADIN’S DATA MODEL 
Read 8. Binding Components to Data (https://vaadin.com/book/-/page/datamodel.html)
CONTAINER INTERFACES 
Hierarchical 
Indexed
CONTAINER IMPLEMENTATION TIPS 
#1 Start by extending the AbstractContainer 
#2 Focus on READ operations 
Leave WRITE operations unimplemented 
Read 8.5 Collecting Items in Containers 
https://vaadin.com/book/-/page/datamodel.container.html
The InstagramContainer
GOOD ITEM IDs 
Most simple unique representation of your content 
e.g. workspace + uuid in Magnolia for JCR items, photo id in flickr, 
path on a simple file-system 
Don't build itemIds by concatenating strings, use a 
typed POJO instead (eg. JcrItemId) 
In challenging situations, you might need more than 
strict uniqueness 
e.g. browse flickr photos by album, in a tree
FINE, WHAT ABOUT 
THE CONTENT CONNECTOR? 
Photo Scout Container 
Instagram 
Workbench 
Item Item 
Item Item Item 
ContentConnector 
ImageProvider 
instagram4j
THE CONTENT CONNECTOR 
Map arbitrary objects to three main representations: 
a unique itemId 
a Vaadin Item 
a URL fragment
CONTENT CONNECTOR BENEFITS 
Actions and Availability 
Operate on one or multiple items 
Sync selection with e.g. image preview capabilities 
Bookmark content / Add to favorites 
Chooser capability 
Integrate external content with other apps 
e.g. Linking to an image from a page component (pages app)
The InstagramContentConnector
DEPENDENCIES 
Photo Scout Container 
Instagram 
Workbench 
Item Item 
Item Item Item 
ContentConnector 
ImageProvider 
instagram4j 
1 
2 
3
HOOKING THE CONTAINER 
Extend Magnolia's default ContentPresenters 
ListPresenter, TreePresenter, ThumbnailPresenter 
Override #initializeContainer() 
Configure these presenters to be used 
.../browser/workbench/contentViews
Want to dive deeper? 
/** 
* Want to see more code? 
* Have I overlooked anything? 
* 
* Please do ask & let us know :) 
*/
DISCUSSION
THANK 
YOU!

More Related Content

What's hot

Smart app banners
Smart app bannersSmart app banners
Smart app banners
CocoaHeads France
 
07.1. Android Even Handling
07.1. Android Even Handling07.1. Android Even Handling
07.1. Android Even Handling
Oum Saokosal
 
Preparing for the Mobile Algorithm Shift
Preparing for the Mobile Algorithm ShiftPreparing for the Mobile Algorithm Shift
Preparing for the Mobile Algorithm Shift
Crystal Ware
 
07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)
Oum Saokosal
 
Progressive Web Apps –The Future of Apps
Progressive Web Apps –The Future of Apps   Progressive Web Apps –The Future of Apps
Progressive Web Apps –The Future of Apps
Ashish Saxena
 
Building a mobile app connected to WordPress with WP-AppKit
Building a mobile app connected to WordPress with WP-AppKitBuilding a mobile app connected to WordPress with WP-AppKit
Building a mobile app connected to WordPress with WP-AppKit
Benjamin LUPU
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
Troy Miles
 
Promotee
PromoteePromotee
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with Joomla
Anand Sharma
 
Mobile Apps presentation
Mobile Apps presentationMobile Apps presentation
Mobile Apps presentation
Tom Printy
 
AppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App PlatformAppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App Platform
pravse
 
Facebook appsincloud
Facebook appsincloudFacebook appsincloud
Facebook appsincloud
Kirsten Hunter
 
Build a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and FirebaseBuild a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and Firebase
Önder Ceylan
 
UaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing APIUaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing API
Matteo Bonifazi
 
FSOSS - Take the red pill and enter the Matrix
FSOSS - Take the red pill and enter the MatrixFSOSS - Take the red pill and enter the Matrix
FSOSS - Take the red pill and enter the Matrix
Frédéric Harper
 
How to build an API your developers will love (Short Version) - MuCON 2015, L...
How to build an API your developers will love (Short Version) - MuCON 2015, L...How to build an API your developers will love (Short Version) - MuCON 2015, L...
How to build an API your developers will love (Short Version) - MuCON 2015, L...
Michael Kuehne-Schlinkert
 
Off page optimization 1st class
Off page optimization 1st classOff page optimization 1st class
Off page optimization 1st class
uday sagar
 

What's hot (17)

Smart app banners
Smart app bannersSmart app banners
Smart app banners
 
07.1. Android Even Handling
07.1. Android Even Handling07.1. Android Even Handling
07.1. Android Even Handling
 
Preparing for the Mobile Algorithm Shift
Preparing for the Mobile Algorithm ShiftPreparing for the Mobile Algorithm Shift
Preparing for the Mobile Algorithm Shift
 
07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)
 
Progressive Web Apps –The Future of Apps
Progressive Web Apps –The Future of Apps   Progressive Web Apps –The Future of Apps
Progressive Web Apps –The Future of Apps
 
Building a mobile app connected to WordPress with WP-AppKit
Building a mobile app connected to WordPress with WP-AppKitBuilding a mobile app connected to WordPress with WP-AppKit
Building a mobile app connected to WordPress with WP-AppKit
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
 
Promotee
PromoteePromotee
Promotee
 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with Joomla
 
Mobile Apps presentation
Mobile Apps presentationMobile Apps presentation
Mobile Apps presentation
 
AppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App PlatformAppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App Platform
 
Facebook appsincloud
Facebook appsincloudFacebook appsincloud
Facebook appsincloud
 
Build a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and FirebaseBuild a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and Firebase
 
UaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing APIUaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing API
 
FSOSS - Take the red pill and enter the Matrix
FSOSS - Take the red pill and enter the MatrixFSOSS - Take the red pill and enter the Matrix
FSOSS - Take the red pill and enter the Matrix
 
How to build an API your developers will love (Short Version) - MuCON 2015, L...
How to build an API your developers will love (Short Version) - MuCON 2015, L...How to build an API your developers will love (Short Version) - MuCON 2015, L...
How to build an API your developers will love (Short Version) - MuCON 2015, L...
 
Off page optimization 1st class
Off page optimization 1st classOff page optimization 1st class
Off page optimization 1st class
 

Similar to Magnolia CMS App Developer Roundtable

How to design and build great apps (with moderator notes)
How to design and build great apps (with moderator notes)How to design and build great apps (with moderator notes)
How to design and build great apps (with moderator notes)
Andreas Weder
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
Magnolia
 
Open sap ui5 - week_2 unit_1_syjewa_exercises
Open sap ui5  - week_2 unit_1_syjewa_exercisesOpen sap ui5  - week_2 unit_1_syjewa_exercises
Open sap ui5 - week_2 unit_1_syjewa_exercises
Borusan Birlik Danışmanlık
 
If the Android platform you are developing for does not support fragme.docx
If the Android platform you are developing for does not support fragme.docxIf the Android platform you are developing for does not support fragme.docx
If the Android platform you are developing for does not support fragme.docx
edwardk6
 
How App Indexation Works
How App Indexation WorksHow App Indexation Works
How App Indexation Works
SerenaPearson2
 
Reusable Apps
Reusable AppsReusable Apps
Reusable Apps
DjangoCon2008
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
Apigee | Google Cloud
 
Building Scalable JavaScript Apps
Building Scalable JavaScript AppsBuilding Scalable JavaScript Apps
Building Scalable JavaScript Apps
Gil Fink
 
Highly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and MagnoliaHighly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and Magnolia
Magnolia
 
Cs 6611 mad lab manual
Cs 6611 mad lab manualCs 6611 mad lab manual
Cs 6611 mad lab manual
balasubramani manickam
 
CS6611 Mobile Application Development Laboratory
CS6611 Mobile Application Development LaboratoryCS6611 Mobile Application Development Laboratory
CS6611 Mobile Application Development Laboratory
balasubramani manickam
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by Citytech
Ritwik Das
 
Module 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to beginModule 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to begin
Deepakprasad838637
 
How to design and build great apps
How to design and build great appsHow to design and build great apps
How to design and build great apps
Magnolia
 
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
Yusuke Takahashi, PhD
 
CCI 2019 - PowerApps for Enterprise Developers
CCI 2019 - PowerApps for Enterprise DevelopersCCI 2019 - PowerApps for Enterprise Developers
CCI 2019 - PowerApps for Enterprise Developers
walk2talk srl
 
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio FranziniaOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
aOS Community
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
Paul Jensen
 
How Android Architecture Components can Help You Improve Your App’s Design?
How Android Architecture Components can Help You Improve Your App’s Design?How Android Architecture Components can Help You Improve Your App’s Design?
How Android Architecture Components can Help You Improve Your App’s Design?
Paul Cook
 
Learn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for DevelopersLearn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for Developers
Mars Devs
 

Similar to Magnolia CMS App Developer Roundtable (20)

How to design and build great apps (with moderator notes)
How to design and build great apps (with moderator notes)How to design and build great apps (with moderator notes)
How to design and build great apps (with moderator notes)
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
 
Open sap ui5 - week_2 unit_1_syjewa_exercises
Open sap ui5  - week_2 unit_1_syjewa_exercisesOpen sap ui5  - week_2 unit_1_syjewa_exercises
Open sap ui5 - week_2 unit_1_syjewa_exercises
 
If the Android platform you are developing for does not support fragme.docx
If the Android platform you are developing for does not support fragme.docxIf the Android platform you are developing for does not support fragme.docx
If the Android platform you are developing for does not support fragme.docx
 
How App Indexation Works
How App Indexation WorksHow App Indexation Works
How App Indexation Works
 
Reusable Apps
Reusable AppsReusable Apps
Reusable Apps
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
 
Building Scalable JavaScript Apps
Building Scalable JavaScript AppsBuilding Scalable JavaScript Apps
Building Scalable JavaScript Apps
 
Highly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and MagnoliaHighly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and Magnolia
 
Cs 6611 mad lab manual
Cs 6611 mad lab manualCs 6611 mad lab manual
Cs 6611 mad lab manual
 
CS6611 Mobile Application Development Laboratory
CS6611 Mobile Application Development LaboratoryCS6611 Mobile Application Development Laboratory
CS6611 Mobile Application Development Laboratory
 
Progressive Web Application by Citytech
Progressive Web Application by CitytechProgressive Web Application by Citytech
Progressive Web Application by Citytech
 
Module 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to beginModule 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to begin
 
How to design and build great apps
How to design and build great appsHow to design and build great apps
How to design and build great apps
 
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
How NOT to Suck at App Distribution - Quick Start Guide - Appsocially's Growt...
 
CCI 2019 - PowerApps for Enterprise Developers
CCI 2019 - PowerApps for Enterprise DevelopersCCI 2019 - PowerApps for Enterprise Developers
CCI 2019 - PowerApps for Enterprise Developers
 
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio FranziniaOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
aOS Moscow - E4 - PowerApps for enterprise developers - Fabio Franzini
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
 
How Android Architecture Components can Help You Improve Your App’s Design?
How Android Architecture Components can Help You Improve Your App’s Design?How Android Architecture Components can Help You Improve Your App’s Design?
How Android Architecture Components can Help You Improve Your App’s Design?
 
Learn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for DevelopersLearn Django Tips, Tricks & Techniques for Developers
Learn Django Tips, Tricks & Techniques for Developers
 

More from Magnolia

The SEO Workflow
The SEO WorkflowThe SEO Workflow
The SEO Workflow
Magnolia
 
Magnolia 6 release walkthrough
Magnolia 6 release walkthroughMagnolia 6 release walkthrough
Magnolia 6 release walkthrough
Magnolia
 
Buzzword bingo: The real deal behind omnichannel, personalization and headless
Buzzword bingo: The real deal behind  omnichannel, personalization and headlessBuzzword bingo: The real deal behind  omnichannel, personalization and headless
Buzzword bingo: The real deal behind omnichannel, personalization and headless
Magnolia
 
Developing Magnolia based sites correctly, quickly and efficiently
Developing Magnolia based sites correctly, quickly and efficientlyDeveloping Magnolia based sites correctly, quickly and efficiently
Developing Magnolia based sites correctly, quickly and efficiently
Magnolia
 
Integrating e-Commerce into your Customer Experience
Integrating e-Commerce into your Customer ExperienceIntegrating e-Commerce into your Customer Experience
Integrating e-Commerce into your Customer Experience
Magnolia
 
Customer Engagement in the Digital Era
Customer Engagement in the Digital EraCustomer Engagement in the Digital Era
Customer Engagement in the Digital Era
Magnolia
 
The Age of the IOT & Digital Business
The Age of the IOT & Digital BusinessThe Age of the IOT & Digital Business
The Age of the IOT & Digital Business
Magnolia
 
Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices Architecture
Magnolia
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
Magnolia
 
Magnolia Conference 2015 - Pascal Mangold's keynote
Magnolia Conference 2015 - Pascal Mangold's keynoteMagnolia Conference 2015 - Pascal Mangold's keynote
Magnolia Conference 2015 - Pascal Mangold's keynote
Magnolia
 
Product keynote - introducing Magnolia 5.4
Product keynote - introducing Magnolia 5.4Product keynote - introducing Magnolia 5.4
Product keynote - introducing Magnolia 5.4
Magnolia
 
Launching Magnolia on demand
Launching Magnolia on demandLaunching Magnolia on demand
Launching Magnolia on demand
Magnolia
 
Front-end developers - build Magnolia sites faster
Front-end developers - build Magnolia sites fasterFront-end developers - build Magnolia sites faster
Front-end developers - build Magnolia sites faster
Magnolia
 
Magnolia and beacons: how do they work best together?
Magnolia and beacons: how do they work best together?Magnolia and beacons: how do they work best together?
Magnolia and beacons: how do they work best together?
Magnolia
 
Magnolia and the IOT
Magnolia and the IOTMagnolia and the IOT
Magnolia and the IOT
Magnolia
 
Internationalization for globalized enterprise websites
Internationalization for globalized enterprise websitesInternationalization for globalized enterprise websites
Internationalization for globalized enterprise websites
Magnolia
 
The new visana website how to fit a square peg into a round hole
The new visana website   how to fit a square peg into a round holeThe new visana website   how to fit a square peg into a round hole
The new visana website how to fit a square peg into a round hole
Magnolia
 
Solving for complex UI designs: a front-end perspective and approach
Solving for complex UI designs: a front-end perspective and approachSolving for complex UI designs: a front-end perspective and approach
Solving for complex UI designs: a front-end perspective and approach
Magnolia
 
Extending Magnolia with our solutions
Extending Magnolia with our solutionsExtending Magnolia with our solutions
Extending Magnolia with our solutions
Magnolia
 
Boost your online e commerce with magnolia
Boost your online e commerce with magnoliaBoost your online e commerce with magnolia
Boost your online e commerce with magnolia
Magnolia
 

More from Magnolia (20)

The SEO Workflow
The SEO WorkflowThe SEO Workflow
The SEO Workflow
 
Magnolia 6 release walkthrough
Magnolia 6 release walkthroughMagnolia 6 release walkthrough
Magnolia 6 release walkthrough
 
Buzzword bingo: The real deal behind omnichannel, personalization and headless
Buzzword bingo: The real deal behind  omnichannel, personalization and headlessBuzzword bingo: The real deal behind  omnichannel, personalization and headless
Buzzword bingo: The real deal behind omnichannel, personalization and headless
 
Developing Magnolia based sites correctly, quickly and efficiently
Developing Magnolia based sites correctly, quickly and efficientlyDeveloping Magnolia based sites correctly, quickly and efficiently
Developing Magnolia based sites correctly, quickly and efficiently
 
Integrating e-Commerce into your Customer Experience
Integrating e-Commerce into your Customer ExperienceIntegrating e-Commerce into your Customer Experience
Integrating e-Commerce into your Customer Experience
 
Customer Engagement in the Digital Era
Customer Engagement in the Digital EraCustomer Engagement in the Digital Era
Customer Engagement in the Digital Era
 
The Age of the IOT & Digital Business
The Age of the IOT & Digital BusinessThe Age of the IOT & Digital Business
The Age of the IOT & Digital Business
 
Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices Architecture
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
 
Magnolia Conference 2015 - Pascal Mangold's keynote
Magnolia Conference 2015 - Pascal Mangold's keynoteMagnolia Conference 2015 - Pascal Mangold's keynote
Magnolia Conference 2015 - Pascal Mangold's keynote
 
Product keynote - introducing Magnolia 5.4
Product keynote - introducing Magnolia 5.4Product keynote - introducing Magnolia 5.4
Product keynote - introducing Magnolia 5.4
 
Launching Magnolia on demand
Launching Magnolia on demandLaunching Magnolia on demand
Launching Magnolia on demand
 
Front-end developers - build Magnolia sites faster
Front-end developers - build Magnolia sites fasterFront-end developers - build Magnolia sites faster
Front-end developers - build Magnolia sites faster
 
Magnolia and beacons: how do they work best together?
Magnolia and beacons: how do they work best together?Magnolia and beacons: how do they work best together?
Magnolia and beacons: how do they work best together?
 
Magnolia and the IOT
Magnolia and the IOTMagnolia and the IOT
Magnolia and the IOT
 
Internationalization for globalized enterprise websites
Internationalization for globalized enterprise websitesInternationalization for globalized enterprise websites
Internationalization for globalized enterprise websites
 
The new visana website how to fit a square peg into a round hole
The new visana website   how to fit a square peg into a round holeThe new visana website   how to fit a square peg into a round hole
The new visana website how to fit a square peg into a round hole
 
Solving for complex UI designs: a front-end perspective and approach
Solving for complex UI designs: a front-end perspective and approachSolving for complex UI designs: a front-end perspective and approach
Solving for complex UI designs: a front-end perspective and approach
 
Extending Magnolia with our solutions
Extending Magnolia with our solutionsExtending Magnolia with our solutions
Extending Magnolia with our solutions
 
Boost your online e commerce with magnolia
Boost your online e commerce with magnoliaBoost your online e commerce with magnolia
Boost your online e commerce with magnolia
 

Recently uploaded

Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
APNIC
 
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
dtagbe
 
Bangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
Bangalore Call Girls 9079923931 With -Cuties' Hot Call GirlsBangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
Bangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
narwatsonia7
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
APNIC
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
KubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial IntelligentKubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial Intelligent
Emre Gündoğdu
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
thezot
 
How to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdfHow to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdf
Infosec train
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
cyber crime.pptx..........................
cyber crime.pptx..........................cyber crime.pptx..........................
cyber crime.pptx..........................
GNAMBIKARAO
 
Decentralized Justice in Gaming and Esports
Decentralized Justice in Gaming and EsportsDecentralized Justice in Gaming and Esports
Decentralized Justice in Gaming and Esports
Federico Ast
 

Recently uploaded (13)

Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
 
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
一比一原版(uc毕业证书)加拿大卡尔加里大学毕业证如何办理
 
Bangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
Bangalore Call Girls 9079923931 With -Cuties' Hot Call GirlsBangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
Bangalore Call Girls 9079923931 With -Cuties' Hot Call Girls
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
KubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial IntelligentKubeCon & CloudNative Con 2024 Artificial Intelligent
KubeCon & CloudNative Con 2024 Artificial Intelligent
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
 
How to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdfHow to make a complaint to the police for Social Media Fraud.pdf
How to make a complaint to the police for Social Media Fraud.pdf
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
cyber crime.pptx..........................
cyber crime.pptx..........................cyber crime.pptx..........................
cyber crime.pptx..........................
 
Decentralized Justice in Gaming and Esports
Decentralized Justice in Gaming and EsportsDecentralized Justice in Gaming and Esports
Decentralized Justice in Gaming and Esports
 

Magnolia CMS App Developer Roundtable

  • 1. OCTOBER 16, 2014 MAGNOLIA APP DEVELOPMENT
  • 2. ZAK GREANT TECHNICAL EVANGELIST @ MAGNOLIA Credit:
  • 3. BACKGROUND INFO Need more background information on Magnolia 5 and Apps? Watch the recording of the “Start Developing Apps for Magnolia 5” webinar here: http://magnolia-cms.com/company/events/ start-developing-apps-for-magnolia-five.html
  • 4. QUESTIONS? Use the GoToWebinar control panel. When possible, we’ll answer questions immediately via text. We’ll repeat key questions at the end of the webinar as well. We may not be able to answer all questions during the webinar.
  • 5. ANDREAS WEDER HEAD OF USER EXPERIENCE @ MAGNOLIA
  • 6. JAN HADERKA CHIEF INTEGRATION OFFICER @ MAGNOLIA
  • 7. MIKAËL GELJIĆ SOFTWARE ENGINEER @ MAGNOLIA
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. HOW APPS WORK Split work into smaller tasks Use an app to solve each task Piece the results together
  • 14. A GREAT APP … adds clear value for users has a narrow focus plays well with other apps is easy to understand and use.
  • 15. An app fulfills a need.
  • 16. An app works well.
  • 17. An app is a single piece …
  • 18. … of an entire experience.
  • 19. HOW DO I BUILD GREAT APPS? Quick-bite recipe cards that capture best practices for making your apps look // work // play well.
  • 20. APP DESIGN GUIDELINES Part of our online documentation at: https://wiki.magnolia-cms.com/x/CAFcAw
  • 21. WHEN TO USE WHICH ALERT STYLE?
  • 22. HOW TO NAME AND SPELL ACTIONS?
  • 23. SHOULD THIS ERROR INTERRUPT THE USER?
  • 24. WHAT TYPE OF APP SHOULD I BUILD? Content apps - great for managing custom data sets Custom apps - if you need something really different
  • 26. CONTENT APPS By config, no Java necessary Design guidelines Cookbook in Magnolia documentation
  • 28. LIBERATED CONTENT APPS A new (5.3) type of content app Liberated from the JCR Java coding required Vaadin know-how is helpful Blossom can help customize just about anything
  • 30. APP SETUP Define a module Write a service to encapsulate business logic Create app launcher entry Define & implement subapps Define & implement actions
  • 31. APP BASE CLASSES Might be able to use EmbeddedPageSubApp (which shows external content in iframe) Use BaseSubApp Try to use SmallAppLayout
  • 32. MAVEN ARCHETYPE mvn archetype:generate -DarchetypeCatalog= http://nexus.magnolia-cms.com/content/groups/public/
  • 35. LIBERATED CONTENT APPS Available since Magnolia 5.3 Key terms: Containers, ContentConnectors, itemIds... Great, where should I start? Here's your shot of Vaadin Photo scout app A content app displaying photos from Instagram, over their REST API
  • 36. PHOTO SCOUT A content app displaying photos from Instagram ! Demo time
  • 37. FROM PLAIN VAADIN... com.vaadin.ui com.vaadin.data UI Container Data source Table / TreeTable Item Item Item Item Item
  • 38. ...OFF TO MAGNOLIA com.vaadin.ui com.vaadin.data CUoI ntent app Container Data source TWaobrlkeb /e TnrceheTable Item Item Item Item Item ContentConnector ImageProvider
  • 39. VAADIN’S DATA MODEL Read 8. Binding Components to Data (https://vaadin.com/book/-/page/datamodel.html)
  • 41. CONTAINER IMPLEMENTATION TIPS #1 Start by extending the AbstractContainer #2 Focus on READ operations Leave WRITE operations unimplemented Read 8.5 Collecting Items in Containers https://vaadin.com/book/-/page/datamodel.container.html
  • 43. GOOD ITEM IDs Most simple unique representation of your content e.g. workspace + uuid in Magnolia for JCR items, photo id in flickr, path on a simple file-system Don't build itemIds by concatenating strings, use a typed POJO instead (eg. JcrItemId) In challenging situations, you might need more than strict uniqueness e.g. browse flickr photos by album, in a tree
  • 44. FINE, WHAT ABOUT THE CONTENT CONNECTOR? Photo Scout Container Instagram Workbench Item Item Item Item Item ContentConnector ImageProvider instagram4j
  • 45. THE CONTENT CONNECTOR Map arbitrary objects to three main representations: a unique itemId a Vaadin Item a URL fragment
  • 46. CONTENT CONNECTOR BENEFITS Actions and Availability Operate on one or multiple items Sync selection with e.g. image preview capabilities Bookmark content / Add to favorites Chooser capability Integrate external content with other apps e.g. Linking to an image from a page component (pages app)
  • 48. DEPENDENCIES Photo Scout Container Instagram Workbench Item Item Item Item Item ContentConnector ImageProvider instagram4j 1 2 3
  • 49. HOOKING THE CONTAINER Extend Magnolia's default ContentPresenters ListPresenter, TreePresenter, ThumbnailPresenter Override #initializeContainer() Configure these presenters to be used .../browser/workbench/contentViews
  • 50. Want to dive deeper? /** * Want to see more code? * Have I overlooked anything? * * Please do ask & let us know :) */