|  |   Table Plugin <--
   Contributions to this TWiki plugin are appreciated. Please update the plugin page at
   http://twiki.org/cgi-bin/view/Plugins/TablePluginControl attributes of tables and sorting of table columns or provide feedback at
   http://twiki.org/cgi-bin/view/Plugins/TablePluginDev  .
   If you are a TWiki contributor please update the plugin in the SVN repository.
-->  Introduction The TablePlugin gives extra control of table display:
 Allows sorting
 Changing table properties like border width, cell spacing and cell padding
 Changing background color and text color for header cells
 Changing background color and text color for data cells - colors can alternate
 Table attributes can be set and overridden in this order: 
 Default TABLEATTRIBUTESPlugin setting in this topic. A TABLEATTRIBUTESpreferences setting on site-level (TWikiPreferences) or web-level (any WebPreferences), e.g.
 Set TABLEATTRIBUTES = tableborder="0" cellpadding="1" ... Before a table using %TABLE{...}% Row spans
  Sorting Click on column heading text to sort by a column.  Initial column will be sorted in descending order, click again to get ascending order.  The type of data in the cell is determined automatically:
 date if format is: 
 dd MMM YYYY - hh:mm (MMM is Jan, Feb, etc.)
 dd-MMM-YY or dd-MMM-YYYY (can be / or space in place of -) (MMM is Jan, Feb, etc)
 number is digits, with optional decimal point
 otherwise treated as text
  Row spans Table cells with a single caret indicate follow-up rows of multi-row spans. For example,| 
| One One | One Two | One Three |
| ^ | Two Two | Two Three |
| Three One | ^ | Three Three |
 |  | 
| One One | One Two | One Three |  
| Two Two | Two Three |  
| Three One | Three Three |  | 
  TablePlugin Global Settings Plugin settings are stored as preferences variables. To reference a plugin setting write%<plugin>_<setting>%, for example,%INTERWIKIPLUGIN_SHORTDESCRIPTION%
 One line description, shown in the TextFormattingRules topic: 
 Set SHORTDESCRIPTION = Control attributes of tables and sorting of table columns
 
 Set DEBUG to 1 to get debug messages in data/debug.txt.  Default:0 
 Make all tables in a topic sortable. If this is set to all, all tables that have a header row (including those that do not have %TABLE before them) will be made sortable. If set tonone, only tables with %TABLE will be sortable. Topic rendering is faster if this is set tonone.
 #Set SORT = none
 Set SORT = all
 
 Default table attributes: 
 Set TABLEATTRIBUTES = tableborder="1" cellpadding="0" cellspacing="0" valign="top" headercolor="#ffffff" headerbg="#687684" headerbgsorted="#334455" databg="#ffffff,#edf4f9" databgsorted="#f1f7fc,#ddebf6" tablerules="all"
  Table Attributes Attributes are defined as aTABLEATTRIBUTESPlugin setting in this topic, aTABLEATTRIBUTESpreferences setting, or on line before the table using%TABLE{...}%:
