Smalltalk Wiki
                              towards CMS




                               Lukas Renggli

Lukas Renggli, August 2003                     Slide 1
Why another Wiki?
                                     ß Object Oriented
                                       Design
                                     ß Extensibility
                                       ß Components
                                       ß Web server
                                       ß Storage
                                     ß Open source
                                     ß Dialect independent
                                     ß Test Suites

Lukas Renggli, August 2003                                   Slide 2
Roadmap
         ß User
               ß Editing
               ß Navigation
         ß Administrator
               ß Templates
         ß Developer
               ß Testing
               ß Implementation
               ß Coding Session
         ß Summary

Lukas Renggli, August 2003              Slide 3
User

                              Editing
                             Navigation


Lukas Renggli, August 2003                Slide 4
[Page Example 1] SmallWiki
                                                SmallWiki
                                                 Demo
                                                 Demo




         ß Paragraph
         ß Unordered List
         ß Links




Lukas Renggli, August 2003                                  Slide 5
[Page Example 2] SmallWiki
                                                SmallWiki
                                                 Demo
                                                 Demo


         ß   Renderer
         ß   Actions
         ß   Session
         ß   References
         ß   Path



Lukas Renggli, August 2003                                  Slide 6
Administrator


                                Templates



Lukas Renggli, August 2003                   Slide 7
Template Example I

                   Wiki Title
                        Path
                        Structure Title
     Actions

                             Content
        Refs




Lukas Renggli, August 2003                   Slide 8
Template Example II

                 Actions
           Structure Title


                 Content


                 Actions




Lukas Renggli, August 2003                  Slide 9
[Template Example]
                                       SmallWiki
                                          SmallWiki
                                           Demo
                                           Demo




Lukas Renggli, August 2003                         Slide 10
Developer

                                 Testing
                             Implementation
                              Coding Session


Lukas Renggli, August 2003                     Slide 11
[Testing]
                                         SmallWiki
                                         SmallWiki
                                          Demo
                                           Demo




Lukas Renggli, August 2003                           Slide 12
Basic Design

                              WikiItem              Visitor




                              Document
       Structure                         Template   Action
                             Component




Lukas Renggli, August 2003                                    Slide 13
Structure

                                                   0..1                  predecessor
       children                          *        Structure
                                                                     1
             parent                     0..1   title, predecessor,
                                               properties, parent




                1            Folder               Resource                Page
                1            children           data, mime-type          document




Lukas Renggli, August 2003                                                             Slide 14
Wiki Documents
                       !Heading Text
                       Paragraph containing a *Link*
                                                SmaCC Parser

                  :Page            :Document


                              :Header       :Paragraph


                                        :Text        :InternalLink


                                                        :Page
Lukas Renggli, August 2003                                           Slide 15
Available Extensions
                             ß   Search Engine
                             ß   Keyword Index
                             ß   Link Collection
                             ß   External Link Checker
                             ß   Photo Folder
                             ß   E-Mail Notification
                             ß   Importer

Lukas Renggli, August 2003                               Slide 16
<?xml version="1.0" ?>

         Coding Session                    <rss version="2.0">
                                            <channel>
                                             <item>
                                              <title>SmallWiki</title>
                                              <description>A Small ...
                                              <link>http://www.sm ...
                                             </item>
         ß RSS News Feed                     ...
                                            </channel>

               ß BottomFeeder              </rss>


               ß Reuse of Model
         ß Template Component
               ß Visible on all Pages
               ß Configuration Interface
               ß Automatic Refresh
                                            RSS
Lukas Renggli, August 2003                                           Slide 17
Summary
         Presented              Not Seen
         ß Structure            ß Pluggable
               ß Folder             ß Server
               ß Pages              ß Storage
               ß Resources      ß   Versioning
         ß Documents            ß   Security
               ß Parsing        ß   Actions
         ß Templates            ß   Callbacks
         ß Extensions


Lukas Renggli, August 2003                       Slide 18
Towards a CMS




                                 []
                                   I
       ß We should not let PHP and Zope win
       ß SmallCMS: Reusable Components for
         Content Management
       ß Join, use, extend, …

Lukas Renggli, August 2003                    Slide 19
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 20
General Setup

                                    Request


                                   Response

                 Client                            Server


          Web Browser               Server      Structure


                                 SwazooServer

Lukas Renggli, August 2003                                  Slide 21
Document
                                   *       Document
                                          Component


        1      Document                   Horizontal
                                                               Text
               Composite                    Rule
                              Document                                Header

                              Paragraph                                Link

                             Preformatted                                      External
                                                OrderedList
                                 List                                           Mail
                                               UnorderedList
                                Table                                          Internal

                                  …                                     …

Lukas Renggli, August 2003                                                             Slide 22
Template
                                        * Template


    1
         Container                  Structures           String               Root       …
                              Row                Path              Content

                             Column         References            Timestamp

                                                                    Title

                                                                               Wiki
          ß Position on the page
                                                                             Structure
          ß Content of component
              Template>>for: anAction                                         Action


Lukas Renggli, August 2003                                                               Slide 23
Actions
                                      Action



        View                   Edit              History             Invisible      …
                     Folder            Folder               Folder                Add

                      Page             Page                 Page                 Remove

                    Resource          Resource             Resource              GoTo

                                                                                 Login
         ß Execute the action-code
           Action>>execute
         ß Provide an user interface
           Action>>renderContent
Lukas Renggli, August 2003                                                                Slide 24
HTTP-GET
 /folder/page?action=EditPage
                                            Serving

                             1: process                       2: process
                                            root: Folder                   folder: Folder

                                             7.1: template
                                                                              3: process
                                              7.2: renderer

                                8. render                     5: execute
         :Visitor                            :EditPage                      page: Page

