Seaside -Web -
: _ ( ) := ( + ) ^ ( )
: 101 Squeak... -> (SeasideLesson-BasicXXXX) name filein code
Seaside Web (Win, Mac, Linux) Web Web Smalltalk
SeasideJOne http://swikis.ddo.jp/umejava/seasidejone zip 10 Web + Seaside 2.6 + (SeasideJ) Windows, Mac, Linux USB!
Squeak VM Seaside SeasideJOne Windows win_seaside.bat Mac mac_seaside.command Linux SeasideJOne./linux_seaside
Seaside SeasideJ : KomSeasideJ starton: 9090. : KomSeasideJ stop. ( do it ) SeasideJOne
http://localhost:9090/seaside/config : admin : admin Seaside
Counter http://localhost:9090/seaside/counter ++ -- back
? (Continuation) HTTP! Back Web URL ID ID
Web Smalltalk
Seaside Web ( ) HTML RDB CRUD Rails... RDB DB
Seaside MVC Web MVC C V M MVC... Seaside MVC GUI MVC VC MVC Web (HTTP HTML JavaScript ) GUI
V C HTML (V) (C) WAComponent Seaside
WAComponent MyComponent MyComponent Seaside MyComponent class>>initialize self registerasapplication: sample MyComponent initialize do it http://localhost:9090/seaside/sample
( ) HTML Web HTML Smalltalk HTML
001 WAComponent>>rendererClass MyComponent>>rendererClass WARenderCanvas WAHtmlRenderer WARenderCanvas 2.7 WAComponent>>renderContentOn: html rendererclass MyComponent>>renderContentOn: html html text:
002 html orderedlist: [ #(foo bar) do: [:each html listitem: [ html text: each]]]. html table: [ html tablerow: [ #(foo bar) do: [:each html tabledata: [html text: each]]]]. html imageform: ActiveWorld submorphs first imageform.
003 GUI Smalltalk html anchor callback: [self inform: Time now]; text:?'
004 morph morph ActiveWorld submorphs first. html form: [ html textinput value: morph extent; callback: [:value morph extent: (Point readfrom: value)]. html submitbutton value:. ]. html imageform: morph imageform
005 on:of: html form: [ html textinput on: #name of: customer. html textinput on: #address of: customer. html submitbutton. ] callback: customer name address Submit customer name: address:
( Back ) MyComponent>>initialize self session registerobjectforbacktracking: object. object self
(1) Seaside (WACounter) WACounter browse do it http://localhost:9090/seaside/counter registerobjectforbacktracking:
(1) WAMultiCounter counters WACounter WAMultiCounter>>renderContentOn: html counters do: [:ea html render: ea] separatedby: [html horizontalrule] children WAMultiCounter>>children counters
(2) canberoot WAMultiCounter class>>canberoot true Configure Root Component URL URL
call: answer: call: ( ) answer: call: XML! answer: B A>>methodA value self call: (B new) A call: B>>methodB self answer: value
006 (1) class: id: css MyComponent>>renderContentOn: html html heading class: 'topic'; with: ' '. html paragraph class: 'contents'; with: ' Seaside'. html div class: 'cool'; with: [ html orderedlist: [ #(foo bar) do: [:each html listitem: [ html text: each]]]. ]
006 (2) WAComponent>>style css MyComponent>>style ' h1 { test-align: center; }.topic { color: red;}.contents { color: blue; }.cool { margin: 5%; } li { background-color: #ecf3e1; border: 1px solid #c5dea1; } '
007 (3) StyleLibrary WAStyleLibrary css Configure Libraries
101 (2) To Do List http://localhost:9090/seaside/todo ToDoListRoot call: answer: ToDoListRoot>>addItem style ToDoListItemViewer>> style registerobjectforbacktracking: ToDoListRoot>>initialize
Back WAComponent>>isolate: WATask WATask>>go WAStoreTask
MyShoppingTask>>go cart WAStoreCart new. self isolate: [[self fillcart. self confirmcontentsofcart] whilefalse]. self isolate: [ shipping shipping _ self getshippingaddress. self shipto: shipping]. self displayconfirmation.
component adddecoration: (WAWindowDecoration new)
WAWindowDecoration WABasicAuthentication WAValidationDecoration
(V C ) ( )
(3) 201 202 http://localhost:9090/seaside/shop SeasideLesson-Store-Model VC SeasideLesson-Store-View isolate: Back MyOrderListView >> checkaddressandship
DB (1) OODB OmniBaseJ http://swikis.ddo.jp/umejava/24 Magma http://wiki.squeak.org/squeak/2665 O/R Glorp http://map.squeak.org/package/c31e6624-0465-40c2-814e-12e38299edc0
DB (2) Seaside DB WASession DB Configure Session Class DB MyComponent>>store: domainobject self session store: domainobject Seaside WASession>>unregistered DB MySession>>unregistered self db close
DB (3) OmniBaseJ http://swikis.ddo.jp:9091/omnibasej.html : http://swikis.ddo.jp/umejava/24 DBAccessor http://swikis.ddo.jp:9091/dbaccessor.html...
DB (4) MyDBSession>>store: object SBOmniBaseAccessor commitdo: [:transaction transaction root at: object key put: object]. MyDBSession>>getAt: key SBOmniBaseAccessor readdo: [:transaction transaction root at: key]. MyDBSession>>unregistered SBOmniBaseAccessor closedb.
WASimpleNavigation WATableReport WALabelledFormDialog ( ) WABatchedList ( )
Configure Deployment Lang (SeasideJ) self application preferenceat: #deploymentmode Configuration WASystemConfiguration Squeakers' Night in 2.0
Seaside ShoreComponents http://www.squeaksource.com/shorecomponents.html BeachSand Configuration http://squeaksource.blueplane.jp/beachsand.html MEWA or Magritte http://www.squeaksource.com/mewa.html http://www.lukas-renggli.ch/smalltalk/magritte Scriptaculous Scristaculous (Web 2.0 JavaScript ) JavaScript Seaside 2.6 Seaside
008 Scriptaculous onclick: effect MyComponent>>renderContentOn: html html heading id: 'topic'; with: ' '. html anchor onclick: (html effect id: 'topic'; toggleblind); with: ' Seaside'. Configure Libraries SULibrary MyComponent
Squeak headless ( ) squeak headless <your.image> Apache ProxyPass ProxyPassReverse httpd.conf ProxyPass /seaside/ http://localhost:9090/seaside/ ProxyPassReverse /seaside/ http://localhost:9090/seaside/ SSL Seaside SSL Stunnel http://www.stunnel.org/
Seaside Web GUI Web Smalltalk Ver. 2.7 Watch http://seaside.st