The Supported attributes:                                                 | Argument | Comment | Default value | Example |       | sort | Set table sorting by clicking headers "on"or"off". | unspecified | sort="on" |       | initsort | Column to sort initially ( "1"to number of columns). | unspecified | initsort="2" |       | initdirection | Initial sorting direction for initsort, set to"up"(descending) or"down"(ascending). | unspecified | initdirection="up" |       | disableallsort | Disable all sorting, both initsort and header sort. This is mainly used by plugins such as the EditTablePlugin to disable sorting in a table while editing the table. | unspecified | disableallsort="on" |       | headerbg | Header cell background color. | "#6b7f93" | headerbg="#999999" |       | headerbgsorted | Header cell background color of a sorted column. | the value of headerbg | headerbgsorted="#32596c" |       | headercolor | Header cell text color. | "#ffffff" | headercolor="#0000cc" |       | databg | Data cell background color, a comma separated list. Specify "none"for no color, that is to use the color/background of the page the table is on. | "#edf4f9,#ffffff" | databg="#f2f2f2,#ffffff" |       | databgsorted | Data cell background color of a sorted column; see databg. | the values of databg | databgsorted="#d4e8e4,#e5f5ea" |       | datacolor | Data cell text color, a comma separated list. | unspecified | datacolor="#0000CC, #000000" |       | tableborder | Table border width (pixels). | "1" | tableborder="2" |       | tableframe | Table frame, set to "void"(no sides),"above"(the top side only),"below"(the bottom side only),"hsides"(the top and bottom sides only),"lhs"(the left-hand side only),"rhs"(the right-hand side only),"vsides"(the right and left sides only),"box"(all four sides),"border"(all four sides). | unspecified | tableframe="hsides" |       | tablerules | Table rules, set to "none"(no rules),"groups"(rules will appear between row groups and column groups only),"rows"(rules will appear between rows only),"cols"(rules will appear between columns only),"all"(rules will appear between all rows and columns). | unspecified | tablerules="rows" |       | cellpadding | Cell padding (pixels). | "0" | cellpadding="0" |       | cellspacing | Cell spacing (pixels). | "0" | cellspacing="3" |       | cellborder | Cell border width (pixels). | unspecified | cellborder="0" |       | valign | Vertical alignment of cells and headers, set to "top","middle","bottom"or"baseline". | unspecified | valign="top" |       | headervalign | Vertical alignment of header cells; overrides valign. | unspecified | headervalign="top" |       | datavalign | Vertical alignment of data cells; overrides valign. | unspecified | datavalign="top" |       | headeralign | Header cell alignment, one value for all columns, or a comma separated list for different alignment of individual columns. Set to "left","center","right"or"justify". Overrides individual cell settings. | unspecified | headeralign="left,right" |       | dataalign | Data cell alignment, one value for all columns, or a comma separated list for different alignment of individual columns. Set to "left","center","right"or"justify". Overrides individual cell settings. | unspecified | dataalign="center" |       | tablewidth | Table width: Percentage of window width, or absolute pixel value. | unspecified | tablewidth="100%" |       | columnwidths | Column widths: Comma delimited list of column widths, percentage or absolute pixel value. | unspecified | columnwidths="80%,20%" |       | headerrows | Number of header rows to exclude from sort. (will be rendered in a HTML theadsection) | (determined automatically) | headerrows="2" |       | footerrows | Number of footer rows to exclude from sort. (will be rendered in a HTML tfootsection) | "0" | footerrows="1" |       | id | Unique table identifier string, used for targeting a table with CSS. | tableN(where N is the table order number on the page) | id="userTable" |       | summary | Table summary used by screenreaders: A summary of what the table presents. It should provide an orientation for someone who listens to the table. | unspecified | summary="List of subscribed users" |       | caption | Table caption: A title that will be displayed just above the table. | unspecified | caption="Users" |  %TABLE{...}%settings overrideTABLEATTRIBUTESpreferences settings, which override theTABLEATTRIBUTESPlugin settings. 
The settingdisableallsortis normally not used as a TABLE or TABLEATTRIBUTES setting. Plugins such as EditTablePlugin dynamically setsdisableallsortto disable sorting while editing a table. For this to work it is important that EditTablePlugin runs before TablePlugin, which is the default. The settingsortcan be overwritten by a URL parameter or hidden formfield of the same name. Plugins such as EditTablePlugin can use this to disable table header sorting while in edit mode. Examples  Use of %TABLE{...}% Line before table:%TABLE{ sort="on" tableborder="0" cellpadding="4" cellspacing="3" cellborder="0" headerbg="#D5CCB1" headercolor="#666666" databg="#FAF0D4, #F3DFA8" headerrows="2" footerrows="1" }%
| Table with two Header Rows and Footer Row |  
| Num | Status | Action | Who | When | Progress |  
| Num | Status | Action | Who | When | Progress |  
| 1 | C | Chose new colours | John | 1-Dec-02 |  |  
| 2 | X | Release | John | 1-Apr-02 |  |  
| 3 |  | Get feedback | Anne | 1-Feb-02 |  |  
| 12 | C | Spec error handling | Jack | 1-Dec-02 |  |  
| 5 |  | Abc | John |  |  |   Table with 4 digit year dates and no use of %TABLE{...}% 
| When |  
| 1-Jan-2004 |  
| 1-Jan-2003 |  
| 2-Jan-2005 |   TablePlugin and CSS Information for programmers.
TablePlugin implements the following precedence:
 the TABLEATTRIBUTEsettings only write html styling, no CSS the TABLEATTRIBUTEsettings can be overridden by a skin's CSS the TABLEtag attributes are converted to CSS styling, written in the head; these override any skin's CSS  CSS written by TablePlugin 
| .twikiTable | The table |  
| .twikiSortedCol | A sorted column |  
| .twikiSortedAscendingCol | Sorted column, ascending |  
| .twikiSortedDescendingCol | Sorted column, descending |  
| .tableSortIcon | The sort icon holder (span) |  
| .twikiFirstCol | The first column |  
| .twikiTableEven | Even numbered rows |  
| .twikiTableOdd | Odd numbered rows |  
| .twikiTableCol+ column number | Unique column identifier, for instance: twikiTableCol0 |  
| .twikiTableRow+ type + row number | Unique row identifier, for instance: twikiTableRowdataBg0 |   Plugin Installation Instructions  | 
|
| < <
 | This plugin is pre-installed with your TWiki release. You should not have to install it other than to do an upgrade. | 
