Top Banner
@MAGNOLIA_CMS 1 Magnolia CMS & Vaadin Integration: A Hot Fusion Aleksandr Pchelintcev, Magnolia Espen Jervidalo, Magnolia Frankfurt am Main, December 17 2013
55

Magnolia CMS and Vaadin integration

May 08, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �1

Magnolia CMS & Vaadin Integration: A Hot FusionAleksandr Pchelintcev, Magnolia Espen Jervidalo, Magnolia

Frankfurt am Main, December 17 2013

Page 2: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �2

Aleksandr PchelintcevSr. Software Engineer, Magnolia

Page 3: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �3

Espen JervidaloSr. Software Engineer, Magnolia

Page 4: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �4

®

Page 5: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �5

MAGNOLIA AMERICAS

MAGNOLIA ASIA

MAGNOLIA INTERNATIONAL

MAGNOLIA SPAIN

MAGNOLIA CZECH REPUBLIC

Page 6: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �6

Selected Customers

Page 7: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �7

Al Arabiya

Page 8: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �8

Magnolia CMSBest of breed open stack

100% Java/J2EE compliant Apache Jackrabbit (JCR 2.0/JSR-283) GWT and Vaadin

Designed for customisation and extensibility Open Source (GPL)

Page 9: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �9

Attractive CMSOxymoron?

Page 10: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �10

Page 11: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �11

Page 12: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �12

Magnolia Shell Apps Website

Page 13: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �13

Magnolia Shell Apps

Page 14: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �14

Journey Challenges

Page 15: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �15

OLD ADMIN

UI

Page 16: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �16

DESIGN

PROPOSAL

Page 17: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �17

Why Vaadin?Java

Close to Swing Reusable components Well-documented Pure JUnit testing Fewer compiles (compared to plain GWT)

Page 18: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �18

Vaadin

Prototype

Page 19: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �19

Page 20: Magnolia CMS and Vaadin integration

3000 UX

mockups

Page 21: Magnolia CMS and Vaadin integration
Page 22: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �22

Challengesconceptual technical

Page 23: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �23

Magnolia Shell

Foundation for Apps Navigation dispatching Transitions

Page 24: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �24

Apps

SERVER

LocationController

CLIENT

Shell ConnectorLOCATION

VIEWRP

C/ST

ATE MagnoliaShellView

!Viewport WidgetViewport

Magnolia Shell

Page 25: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �25

Navigation handling inspired by Activity/Places framework Brought to server-side Adapted to AdminCentral use-case

Magnolia Shell

Page 26: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �26

Transition QuirksJS Transitions - terribly slow JQuery.animate-enhanced for hardware accelerated transitions! GwtQuery 1.4.0 for substitution?

Page 27: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �27

Mobile Gotchas MGWT for touch events and gestures Fake transforms:

-webkit-transform: translateZ(0) -webkit-backface-visibility: hidden;

Closure Compiler: 25% less JS Icon fonts: crispy sharp icons.

Page 28: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �28

Conceptual Challenges

Page 29: Magnolia CMS and Vaadin integration
Page 30: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �30

Magnolia Core

Vaadin

Widgets

UI Framework

Apps

Page 31: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �31

App Framework

Page 32: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS

CONTENT APP PACKAGE

APP FRAMEWORK

MY PROJECT

�32

MyApp

BaseApp

App

MySubApp

BaseSubApp

SubApp

MySubAppView

BrowserSubApp

DetailSubApp

Page 33: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �33

What can the App framework do for you?

Page 34: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �34

LifecycleYou don’t have to care about it

You can hook into it Location objects

bean wrapping the url fragment used for navigation

Page 35: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �35

#app:<appName>:<subAppId>:<param1;param2>

URL Fragments

Page 36: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS

#app:<appName>:<subAppId>:<param1;param2

�36

Page 37: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �37

IoCstandard

@Inject based on guice

configured nearly every component can be replaced

scopes main, app, subapp

Page 38: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �38

public class MySubApp extends BaseSubApp<MyView> { ! private final EventBus eventBus; ! @Inject public MySubApp( @Named(AppEventBus.NAME) EventBus eventBus, SubAppContext subAppContext, MyView view){ ! super(subAppContext, view); this.eventBus = eventBus; }

My App

Page 39: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �39

Conceptual Challenge not yet solved

Page 40: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �40

Content App Declarative UI

Page 41: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �41

Page 42: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �42

Page 43: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �43

Page 44: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �44

public class MyView implements View { Component label = new Label(“Hello Gwt.create!”); ! @Override Component asVaadinComponent() { return label; } }

My View

Page 45: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �45

Page 46: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �46

Page 47: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �47

How does that help non-programmers extending the system?

Page 48: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �48

Model-View-Presenter Pattern

Presenter

Model

View

EventBus

Page 49: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �49

Vaadin UI

FieldFactory

FormBuilder

EditorPresenter

JCR (Config) Editor Definition

Page 50: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �50

Eventually you configure the UI within the UI

Page 51: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �51

Page 52: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �52

Page 53: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �53

Technical challenge solved. Conceptual challenge solved.

Page 54: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �54

We hopewe raised interest & curiosity you’ll consider Magnolia CMS you have some questions

.. that we can answer

Page 55: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �55

www.magnolia-cms.com

Thanks for your attention!