Development of the TYPO3 Phoenix User Interface with Ext JS

42
Inspiring people to share Development of the TYPO3 Phoenix User Interface with Ext JS T3CON10 * Bild austauschen * fehlende Bildverweise ersetzen Dienstag, 5. Oktober 2010

description

The upcoming TYPO3 version 5.0 - codename Phoenix - will be a revolution. Not only on the server-side there will be fundamental changes in the way of programming the system and its extensions also the backend interface will feature many revolutionary ideas of working with a content management system. The implementation of the user interface needs to address these new concepts and allow for a flexible yet robust architecture.

Transcript of Development of the TYPO3 Phoenix User Interface with Ext JS

Page 3: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Christopher Hlubek Nils Dehl

twitter: nilsdehltwitter: hlubek

Dienstag, 5. Oktober 2010

Page 4: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

AgendaIntroduction

Challenges of implementing the TYPO3 Phoenix UI

Choosing Ext JS

The Phoenix JS UI architecture

Next steps

Questions

Dienstag, 5. Oktober 2010

Page 5: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Introduction

Dienstag, 5. Oktober 2010

Page 6: Development of the TYPO3 Phoenix User Interface with Ext JS

Dienstag, 5. Oktober 2010

Page 7: Development of the TYPO3 Phoenix User Interface with Ext JS

Dienstag, 5. Oktober 2010

Page 8: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Challengesof implementing the TYPO3

Phoenix UI

Dienstag, 5. Oktober 2010

Page 9: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Smooth workflow &rich user experience1

Dienstag, 5. Oktober 2010

Page 10: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Traditional web interface

Web > Page Web > List Web > Preview

Page load

WorkspaceTemplate

Dienstag, 5. Oktober 2010

Page 11: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Phoenix user interface

Web > PageWeb > List

Web > Preview

Page load

WorkspaceTemplate

Single page

Dienstag, 5. Oktober 2010

Page 12: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Single page workflow

Load everything at once

Intelligent initialization

Manage browser history

Dienstag, 5. Oktober 2010

Page 13: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Extensibility2Dienstag, 5. Oktober 2010

Page 14: Development of the TYPO3 Phoenix User Interface with Ext JS

Insert menu item

Insert section

Add column

Dienstag, 5. Oktober 2010

Page 15: Development of the TYPO3 Phoenix User Interface with Ext JS

Add dialog

Add form fieldChange input

type

Dienstag, 5. Oktober 2010

Page 16: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Extensibility

Extend everything

Don‘t worry about extensibility

Easy API

1st level concept

Dienstag, 5. Oktober 2010

Page 17: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Development with many (unknown) people

Consistency

Intuitive concepts

Simple vs. Flexible

3

Dienstag, 5. Oktober 2010

Page 18: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Robust API(safe and maintainable)

Using it right should be simple

Good documentation

Stable vs. Extensible

4

Dienstag, 5. Oktober 2010

Page 19: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Choosing Ext JS

Dienstag, 5. Oktober 2010

Page 20: Development of the TYPO3 Phoenix User Interface with Ext JS

Dienstag, 5. Oktober 2010

Page 21: Development of the TYPO3 Phoenix User Interface with Ext JS

Dienstag, 5. Oktober 2010

Page 22: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

ExtJSvery rich component library

cross-browser compatible

great component model

many nice abstractions, f.e. Data Stores

uses Layout Managers

easy to extend

Dienstag, 5. Oktober 2010

Page 23: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Ext Direct

ControllerAction

Client

Server

ControllerActionRPC

Dienstag, 5. Oktober 2010

Page 24: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

The Phoenix JS UI architecture

Dienstag, 5. Oktober 2010

Page 25: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

JavaScript UI architecture

Initialization Configuration

Base Components

Base UI

I18NSchema

informationSecurity

ACLs

ExtDirectServices

Dienstag, 5. Oktober 2010

Page 26: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

JavaScript UI concepts

ModuleInitialization

Helper API

Event container

Configuration

Dienstag, 5. Oktober 2010

Page 27: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Creating ModulesApplication.createModule(‘F3...SomeModule‘, {configure: function(registry) {

registry.set(‘form/type/...‘, ‘value‘);},initialize: function(application) {

application.afterInitializationOf(‘F3...SomeModule‘,function(someModule) { ... }

);}

});

Dienstag, 5. Oktober 2010

Page 28: Development of the TYPO3 Phoenix User Interface with Ext JS

Initialization

Dienstag, 5. Oktober 2010

Page 29: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Module 3Module 2

Module 1

t

Initialization order

Module 4?Dienstag, 5. Oktober 2010

Page 30: Development of the TYPO3 Phoenix User Interface with Ext JS

Dienstag, 5. Oktober 2010

Page 31: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Application initialization

for

ever

y M

odul

e:

init

ializ

e()

DOM onReady afterInitializationOfUserInterfaceModule

addContentArea

...

t

createModule

createModule

createModule

Application.afterBootstrap

initialize viewport

...for

ever

y M

odul

e:

confi

gure

()

Dienstag, 5. Oktober 2010

Page 32: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Initialization process

Application

Module A Module B

confi

gure

()

confi

gure

()

regi

ster

eve

nts

regi

ster

eve

nts

afte

rBoo

tstr

ap

afte

rBoo

tstr

ap

initi

aliz

e()

initi

aliz

e()

afte

rIni

tializ

atio

n ...

afte

rIni

tializ

atio

n ...

Dienstag, 5. Oktober 2010

Page 33: Development of the TYPO3 Phoenix User Interface with Ext JS

Configuration

Dienstag, 5. Oktober 2010

Page 34: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Registry

menu

main

content

title "Content"

Dienstag, 5. Oktober 2010

Page 35: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Registry

menu

main

content

title "Content"

registry.set('menu/main[]/content/title','Welcome'

)

"Welcome"

Dienstag, 5. Oktober 2010

Page 36: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Registry

menu

main

content

title "Content"

registry.set('menu/main[]/content/title','Welcome'

)

"Welcome"

registry.append('menu/main[]', 'management',{title: 'Mgmt'}

)

management

title "Mgmt"

Dienstag, 5. Oktober 2010

Page 37: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Registry

menu

main

content

title "Content"

registry.set('menu/main[]/content/title','Welcome'

)

"Welcome"registry.append(

'menu/main[]', 'management',{title: 'Mgmt'}

)

management

title "Mgmt"

registry.set('menu/main[]/management/title', 'Manage'

)

"Manage"

Dienstag, 5. Oktober 2010

Page 38: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

RegistryOrder independent configuration

Needs compilation after

Create any JSON structure

Menus

Form definitions

Grid columns

...

Dienstag, 5. Oktober 2010

Page 39: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

Next StepsRefine the API

Implement more features

Create lots of custom components

Implement the new design

And for that...

Dienstag, 5. Oktober 2010

Page 40: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

We need you!

Dienstag, 5. Oktober 2010

Page 41: Development of the TYPO3 Phoenix User Interface with Ext JS

Inspiring people toshareDevelopment of the TYPO3 Phoenix User Interface with Ext JS

?????????????

Dienstag, 5. Oktober 2010

Page 42: Development of the TYPO3 Phoenix User Interface with Ext JS

inspiring people to share.

Dienstag, 5. Oktober 2010