r1 - 10 May 2007 - 16:37:04 - TWikiGuestYou are here: TWiki >  TWiki Web > EditRowPlugin

EditRowPlugin

Replacement for some of EditTablePlugin, some of EditTablerowPlugin and some of TablePlugin. screenshot.gif

A replacement for some of EditTablePlugin, some of EditTablerowPlugin and some of TablePlugin. Features:

  1. You can edit one row at a time, instead of having to edit the entire table. This solves the problem with the long page rendering times required to show all the HTML for a full table edit on big tables.
  2. Row being edited can be presented horizontally, as with EditTablePlugin, or Form-style, like EditTablerowPlugin. Makes it easier to edit very wide tables.
  3. Supports footer rows.
  4. Supports sorting columns in tables using Javascript, avoiding the round-trip to the server required by TablePlugin. Can fall back to TablePlugin if Javascript isn't available.
  5. Simple interface to moving rows around in the table, deleting and adding rows.
  6. Gets row numbering right (takes account of headers).
  7. It's faster than the individual plugins it replaces.
  8. (geeky) Coded using a clean object-oriented architecture, which makes it easily extensible.
  9. (geeky) Uses a simple REST interface for saving changes, which allows Javascript table editors to use the same interface to save.

Another great TWiki extension from the WikiRing - working together to improve your wiki experience!

Usage

Works like the EditTablePlugin (it uses exactly the same %EDITTABLE tags) and you can use it to edit the entire table, or just one row at a time.

Add %EDITTABLE{...}% on the line before the first row of an existing table to make it editable. Parameters:

  • format - The format of the cells in a row of the table. The format is defined like a table row, where the cell data specify the type for each cell. For example, format="| text,16 | label |". Cells can be any of the following types:
    • text, <size>, <initial value> Simple text field. Initial value is optional.
    • textarea, <rows>x<columns>, <initial value> Multirow text box. Initial value is optional.
    • select, <size>, <option 1>, <option 2>, etc Select one from a list of choices.
    • radio, <size>, <option 1>, <option 2>, etc. Radio buttons. size indicates the number of buttons per line in edit mode.
    • checkbox, <size>, <option 1>, <option 2>, etc Checkboxes. size indicates the number of buttons per line in edit mode.
    • label, 0, <label text> Fixed label.
    • row The row number, automatically worked out.
    • date, <size>, <initial value>, <DHTML date format> Date. Initial value and date format are both optional.
  • changerows - Rows can be added and removed if "on". Rows can be added but not removed if "add". Defaults to the value of the preference CHANGEROWS, or off if it isn't set.
  • disable - By default, the plugin shows both full table and individual row editing controls. You can choose to disable one or both of these modes using the disable parameter, by setting it to row or full (or row,full to disable all editing and just leave sorting). If full table editing is disabled, but changerows is on, then the (edit table) button will be replaced with a (add row) button. Defaults to the value of the preference EDITROWPLUGIN_DISABLE, or none if it isn't set.
  • quietsave - Quiet Save button is shown if "on". Defaults to the value of the preference QUIETSAVE, or off if it isn't set.
  • include - Name of another topic defining the EDITTABLE parameters. The first %EDITTABLE% in the topic is used. This is useful if you have many topics with the same table format and you want to update the format in one place.
  • headerrows - Number of rows to treat as headers. Header rows are not editable, and will not be sorted. headerislabel is also supported for EditTablePlugin compatibility (equivalent to headderrows="1") |
  • footerrows - Number of rows to treat as footers. Footer rows are not editable and will not be sorted. |
  • orientrowedit - unique to EditRowPlugin, this parameter controls the orientation of a row when it is being edited. It can be set to horizontal (the default) or vertical, which will present the columns of the row as rows in the editor. This makes editing very wide tables much easier. Has no effect in whole table editing mode.
  • helptopic Topic name containing help text shown when editing a table. The %STARTINCLUDE% and %STOPINCLUDE% markers can be used in the topic to specify what is shown. Note that newlines are removed from the included text so the that text can be used inside a TWiki table.