9.1*: accept       9.2*: visit                 6: render                    4: processAction



      :Template                  and      :Document
Lukas Renggli, August 2003                                                                 Slide 25
Rendering
                                                                         :Document
                                           5: template

                                                  2: render        10.1*: accept    10.2*: visit
                             3: renderer

                              1: execute                      4: start
           :Page                              :Action         9: start    :Renderer
                             8: document

                                           7: renderContent             8. render
                                                                     6.1*: accept   6.2*: visit



                                            :Content                      :Template



Lukas Renggli, August 2003                                                                     Slide 26

SmallWiki: Smalltalk Wiki towards CMS

  • 1.
    Smalltalk Wiki towards CMS Lukas Renggli Lukas Renggli, August 2003 Slide 1
  • 2.
    Why another Wiki? ß Object Oriented Design ß Extensibility ß Components ß Web server ß Storage ß Open source ß Dialect independent ß Test Suites Lukas Renggli, August 2003 Slide 2
  • 3.
    Roadmap ß User ß Editing ß Navigation ß Administrator ß Templates ß Developer ß Testing ß Implementation ß Coding Session ß Summary Lukas Renggli, August 2003 Slide 3
  • 4.
    User Editing Navigation Lukas Renggli, August 2003 Slide 4
  • 5.
    [Page Example 1]SmallWiki SmallWiki Demo Demo ß Paragraph ß Unordered List ß Links Lukas Renggli, August 2003 Slide 5
  • 6.
    [Page Example 2]SmallWiki SmallWiki Demo Demo ß Renderer ß Actions ß Session ß References ß Path Lukas Renggli, August 2003 Slide 6
  • 7.
    Administrator Templates Lukas Renggli, August 2003 Slide 7
  • 8.
    Template Example I Wiki Title Path Structure Title Actions Content Refs Lukas Renggli, August 2003 Slide 8
  • 9.
    Template Example II Actions Structure Title Content Actions Lukas Renggli, August 2003 Slide 9
  • 10.
    [Template Example] SmallWiki SmallWiki Demo Demo Lukas Renggli, August 2003 Slide 10
  • 11.
    Developer Testing Implementation Coding Session Lukas Renggli, August 2003 Slide 11
  • 12.
    [Testing] SmallWiki SmallWiki Demo Demo Lukas Renggli, August 2003 Slide 12
  • 13.
    Basic Design WikiItem Visitor Document Structure Template Action Component Lukas Renggli, August 2003 Slide 13
  • 14.
    Structure 0..1 predecessor children * Structure 1 parent 0..1 title, predecessor, properties, parent 1 Folder Resource Page 1 children data, mime-type document Lukas Renggli, August 2003 Slide 14
  • 15.
    Wiki Documents !Heading Text Paragraph containing a *Link* SmaCC Parser :Page :Document :Header :Paragraph :Text :InternalLink :Page Lukas Renggli, August 2003 Slide 15
  • 16.
    Available Extensions ß Search Engine ß Keyword Index ß Link Collection ß External Link Checker ß Photo Folder ß E-Mail Notification ß Importer Lukas Renggli, August 2003 Slide 16
  • 17.
    <?xml version="1.0" ?> Coding Session <rss version="2.0"> <channel> <item> <title>SmallWiki</title> <description>A Small ... <link>http://www.sm ... </item> ß RSS News Feed ... </channel> ß BottomFeeder </rss> ß Reuse of Model ß Template Component ß Visible on all Pages ß Configuration Interface ß Automatic Refresh RSS Lukas Renggli, August 2003 Slide 17
  • 18.
    Summary Presented Not Seen ß Structure ß Pluggable ß Folder ß Server ß Pages ß Storage ß Resources ß Versioning ß Documents ß Security ß Parsing ß Actions ß Templates ß Callbacks ß Extensions Lukas Renggli, August 2003 Slide 18
  • 19.
    Towards a CMS [] I ß We should not let PHP and Zope win ß SmallCMS: Reusable Components for Content Management ß Join, use, extend, … Lukas Renggli, August 2003 Slide 19
  • 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 20
  • 21.
    General Setup Request Response Client Server Web Browser Server Structure SwazooServer Lukas Renggli, August 2003 Slide 21
  • 22.
    Document * Document Component 1 Document Horizontal Text Composite Rule Document Header Paragraph Link Preformatted External OrderedList List Mail UnorderedList Table Internal … … Lukas Renggli, August 2003 Slide 22
  • 23.
    Template * Template 1 Container Structures String Root … Row Path Content Column References Timestamp Title Wiki ß Position on the page Structure ß Content of component Template>>for: anAction Action Lukas Renggli, August 2003 Slide 23
  • 24.
    Actions Action View Edit History Invisible … Folder Folder Folder Add Page Page Page Remove Resource Resource Resource GoTo Login ß Execute the action-code Action>>execute ß Provide an user interface Action>>renderContent Lukas Renggli, August 2003 Slide 24
  • 25.
    HTTP-GET /folder/page?action=EditPage Serving 1: process 2: process root: Folder folder: Folder 7.1: template 3: process 7.2: renderer 8. render 5: execute :Visitor :EditPage page: Page 9.1*: accept 9.2*: visit 6: render 4: processAction :Template and :Document Lukas Renggli, August 2003 Slide 25
  • 26.
    Rendering :Document 5: template 2: render 10.1*: accept 10.2*: visit 3: renderer 1: execute 4: start :Page :Action 9: start :Renderer 8: document 7: renderContent 8. render 6.1*: accept 6.2*: visit :Content :Template Lukas Renggli, August 2003 Slide 26