Added filter to list, which allows to show infologs linked to an entry

of any other applications, eg:
- infologs linked to a certain project
- infologs linked to a contact
This commit is contained in:
Ralf Becker 2009-09-25 08:03:01 +00:00
parent a11a04b78d
commit 00ca396066
4 changed files with 27 additions and 120 deletions

View File

@ -1413,26 +1413,4 @@ class infolog_bo
} }
return false; return false;
} }
/**
* returns array with relation link_id and info_id (necessary for project-selection)
*
* @param int $pm_id ID of selected project
* @return array containing link_id and info_id
*/
function get_pm_infolog_links($pm_id=0)
{
if($pm_id && isset($GLOBALS['egw_info']['user']['apps']['projectmanager']))
{
$pm_ids = ExecMethod('projectmanager.projectmanager_bo.children',$pm_id);
$pm_ids[] = $pm_id;
$links = solink::get_links('projectmanager',$pm_ids,'infolog'); // solink::get_links not egw_links::get_links!
if ($links)
{
$links = array_unique(call_user_func_array('array_merge',$links));
}
return $links;
}
return array();
}
} }

View File

@ -297,22 +297,21 @@ class infolog_ui
{ {
$query['csv_fields'] = $this->csv_export_fields($query['col_filter']['info_type']); $query['csv_fields'] = $this->csv_export_fields($query['col_filter']['info_type']);
} }
if ($query['col_filter']['pm_id']) // handle linked filter (show only entries linked to a certain other entry)
//search for projects (project manager filter) unset($query['col_filter']['info_id']);
if ((string)$query['col_filter']['pm_id'] != '') if ($query['col_filter']['linked'])
{ {
$query['col_filter']['info_id'] = $this->bo->get_pm_infolog_links($query['col_filter']['pm_id']); list($app,$id) = explode(':',$query['col_filter']['linked']);
if (!$query['col_filter']['info_id']) $query['col_filter']['info_id'][] = 0; if (!($links = egw_link::get_links($app,$id,'infolog')))
$project = $query['col_filter']['pm_id']; {
unset($query['col_filter']['pm_id']); $rows = array(); // no infologs linked to project --> no rows to return
return 0;
}
$query['col_filter']['info_id'] = array_values(array_unique($links));
$linked = $query['col_filter']['linked'];
} }
if ((string)$query['col_filter']['pm_id'] != '' && (string)$query['col_filter']['pm_id'] == '0') unset($query['col_filter']['linked']);
{
$no_projects = true; //to select later the infologs without any projects
$project = $query['col_filter']['pm_id'];
unset($query['col_filter']['info_id']);
}
unset($query['col_filter']['pm_id']);
// check if we have a custom, type-specific template // check if we have a custom, type-specific template
unset($query['template']); unset($query['template']);
unset($query['custom_fields']); unset($query['custom_fields']);
@ -384,17 +383,8 @@ class infolog_ui
unset($info['info_des']); unset($info['info_des']);
} }
} }
if (!$no_projects) //searchfilter for projects $rows[] = $info;
{
$rows[] = $info;
}
else
{
if (!$info['pm_id']) $rows[] = $info; //ony if we have no projects linked
}
} }
if ($no_projects) $query['total'] = count($rows);
unset($no_projects);
unset($links); unset($links);
if ($query['cat_id']) $rows['no_cat_id'] = true; if ($query['cat_id']) $rows['no_cat_id'] = true;
@ -447,7 +437,9 @@ class infolog_ui
} }
// disable filemanager icon, if user has no access to it // disable filemanager icon, if user has no access to it
$readonlys['filemanager/navbar'] = !isset($GLOBALS['egw_info']['user']['apps']['filemanager']); $readonlys['filemanager/navbar'] = !isset($GLOBALS['egw_info']['user']['apps']['filemanager']);
$query['col_filter']['pm_id'] = $project; //add project back to the colfilter
if (isset($linked)) $query['col_filter']['linked'] = $linked; // add linked back to the colfilter
return $query['total']; return $query['total'];
} }

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@
</hbox> </hbox>
</template> </template>
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.7.003"> <template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.7.003">
<grid width="100%" class="my_form"> <grid>
<columns> <columns>
<column width="2%"/> <column width="2%"/>
<column/> <column/>
@ -152,7 +152,7 @@
</rows> </rows>
</grid> </grid>
</template> </template>
<template id="infolog.index.rows" template="" lang="" group="0" version="1.7.003"> <template id="infolog.index.rows" template="" lang="" group="0" version="1.7.004">
<grid> <grid>
<columns> <columns>
<column width="2%"/> <column width="2%"/>
@ -181,7 +181,7 @@
</columns> </columns>
<rows> <rows>
<row> <row>
<description/> <nextmatch-customfilter options="link-entry" id="linked" onchange="1"/>
<nextmatch-sortheader label="Priority" align="right" id="info_priority" options="DESC" class="noPrint"/> <nextmatch-sortheader label="Priority" align="right" id="info_priority" options="DESC" class="noPrint"/>
</row> </row>
<row> <row>