seaside web 2.0

57
Lukas Renggli Seaside Lukas Renggli [email protected] Web 2.0 1 Seaside hot

Upload: esug

Post on 05-Dec-2014

1.769 views

Category:

Technology


1 download

DESCRIPTION

Seaside Web 2.0. Lukas Renggli. ESUG 2006, Prague

TRANSCRIPT

Page 1: Seaside Web 2.0

Lukas Renggli Seaside

Lukas [email protected]

Web 2.0

1

Seasidehot

Page 2: Seaside Web 2.0

Lukas Renggli Seaside

Why should I upgrade?

2

Page 3: Seaside Web 2.0

Lukas Renggli Seaside

Collaboration

3

Page 4: Seaside Web 2.0

Lukas Renggli Seaside

Design

4

Page 5: Seaside Web 2.0

Lukas Renggli Seaside

Liveliness

5

Page 6: Seaside Web 2.0

Lukas Renggli Seaside

Sharing

6

Page 7: Seaside Web 2.0

Lukas Renggli Seaside

Usability

7

Page 8: Seaside Web 2.0

Lukas Renggli Seaside

How can I upgrade?Can I do it with Seaside?

8

Page 9: Seaside Web 2.0

Lukas Renggli Seaside

XHTMLSemantically valid markup

9

Page 10: Seaside Web 2.0

Lukas Renggli Seaside

XHTMLSemantically valid markup

9

Page 11: Seaside Web 2.0

Lukas Renggli Seaside

CSSCascading Style-Sheets

10

Page 12: Seaside Web 2.0

Lukas Renggli Seaside

CSSCascading Style-Sheets

10

Page 13: Seaside Web 2.0

Lukas Renggli Seaside

RSSReally Simple Syndication

11

Page 14: Seaside Web 2.0

Lukas Renggli Seaside

RSSReally Simple Syndication

11

Page 15: Seaside Web 2.0

Lukas Renggli Seaside

AJAXAsynchronous JavaScript and XML

12

Page 16: Seaside Web 2.0

Lukas Renggli Seaside

COMETHTTP Streaming, Server Push

13

Page 17: Seaside Web 2.0

Lukas Renggli Seaside14

SeasideWeb 2.0

Page 18: Seaside Web 2.0

Lukas Renggli Seaside

Challenge

15

Page 19: Seaside Web 2.0

Lukas Renggli Seaside

Concentrate onto the Web application

16

yes

Page 20: Seaside Web 2.0

Lukas Renggli Seaside

BrowserBugs

17

no

Page 21: Seaside Web 2.0

Lukas Renggli Seaside

BrowserDifferences

18

no

Page 22: Seaside Web 2.0

Lukas Renggli Seaside

BrowserIncompatibilities

19

no

Page 23: Seaside Web 2.0

Lukas Renggli Seaside20

Page 24: Seaside Web 2.0

Lukas Renggli Seaside21

Page 25: Seaside Web 2.0

Lukas Renggli Seaside22

Page 26: Seaside Web 2.0

Lukas Renggli Seaside23

Tight Integration

Page 27: Seaside Web 2.0

Lukas Renggli Seaside

Feature Complete

24

Page 28: Seaside Web 2.0

Lukas Renggli Seaside

Up-To-Date

25

Page 29: Seaside Web 2.0

Lukas Renggli Seaside

Say it in Smalltalk

26

Page 30: Seaside Web 2.0

Lukas Renggli Seaside27

Avi Bryant www.smallthought.com

Lukas Renggliwww.lukas-renggli.ch

Page 31: Seaside Web 2.0

Lukas Renggli Seaside

Say it in Smalltalk

28

Page 32: Seaside Web 2.0

Lukas Renggli Seaside

No JavaScript Programming

29

Page 33: Seaside Web 2.0

Lukas Renggli Seaside

Still, you need to be aware thatyour code will result in JavaScript

30

Page 34: Seaside Web 2.0