| > >
 | Note: This plugin is pre-installed with your TWiki release. You should not have to install it other than to do an upgrade. | 
|  |  | 
|
| < <
 | 
 Download the ZIP file from the Plugin web (see below)
 Unzip TablePlugin.zipin your twiki installation directory. Content:               | File: | Description: |       | data/TWiki/TablePlugin.txt | Plugin topic |       | lib/TWiki/Plugins/TablePlugin.pm | Plugin Perl module |       | lib/TWiki/Plugins/TablePlugin/Core.pm | Plugin Perl module |  (Dakar) Visit configurein your TWiki installation, and enable the plugin in the {Plugins} section. Test if the plugin is correctly installed:
 | 
| > >
 | 
 For an automated installation, run the configure script and follow "Find More Extensions" in the in the Extensions section.
 
 Or, follow these manual installation steps: 
 Download the ZIP file from the Plugins home (see below).
 Unzip TablePlugin.zipin your twiki installation directory. Content:                        | File: | Description: |          | data/TWiki/TablePlugin.txt | Plugin topic |          | data/TWiki/VarTABLE.txt | TABLE variable documentation topic |  | 
|
| > >
 |         
        
        | lib/TWiki/Plugins/TablePlugin.pm | Plugin Perl module |  
        | lib/TWiki/Plugins/TablePlugin/Core.pm | Plugin core module |  
 
 
 Set the ownership of the extracted directories and files to the webserver user.
 Make sure the dependencies listed in the table below are resolved.        None
 
 Plugin configuration and testing: 
 Run the configure script, enable the plugin in the Plugins section
 Configure the plugin: See plugin settings above.
 | 
|  | 
 
 
 Check above example if the table renders as expected
 | 
|
| < <
 | 
 
 
 Try click on heading to sort.  Other tables should also be sortable
 | 
| > >
 | 
 
 
 Try click on heading to sort. Other tables should also be sortable
 | 
|  |  Plugin Info  | 
|
| < <
 |  | 
| > >
 |  | 
|  |  | 
|
| < <
 | 
| Plugin Version: | 2011-07-27 |  | 
| > >
 | 
| Plugin Version: | 2012-09-07 |  | 
|  | 
| Change History: | <-- specify latest version first --> |  | 
|
| > >
 |  | 
