- added add function: link to add an already linked new entry (supported only by InfoLog atm.)

- caching the app-register in the session (performance)
- new param for app_list to specify a capability which the returned app have to support, eg. add
This commit is contained in:
Ralf Becker 2005-04-12 16:39:59 +00:00
parent fff09dbfd3
commit cedb9b553f

View File

@ -75,6 +75,12 @@
'action' => 'sp'
),
'view_id' => 'action_id',
'add' => array(
'menuaction' => 'infolog.uiinfolog.edit',
'type' => 'task'
),
'add_app' => 'action',
'add_id' => 'action_id',
),
/*
'email' => array(
@ -114,8 +120,12 @@
// other apps can participate in the linking by implementing a search_link hook, which
// has to return an array in the format of an app_register entry
//
$search_link_hooks = $GLOBALS['egw']->hooks->process('search_link');
// for performance reasons, we do it only once / cache it in the session
if (!($search_link_hooks = $GLOBALS['egw']->session->appsession('search_link_hooks','infolog')))
{
$search_link_hooks = $GLOBALS['egw']->hooks->process('search_link');
$GLOBALS['egw']->session->appsession('search_link_hooks','infolog',$search_link_hooks);
}
if (is_array($search_link_hooks))
{
foreach($search_link_hooks as $app => $data)
@ -383,14 +393,16 @@
/**
* get list/array of link-aware apps the user has rights to use
*
* @return array( $app => lang($app), ... )
* @param string $must_support capability the apps need to support, eg. 'add', default ''=list all apps
* @return array with app => title pairs
*/
function app_list( )
function app_list($must_support='')
{
reset ($this->app_register);
$apps = array();
while (list($app,$reg) = each($this->app_register))
foreach($this->app_register as $app => $reg)
{
if ($must_support && !isset($reg[$must_support])) continue;
if ($GLOBALS['egw_info']['user']['apps'][$app])
{
$apps[$app] = $GLOBALS['egw_info']['apps'][$app]['title'];
@ -476,6 +488,31 @@
return $title;
}
/**
* Add new entry to $app, evtl. already linked to $to_app, $to_id
*
* @param string $app appname of entry to create
* @param string $to_app appname to link the new entry to
* @param string $to_id id in $to_app
* @return array/boolean with name-value pairs for link to add-methode of $app or false if add not supported
*/
function add($app,$to_app='',$to_id='')
{
echo "<p>bolink::add('$app','$to_app','$to_id') app_register[$app] ="; _debug_array($app_register[$app]);
if ($app == '' || !is_array($reg = $this->app_register[$app]) || !isset($reg['add']))
{
return false;
}
$params = $reg['add'];
if ($reg['add_app'] && $to_app && $reg['add_id'] && $to_id)
{
$params[$reg['add_app']] = $to_app;
$params[$reg['add_id']] = $to_id;
}
return $params;
}
/**
* view entry $id of $app
*