First steps to Aida/Web
Aida tutorial on ESUG 09 in Brest
(slides, code, oneclicks: Squeak, Pharo, VW, VW parcels)
Below are the notes while preparing this tutorial.
Tutorial goal
Tutorial contents
- Aida basics
- Simple app conventional way
- Ajaxifiying your web app
- Single page web apps, tree-like control flow
- Making it international
Prerequisites
- Squeak and friends or VisualWorks
- Aida 6.0 preinstalled
Notes
1.domain model
- on Pharo
- new category AidaTutorial
- WeddingBook (persons)
- initPersons, persons, addPerson:
- class accessing: #singleton
- WPerson (book name surname partner)
- WeddingBook singleton
- addPerson: (WPerson new name: 'Janko' surname: 'Mivsek')
- addPerson female too!
2.web presentation
- AIDASite default urlResolver defaultURL: '/book' forObject: WeddingBook singleton
- WebApplication subclass: WeddingBookApp (WeddingBook+App) conventions!
- category views, #viewMain (empty)!
- check in browser -> login! explain! login admin/password
- #viewMain
- explain WebElement, convinience methods, self style pageFrameWith:
- self observee persons
- WPerson preferedUrl ^'/', self name, '-', self surname (explain)
- adLinkTo: person text: person name, ' ', person title
- WPersonApp, #viewMain
- e addText: self observee name. (explain)
- on the start: e addLinkTo: self observee book text: 'Back to book'. (hierarchy links, no circles)
- e add: self detailsElement (explanation later!)
3.Simple Ajax
- WPersonApp>>statusElement (explain element composition)
- parent isNil ifTrue: Free ifFalse: marriedTo:
- partner selection in detailsElement
- e addMenuAspect: #name collection: self observee book persons
selectedToAspect: #partner of: self observee
- check in browser
- (e addMenu...) onChangePostAndUpdate: e.
- explain WebElement events-ajax, WebFormElement events-ajax
Components, popup
- WebWidget subclass: WPersonEditWidget (person, element) explain!
- build (self clear, self registerId! self add...)
- self addButtonText: action: #save
- self addCloseWindowText: 'Cancel'.
- ajaxUpdate (self build)
- class new ^super new method: #ajaxUpdate
- WeddingBookApp>>viewMain
- (e addNilLinkText: 'Add new person') onClickPopup: (WPersonEditWidget new person: self newPerson; element: e).
- actions: actionMainSave self observee addPerson: self person (explain actions)
Tree-like control flow
Internationalization
- utf-8 on the web <-> Unicode in image
- two things: content and page text
- in-place text translation
- on VW ! on Squeak translated class metods not ported!
- find session, self setDevMode
- calendar example
- http: .... &setLanguage=fr