[cvs] [Wiki] created: CreatingYourFirstModule
Wiki Guest
wikiguest at horde.org
Fri Aug 15 12:52:14 UTC 2008
guest [194.176.193.10] Fri, 15 Aug 2008 08:52:14 -0400
Created page: http://wiki.horde.org/CreatingYourFirstModule
+ Creating a Horde Module
1. Check out the skeleton module from horde CVS
<code type="sh">
export CVSROOT=:pserver:cvsread at anoncvs.horde.org:/repository
# The following password is horde
cvs login
cvs export -d modulename -r HEAD skeleton
</code>
2. Create the following script as prjrename.php - save it somewhere
sensible, like your home directory:
<code type="php">
<?php
if (count($_SERVER['argv'])==3) {
$prjUC=strtoupper(trim($_SERVER['argv'][2]));
$prjLC=strtolower($prjUC);
$prjMC=substr($prjUC, 0, 1) . substr($prjLC, 1, strlen($prjLC)-1);
$filehandle=fopen(trim($_SERVER['argv'][1]), 'r');
$file=fread($filehandle, filesize($_SERVER['argv'][1]));
fclose($filehandle);
$newfile=str_replace(array('SKELETON', 'Skeleton', 'skeleton'),
array($prjUC, $prjMC, $prjLC), $file);
$filehandle=fopen(trim($_SERVER['argv'][1]), 'w');
fwrite($filehandle, $newfile);
fclose($filehandle);
} else {
help();
}
function help() {
echo "php prjrename.php [filename] [string]
filename = The file to update
string = the name of the file to replace
";
}
?>
</code>
3. On a unix system, use the following command to replace all skeleton
strings with your project name (I don't think there's an appropriate
command for windows, unless you've got cygwin):
<code type="sh">
find /path/to/skeleton/export -type f -exec php -q
/path/to/prjrename.php '{}' modulename
</code>
4. Perform some file modifications:
<code type="sh">
mv /path/to/modulename/lib/Skeleton.php /path/to/modulename/lib/Modulename.php
mkdir /path/to/modulename/themes/graphics
</code>
5. Upload a PNG icon at 16x16 for the module to the path created
above, this one is available if you're stuck:
http://spriggs.org.uk/projects/horde_dev/fitlog/themes/graphics/fitlog.png
6. In /path/to/horde/config/registry.d/ create a file called
modulename.php. Please note the lack of ?> at the end of the php
block, and also the menu parent. If you want your object to go
*ANYWHERE ELSE* you will need to change this!
<code type="php">
<?php
$this->applications['modulename'] = array(
'fileroot' => dirname(__FILE__) . '/../modulename',
'webroot' => $this->applications['horde']['webroot'] . '/modulename',
'name' => _("A description of your module"),
'status' => 'active',
'menu_parent' => 'horde'
);
</code>
OK, so you now have your first module. Now, you need to populate it
with content. This will be the subject of the next section.
More information about the cvs
mailing list