Tutorial Application 1 27 Dec 2002 Joel Aufrecht First Draft ($Id: package-documentation.xml,v 1.3.2.1 2021/10/05 07:01:19 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