Table rows are shown with a row edit button edittopic in the first column, and a table edit button after the table. When the table is edited, then a number of buttons may be shown depending on the settings of changerows and quietsave.

  • save saves the changes
  • saves without notification
  • plus adds a new row after the current row, taking for its contents whatever you entered into the current row
  • minus deletes the row
  • arrowup Move this row up one row in the table
  • arrowdown Move this row down one row in the table
  • stop cancels the open edit

Copy the following examples and paste them into a topic in the Sandbox web (or another web where you have write access). The EditRowPlugin is not enabled in this TWiki, so the examples will be disabled.

Example 1

%EDITTABLE{ format="| row, -1 | text, 20, init | select, 1, one, two, three, four | radio, 3,:-),:-I,:-( | label, 20 |" changerows="on" quietsave="on" }%
| *Nr* | *Text field* | *Drop down* | *Mood* | *Timestamp* |
| 1 | hello table | one | :-) | 26 Jun 2002 12:30 |
| 2 |  | two | :-( | 27 Jun 2002 12:40 |
Example 2

Example 2

%EDITTABLE{ format="| label,12 | textarea, 3x30 |" }%
| *Model* | *Description* |
| 345TG66 | Short, with sightly concave upper surface, and devilish nuts |
| 9A-11 | A new model for 2007, but not quite as pretty as the 9A-10 |
| RR717-D | Solid performer, dependable in vacuum grinders |
Example 1

Example 3

%EDITTABLE{ format="| text,100 | text,100 |" orientrowedit="vertical" headerislabel="on"}%
| *Line* | *Explanation* |
| He took his _vorpal_ sword in hand | A vorpal sword is made from broken bits of Commodore 64 disk-drives |
| Long time the _manxome_ foe he sought | manxome: possibly from 'manky'; or from the Isle of Man |
| So rested he by the _Tumtum_ tree, | Tumtum is a Nilo-Saharan language and people |
| And stood awhile in _thought_ | _thought_ a process not often employed by example writers |
Example 3

Preferences

The plugin interprets a couple of preferences, in common with the EditTablePlugin.
QUIETSAVE Gives a default value for the quietsave parameter. Default is off.
CHANGEROWS Gives a default value for the changerows parameter. Default is off.
Also, the plugin can be selectively disabled using
EDITROWPLUGIN_DISABLE Set to on to disable the plugin. Default is off.
These preferences can be defined in TWikiPreferences, in WebPreferences for an individual web, or in the topic.

Relationships

EditTablePlugin

At this time most features of EditTablePlugin are supported. Known exceptions are:
  • the editbutton parameter,
  • the EDITCELL feature,
  • Plugin preferences (though global preferences are compatible)

TablePlugin

Javascript sorting in EditRowPlugin is much faster than TablePlugin. However TablePlugin has many features this plugin does not support. The two plugins can safely be used together.

EditTablerowPlugin

Provides the vertical row editing interface like EditTablerowPlugin, with the row being edited shown in context in the table.

Installation Instructions

You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server where TWiki is running.

Like many other TWiki extensions, this module is shipped with a fully automatic installer script written using the BuildContrib.

  • If you have TWiki 4.1 or later, you can install from the configure interface (Go to Plugins->Find More Extensions)
    • The webserver user has to have permission to write to all areas of your installation for this to work.
  • If you have a permanent connection to the internet, you are recommended to use the automatic installer script
    • Just download the EditRowPlugin_installer perl script and run it.
  • Notes:
    • The installer script will:
      • Automatically resolve dependencies,
      • Copy files into the right places in your local install (even if you have renamed data directories),
      • check in new versions of any installed files that have existing RCS histories files in your existing install (such as topics).
      • If the $TWIKI_PACKAGES environment variable is set to point to a directory, the installer will try to get archives from there. Otherwise it will try to download from twiki.org or cpan.org, as appropriate.
      • (Developers only: the script will look for twikiplugins/EditRowPlugin/EditRowPlugin.tgz before downloading from TWiki.org)
    • If you don't have a permanent connection, you can still use the automatic installer, by downloading all required TWiki archives to a local directory.
      • Point the environment variable $TWIKI_PACKAGES to this directory, and the installer script will look there first for required TWiki packages.
        • $TWIKI_PACKAGES is actually a path; you can list several directories separated by :
      • If you are behind a firewall that blocks access to CPAN, you can pre-install the required CPAN libraries, as described at http://twiki.org/cgi-bin/view/TWiki/HowToInstallCpanModules
  • If you don't want to use the installer script, or have problems on your platform (e.g. you don't have Perl 5.8), then you can still install manually:
    1. Download and unpack one of the .zip or .tgz archives to a temporary directory.
    2. Manually copy the contents across to the relevant places in your TWiki installation.
    3. Check in any installed files that have existing ,v files in your existing install (take care not to lock the files when you check in)
    4. Manually edit LocalSite.cfg to set any configuration variables.
    5. Run configure and enable the module, if it is a plugin.
    6. Repeat from step 1 for any missing dependencies.

