From 0f5752bdd63c1b00d87cc19702bab45b51534928 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Thu, 2 Oct 2014 15:00:42 +0000 Subject: [PATCH] fixed row vanishes on refresh, eg. after editing an address in an already refreshed addressbook list, caused by row_modified no longer a timestamp when it get checked in ajax_get_rows --- .../inc/class.etemplate_widget_nextmatch.inc.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/etemplate/inc/class.etemplate_widget_nextmatch.inc.php b/etemplate/inc/class.etemplate_widget_nextmatch.inc.php index 1e0dfba58d..abc50beebb 100644 --- a/etemplate/inc/class.etemplate_widget_nextmatch.inc.php +++ b/etemplate/inc/class.etemplate_widget_nextmatch.inc.php @@ -344,7 +344,8 @@ class etemplate_widget_nextmatch extends etemplate_widget $value['csv_export'] = 'refresh'; } $rows = $result['data'] = $result['order'] = array(); - $result['total'] = self::call_get_rows($value, $rows, $result['readonlys']); + // we can NOT run run_beforeSendToClient in call_get_rows, as it would modify row_modified timestamp, which is used below + $result['total'] = self::call_get_rows($value, $rows, $result['readonlys'], null, null, false); $result['lastModification'] = egw_time::to('now', 'ts')-1; if (isset($GLOBALS['egw_info']['flags']['app_header']) && self::$request->app_header != $GLOBALS['egw_info']['flags']['app_header']) @@ -372,7 +373,7 @@ class etemplate_widget_nextmatch extends etemplate_widget if (!$row_id || !$knownUids || ($kUkey = array_search($id, $knownUids)) === false || !$lastModified || !isset($row[$row_modified]) || $row[$row_modified] > $lastModified) { - $result['data'][$id] = $row; + $result['data'][$id] = self::run_beforeSendToClient($row); } if ($kUkey !== false) unset($knownUids[$kUkey]); } @@ -530,7 +531,7 @@ class etemplate_widget_nextmatch extends etemplate_widget * @param string|array $method =null (internal) * @return int|boolean total items found of false on error ($value['get_rows'] not callable) */ - private static function call_get_rows(array &$value,array &$rows,array &$readonlys=null,$obj=null,$method=null) + private static function call_get_rows(array &$value,array &$rows,array &$readonlys=null,$obj=null,$method=null, $run_beforeSendToClient=true) { if (is_null($method)) $method = $value['get_rows']; @@ -612,7 +613,7 @@ class etemplate_widget_nextmatch extends etemplate_widget $row['parent_id'] = $row[$parent_id]; // seems NOT used on client! } // run beforeSendToClient methods of widgets in row on row-data - $rows[$n-$first+$value['start']] = self::run_beforeSendToClient($row); + $rows[$n-$first+$value['start']] = $run_beforeSendToClient ? self::run_beforeSendToClient($row) : $row; } elseif(!is_numeric($n)) // rows with string-keys, after numeric rows { @@ -657,7 +658,7 @@ class etemplate_widget_nextmatch extends etemplate_widget { if (!isset($is_timestamp[$name])) { - $is_timestamp[$name] = preg_match('/(start|end|time|modified|created|date|payed|confirmed|closed|deleted|since|timestamp|expires|last_mod|lastmod|begin|completed|recurrence)$/', $name); + $is_timestamp[$name] = $name[0] != '#' && preg_match('/(start|end|time|modified|created|date|payed|confirmed|closed|deleted|since|timestamp|expires|last_mod|lastmod|begin|completed|recurrence)$/', $name); } if ($is_timestamp[$name] && $value && (is_int($value) || is_string($value) && is_numeric($value)) &&