Extension:TableEdit

Rationale and Features
Wiki markup can be challenging. Tables are one of the harder things for new users. TableEdit provides a simple table creation and editing system.

TableEdit replaces &lt;newTableEdit/> tags in wikitext with a "Create Table Here" link. Following this link goes to a Special page that creates HTML comment-delimited tables The content is controlled by an external mysql database, but the tables are saved back to the wiki in normal wikitext surrounded by HTML comments with the id number of the table in the database. Users can
 * Insert rows
 * Append columns
 * Change styles for tables, heading rows, and rows
 * Use template-defined lists of column headings

See EcoliWiki for more about the TableEdit features and how to use them.

Status
So far, TableEdit 0.5 has been tested with MediaWiki 1.8.3, MediaWiki 1.9.3, and MediaWiki 1.10.0 on MacOSX. Help testing this extension on other versions will be appreciated!

Changes in Version 0.75
Two major changes and several bug fixes. Major changes: See the README file for more.
 * No longer need to have a temporary "Create Table Here" link. An empty table with appropriate headings just appears.
 * The name of the external database is no longer hard-coded. It has to be set in LocalSettings.php:

Installation
Table.php installation requires an additional mysql database.
 * Download tableEdit.0.6.tgz
 * Place the TableEdit directory into your extensions directory. Set appropriate permissions for these files.  Files included:
 * TableEdit.php - the extension to catch &lt;newTableEdit/> tags, and load the other files.
 * SpecialTableEdit.php - setup for the special page
 * SpecialTableEdit.body.php - the special page that provides the editing interface and displays the help file
 * SpecialTableEdit.docs.php - help info
 * SpecialTableEdit.i18n.php - internationalization (needs lots of work)
 * Create the mysql database for the tables and grant appropriate permissions (Don't forget to FLUSH PRIVILEGES!). An SQL document for the schema is included in the distribution.
 * mysql> create database wikibox_db;
 * mysql> grant SELECT,INSERT,DELETE,UPDATE on wikibox_db.* to wikiuser;
 * mysql> use wikibox_db;
 * mysql> source wikibox_db.sql


 * add
 * require_once(" /TableEdit/TableEdit.php");
 * $$wgTableEditDatabase = 'database_name' # put in the name of the database you used
 * to LocalSettings.php.

Alternatives

 * PropertyTable

Known Issues

 * TableEdit has problems if you try to create a table on a new page that has not been saved yet.
 * Can't get the content back if the table is edited directly in the wiki. This can be prevented by combining TableEdit with ProtectSection
 * Can't sort
 * Can't insert columns in the middle
 * Preview doesn't display initial empty table properly

Dumps
While tables will be preserved when importing a dump from a wiki that uses TableEdit, when a user tries to click on the Edit link, bad things are likely to happen. In the best case, the recipient wiki will not have TableEdit installed and there will just be a 404 error. If TableEdit is installed, the most likely outcome is that the box_id and pagename will not match what is stored in the database and TableEdit will refuse to do the edit on the imported page. Suggestions for how to solve this are welcomed!

Patch for 0.75
There's a foreach loop in SpecialTableEdit.body.php at line 253 that should be wrapped in a type check: if (isset($editrowforms) && is_array($editrowforms)){ foreach ($editrowforms as $row_index=>$form){ $table = str_replace("", $editrowforms[$row_index],$table); #echo "$row_index $editrowforms[$row_index]\n"; }

Patch for record insertion
Some MySQL installations don't like "" instead of null as an insert value for an autoincremented field. This means two lines should be changed (and will be in the next version) In TableEdit.php change line 126 to $sql = "INSERT INTO wikibox_db.box VALUES (null,'$template','$page_name','$page_uid','$box_uid','$type','$headings','','$prettytable','".time."')"; In class.wikibox.php change lines 244-252 to $sql = "INSERT INTO wikibox_db.row VALUES(     null,     '$this->box_id',     '$this->owner_uid',     '$this->row_data',     '$this->row_style',     '$this->row_sort_order',     '".time."'     )";

1.10 problem
I tested it with MW 1.10 (tabledefinition below), and after click on 'Create Table Here' the Special page appears (inkl. ID for the Table) but no editor!.

 Überschrift 1 Überschrift 2 

The  - Tag will alawys be ignored! --nope 15.5.07

Problems with 0.2 distribution
- The 0.1 distribution install instructions for database setup are broken. Need to not create the 'xxx' column!

Bug on Ubuntu?
-By André Tavares (Hasgassa@hotmail.com), on MediaWiki 1.7.1, ubuntu (linux) appear:

"Page&ns=&type=0 Create Table Here" and table was not created. 1. TableEdit.php && SpecialTableEdit.body.php:
 * I needed to make 2 changes to could edit normally:

[/wiki/index.php/Special:TableEdit?id=$box_id&page=&ns= Create Table Here]
 * to

[/wiki/index.php/Special:TableEdit?id=$box_id&page=&ns= Create Table Here]

2. LocalSettings.php require_once("Cite/TableEdit.php"); to require_once("$IP/extensions/TableEdit.php"); Note: TableEdit extension files on /my/wiki/folder/extensions/


 * I still have an error. While adding a row the following error appears:
 * Warning: array_shift [function.array-shift]: The argument should be an array in /var/www/service/extensions/TableEdit/SpecialTableEdit.body.php on line 326
 * Still working on solution

Problems with 0.1 distribution

 * Doesn't work on Mediawiki 1.9.3, PHP 5.1.6, MySQL 4.1.21; Muirhejs 02:07, 28 March 2007 (UTC)
 * Installed into wiki/extensions/TableEdit/
 * LocalSettings.php line: require_once("extensions/TableEdit/TableEdit.php");
 * Created tables as described at EcoliWiki with prefix mw_; modified the scripts with command perl -p -i -e 's/wikibox_db\./mw_/g' * to account for this
 * Part of the problem may have be in SpecialTableEdit.php. I changed the line
 * $wgExtensionFunctions[] = 'tableeditsetup'; to $wgExtensionFunctions[] = 'specialtableeditsetup';

Warning: call_user_func(tableeditsetup) [function.call-user-func]: First argument is expected to be a  valid callback in /home/ /public_html/wiki/includes/Setup.php on line 219
 * The extension seems to go straight to the help page instead of going to the editor; it seems that the extension is properly changing the .

FIXED: in TableEdit.php, changed line: [/wiki/index.php/Special:TableEdit?id=$box_id&page=&ns= Create Table Here]
 * to

[/wiki/index.php/Special:TableEdit?id=$box_id&page=&ns= Create Table Here]


 * Since this does work in our setup, please provide more information about the conditions under which it gave this error. JimHu 01:57, 28 March 2007 (UTC)