Tutorial Application
1
27 Dec 2002
Joel Aufrecht
First Draft
($Id: package-documentation.xml,v 1.5 2024/09/11 06:15:47 gustafn Exp $)
Joel
Aufrecht
joel@aufrecht.org
Requirements
Introduction
This package lets users post blocks of text to the web, which
others can then read. It integrates with full text search.
It is intended to show new developers how to accomplish basic
tasks with OpenACS.
Overview
This package has a simple data component: text notes, stored
in a table in the database. The other component is the user
interface. It also needs support Full Text Search. There is
no administrative interface.
This package depends on the core OpenACS functionality and on
OpenFTS. It is PostgreSQL-only - it has not been ported to
Oracle.
OpenFTS is the third-party PostgreSQL full text search engine.
Use-cases and User-scenarios
Author
Authors write notes, which comprise titles and
bodies, both of plain text. Currently authors do this by
ftping files to a web server, which generates many support
calls.
An Author creates a new note, such as the following:
Hello World
This is my first OpenACS package.
An Author changes a note previously written.
Authors can't change other authors' notes.
An Author deletes a note that is no longer
needed. Unless explicitly deleted, notes should never disappear.
Reader
Readers can see all of the existing notes.
Currently readers browse to a web page and read the
notes. They use the browser search function to find notes
of interest.
An Reader browses the notes.
An Reader searches for notes.
Prioritized Requirements
System Interfaces
Full Text Search
All text entered into the package should be searchable
via OpenFTS. The OpenFTS interface is specified at ???.
Number
Priority
Description
100AThe Title and
Body fields are indexed by Full Text Search.
User Interfaces
User 1 Interface
A picture of the user interface.
An Author browses to the home page of the package and
sees a list of existing notes.
200AAn Author can
see all existing notes.
210AAn Author can
add a new note.
220AIf an author
wrote a note, the author can edit that note.
225AIf an author
wrote a note, the author can delete that note.
230AAuthors must
be OpenACS site members.
235AAuthors
authenticate themselves via the OpenACS login
system.
Reader Interface
An Reader can see all existing notes.
300AA Reader can
see all existing notes.
Internationalization
400BPostings can
be in any language.
Security
The only security need is that authors not be able to
change or delete other authors' notes. This can be enforced
with built-in OpenACS security.
500AThere is no logging.
Design
Data Model
A picture of the data model
Tutorialnote
This table holds the notes. Each note is one
record.
Field
Description
Relationships
Type
Sample Value
tutorialnote_id
Primary Key. References acs_objects(object_id).
owner_id
Indicates the owner of
the note.
References users(user_id).
title
Plain text title of the note
varchar(255)
Hello, world
body
Body text of the note
varchar(2024)
This is my first package
Each note is an acs object. This means that
each record in the note table has a corresponding set of
entries in the core acs tables, where security and other
things are handled. This integrates our package with OpenACS
to use the existing security stuff. It complicates our
database scripts, because there are extra steps to create and
delete records. It also greatly complicates dropping the
package because we have to carefully clean out any matching
records - in the correct order to avoid breaking dependent
relationships - before dropping our new table.
Use the standard stored procedures for add, delete, and
name.
Use ??? for full text search integration.
User Interface
A picture of the page map.
index
Fetch all existing notes and display them. For each
note, if the viewer has write permission on the note, show an
edit link. At the bottom of the page, if the viewer has
permission to create new notes, show a "new" link.
add-edit
This page is used show a form for editing notes, to show
a form for creating new notes, and to process both forms after
submission.
If a note id is passed in, make sure that the
current user has permission to edit that note. If not,
make sure that the current user has permission to create
new notes.
Use the template system to generate a form for
editing/creating a note. If an existing note id was
passed in, populate the form fields with that note's
values.
User Guide
Documentation for an end user.
Administrator's guide
No administrative tasks are needed or possible
Openacs Requirements Specification
Openacs Design Specification
Software Requirements Specification
Construx Software Builders, Inc.
2002
Software Design Specification
Construx Software Builders, Inc.
2002