Tutorial: Sahana Wiki Module

(Set up the database)
Line 2: Line 2:
=Set up the database=
=Set up the database=
-
We'll be storing the articles for our wiki in a database. For our example we need just one table, which we'll call <code>wiki_article</code>.
+
We'll be storing the articles for our wiki in a database. For our example we need just one table, which we'll call <code>wiki_article</code>. We will be storing past revisions of articles, so our database needs to take this into account.
 +
 
 +
Run the following SQL on your database to create the table:
 +
create table wiki_article (
 +
  id mediumint(9) not null auto_increment,
 +
  `name` varchar(64) not null,
 +
  rev_date datetime default null,
 +
  author varchar(60) default null,
 +
  content text,
 +
  primary key (id),
 +
  key `name` (`name`),
 +
  key author (author),
 +
  fulltext key content (content)
 +
);
 +
 
 +
You can view this in the phpMyAdmin browser and see the structure of the table it created:
 +
 
 +
[[Image:wiki_tablestructure.png]]
 +
 
 +
*''id'' is a unique identifier for a revision of an article.
 +
*''rev_date'' is the date the revision was submitted.
 +
*''author'' is the ID of the Sahana user who submitted the revision.
 +
*''content'' stores the text in the article.
=Creating the module=
=Creating the module=

Revision as of 19:34, 6 June 2008

As an exercise to familiarize ourselves with the Sahana framework, we wrote a wiki module.

Set up the database

We'll be storing the articles for our wiki in a database. For our example we need just one table, which we'll call . We will be storing past revisions of articles, so our database needs to take this into account.

Run the following SQL on your database to create the table:

create table wiki_article (
 id mediumint(9) not null auto_increment,
 `name` varchar(64) not null,
 rev_date datetime default null,
 author varchar(60) default null,
 content text,
 primary key (id),
 key `name` (`name`),
 key author (author),
 fulltext key content (content)
);

You can view this in the phpMyAdmin browser and see the structure of the table it created:

Image:wiki_tablestructure.png

  • id is a unique identifier for a revision of an article.
  • rev_date is the date the revision was submitted.
  • author is the ID of the Sahana user who submitted the revision.
  • content stores the text in the article.

Creating the module

First, make the three files needed: main.inc, menu.inc, and conf.inc.

conf.inc is the simplest file, so do that first:

$conf['mod_wiki_name'] = _("Swikana");
$conf['mod_wiki_menuorder'] = 0;

These two lines are required for every module. Feel free to rename the module. Next, turn to main.inc:

include ($global ['approot']."inc/lib_menu.inc");
function shn_wiki_mainmenu(){
 global $global;
 require_once $global['approot'].'/mod/wiki/menu.inc';
}
function shn_wiki_default(){
 shn_wiki_showPage("Main Page");
}
The function delegates to menu.inc for organizational purposes. is the function used to display any wiki page. Make the function:

<source lang=php>

function shn_wiki_showPage($name = null, $rev = null){
 global $global
}

</source>

Build the Wiki