WimpyPoint Design Documentation

by Dennis Gregorovic

I. Essentials

II. Introduction

WimpyPoint is a web-based application for building slide presentations that replaces desktop bloatware such as Microsoft PowerPoint. You can build a slide presentation in WimpyPoint from any Web browser anywhere in the world. WimpyPoint will hold onto your presentation in a relational database management system. You can forget your laptop. You can drop your laptop. You will still be able to give your presentation anywhere in the world that you can find a Web browser.

III. Historical Considerations

WimpyPoint was born as a standalone application, started by Philip Greenspun in late December, 1997 and later enhanced by Krish Menon. WimpyPoint was rewritten by Jon Salz and reborn as an ACS application in late 1999, as a term project for MIT's 6.916: Software Engineering of Innovative Web Services class.

IV. Data Model Discussion

The primary focus of the WimpyPoint data model are the wp_presentations and wp_slides tables. For each WimpyPoint presentation there is exactly one row in wp_presentations with information such as title, page signature, copyright notice, audience, and background. Then there is at least one row in wp_slides for every slide in the presentation. The reason there is at least one row is that when a slide is modified after a version is marked, a row is actually inserted for the new version of the slide. This way, there is exactly one version of each slide in the database for each version of the presentation.

In addition to those two tables, there are a number of other tables and PL/SQL functions that comprise the WimpyPoint data model. Here is a brief overview of them:

V. Legal Transactions

User Pages

Users may

VI. API

The following Tcl procedures are defined in the application definition file.
wp_new_stuff { since_when only_from_new_users_p purpose { include_date_p 0 } { include_comments_p 1 } }
Used for sitewide listing of new content
wp_user_contributions { user_id purpose }
Used for admin listing a user's contributions
wp_help_header { title }
Returns a help header for WimpyPoint.
wp_header args
Returns a header for WimpyPoint.
wp_header_form { form args }
Returns a header for WimpyPoint.
wp_header_intl { form argv }
Return a HTML header for the page.
wp_footer {}
Returns an HTML footer for the page.
wp_access { presentation_id user_id { priv "read" } }
Returns the user's actual level, if the user can perform $priv roles on the presention.
wp_check_authorization { presentation_id user_id { priv "read" } }
{ Verifies that the user can perform $priv roles on the presentation, returning an error and bailing if not. If authorized, returns the level at which the user is actually authorized.
wp_check_style_authorization { style_id user_id }
Verifies that the user owns this style.
wp_ljoin { list values }
Appends each of values (a list) to the list.
wp_select { sql code { else "" } { elsecode "" } }
Performs a select, setting variables and executing code for each record.
wp_nextval { seq }
Returns the next value of a sequence.
wp_prepare_dml { table names values { condition "" } }
Prepares a DML statement with columns names and value values. If condition is empty, does an insert - otherwise does an update.
wp_serve_style {}
Serves the requested style to the user as a Cascading Style Sheet
wp_serve_presentation { conn edit }
Serves the requested presentation or slide.
wp_serve_attach {}
Serves the requested attachment.
wp_style_url {}
Returns the StyleURL parameter (no trailing slash).
wp_presentation_url {}
Returns the PresentationURL parameter (no trailing slash).
wp_presentation_edit_url {}
Returns the PresentationEditURL parameter (no trailing slash).
wp_attach_url {}
Returns the AttachURL parameter (no trailing slash).
wp_only_if { condition text { elsetext "" } }
If condition, returns text; otherwise returns elsetext.
wp_role_predicate { role { title "" } }
Returns a plain-English string describing an role (read/write/admin).
wp_short_role_predicate { role { title "" } }
Returns a short plain-English string describing an role (read/write/admin).
wp_slider { which current items }
Generates a slider for form variable $which with items $items, of the form { { 1 "One" } { 2 "Two" } }, where 1/2 are the query values and One/Two are the corresponding labels.
wp_numeric_sort_bulk_slides {{file_list ""}}
Sort bulk-imported slides numerically (instead of using ascii sort)

VII. Configuration/Parameters


[ns/server/service_name/acs/wp]
; Paths to use for serving styles and presentations.
StyleURL=/wp/style/
PresentationURL=/wp/display/
PresentationEditURL=/wp/display-edit/
AttachURL=/wp/attach/
; do we allow collaborators to comment on presentations
SolicitCommentsP=1
CommentApprovalPolicy=open
; Path to the unzip program to use for bulk image uploading.
PathToUnzip=/usr/bin/unzip
; Is bulk image uploading enabled?
AllowBulkUploadP=1
; Is PDF downloading enabled?
AllowPDFDownloadP=1
; Path to the htmldoc program to use for PDF downloading
PathToHtmlDoc=/usr/bin/htmldoc
; Is HTML printing (presentation in a single page) enabled?
AllowHTMLForPrintingP=1

VIII. Acceptance Tests

IX. Authors


dennis@arsdigita.com

Last modified: $Date: 2001/01/19 21:36:53 $
Advertisements