|  | 
| 2011-07-27: | TWikibug:Item6779  : Fix for tables rendering too dark in Firefox 4 |  
| 2011-07-15: | TWikibug:Item6764  : Minor fix to remove warning message in error log |  
| 2011-07-09: | TWikibug:Item6725  : Change global package variables from "use vars" to "our" |  
| 2010-05-16: | 1.2 TWikibug:Item6433  - doc improvements |  
| 2010-03-31: | 1.12 TWikibug:Item6414  - fixed incorrect sorting of ISO dates. -- Peter Thoeny |  
| 2010-03-21: | 1.11 TWikibug:Item6406  - fixed incorrect sorting for negative numbers. -- TWiki:Main/BryanKitts   |  
| 2010-03-08: | 1.1 TWikibug:Item6405  - fixed incorrect sorting for numbers with decimal places. -- Peter Thoeny |  
| 30 Sep 2008: | 1.035 Fix sorting of attachment date column. |  
| 03 Aug 2008: | 1.034 TWiki 4.2.1 release version |  
| 20 Mar 2008: | 1.033 TWikibug:Item5387  : allow rowspanned columns to contain HTML tags; otherwise it is impossible to add an invisible anchor to a rowspanned cell |  
| 16 Dec 2007: | 1.030: Kenneth Lavrsen: Fixed the problem of tables being sorted by by TablePlugin while the table is being edited by plugins such as EditTablePlugin. This required adding a new attribute disableallsortso plugins such as EditTablePlugin can temporarily disable all sorting for a table. Additionally the CGI variable (URL parameter or hidden formfield)sortcan be set to "off" which disables all header sorting in the topic. This is used by plugins such as EditTablePlugin to disable the sorting by clicking header fields during editing of tables. Ref: TWikibug:Item5135 and TWikibug:Item2690  . |  
| 03 Dec 2007: | Arthur Clemens: Fixed rendering and order of html elements thead,tfootandtbody; correctedidparameter. |  
| 24 Nov 2007: | Arthur Clemens: Fixed sorting of columns with only icons; also removed TWiki formatting before sorting. |  
| 06 Oct 2007: | 15180: PTh: Added VarTABLE to have it listed in TWikiVariables |  
| 27 Jun 2007: | 1.024 - 1.027 Various small bug fixes. |  
| 24 Jun 2007: | 1.023: Arthur Clemens: Inline styles are now written to the head; updated default sort icons (from TWikiDocGraphics). |  
| 23 Jun 2007: | 1.022: Arthur Clemens: Fixed styling of param tableruleson Internet Explorer. |  
| 23 May 2007: | 1.021: Michael Daum: Fixed css attribute priority to cooperate nicely with skin themes. |  
| 27 Dec 2006: | 1.020: Kenneth Lavrsen: Fixed initsort so all tables can be initsorted and not only the first. When you sort a table by clicking on the header of a column the table gets sorted accordingly. When you click the header of another table the previously sorted table goes back being sorted as specified by initsort. |  
| 13 Dec 2006: | 1.019: Arthur Clemens: Prevent sorting of columns that do no exist. |  
| 02 Dec 2006: | 1.018: Arthur Clemens: Data rows now start with first datacoloranddatabgcolor. |  
| 26 Nov 2006: | 1.017: Arthur Clemens: Better support for tablerules. |  
| 24 Nov 2006: | 1.016: Arthur Clemens: Added new attribute cellborder. |  
| 25 Oct 2006: | 1.015: Arthur Clemens: Added support for background colors of sorted column. Columns can be unsorted - sorting order is now: sort ascending, sort descending, unsort. Added attributes headervalignanddatavalign. |  
| 16 Aug 2006: | Michael Daum: Added CSS support for even/odd table rows |  
| 13 Dec 2005: | Arthur Clemens: Added support for id,summaryandcaption |  
| 05 Mar 2005: | 1.014: Crawford Currie eliminated deprecated handlers for Dakar |  
| 01 Aug 2004: | Arthur Clemens: Added CSS support for first column and ascending/descending table headers |  
| 21 Mar 2004: | PTh: Internal change: Fixed reference to unofficial variable |  
| 01 Jan 2004: | PTh: Alternating data row colors restart again after each header row |  
| 01 Dec 2003: | PTh: Fixed error when footerrows was specified on an empty table, contributed by TWiki:Main/PaulineCheung   |  
| 24 May 2003: | PTh: New |^|rule for multi row span (TWiki:Main/WalterMundt ); added tableframe and tablerules (TWiki:Main/JohannesMartin  ); ignore columnwidths for multi column span; validate headerrows and footerrows (TWiki:Main/DarrylGreen  ); fixed link color problem and up/down icon color problem for dark header background |  
| 17 Dec 2002: | PTh: Removed individual table Plugin settings; added TABLEATTRIBUTES Plugins setting and TABLEATTRIBUTES preferences setting |  
| 15 Dec 2002: | PTh: Added headerrows and footerrows params (TWiki:Main/DarrylGreen  , TWiki:Main/WoutMertens  ); added tablewidth and columnwidths params (TWiki:Main/ThorstenSommermann  ) |  
| 09 Dec 2002: | PTh: Added headercolor and datacolor parameters |  
| 05 Jun 2002: | PTh: Added "none" value to databg parameter (suggested by TWiki:Main/TaitCyrus  ); fixed sorting by stripping HTML tags, removing links and making sort ignore case (suggested by TWiki:Main/ShawnBradford  ) |  
| 13 Mar 2002: | PTh: Added TWiki:Main/ShawnBradford  's initsort and initdirection |  
| 12 Mar 2002: | PTh: Added valign, headeralign and dataalign; fixed bug of swapped cellpadding/cellspacing; fixed warning of uninitialized value |  
| 05 Jan 2002: | PTh: Fixed sorting bug of cells with leading white space |  
| 06 Dec 2001: | PTh: Fixed date sorting bug 03 Dec 2001 PTh: Fixed sort="off" bug and more
 |  
| 29 Nov 2001: | PTh: Fixed Perl warnings |  
| 16 Nov 2001: | PTh: Added table border, cell spacing, cell padding, gif files |  
| 07 Oct 2001: | JT: Initial version |  | 
|
| < <
 | 
| CPAN Dependencies: | none |  
| Other Dependencies: | none |  | 
| > >
 | 
| CPAN Dependencies: | none |  
| Other Dependencies: | none |  | 
|  | Related Topics: VarTABLE, TWikiPreferences, TWikiPlugins, StandardColors |