Lukas Renggli Seaside

Think of it as Magic

31

html effect id: ‘hint’; shake

new Effect.Shake(‘hint’)

Page 35: Seaside Web 2.0

Lukas Renggli Seaside

Adding JavaScript Events

32

html div onClick: (html effect toggle); with: [ ... ]

Page 36: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Page 37: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Choose a strategy

Page 38: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Choose a strategy

Define options

Page 39: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Choose a strategy

Define options

Assign httpevent handlers

Page 40: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Choose a strategy

Define options

Assign httpevent handlers

Set triggers to serialize client state

Page 41: Seaside Web 2.0

Lukas Renggli Seaside

AJAX – Step by Step

33

html (updater|periodical|request|evaluator) [ OPTIONS; ]* [ HANDLER; ]* [ TRIGGER; ]* [ CALLBACK; ]*

Choose a strategy

Define options

Assign httpevent handlers

Set triggers to serialize client state

Define primary (and secondary) callbacks

Page 42: Seaside Web 2.0

Lukas Renggli Seaside

• Request

• Updater– Insertion– Periodical

• Evaluator

AJAX Strategies

34

Page 43: Seaside Web 2.0

Lukas Renggli Seaside

AJAX Request

• Perform a request and evaluate the callback ajaxCallback on the server.

• Note: A bug in your code doesn’t show up in the Web browser, but directly as a debugger within your development image.

html request callback: [ self ajaxCallback ]

35

Page 44: Seaside Web 2.0

Lukas Renggli Seaside

AJAX Updater

• Replace the contents of the DOM element named domId with XHTML rendered by renderAjaxOn:.

html updater id: domId; callback: [ :r | self renderAjaxOn: r ]

36

Page 45: Seaside Web 2.0

Lukas Renggli Seaside

Triggers

• triggerForm: aDomIdTrigger the form aDomId and all containing form-fields and associated callbacks.

•triggerFormElement: aDomIdTrigger the callback of the form element named aDomId. Does not work for checkbox and multi-select list.

37

Page 46: Seaside Web 2.0

Lukas Renggli Seaside

Sortable List

38

Page 47: Seaside Web 2.0

Lukas Renggli Seaside

Sortable List

38

html unorderedList id: ‘list’; script: (html sortable onUpdate: (html request triggerSortable: ‘list’ callback: [ :v | list := v ])); with: [ list do: [ :each | html listItem passenger: each; with: each label ] ]

Page 48: Seaside Web 2.0

Lukas Renggli Seaside

Drag & Drop

39

Page 49: Seaside Web 2.0

Lukas Renggli Seaside

Drag & Drop

39

html div class: ‘shape’; passenger: aCircle; script: html draggable

Page 50: Seaside Web 2.0

Lukas Renggli Seaside

html div id: ‘dropbox’; script: (html droppable accept: ‘shape’; onDrop: (html updater id: ‘dropbox’; triggerPassenger: [ :v | box add: v ]; callback: [ :r | self renderBox: r ])); with: [ html renderBox: r ]

Drag & Drop

39

html div class: ‘shape’; passenger: aCircle; script: html draggable

Page 51: Seaside Web 2.0

Lukas Renggli Seaside

In Place Editing

40

html paragraph script: (html inPlaceEditor triggerInPlaceEditor: [ :v | text := v ]; callback: [ :r | r render: text ]); with: text

Page 52: Seaside Web 2.0

Lukas Renggli Seaside

What about debugging?

41

Page 53: Seaside Web 2.0

Lukas Renggli Seaside42

Page 54: Seaside Web 2.0

Lukas Renggli Seaside43

Page 55: Seaside Web 2.0

Lukas Renggli Seaside44

Page 56: Seaside Web 2.0

Lukas Renggli Seaside

scriptaculous.seasidehosting.st

45

Page 57: Seaside Web 2.0

Lukas Renggli Seaside

“It‘s more like Web 3.0”

46