From e4a105db84cb8e5708055b6c65903b45ebb3e506 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 15 Dec 2009 15:09:24 +0000 Subject: [PATCH] fix to control the existence of content start_time/end_time before trying to construct a dateobject; changes from nathan for extended search options --- timesheet/inc/class.timesheet_bo.inc.php | 14 +++++++++++--- timesheet/inc/class.timesheet_hooks.inc.php | 3 ++- timesheet/inc/class.timesheet_ui.inc.php | 9 ++++++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/timesheet/inc/class.timesheet_bo.inc.php b/timesheet/inc/class.timesheet_bo.inc.php index d919f6b77c..48d6b444bb 100644 --- a/timesheet/inc/class.timesheet_bo.inc.php +++ b/timesheet/inc/class.timesheet_bo.inc.php @@ -666,20 +666,28 @@ class timesheet_bo extends so_sql_cf * Is called as hook to participate in the linking * * @param string $pattern pattern to search + * @param array $options Array of options for the search * @return array with ts_id - title pairs of the matching entries */ - function link_query( $pattern ) + function link_query( $pattern, Array &$options = array() ) { $criteria = array(); + $limit = false; + $need_count = false; foreach(array('ts_project','ts_title','ts_description') as $col) { $criteria[$col] = $pattern; } + if($options['start'] || $options['num_rows']) { + $limit = array($options['start'], $options['num_rows']); + $need_count = true; + } $result = array(); - foreach((array) $this->search($criteria,false,'','','%',false,'OR') as $ts ) + foreach((array) $this->search($criteria,false,'','','%',false,'OR', $limit, null, '', $need_count) as $ts ) { if ($ts) $result[$ts['ts_id']] = $this->link_title($ts); } + $options['total'] = $need_count ? $this->total : count($result); return $result; } @@ -741,4 +749,4 @@ class timesheet_bo extends so_sql_cf } return array(); } -} \ No newline at end of file +} diff --git a/timesheet/inc/class.timesheet_hooks.inc.php b/timesheet/inc/class.timesheet_hooks.inc.php index 5b04a6f08f..6cd6d39824 100644 --- a/timesheet/inc/class.timesheet_hooks.inc.php +++ b/timesheet/inc/class.timesheet_hooks.inc.php @@ -45,6 +45,7 @@ class timesheet_hooks ), 'view_id' => 'ts_id', 'view_popup' => '600x400', + 'view_list' => 'timesheet.timesheet_ui.index', 'add' => array( 'menuaction' => TIMESHEET_APP.'.timesheet_ui.edit', ), @@ -163,4 +164,4 @@ class timesheet_hooks ), ); } -} \ No newline at end of file +} diff --git a/timesheet/inc/class.timesheet_ui.inc.php b/timesheet/inc/class.timesheet_ui.inc.php index 2cea98d491..49aa007009 100644 --- a/timesheet/inc/class.timesheet_ui.inc.php +++ b/timesheet/inc/class.timesheet_ui.inc.php @@ -112,7 +112,7 @@ class timesheet_ui extends timesheet_bo $content['start_time']=$content['end_time']='00:00'; } // we only need 2 out of 3 values from start-, end-time or duration (the date in ts_start is always required!) - if ($content['start_time'] != '00:00') // start-time specified + if (isset($content['start_time']) && $content['start_time'] != '00:00') // start-time specified { //$content['ts_start'] += $content['start_time']; $start = new egw_time($content['ts_start']); @@ -120,7 +120,7 @@ class timesheet_ui extends timesheet_bo $start->setTime($start_time[0],$start_time[1]); $content['ts_start'] = $start->format('ts'); } - if ($content['end_time'] != '00:00') // end-time specified + if (isset($content['end_time']) && $content['end_time'] != '00:00') // end-time specified { $end = new egw_time($content['ts_start']); $end_time = explode(':',$content['end_time']); @@ -384,7 +384,7 @@ class timesheet_ui extends timesheet_bo } if (!$this->customfields) $readonlys['tabs']['customfields'] = true; // suppress tab if there are not customfields if (!$this->data['ts_id']) $readonlys['tabs']['history'] = true; //suppress history for the first loading without ID - + return $etpl->exec(TIMESHEET_APP.'.timesheet_ui.edit',$content,$sel_options,$readonlys,$preserv,2); } @@ -793,6 +793,9 @@ class timesheet_ui extends timesheet_bo 'filter2' => (int)$GLOBALS['egw_info']['user']['preferences'][TIMESHEET_APP]['show_details'], ); } + if($_GET['search']) { + $content['nm']['search'] = $_GET['search']; + } $read_grants = $this->grant_list(EGW_ACL_READ); $content['nm']['no_owner_col'] = count($read_grants) == 1; if ($GLOBALS['egw_info']['user']['preferences']['timesheet']['nextmatch-timesheet.index.rows']) $content['nm']['selectcols'] = $GLOBALS['egw_info']['user']['preferences']['timesheet']['nextmatch-timesheet.index.rows'];