This plugin allows you to edit TWiki tables row by row, using a form with appropriate controls for each field. If preceeded by an %EDITTABLEROW{...}% variable, tables have edit links for each row, and are optionally followed by an [ Edit table ] button. Multiple tables per topic are editable, but only one row at a time can be edited.
This plugin was inspired and steals much from TWiki:Main/PeterThoeny's TWiki:Plugins/EditTablePlugin and tries be compatible with respect to the options and parameters it provides. However, as it supports editing of the table one row at a time, it is not subject to the performance limitations of TWiki:Plugins/EditTablePlugin when faced with large tables.
The idea and first implementation of form-based editing for tables goes back to TWiki:Main/ShawnBradford's approach in TWiki:Codev/SimpleTableEntryUsingForms.
Template
Before you can edit a table, you need to define a template that describes the layout of the table in the style of TWikiForms. The table format is given by a table in the form template: each row defines a table column by giving a field name, field type, size, and initial values, if any. The field type determines how the table row is edited (e.g., as text, textare, radio, checkbox, etc.).
For ease of transition of existing systems, the table schema can also be defined in the syntax of EditTablePlugin.
Per Table Settings
Add a %EDITTABLEROW{...}% variable just before an existing table to make it editable, or add the variable anywhere in a topic to start a new table. Parameters:
Topic which defines the format of the table, in the style of TWikiForms. The table format is given by one row per table column defining field name, field type, size, and initial values, if any.
header
Must be used when the table schema is defined in the syntax of EditTablePlugin (see documentation there).
format
Must be used when the table schema is defined in the syntax of EditTablePlugin (see documentation there).
changerows
Rows can be added and removed if "on"; rows can be added but not removed if "add".
CHANGEROWS Plugin setting
helptopic
Topic name containing help text shown below the table when editing a table. The %STARTINCLUDE% and %STOPINCLUDE% variables can be used in the topic to specify what is shown.
(no help text)
headerislabel
Table header cells are read-only (labels) if "on"; header cells can be edited if "off" or "0"
"on"
editbutton
Set edit button text, e.g. "Edit this table"; set button image with alt text, e.g. "Edit table, %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/edittopic.gif"
EDITBUTTON Plugin setting
editlink
Set appearance of the per-row link, e.g. "Edit"; set button image with alt text, e.g. "Edit table, %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/edittopic.gif"
EDITLINK Plugin setting
show
When editing a row of a table, or adding to a table, display that table during edit.
"off"
headeronempty
Show the table headers when starting a table by placing the %EDITTABLEROW{...}% variable freely.
"off"
The template and format attributes are mutually exclusive. If the template tag is present, the indicated template is used to define the table schema.
Initial Values
Table cells are given initial values taken from the template, when a table row is added.
Supported Field Type
All field types supported in TWikiForms are supported for table fields also. For example, in the screenshot below, the Mishoo DHTML calendar is used to select the value for a date field.
Table editing
A table row can be edited by clicking the link at the beginning of that row. This link may be represented either as
the first table field in the row being a link,
a text link (in smaller font) preceding the first table field, or
an icon preceding the table field,
depending on the EDITLINK preference setting (see below).
In edit mode, the following action buttons are available
If enabled, below the table a link is shown that allows adding rows to the end of the table. The appearance of this link is controlled by the EDITBUTTON preference setting (see below).
In add mode, the following action button is available
After editing, the focus is moved to the row edited, to avoid excessive scrolling when working with large tables.
Examples
Line before table: %EDITTABLEROW{ template="..." changerows="on" }%
If you click on one of the links in the first column, say for the second row, you will be able to edit that table row in a form:
Plugin Settings
Plugin settings are stored as preferences variables. To reference
a plugin setting write %<plugin>_<setting>%, for example, %EDITTABLEPLUGIN_SHORTDESCRIPTION%
Default edit link for row: Specify button text, or specify alternate text, image URL. If empty, create link from first field.
#Set EDITLINK = Edit
#Set EDITLINK = Edit,
Limitations and Known Issues
This Plugin does not (yet) support TWiki table formatting like Multi-span cells (e.g. | ... ||)
You cannot put two %EDITTABLE{}% statements on the same line in the source
Defining the schema in the format of EditTablePlugin requires patching of Form.pm
Plugin Installation Instructions
Note: You do not need to install anything on the browser to use this Plugin. The following instructions are for the administrator who installs the plugin on the server where TWiki is running.
Download the ZIP file from the Plugin web (see below)
Unzip EditTablerowPlugin.zip in your twiki installation directory. Content:
Add compatability with table schema definition from EditTablePlugin. Create header row when adding the first line to an empty table.
08 Sep 2006:
Use strict warnings. Fix handling of checkbox fields. Move to last edited row after save to avoid scrolling. Do not insert placeholder text in first field.
01 Sep 2006:
Dakar port. Fix handling of date fields in Dakar. Allow editlink in tag. Move existing table to bottom of edit view.