Dynamic Web Development with Seaside

Table of Contents

Table of Contents
Table of Figures
Foreword
1
Introduction
1.1
What is Seaside?
1.2
Seaside Applications
1.3
What is Smalltalk?
1.3.1
One-Click Image
1.4
Structure of the Book
1.5
Formatting Conventions
1.6
About the Online Book
1.7
About the PDF Book
1.8
About the Printed Book
1.9
Acknowledgments
I
Getting Started
2
Pharo Smalltalk
2.1
Using the One Click Image
2.1.1
Of Mice and Menus
2.2
What is a Smalltalk Image?
2.3
The Comanche Server
2.4
A First Seaside Component
2.4.1
Defining a Category
2.4.2
Defining a Component
2.4.3
Defining the Code
2.4.4
Rendering a Counter
2.4.5
Registering as a Seaside Application
2.4.6
Automatically Registering a Component
2.4.7
Adding Behavior
2.4.8
Adding a Class Comment
2.5
Saving your Package to Monticello
2.6
Summary
3
Cincom Smalltalk
3.1
Loading Seaside into VisualWorks
3.2
Seaside Operations Menu
3.3
Seaside Settings
3.4
Persistence
3.5
Developing in VisualWorks
3.5.1
Basic Tools
3.5.2
Packages and Categories
3.5.3
Name Spaces
3.5.4
Additional Components
3.6
Developing a First Component
3.6.1
Create a Package
3.6.2
Create a Name Space
3.6.3
Define a Component
3.6.4
Editing Generated Methods
3.6.5
Rendering the Counter
3.6.6
Registering the Application
3.6.7
Adding Behavior
3.6.8
Rendering the Behavior
4
GemStone/S
4.1
Using the GLASS Virtual Appliance
4.2
A First Seaside Component
4.2.1
Defining a Component
4.2.2
Defining Some Methods
4.2.3
Rendering a counter
4.2.4
Registering the Application
4.2.5
Adding Behavior
4.3
Keeping Up With the Latest Features
5
GNU Smalltalk
5.1
Creating a GNU Smalltalk image with Seaside loaded
5.2
Operating the GNU Smalltalk virtual machine remotely
5.3
Developing in GNU Smalltalk
5.4
Developing your first component
6
VA Smalltalk
6.1
Loading Seaside into VA Smalltalk
6.2
Starting VA Smalltalk Seaside
6.2.1
Seaside Server Control Panel Menu Options
6.2.2
Adding a Server Adaptor
6.2.3
Starting a Server Adaptor
6.2.4
A Simple Seaside Example
6.3
Developing Your First Seaside Component
6.3.1
Defining a Component
6.3.2
Adding Some Methods
6.3.3
Rendering a Counter
6.3.4
Registering the Counter Component
6.3.5
Adding Behavior to the Counter
II
Fundamentals
7
Rendering Components
7.1
Rendering Hello World
7.2
Fun with Seaside XHTML Canvas
7.3
More Fun with the Seaside Canvas
7.4
Rendering Objects
7.5
Brush Structure
7.6
Learning Canvas and Brush APIs
7.7
Rendering Lists and Tables
7.8
Style Sheets
7.9
Summary
8
CSS in a Nutshell
8.1
CSS Principles
8.2
CSS Selectors
8.2.1
Tag Selector
8.2.2
Class Selector
8.2.3
Pseudo Class Selector
8.2.4
Reference or ID Selector
8.3
Composed Selectors
8.4
Summary
9
Anchors and Callbacks
9.1
From Anchors to Callbacks
9.2
Callbacks
9.3
About Callbacks
9.4
Contact Information Model
9.5
Listing the Contacts
9.6
Adding a Contact
9.7
Removing a Contact
9.8
Creating a mailto: Anchor
9.9
Summary
10
Forms
10.1
Text Input Fields and Buttons
10.2
Convenience Methods
10.3
Drop-Down Menus and List Boxes
10.4
Radio Buttons
10.5
Check Boxes
10.6
Date Inputs
10.7
File Uploads
10.8
Summary
III
Using Components
11
Calling Components
11.1
Displaying a Component Modally
11.2
Example of call/answer
11.3
Call/Answer Explained
11.4
Component Sequencing
11.5
Answer to the Caller
11.6
Don't call while rendering
11.7
A Look at Built-In Dialogs
11.8
Handling The Back Button
11.9
Show/Answer Explained
11.9.1
Transforming a Call to a Show
11.10
Summary
12
Embedding Components
12.1
Principle: Component Children
12.2
Example: Embedding an Editor
12.3
Components All The Way Down
12.4
Intercepting a Subcomponent's Answer
12.5
A Word about Reuse
12.6
Decorations
12.6.1
Visual Decorations
12.6.2
Behavioral Decorations
12.7
Component Coupling
12.8
Summary
13
Tasks
13.1
Sequencing Components
13.2
Hotel Reservation: Task vs. Component
13.3
Mini Inn: Embedding Components
13.4
Summary
14
Writing good Seaside Code
14.1
A Seaside Program Checker
14.2
Slime at Work
14.3
Summary
IV
Seaside In Action
15
A Simple ToDo Application
15.1
Defining A Model
15.2
Defining the View
15.3
Rendering and Brushes
15.4
Adding Callbacks
15.5
Adding a Form
15.6
Calling Other Components
15.7
Answer
15.8
Embedding Child Components
15.9
Summary
16
A Web Sudoku Player
16.1
Sudoku Solver
16.2
Sudoku Component
16.3
Rendering the Sudoku Grid
16.4
Adding Input
16.5
Back Button
16.6
Summary
17
Serving Files
17.1
Images
17.2
Including CSS and Javascript
17.3
Working With File Libraries
17.3.1
Creating a File Library
17.3.2
Referencing FileLibrary files by URL
17.4
Example of FileLibrary in use
17.5
Which method should I use?
17.6
A Word about Character Encodings
17.6.1
Character sets
17.6.2
Encodings
17.6.3
In Seaside and Pharo
18
Managing Sessions
18.1
Accessing the Current Session
18.2
Accessing the Session from the Debugger
18.3
Customizing the Session for Login
18.4
Lifecycle of a Session
18.5
Catching the Session Expiry Notification
18.6
Recovering from Expired Sessions
18.7
Manually Expiring Sessions
18.8
Summary
V
Web 2.0
19
Really Simple Syndication
19.1
Creating a News Feed
19.2
Render the Channel Definition
19.3
Rendering News Items
19.4
Subscribe to the Feed
19.5
Summary
20
Dynamic Content with Scriptaculous
20.1
Prototype and script.aculo.us
20.1.1
Installation
20.1.2
Adding the Library
20.2
Snippets and Brushes
20.2.1
Instantiate a Brush
20.2.2
Using a Brush
20.2.3
Configure a Brush
20.3
Adding an Effect
20.4
AJAX: Talking back to the Server
20.4.1
Defining a Callback
20.4.2
Serializing a Form
20.4.3
Updating XHTML
20.4.4
Behind the curtains
20.4.5
Wrap Up
20.5
Drag and Drop
20.6
JavaScript Controls
20.7
Debugging AJAX
20.8
Summary
21
jQuery
21.1
Getting Ready
21.2
jQuery Basics
21.2.1
Creating Queries
21.2.2
Refining Queries
21.2.3
Performing Actions
21.3
Adding jQuery
21.4
Ajax
21.5
How To
21.5.1
Click and Show
21.5.2
Replace a Component
21.5.3
Update Multiple Elements
21.5.4
Open a Lightbox
21.6
Enhanced ToDo Application
21.6.1
Adding an Effect
21.6.2
Callbacks Redux
21.6.3
Drag and Drop
21.6.4
Summary
22
Comet
22.1
Inside Comet
22.2
Getting Started
22.3
The Counter Explained
22.4
Summary
VI
Advanced Topics
23
Deployment
23.1
Preparing for Deployment
23.2
Seaside-Hosting
23.3
Deployment with Apache
23.3.1
Preparing the Server
23.3.2
Installing Apache
23.3.3
Installing the Squeak VM
23.3.4
Running the VMs
23.3.5
Configuring Apache
23.3.6
Serving files with Apache
23.3.7
Load Balancing Multiple Images
23.3.8
Using AJP
23.4
Maintaining Deployed Images
23.4.1
Headful System
23.4.2
Virtual Network Computing
23.4.3
Deployment Tools
23.4.4
Request Handler
24
REST Services
24.1
REST in a Nutshell
24.2
Getting Started with REST
24.2.1
Defining a Handler
24.2.2
Defining a Service
24.3
Matching Requests to Responses
24.3.1
HTTP Method
24.3.2
Content Type
24.3.3
Request Path
24.3.4
Query Parameters
24.3.5
Conflict Resolution
24.4
Handler and Filter
24.5
Request and Response
24.6
Advices and Conclusion
25
Some Persistency Approaches
25.1
Image-Based Persistence
25.2
Object Serialization
25.3
Sandstone: an Active-Record Image-based Approach
25.3.1
The SandstoneDB API
25.3.2
About Concurrency
25.4
Magma: an Object-Oriented Database
25.4.1
How it works
25.4.2
Getting Started
25.4.3
Running Remotely
25.5
GLORP: an Object-Relational Mapper
26
Magritte: Meta-data at Work
26.1
Basic Principles
26.2
First Example
26.3
Descriptions
26.4
Exceptions
26.5
Adding Validation
26.6
Accessors and Mementos
26.7
Custom Views
26.8
Custom Descriptions
26.9
Summary
Keyword Index

Copyright © 19 March 2024 Stéphane Ducasse, Lukas Renggli, C. David Shaffer, Rick Zaccone
This book is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 license.

This book is published using Seaside, Magritte and the Pier book publishing engine.