6.0.0-alpha14
6/24/25
Last Modified 2/9/09 by Guest
Table of Contents

Introduction

by Torben Dannhauer

The process of populating the new module with content/functionality is fairly straight forward and after learning how the Horde API' s work, you should be able to produce new modules in a minimum amount of time.

Jan Schneider talked about this at FOSDEM 2005. You can find his slides at http://www.horde.org/papers/fosdem2005/.

The new module's functionality could by separated in the following aspects:

  • Menus
    • Calling-procedure at entering the application
    • Permissions
    • All Content-Pages which are accessible through on oh the menus
    • Services offered to external modules

usually it is useful to nalyse another horde Module to learn how this work. I analysed Kronolith and it helped me a lot.

Obviously it is neccesarry to know the provied horde API zu wirte a horde module. Because a beginner (and this tutorial is adressed to them) has no clue about it, it is very usefull to read the package-documentation at http://dev.horde.org/api/framework/.

Menus

In Horde there are two standard menus: The Top Menu an the Side Menu.

ToDo?: Add Links to Wikipages describing menus in detail.

Top Menu

The Top MenĂ¼ is devided in to 4 sections:

  • left: Menuitems provided by this module: see below
    • mid left: Menuitems added manually: see below
    • mid right: Menuitems added in the administrator's module setup
    • right: Menuitems provided by horde as default

left

the Menuitmes this module intentionally provide are located in the file <module>/lib/Module.php in the function ::getMenu()

Add Items like this:

<?php
 

 $menu->add(Horde::applicationUrl('pagetoshow.php'), _("MenuItemName"), 'icon.png', $registry->getImageDir() );

?>

mid left

Items ar added in <module>/config/menu.php:

<?php


$_menu[] = array(

      'url' =>        'http://www.example.com/',

      'text' =>       'Example, Inc.',

      'icon' =>       'example.png',

      'icon_path' =>  'http://www.example.com/images/',

      'target' =>     '_blank',

      'onclick' =>    ''

  );

?>

Side Menu

Calling procedure at entering the application

If a module is entered via the side-menu, usualy the url to the module-folder was provided. The link ist http://<myHordeInstallation>/<mymodule> without any file. So the calling Procedure starts by executing the index.php oh the webserver.

Procedure:

  • Executing index.php: initialzing, load configfiles and load the page which should be displayed at the beginning (e.g. in Skeleton: list.php).
    • list.php calls >module>/lib/base.php.
    • now lists.php is displayed. By Clicking on any Menu-Item another Contentpage as list.php (but of course also list.php again) could be displayed (->executed).

Permissions

The module's permissiontree which includes the logical structure of all permissions available in this module is defined in <module>/lib/api.php

Further information about permissions is available at http://wiki.horde.org/Doc/Dev/PermsPackage

Content-Page

Basic Procedure to create Content-Pages:

  • create .inc files that display the elements on the screen
    • create any php files needed to fill in forms

It is a good point to start a contentpage by copying the Skeleton's list.php

All viewable pages ar located in the module's root-folder. All businesslogic (classes etc) are located in separate files in <module>/lib.

Services

Misc