[commits] [Wiki] created: Doc/Dev/HordeAjaxApplications/Example

Ralf Lang (B1 Systems GmbH) lang at b1-systems.de
Wed Dec 16 11:38:29 UTC 2015


rlang  Wed, 16 Dec 2015 11:38:28 +0000

Created page: http://wiki.horde.org/Doc/Dev/HordeAjaxApplications/Example

Boneyard - an example of a dynamic "skeleton".

In this article, I will show you some minimal setup for a "horde5  
dynamic view" application as demonstrated by hermes time tracking and  
kronolith calendar

Pre-requisite
We have a working git checkout of a 5.2 or master installation of  
horde with some authentication and prefs backend working and the  
migrations inplace.
If your setup did not involve editing install_dev.conf, you probably  
have something else and I cannot guarantee this walkthrough will work  
for you without adopting some parts.


Let's generate a fresh application called boneyard

maintaina:/srv/git/horde5-webmail/horde # php  
framework/bin/horde-generate-module boneyard "Ralf Lang  
<lang at b1-systems.de>"
Started new Module in /srv/git/horde5-webmail/horde/boneyard!

Register the new Module with a file in the config/registry.d directory:

<?php
$this->applications['boneyard'] = array('name' => _("Boneyard"));


We put a file with this oneliner into the directory as advised

maintaina:/srv/git/horde5-webmail/horde # vim  
horde/config/registry.d/boneyard.php


Now let's re-run the script generating the links for the git checkout  
installation

maintaina:/srv/git/horde5-webmail/horde # php framework/bin/install_dev
EMPTYING old web directory /srv/www/vhosts.d/horde.ralf-lang.de

LINKING horde
Setting static directory permissions...
LINKING applications to web directory /srv/www/vhosts.d/horde.ralf-lang.de
LINKING sam
LINKING luxor
[.. snip ..]
LINKING pastie
LINKING ingo
LINKING boneyard
LINKING hvview
LINKING sesha
LINKING passwd
LINKING operator
LINKING nag
LINKING gollem
LINKING jonah
LINKING sueporter
LINKING ulaform

LINKING framework
[ INFO ] Source directory: /srv/git/horde5-webmail/horde/framework
[ INFO ] Framework destination directory:
/srv/www/vhosts.d/horde.ralf-lang.de/libs
[ INFO ] Horde directory: /srv/www/vhosts.d/horde.ralf-lang.de
[ INFO ] Create symbolic links: Yes

[ INFO ] Package(s) to install: ALL (129 packages)
[ INFO ] Installing package ActiveSync
[.. snip ..]
[ INFO ] Installing package xxhash

Now boneyard is set up in your web-accessible dir.
Let's make the config dir web-writeable

chown wwwrun:www /srv/www/vhosts.d/horde.ralf-lang.de/boneyard/config

This is for SUSE - debian or redhat may have different user/group for  
the web server.

Next go to $yourdomain/admin/config/ the admin panel and generate the  
conf.php file by clicking on the "boneyard" entry and then the "create  
boneyard config" button.
At this point, we do not care about the actual contents of this config  
- the defaults are just fine.

If you only see "horde" and some library names, you most probably have  
not edited registry.local.php to contain something like:

<?php
// By default, applications are assumed to live within the base Horde
// directory (e.g. their fileroot/webroot will be automatically determined
// by appending the application name to Horde's 'fileroot'/'webroot' setting.
// If your applications live in a different base directory, defining these
// variables will change the default directory without the need to change
// every application's 'fileroot'/'webroot' settings.
$app_fileroot = '/srv/www/vhosts.d/horde.ralf-lang.de/';

Now "Boneyard" should appear in your horde topbar with some bogus  
buttons and content

Let's create the structure of a "dynamic" application

* lib/Ajax.php - The Boneyard Ajax base class to load locale- and  
setting-dependent content into the browser's javascript
* lib/Ajax/Application/Handler/Example.php - A handler for Ajax  
requests to load data from the server -- we skip that for now
* lib/View/Sidebar.php - Boneyard_View_Sidebar - a sidebar for the  
dynamic view
* template/dynamic/sidebar.html.php - The template used by the sidebar view
* template/dynamic/index.inc - The main template of the dynamic view
* template/dynamic/example1.inc - One of our two example views in this demo
* template/dynamic/example2.inc - One of our two example views in this demo
* js/boneyard.js - The BoneyardCore object which contains the main  
click handler etc

We also need to touch the index.php file to enable the dynamic view  
and the lib/Application.php file to advertise that dynamic view exists.

See https://github.com/ralflang/horde-boneyard to view the code in detail.




More information about the commits mailing list