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.8 has been tested with MediaWiki 1.12 on MacOSX. Help testing this extension on other versions will be appreciated!

Changes in Version 0.8
Version 0.8 is a major refactoring. It has been running on EcoliWiki since mid-June 2008 and bug fixes are being applied periodically.
 * Version 0.8 moves the extra mySQL tables inside the MW schema. Use update_schema.php to install these or to migrate older installations
 * The codebase is moving toward something closer to a MVC structure.
 * TableEdit now checks the content of the table in the wiki vs the content in the TableEdit database tables. Many bugs are associated with this conflict detection.
 * You can now shift columns left or right
 * Some extra options are available for admins
 * Tables controlled from templates can now have checkboxes in the input form

See the README file for more.

Installation
See INSTALL file in the package for detailed info
 * Download the latest version of Extension:TableEdit.
 * Place the TableEdit directory into your extensions directory. Set appropriate permissions for these files.
 * Run update_schema.php -w path/to/wiki


 * add to LocalSettings.php.
 * require_once(" /TableEdit/TableEdit.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
 * Can't delete a table
 * Can't have empty heading - although having a "space" as a heading overcomes this. Empty headings are truncated when editing after first saved.

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)