Lukas Renggli, August 2003 Slide 1 Smalltalk Wiki towards CMS Lukas Renggli
Lukas Renggli, August 2003 Slide 1
Smalltalk Wikitowards CMS
Lukas Renggli
Lukas Renggli, August 2003 Slide 2
Why another Wiki?
ß Object OrientedDesignß Extensibilityß Componentsß Web serverß Storage
ß Open sourceß Dialect independentß Test Suites
Lukas Renggli, August 2003 Slide 3
Roadmap
ß Userß Editingß Navigation
ß Administratorß Templates
ß Developerß Testingß Implementationß Coding Session
ß Summary
Lukas Renggli, August 2003 Slide 4
User
EditingNavigation
Lukas Renggli, August 2003 Slide 5
[Page Example 1]
ß Paragraphß Unordered Listß Links
SmallWikiDemo
SmallWikiDemo
Lukas Renggli, August 2003 Slide 6
[Page Example 2]
ß Rendererß Actionsß Sessionß Referencesß Path
SmallWikiDemo
SmallWikiDemo
Lukas Renggli, August 2003 Slide 7
Administrator
Templates
Lukas Renggli, August 2003 Slide 8
Wiki Title
Path
Actions
Refs
Structure Title
Content
Template Example I
Lukas Renggli, August 2003 Slide 9
Actions
Structure Title
Content
Actions
Template Example II
Lukas Renggli, August 2003 Slide 10
[Template Example]SmallWiki
DemoSmallWiki
Demo
Lukas Renggli, August 2003 Slide 11
Developer
TestingImplementationCoding Session
Lukas Renggli, August 2003 Slide 12
[Testing]SmallWiki
DemoSmallWiki
Demo
Lukas Renggli, August 2003 Slide 13
StructureDocument
Component���������Template���������
WikiItem��������� Visitor���������
Action���������
Basic Design
Lukas Renggli, August 2003 Slide 14
Structure���������
Folder����������� Page���������Resource���������1
*predecessor
children
1
0..1
children����������� data, mime-type����������� document�����������
title, predecessor,
properties, parent �����������parent 0..1
1
Structure
Lukas Renggli, August 2003 Slide 15
Wiki Documents!Heading TextParagraph containing a *Link*
:Page
:Page
:Document
:Header :Paragraph
:Text :InternalLink
SmaCC Parser
Lukas Renggli, August 2003 Slide 16
Available Extensions
ß Search Engineß Keyword Indexß Link Collectionß External Link Checkerß Photo Folderß E-Mail Notificationß Importer
Lukas Renggli, August 2003 Slide 17
Coding Session
ß RSS News Feedß BottomFeederß Reuse of Model
ß Template Componentß Visible on all Pagesß Configuration Interfaceß Automatic Refresh
<?xml version="1.0" ?><rss version="2.0"> <channel> <item> <title>SmallWiki</title> <description>A Small ... <link>http://www.sm ... </item> ... </channel></rss>
RSS
Lukas Renggli, August 2003 Slide 18
Presentedß Structureß Folderß Pagesß Resources
ß Documentsß Parsing
ß Templatesß Extensions
SummaryNot Seenß Pluggableß Serverß Storage
ß Versioningß Securityß Actionsß Callbacks
Lukas Renggli, August 2003 Slide 19
Towards a CMS
ß We should not let PHP and Zope winß SmallCMS: Reusable Components for
Content Managementß Join, use, extend, …
[I]
Lukas Renggli, August 2003 Slide 20
References
ß Latest Releaseß SCG StORE and Cincom Public StORE
ß Running SmallWikiß http://kilana.unibe.ch:9090
ß Documentationß http://c2.com/cgi/wiki?SmallWikiß http://scgwiki.iam.unibe.ch:8080/SCG/520
ß Related Projectsß Gardner: CMS using Seaside and SmallWikiß Garden: In-Image Wiki Editor for Squeak
Lukas Renggli, August 2003 Slide 21
General Setup
SwazooServer
Structure���Server���
Server
Request
Response
Client
Web Browser���
Lukas Renggli, August 2003 Slide 22
DocumentDocument
Component���������
HorizontalRule
Document���Composite�����
1
*
List����
Text
Preformatted
Paragraph
Internal
Link
ExternalOrderedList
UnorderedList
Header
…
Table����
Document����
…
Lukas Renggli, August 2003 Slide 23
* Template���������
Structures��������� String��������� RootContainer���������1
Column
Row����
References
Path����
Timestamp
Content����
Title
Wiki
Action
Structure
������…
Template
ß Position on the pageß Content of component
Template>>for: anAction
Lukas Renggli, August 2003 Slide 24
Action���������
Edit��������� History��������� ������InvisibleView���������
Page
Folder����
Remove
Add����
GoTo
Login
������…
Resource
Page
Folder����
Resource
Page
Folder����
Resource
Actions
ß Execute the action-codeAction>>execute
ß Provide an user interfaceAction>>renderContent
Lukas Renggli, August 2003 Slide 25
Serving
folder: Folder����root: Folder����
page: Page
HTTP-GET/folder/page?action=EditPage
1: process 2: process
3: process
4: processAction
:EditPage5: execute
6: render
7.1: template
:Visitor���8. render
7.2: renderer
:Template
9.1*: accept
:Document
9.2*: visit
and
Lukas Renggli, August 2003 Slide 26
Rendering
:Action1: execute :Renderer
8. render
:Template
6.1*: accept
:Document
6.2*: visit
2: render
:Page
3: renderer
4: start
5: template
:Content
7: renderContent
9: start
10.1*: accept 10.2*: visit
8: document