Extension:TableEdit

From MediaWiki.org

Jump to: navigation, search
Manual on MediaWiki Extensions
List of MediaWiki Extensions
TableEdit

Release status: beta

Implementation Database, Tag, Special page
Description Add table creation and editing for simple tables
Author(s) Jim Hu
Version 0.75 (2007-08-5)
MediaWiki 1.8.3, 1.9.3, 1.10.0
Download [1]
Example EcoliWiki

Contents

[edit] 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 <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.

[edit] 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!

[edit] Changes in Version 0.75

Two major changes and several bug fixes. Major changes:

  • 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:

See the README file for more.

[edit] Installation

Table.php installation requires an additional mysql database.

  • Download the latest version of Extension:TableEdit.
  • Place the TableEdit directory into your extensions directory. Set appropriate permissions for these files. Files included:
    • TableEdit.php - the extension to catch <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. An SQL document for the schema is included in the distribution.
    1. mysql> create database wikibox_db;
    2. mysql> grant SELECT,INSERT,DELETE,UPDATE on wikibox_db.* to wikiuser;
    3. mysql> FLUSH PRIVILEGES;
    4. mysql> use wikibox_db;
    5. mysql> source wikibox_db.sql
  • add
    require_once("<your extentions path>/TableEdit/TableEdit.php");
    $wgTableEditDatabase = 'database_name'; # ie, 'wikibox_db' if that's what you used above.
    to LocalSettings.php.

[edit] Alternatives

[edit] 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.

[edit] 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!

[edit] 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("{{{EDITROWFORM$row_index}}}", $editrowforms[$row_index],$table); 
         #echo "$row_index $editrowforms[$row_index]\n";
    }
}

[edit] Problems with 0.3 distribution

[edit] 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()."'
    )";

[edit] 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!.

<newTableEdit>
<headings>Überschrift 1</headings>
<headings>Überschrift 2</headings>
</newTableEdit>

The <nowiki>- Tag will alawys be ignored! --nope 15.5.07

[edit] Problems with 0.2 distribution

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

[edit] 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.

  • I needed to make 2 changes to could edit normally:

1. TableEdit.php && SpecialTableEdit.body.php:

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

to
[{{SERVER}}/wiki/index.php/Special:TableEdit?id=$box_id&page={{PAGENAMEE}}&ns={{NAMESPACEE}} 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

[edit] 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/<user>/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 <newTableEdit/>.

FIXED: in TableEdit.php, changed line:

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

to
[{{SERVER}}/wiki/index.php/Special:TableEdit?id=$box_id&page={{PAGENAMEE}}&ns={{NAMESPACEE}} 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)
Personal tools