forked from extern/egroupware
hook_home, plus some filters and preferences added
This commit is contained in:
parent
31b61cc52a
commit
58783d5464
@ -51,8 +51,8 @@
|
||||
'both' => 'both' ),
|
||||
'type' => array(
|
||||
'task' => 'task','phone' => 'phone','note' => 'note',
|
||||
'confirm' => 'confirm','reject' => 'reject','email' => 'email',
|
||||
'fax' => 'fax' )
|
||||
/* 'confirm' => 'confirm','reject' => 'reject','email' => 'email',
|
||||
'fax' => 'fax' no implemented so far */ )
|
||||
);
|
||||
$this->so = CreateObject('infolog.soinfolog');
|
||||
$this->data = &$this->so->data;
|
||||
|
@ -18,6 +18,7 @@
|
||||
var $db,$db2;
|
||||
var $grants;
|
||||
var $data = array( );
|
||||
var $filters = array( );
|
||||
|
||||
function soinfolog( $info_id = 0)
|
||||
{
|
||||
@ -87,12 +88,16 @@
|
||||
}
|
||||
|
||||
// sql to be AND into a query to ensure ACL is respected (incl. _PRIVATE)
|
||||
// filter: none - list all entrys user have rights to see
|
||||
// private - list only his personal entrys
|
||||
// filter: none|all - list all entrys user have rights to see
|
||||
// private|own - list only his personal entrys
|
||||
// (incl. those he is responsible for !!!)
|
||||
function aclFilter($filter = 'none')
|
||||
{
|
||||
global $phpgw_info;
|
||||
|
||||
ereg('.*(own|privat|all|none).*',$filter,$vars);
|
||||
$filter = $vars[1];
|
||||
|
||||
if (isset($this->acl_filter[$filter]))
|
||||
{
|
||||
return $this->acl_filter[$filter]; // used cached filter if found
|
||||
@ -122,7 +127,7 @@
|
||||
$filtermethod = " (info_owner=$user"; // user has all rights
|
||||
|
||||
// private: own entries plus the one user is responsible for
|
||||
if ($filter == 'private')
|
||||
if ($filter == 'private' || $filter == 'own')
|
||||
{
|
||||
$filtermethod .= " OR info_responsible=$user AND (info_access='public'".($has_private_access?" OR $has_private_access":'').')';
|
||||
}
|
||||
@ -139,11 +144,40 @@
|
||||
}
|
||||
$filtermethod .= ') ';
|
||||
|
||||
// echo "<p>aclFilter('$filter')(user='$user') = '$filtermethod'</p>";
|
||||
|
||||
return $this->acl_filter[$filter] = $filtermethod; // cache the filter
|
||||
}
|
||||
|
||||
function statusFilter($filter = '')
|
||||
{
|
||||
ereg('.*(done|open|offer).*',$filter,$vars);
|
||||
$filter = $vars[1];
|
||||
|
||||
switch ($filter)
|
||||
{
|
||||
case 'done': return " AND info_status IN ('done','billed')";
|
||||
case 'open': return " AND NOT (info_status IN ('done','billed'))";
|
||||
case 'offer': return " AND info_status = 'offer'";
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function dateFilter($filter = '')
|
||||
{
|
||||
ereg('.*(upcoming|today|overdue).*',$filter,$vars);
|
||||
$filter = $vars[1];
|
||||
|
||||
$now = getdate(time());
|
||||
$tomorrow = mktime(0,0,0,$now['mon'],$now['mday']+1,$now['year']);
|
||||
|
||||
switch ($filter)
|
||||
{
|
||||
case 'upcoming': return " AND info_startdate >= '$tomorrow'";
|
||||
case 'today': return " AND info_startdate < '$tomorrow'";
|
||||
case 'overdue': return " AND (info_enddate != 0 AND info_enddate < '$tomorrow')";
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
global $phpgw_info;
|
||||
@ -236,11 +270,10 @@
|
||||
{
|
||||
$ordermethod = 'order by info_datecreated desc'; // newest first
|
||||
}
|
||||
if (!$filter)
|
||||
{
|
||||
$filter = 'none';
|
||||
}
|
||||
$filtermethod = $this->aclFilter($filter);
|
||||
$filtermethod .= $this->statusFilter($filter);
|
||||
$filtermethod .= $this->dateFilter($filter);
|
||||
// echo "<p>filtermethod='$filtermethod'</p>";
|
||||
|
||||
if ($cat_id)
|
||||
{
|
||||
|
@ -59,6 +59,18 @@
|
||||
'offer' => 'offer.gif', 'offer_alt' => 'offer' )
|
||||
);
|
||||
|
||||
$this->filters = array(
|
||||
'none' => lang('no Filter'),
|
||||
'done' => lang('done'),
|
||||
'own' => lang('own'),
|
||||
'own+open+today' => lang('own open'),
|
||||
'own+open+overdue'=> lang('own overdue'),
|
||||
'own+upcoming' => lang('own upcoming'),
|
||||
'open+today' => lang('open'),
|
||||
'open+overdue' => lang('overdue'),
|
||||
'upcoming' => lang('upcoming'),
|
||||
);
|
||||
|
||||
$this->html = CreateObject('infolog.html');
|
||||
$this->template = CreateObject('phpgwapi.Template',
|
||||
$phpgw->common->get_tpl_dir('infolog'));
|
||||
@ -274,6 +286,11 @@
|
||||
|
||||
if ($cat_filter) $cat_id = $cat_filter;
|
||||
|
||||
if (!$filter)
|
||||
{
|
||||
$filter = $phpgw_info['user']['preferences']['infolog']['defaultFilter'];
|
||||
}
|
||||
|
||||
$hidden_vars = array(
|
||||
'sort' => $sort,'order' => $order,'query' => $query,
|
||||
'start' => $start,'filter' => $filter,'cat_id' => $cat_id
|
||||
@ -304,9 +321,13 @@
|
||||
$this->bo->addr2name($addr));
|
||||
break;
|
||||
default:
|
||||
$t->set_var(lang_info_action,lang('Info Log'));
|
||||
if ($filter && $filter != 'none')
|
||||
{
|
||||
$filter_name = ': '.$this->filters[ $filter ];
|
||||
}
|
||||
$t->set_var(lang_info_action,lang('Info Log').$filter_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$t->set_var($this->setStyleSheet( ));
|
||||
|
||||
if (!$for_include)
|
||||
@ -344,8 +365,6 @@
|
||||
$t->set_var(h_lang_action,lang('Action'));
|
||||
// -------------- end header declaration -----------------
|
||||
|
||||
if (!$filter) $filter = 'none';
|
||||
|
||||
$ids = $this->bo->readIdArray($order,$sort,$filter,$cat_id,$query,
|
||||
$action,$addr_id,$proj_id,$info_id,
|
||||
$ordermethod,$start,$total);
|
||||
@ -388,7 +407,7 @@
|
||||
$t->set_block('info_list_t','cat_selection','cat_selectionhandle');
|
||||
|
||||
if (!$for_include || $total > $maxmatchs ||
|
||||
$query || $filter != 'none' || $cat_id)
|
||||
$query || $cat_id)
|
||||
{
|
||||
$t->parse('cat_selectionhandle','cat_selection',True);
|
||||
|
||||
@ -403,8 +422,13 @@
|
||||
{
|
||||
$q_string .= "&cat_id=$cat_id";
|
||||
}
|
||||
while (list($f,$lang) = each ($this->filters))
|
||||
{
|
||||
$filters[] = array( $f,$lang );
|
||||
}
|
||||
$next_matchs = $this->nextmatchs->show_tpl('/index.php',$start,
|
||||
$total,'&'.$q_string,'95%',$phpgw_info['theme']['th_bg']);
|
||||
$total,'&'.$q_string,'95%',$phpgw_info['theme']['th_bg'],
|
||||
0,$filters);
|
||||
|
||||
$t->set_var('next_matchs',$next_matchs);
|
||||
|
||||
@ -849,9 +873,14 @@
|
||||
|
||||
$prefs = array(
|
||||
'homeShowEvents' => 'Show open Events: Tasks/Calls/Notes on main screen',
|
||||
'defaultFilter' => 'Default Filter for InfoLog',
|
||||
'listNoSubs' => 'List no Subs/Childs',
|
||||
'longNames' => 'Show full usernames'
|
||||
);
|
||||
$allowed_values = array (
|
||||
'defaultFilter' => $this->filters,
|
||||
);
|
||||
|
||||
$phpgw->preferences->read_repository();
|
||||
|
||||
if ($save)
|
||||
@ -888,8 +917,20 @@
|
||||
{
|
||||
$t->set_var('bg_nm_color',$this->nextmatchs->alternate_row_color());
|
||||
$t->set_var('field',lang($lang));
|
||||
$t->set_var('data',$html->checkbox($pref,
|
||||
|
||||
if (is_array($allowed_values[$pref]))
|
||||
{
|
||||
if (!is_object($sbox)) $sbox = CreateObject('phpgwapi.sbox2');
|
||||
|
||||
$t->set_var('data',$sbox->getArrayItem($pref,
|
||||
$phpgw_info['user']['preferences']['infolog'][$pref],
|
||||
$allowed_values[$pref],1));
|
||||
}
|
||||
else
|
||||
{
|
||||
$t->set_var('data',$html->checkbox($pref,
|
||||
$phpgw_info['user']['preferences']['infolog'][$pref]));
|
||||
}
|
||||
$t->parse('pref_linehandle','pref_line',True);
|
||||
}
|
||||
$t->pfp('out','info_prefs');
|
||||
|
29
infolog/inc/hook_home.inc.php
Normal file
29
infolog/inc/hook_home.inc.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**************************************************************************\
|
||||
* phpGroupWare - Info Log administration *
|
||||
* http://www.phpgroupware.org *
|
||||
* -------------------------------------------- *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU General Public License as published by the *
|
||||
* Free Software Foundation; either version 2 of the License, or (at your *
|
||||
* option) any later version. *
|
||||
\**************************************************************************/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
global $phpgw_info,$phpgw;
|
||||
|
||||
if ($phpgw_info['user']['preferences']['infolog']['homeShowEvents'])
|
||||
{
|
||||
$save_app = $phpgw_info['flags']['currentapp'];
|
||||
$phpgw_info['flags']['currentapp'] = 'infolog';
|
||||
|
||||
$phpgw->translation->add_app('infolog');
|
||||
|
||||
global $filter;
|
||||
$filter = 'own+open+today';
|
||||
$infolog = CreateObject('infolog.uiinfolog');
|
||||
$infolog->get_list(True);
|
||||
|
||||
$phpgw_info['flags']['currentapp'] = $save_app;
|
||||
}
|
@ -81,3 +81,12 @@ no entries found, try again ... infolog de Kein Eintr
|
||||
Show open Events: Tasks/Calls/Notes on main screen infolog de Nicht erledigte Einträge: Aufgaben/Anrufe/Notizen auf Startseite anzeigen
|
||||
List no Subs/Childs infolog de Teilprojekte/Antwortdokumente nicht anzeigen
|
||||
Show full usernames infolog de Kompletten Benutzernamen anzeigen
|
||||
no Filter infolog de kein Filter
|
||||
own infolog de eigene
|
||||
own open infolog de eigene offen
|
||||
own overdue infolog de eigene überfällig
|
||||
own upcoming infolog de eigene zukünftig
|
||||
open infolog de offen
|
||||
overdue infolog de überfällig
|
||||
upcoming infolog de zukünftig
|
||||
Default Filter for InfoLog infolog de Standard-Filter für InfoLog
|
||||
|
Loading…
Reference in New Issue
Block a user