Using the REST interface

The plugin saves changes to tables via a REST handler. Javascript developers may find this interface useful when developing their own tools that manipulate tables.

The REST handler is invoked using the following URI format:

<twiki-bin-path>/rest/EditRowPlugin/save

The handler accepts the following parameters:

  • erp_active_topic the web.wikiname of the topic to be changed
  • erp_active_table the table to be changed (numbered from 1)
  • erp_active_row - the row to be changed (numbered from 1, or -1 for the whole table)
  • erp_active_format - the format parameter from the EDITTABLE tag
  • erp_save.x - if nonzero, this is a save
  • erp_quietSave.x - if nonzero, this is a quietsave
  • erp_upRow.x - if nonzero, this is a row move
  • erp_downRow.x - if nonzero, this is a row move
  • erp_deleteRow.x - if nonzero, this is a row deletion
  • erp_cancel.x - if nonzero, this is a cancel
  • erp_noredirect - if set, suppresses the redirect and gets a status code instead
The value of each individual cell is stored in a parameter called erp_<table>_<row>_<column>

Plugin Info

Plugin Author(s): Crawford Currie http://c-dot.co.uk
Plugin Version: 13685 (10 May 2007)
Copyright: © 2007 WindRiver Inc.
License: GPL (Gnu General Public License)
Change History:  
13685 Bugs:Item4040 Support for helptopic and disable, which allows more flexible configuration of the UI, especially when vertical editing
13641 Bugs:Item4020 Improved the table anchors for a better editing experience. Fixed calendar formats. Fixed table footer sorting. Disabled label edits. Fixed multi-malued checkboxes.
13615 Bugs:Item3882 added initial values support Bugs:Item4009 fixed included tables. Also fixed a bug with variable expansion reported in the dev topic.
13609 Bugs:Item4003: fixed colspan. Also added support for headerrows and footerrows parameters from %TABLE
13560 Bugs:Item4002 Problems with blank lines, multi-value edits, and line continuations resolved
13596 Bugs:Item4000 Added orientrowedit, global control options, fixed issue with wikiwords in edited data, added column sorting
13487 Bugs:Item3925 - fixed infinite loop when included format doesn't exist
13359 Bugs:Item3875 - can now edit top row of tables. Also now writes row numbers back to the topic, which was needed to support some compatible apps.
13335 Fixed broken date prompt, and problem with radio buttons, improved and documented REST interface for Javascript authors
13291 Added full table editing, including moving rows within the table
13161 Bulletproofed against issues with rows that are shorter or longer than the format.
13159 Fixed issue with short rows, and added perms check. Thanks also to TWiki:Main.MichaelDaum for more fixes and testing. Now works on IE.
13148 Bugs:Item3770: Bugfixes
Dependencies:
NameVersionDescription
TWiki::Contrib::JSCalendarContrib>=13605Javascript calendar module
Plugin Home: http://twiki.org/cgi-bin/view/Plugins/EditRowPlugin
Feedback: http://twiki.org/cgi-bin/view/Plugins/EditRowPluginDev
Appraisal: http://twiki.org/cgi-bin/view/Plugins/EditRowPluginAppraisal

Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Note: Please contribute updates to this topic on TWiki.org at TWiki:TWiki.EditRowPlugin