Author: leithoff
New Revision: 37009
URL: http://svn.stylite.de/viewvc/egroupware?rev=37009&view=rev
Log:
- tracker: fix for lost comment, when tracker item got saved (e.g.:by someone else) while you were still editing
Modified:
trunk/tracker/inc/class.tracker_bo.inc.php
trunk/tracker/inc/class.tracker_ui.inc.php
trunk/tracker/setup/etemplates.inc.php
trunk/tracker/templates/default/edit.xet
Modified: trunk/tracker/inc/class.tracker_bo.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_bo.inc.php?rev=37009&r1=37008&r2=37009&view=diff
— trunk/tracker/inc/class.tracker_bo.inc.php (original)
+++ trunk/tracker/inc/class.tracker_bo.inc.php Thu Oct 20 15:05:23 2011
@@ -510,18 +510,55 @@
// check if we have a real modification
// read the old record
$new =& $this->data;
-
//error_log(__METHOD__.__LINE__.array2string($new)); unset($this->data); $this->read($new['tr_id']); $old =& $this->data; -
unset($this->data); $this->data =& $new; $changed = array(); foreach($old as $name => $value) {
-
if (isset($new[$name]) && $new[$name] != $value) $changed[] = $name; -
} -
if (!$changed)
-
if (isset($new[$name]) && $new[$name] != $value) -
{ -
if ($name === 'tr_completion' && str_replace('%','',$new[$name]) == str_replace('%','',$value)) continue; -
if ($name === 'tr_assigned' && (array)$new[$name] == (array)$value) continue; -
if ($name === 'replies' && is_array($new[$name])) -
{ -
// reindex -
$test = array_slice($new[$name],0); -
$value = array_slice($value,0); -
//error_log(__METHOD__.__LINE__.array2string($test)); -
//error_log(__METHOD__.__LINE__.array2string($value)); -
// compare the replies to be on the save side,(even there should not be any changes with the replies, unless you add one) -
if (count($test) == count($value)) -
{ -
$ridentical=true; -
foreach($test as $k => $reply) -
{ -
foreach($reply as $srk => $rv) -
{ -
//error_log(__METHOD__.__LINE__.' '.$rv .'<==>'. $value[$k][$srk]); -
// reply_vivible_class may be added by UI, so old will not have that -
// reply_created may be a timestamp UNIX or YYYY-MM-DD HH:MM (but Seconds missing) so we cannot transform and compare relyably -
if ($srk==='reply_visible_class' || $srk ==='reply_created') continue; -
if ($rv !== $value[$k][$srk]) $ridentical = false; -
} -
if ($ridentical===false) break; // first one not identical adds replies to changed -
} -
} -
if ($ridentical) continue; -
} -
$changed[] = $name; -
//error_log(__METHOD__.__LINE__.' changes in '.$name.': new->'.array2string($new[$name])); -
//error_log(__METHOD__.__LINE__.' old->'.array2string($value)); -
} -
} -
if (!$changed && !((isset($this->data['reply_message']) && !empty($this->data['reply_message'])) || -
(isset($this->data['canned_response']) && !empty($this->data['canned_response'])))) { //echo "<p>botracker::save() no change --> no save needed</p>\n"; -
//error_log(__METHOD__.__LINE__." no change --> no save needed"); return false; }
@@ -529,7 +566,10 @@
$readonlys = $this->readonlys_from_acl();
foreach($changed as $field)
{
-
if($readonlys[$field]) return $field;
-
if($readonlys[$field]){ -
//error_log(__METHOD__.__LINE__.' Field:'.$field.'->'.array2string($readonlys).function_backtrace()); -
return $field; -
} } $this->data['tr_modified'] = $this->now;
@@ -661,22 +701,26 @@
return $staff_cache[$tracker][(int)$return_groups][$what];
}
$staff = array();
+
switch($what)
{
case ‘users’:
case ‘usersANDtechnicians’:
-
if (is_null($this->users) || $this->users==='NULL') $this->users = array(); foreach($tracker ? array(0,$tracker) : array_keys($this->users) as $t) { if (is_array($this->users[$t])) $staff = array_merge($staff,$this->users[$t]); } if ($what == 'users') break; case 'technicians': -
if (is_null($this->technicians) || $this->technicians==='NULL') $this->technicians = array(); foreach($tracker ? array(0,$tracker) : array_keys($this->technicians) as $t) { if (is_array($this->technicians[$t])) $staff = array_merge($staff,$this->technicians[$t]); } // fall through, as technicians include admins case 'admins': -
if (is_null($this->admins) || $this->admins==='NULL') $this->admins = array(); foreach($tracker ? array(0,$tracker) : array_keys($this->admins) as $t) { if (is_array($this->admins[$t])) $staff = array_merge($staff,$this->admins[$t]);
@@ -1441,13 +1485,12 @@
foreach($this->config_names as $name)
{
#echo “
calling config::save_value(’$name’,’{$this->$name}’,‘tracker’)
\n”; config::save_value($name,$this->$name,'tracker');
}
self::set_async_job($this->pending_close_days > 0);
$mailhandler = new tracker_mailhandler();
-
foreach($this->mailhandling as $queue_id => $handling) {
-
}foreach((array)$this->mailhandling as $queue_id => $handling) { $mailhandler->set_async_job($queue_id, $handling['interval']); }
@@ -1484,7 +1527,7 @@
$this->new_resolution = $categories->name2id(‘None’);
config::save_value(‘new_resolution’,$this->new_resolution,‘tracker’);
}
-
if (!$this->notification[0]['lang']) $this->notification[0]['lang'] = $GLOBALS['egw']->preferences->default['common']['lang'];
-
if (is_array($this->notification) && !$this->notification[0]['lang']) $this->notification[0]['lang'] = $GLOBALS['egw']->preferences->default['common']['lang']; foreach(array( 'tr_summary' => TRACKER_ITEM_CREATOR|TRACKER_ITEM_ASSIGNEE|TRACKER_ADMIN,
@@ -1998,7 +2041,7 @@
{
//echo “
uitracker::get_readonlys() is_admin(tracker={$this->data[‘tr_tracker’]})=”.$this->is_admin($this->data[‘tr_tracker’]).", id={$this->data[‘tr_id’]}, creator={$this->data[‘tr_creator’]}, assigned={$this->data[‘tr_assigned’]}, user=$this->user
\n";$readonlys = array();
-
foreach($this->field_acl as $name => $rigths)
-
foreach((array)$this->field_acl as $name => $rigths) { $readonlys[$name] = !$rigths || !$this->check_rights($rigths, null, null, null, $name); }
Modified: trunk/tracker/inc/class.tracker_ui.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_ui.inc.php?rev=37009&r1=37008&r2=37009&view=diff
— trunk/tracker/inc/class.tracker_ui.inc.php (original)
+++ trunk/tracker/inc/class.tracker_ui.inc.php Thu Oct 20 15:05:23 2011
@@ -288,10 +288,29 @@
{
$this->htmledit ? $this->data[‘tr_edit_mode’] = ‘html’ : $this->data[‘tr_edit_mode’] = ‘ascii’;
}
-
if ($this->save() == 0)
-
$ret = $this->save(); -
if ($ret === false) -
{ -
$msg = lang('Save aborted; No change detected.'); -
$state = egw_session::appsession('index','tracker'.($only_tracker ? '-'.$only_tracker : '')); -
$js = "opener.location.href=opener.location.href.replace(/&tr_id=[0-9]+/,'')+(opener.location.href.indexOf('?')<0?'?':'&')+'msg=".addslashes(urlencode($msg)). -
// only change to current tracker, if not all trackers displayed -
($state['col_filter']['tr_tracker'] ? '&tracker='.$this->data['tr_tracker'] : '')."';"; -
} -
elseif ($ret === 'tr_modifier' || $ret === 'tr_modified') -
{ -
$msg .= ($msg ? ', ' : '') .lang('Error: the entry has been updated since you opened it for editing!').'<br />'. -
lang('Copy your changes to the clipboard, %1reload the entry%2 and merge them.','<a href="'. -
htmlspecialchars(egw::link('/index.php',array( -
'menuaction' => 'tracker.tracker_ui.edit', -
'tr_id' => $this->data['tr_id'], -
//'referer' => $referer, -
))).'">','</a>'); -
break; -
} -
elseif ($ret == 0) { $msg = lang('Entry saved');
-
//apply defaultlinks usort($this->all_cats,create_function('$a,$b','return strcasecmp($a["name"],$b["name"]);')); foreach($this->all_cats as $cat)
@@ -530,7 +549,9 @@
{
foreach($content[‘replies’] as $key => &$reply)
{
-
$reply['reply_visible_class'] = 'reply_visible_'.$reply['reply_visible'];
-
if (isset($content['replies'][$key]['reply_visible'])) { -
$reply['reply_visible_class'] = 'reply_visible_'.$reply['reply_visible']; -
} } } $content['no_comment_visibility'] = !$this->check_rights(TRACKER_ADMIN|TRACKER_TECHNICIAN|TRACKER_ITEM_ASSIGNEE,null,null,null,'no_comment_visibility') ||
Modified: trunk/tracker/setup/etemplates.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/setup/etemplates.inc.php?rev=37009&r1=37008&r2=37009&view=diff
— trunk/tracker/setup/etemplates.inc.php (original)
+++ trunk/tracker/setup/etemplates.inc.php Thu Oct 20 15:05:23 2011
@@ -2,7 +2,7 @@
/**
- EGroupware - eTemplates for Application tracker
- http://www.egroupware.org
-
- generated by soetemplate::dump4setup() 2011-10-14 20:29
-
- generated by soetemplate::dump4setup() 2011-10-20 14:53
- @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
-
@package tracker
@@ -32,7 +32,7 @@
$templ_data[] = array(‘name’ => ‘tracker.customfields.fields’,‘template’ => ‘’,‘lang’ => ‘’,‘group’ => ‘0’,‘version’ => ‘1.9.001’,‘data’ => ‘a:1:{i:0;a:5:{s:4:“type”;s:4:“grid”;s:4:“data”;a:3:{i:0;a:4:{s:2:“c1”;s:2:“th”;s:2:“c2”;s:7:“row,top”;s:1:“C”;s:8:",!@type2";s:1:“E”;s:14:",!@use_private";}i:1;a:9:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:4:“Name”;s:4:“help”;s:83:“the name used internaly (<= 20 chars), changeing it makes existing data unavailible”;}s:1:“B”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:5:“Label”;}s:1:“C”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:5:“Queue”;}s:1:“D”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:4:“Type”;}s:1:“E”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:7:“Private”;}s:1:“F”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:7:“Options”;s:4:“help”;s:40:“each value is a line like [=]”;}s:1:“G”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:14:“Length
Rows”;}s:1:“H”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:5:“Order”;}s:1:“I”;a:4:{s:4:“type
”;s:5:“label”;s:5:“label”;s:6:“Action”;s:5:“align”;s:6:“center”;s:4:“help”;s:18:“deletes this field”;}}i:2;a:9:{s:1:“A”;a:4:{s:4:“type”;s:4:“text”;s:4:“size”;s:5:“20,32”;s:4:“name”;s:12:"${row}[name]";s:4:“help”;s:83:“the name used internaly (<= 20 chars), changeing it makes existing data unavailible”;}s:1:“B”;a:4:{s:4:“type”;s:4:“vbox”;s:4:“size”;s:1:“2”;i:1;a:4:{s:4:“type”;s:4:“text”;s:4:“size”;s:4:",255";s:4:“name”;s:13:"${row}[label]";s:4:“help”;s:30:“the text displayed to the user”;}i:2;a:2:{s:4:“type”;s:5:“label”;s:4:“name”;s:13:"${row}[label]";}}s:1:“C”;a:4:{s:4:“type”;s:6:“select”;s:4:“size”;s:1:“3”;s:4:“name”;s:13:"${row}[type2]";s:7:“no_lang”;s:1:“1”;}s:1:“D”;a:4:{s:4:“type”;s:4:“vbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“type”;s:18:“customfields-types”;s:4:“name”;s:12:"{$row}[type]";s:4:“help”;s:19:“Type of customfield”;}i:2;a:3:{s:4:“type”;s:8:“checkbox”;s:4:“name”;s:14:"${row}[needed]";s:5:“label”;s:8:“required”;}}s:1:“E”;a:5:{s:4:“type”;s:14:“select-account”;s
:4:“name”;s:15:"${row}[private]";s:4:“help”;s:60:“Select accounts for which the custom field should be visible”;s:5:“align”;s:6:“center”;s:4:“size”;s:6:“3,both”;}s:1:“F”;a:4:{s:4:“type”;s:8:“textarea”;s:4:“size”;s:4:“2,30”;s:4:“name”;s:14:"${row}[values]";s:4:“help”;s:36:“each value is a line like id[=label]”;}s:1:“G”;a:4:{s:4:“type”;s:4:“vbox”;s:4:“size”;s:1:“2”;i:1;a:4:{s:4:“type”;s:4:“text”;s:4:“size”;s:1:“5”;s:4:“name”;s:11:"${row}[len]";s:4:“help”;s:63:“max length of the input [, length of the inputfield (optional)]”;}i:2;a:5:{s:4:“type”;s:3:“int”;s:4:“size”;s:6:“0,10,2”;s:4:“name”;s:12:"${row}[rows]";s:4:“help”;s:70:“number of row for a multiline inputfield or line of a multi-select-box”;s:4:“blur”;s:1:“1”;}}s:1:“H”;a:4:{s:4:“type”;s:3:“int”;s:4:“size”;s:4:“1,3”;s:4:“name”;s:13:"${row}[order]";s:4:“help”;s:45:“determines the order the fields are displayed”;}s:1:“I”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:1:“2”;i:1;a:4:{s:4:“type”;s:6:“button”;s:5:“label”;s:6:“Delete”;
s:4:“name”;s:23:“delete[$row_cont[name]]”;s:4:“help”;s:18:“deletes this field”;}i:2;a:4:{s:4:“type”;s:6:“button”;s:5:“label”;s:6:“Create”;s:4:“name”;s:21:“create$row_cont[name]”;s:4:“help”;s:19:“creates a new field”;}}}}s:4:“rows”;i:2;s:4:“cols”;i:9;s:7:“options”;a:0:{}}}’,‘size’ => ‘’,‘style’ => ‘’,‘modified’ => ‘1296518624’,);
-$templ_data[] = array(‘name’ => ‘tracker.edit’,‘template’ => ‘’,‘lang’ => ‘’,‘group’ => ‘0’,‘version’ => ‘1.9.001’,‘data’ => ‘a:1:{i:0;a:6:{s:4:“type”;s:4:“grid”;s:4:“data”;a:11:{i:0;a:14:{s:2:“h1”;s:6:",!@msg";s:1:“A”;s:2:“95”;s:2:“h5”;s:8:",!@tr_id";s:2:“c8”;s:4:",top";s:2:“h2”;s:2:“28”;s:2:“c2”;s:2:“th”;s:2:“c3”;s:3:“row”;s:1:“B”;s:3:“400”;s:1:“C”;s:2:“95”;s:1:“D”;s:3:“230”;s:2:“c4”;s:3:“row”;s:2:“c6”;s:3:“row”;s:2:“c5”;s:3:“row”;s:2:“c7”;s:3:“row”;}i:1;a:4:{s:1:“A”;a:5:{s:4:“type”;s:5:“label”;s:4:“span”;s:13:“all,redItalic”;s:5:“align”;s:6:“center”;s:4:“name”;s:3:“msg”;s:7:“no_lang”;s:1:“1”;}s:1:“B”;a:1:{s:4:“type”;s:5:“label”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:2;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_tracker";s:5:“label”;s:13:“Tracker Queue”;}s:1:“B”;a:6:{s:4:“type”;s:4:“hbox”;s:8:“onchange”;i:1;s:4:“size”;s:6:“2,0,0”;i:1;a:5:{s:4:“type”;s:6:“select”;s:4:“name”;s:10:“tr_tracker”;s:7:“no_lang”;s:1:“1”;s
:8:“onchange”;i:1;s:4:“span”;s:9:",width100";}i:2;a:4:{s:4:“type”;s:3:“int”;s:4:“name”;s:5:“tr_id”;s:4:“span”;s:9:",trIdEdit";s:8:“readonly”;s:1:“1”;}s:4:“span”;s:12:",user_filter";}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_private";s:5:“label”;s:7:“Private”;}s:1:“D”;a:2:{s:4:“type”;s:8:“checkbox”;s:4:“name”;s:10:“tr_private”;}}i:3;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:9:",cat_id";s:5:“label”;s:8:“Category”;}s:1:“B”;a:6:{s:4:“name”;s:6:“cat_id”;s:4:“size”;s:10:“Select one”;s:7:“no_lang”;s:1:“1”;s:4:“type”;s:6:“select”;s:6:“needed”;s:1:“1”;s:4:“span”;s:11:",cat_select";}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_version";s:5:“label”;s:7:“Version”;}s:1:“D”;a:6:{s:4:“type”;s:6:“select”;s:4:“name”;s:10:“tr_version”;s:7:“no_lang”;s:1:“1”;s:4:“size”;s:10:“Select one”;s:6:“needed”;s:1:“1”;s:4:“span”;s:12:",user_select";}}i:4;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:14:",tr_assigned";s:5:“label”;s:11:“Assigned to”;}s:
1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:5:{s:4:“type”;s:6:“select”;s:4:“name”;s:11:“tr_assigned”;s:4:“size”;s:12:“Not assigned”;s:7:“no_lang”;s:1:“1”;s:4:“span”;s:12:",user_select";}i:2;a:5:{s:4:“type”;s:10:“buttononly”;s:4:“size”;s:5:“users”;s:5:“label”;s:15:“Select multiple”;s:5:“align”;s:5:“right”;s:7:“onclick”;s:236:"if (selectbox=document.getElementById(form::name(‘tr_assigned’))) { selectbox.size=3; selectbox.multiple=true; if(selectbox.options[0].value==’’)selectbox.options[0]=null; selectbox.name+=’[]’;} this.style.display=‘none’; return false;";}}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:11:“tr_priority”;s:5:“label”;s:8:“Priority”;}s:1:“D”;a:2:{s:4:“type”;s:6:“select”;s:4:“name”;s:11:“tr_priority”;}}i:5;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:12:",tr_status";s:5:“label”;s:6:“Status”;}s:1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“type”;s:6:“select”;s:4:“name”;s:9:“tr_status”;s:4:“help”;
s:12:"@status_help";}i:2;a:3:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:9:“tr_closed”;s:5:“label”;s:1:" “;}}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:10:“Resolution”;s:4:“size”;s:16:”,tr_resolution";}s:1:“D”;a:4:{s:4:“type”;s:4:“hbox”;i:1;a:2:{s:4:“type”;s:6:“select”;s:4:“name”;s:13:“tr_resolution”;}i:2;a:3:{s:4:“type”;s:14:“select-percent”;s:4:“name”;s:13:“tr_completion”;s:4:“span”;s:9:",leftPad5";}s:4:“size”;s:6:“2,0,0”;}}i:6;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:2:“Cc”;s:4:“help”;s:36:“List of coma separated email address”;}s:1:“B”;a:6:{s:4:“type”;s:4:“grid”;s:4:“data”;a:3:{i:0;a:2:{s:2:“c2”;s:9:“hiddenRow”;s:1:“B”;s:2:“16”;}i:1;a:2:{s:1:“A”;a:4:{s:4:“type”;s:4:“text”;s:4:“size”;s:4:",254";s:4:“name”;s:5:“tr_cc”;s:4:“span”;s:15:",inputFullWidth";}s:1:“B”;a:4:{s:4:“type”;s:10:“buttononly”;s:4:“size”;s:5:“users”;s:5:“label”;s:20:“Add from Addressbook”;s:7:“onclick”;s:67:“return add_email_from_ab(form::name(‘ab[id]’),form::name(‘tr_cc’));”;}}i:2
;a:2:{s:1:“A”;a:5:{s:4:“type”;s:10:“link-entry”;s:4:“size”;s:17:“addressbook-email”;s:4:“name”;s:2:“ab”;s:4:“blur”;s:6:“Search”;s:4:“span”;s:3:“all”;}s:1:“B”;a:1:{s:4:“type”;s:5:“label”;}}}s:4:“rows”;i:2;s:4:“cols”;i:2;s:4:“size”;s:7:“100%,0”;s:7:“options”;a:2:{i:0;s:4:“100%”;i:2;s:1:“0”;}}s:1:“C”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:5:“Group”;}s:1:“D”;a:5:{s:4:“type”;s:6:“select”;i:1;a:1:{s:4:“type”;s:8:“groupbox”;}s:7:“no_lang”;s:1:“1”;s:4:“name”;s:8:“tr_group”;s:4:“help”;s:23:“Ownership of the ticket”;}}i:7;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_summary";s:5:“label”;s:7:“Summary”;}s:1:“B”;a:5:{s:4:“type”;s:4:“text”;s:4:“size”;s:3:",80";s:4:“span”;s:16:“3,inputFullWidth”;s:4:“name”;s:10:“tr_summary”;s:6:“needed”;s:1:“1”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:8;a:4:{s:1:“A”;a:5:{s:4:“type”;s:3:“tab”;s:5:“label”;s:62:“Description|Comments|Add comment|Links|Custom|History|Bounties”;s:4:“span”;s:3:“all”;s:4:
“name”;s:67:“tabs=description|comments|add_comment|links|custom|history|bounties”;s:4:“help”;s:149:“Description|Comments|Add comment|Attachments & Links|Custom fields|History|If this item is important for you, please consider to set a bounty for it!”;}s:1:“B”;a:5:{s:4:“type”;s:8:“textarea”;s:4:“size”;s:4:“8,80”;s:4:“span”;s:1:“3”;s:4:“name”;s:14:“tr_description”;s:6:“needed”;s:1:“1”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:9;a:4:{s:1:“A”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:10:“Created by”;}s:1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“name”;s:10:“tr_creator”;s:7:“no_lang”;s:1:“1”;s:4:“type”;s:6:“select”;}i:2;a:4:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:10:“tr_created”;s:5:“label”;s:1:",";s:8:“readonly”;s:1:“1”;}}s:1:“C”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:13:“Last modified”;}s:1:“D”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“type”;s:14:“select-account”;s:4:“name”;s:11:“tr_modifi
er”;s:8:“readonly”;s:1:“1”;}i:2;a:4:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:11:“tr_modified”;s:5:“label”;s:1:",";s:8:“readonly”;s:1:“1”;}}}i:10;a:4:{s:1:“A”;a:3:{s:4:“type”;s:6:“button”;s:5:“label”;s:4:“Save”;s:4:“name”;s:12:“button[save]”;}s:1:“B”;a:5:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:4:{s:4:“type”;s:6:“button”;s:5:“label”;s:6:“Cancel”;s:4:“name”;s:14:“button[cancel]”;s:7:“onclick”;s:10:"@on_cancel";}i:2;a:3:{s:4:“type”;s:8:“checkbox”;s:5:“label”;s:30:“Do not notify of these changes”;s:4:“name”;s:16:“no_notifications”;}s:4:“span”;s:1:“2”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:5:{s:4:“type”;s:4:“vbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:6:{s:4:“type”;s:6:“button”;s:5:“label”;s:12:“Vote for it!”;s:4:“name”;s:12:“button[vote]”;s:4:“help”;s:54:“If this item is important for you, please vote for it.”;s:5:“align”;s:5:“right”;s:7:“onclick”;s:52:“return confirm(‘Do you want to vote for this item’);”;}i:2;a:5:{s:4:“type”;s:5:“label”;s:4:“name”;s:7:“no_vote”;
s:4:“span”;s:10:",redItalic";s:7:“no_lang”;s:1:“1”;s:5:“align”;s:5:“right”;}s:5:“align”;s:5:“right”;}}}s:4:“rows”;i:10;s:4:“cols”;i:4;s:4:“size”;s:4:“100%”;s:7:“options”;a:1:{i:0;s:4:“100%”;}}}’,‘size’ => ‘100%’,‘style’ => ‘.hiddenRow {
+$templ_data[] = array(‘name’ => ‘tracker.edit’,‘template’ => ‘’,‘lang’ => ‘’,‘group’ => ‘0’,‘version’ => ‘1.9.002’,‘data’ => ‘a:1:{i:0;a:6:{s:4:“type”;s:4:“grid”;s:4:“data”;a:11:{i:0;a:14:{s:2:“h1”;s:6:",!@msg";s:1:“A”;s:2:“95”;s:2:“h5”;s:8:",!@tr_id";s:2:“c8”;s:4:",top";s:2:“h2”;s:2:“28”;s:2:“c2”;s:2:“th”;s:2:“c3”;s:3:“row”;s:1:“B”;s:3:“400”;s:1:“C”;s:2:“95”;s:1:“D”;s:3:“230”;s:2:“c4”;s:3:“row”;s:2:“c6”;s:3:“row”;s:2:“c5”;s:3:“row”;s:2:“c7”;s:3:“row”;}i:1;a:4:{s:1:“A”;a:6:{s:4:“type”;s:4:“html”;s:4:“span”;s:13:“all,redItalic”;s:5:“align”;s:6:“center”;s:4:“name”;s:3:“msg”;s:7:“no_lang”;s:1:“1”;s:8:“readonly”;s:1:“1”;}s:1:“B”;a:1:{s:4:“type”;s:5:“label”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:2;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_tracker";s:5:“label”;s:13:“Tracker Queue”;}s:1:“B”;a:6:{s:4:“type”;s:4:“hbox”;s:8:“onchange”;i:1;s:4:“size”;s:6:“2,0,0”;i:1;a:5:{s:4:“type”;s:6:“select”;s:4:“name”;s:10:“tr_tracker”;s
:7:“no_lang”;s:1:“1”;s:8:“onchange”;i:1;s:4:“span”;s:9:",width100";}i:2;a:4:{s:4:“type”;s:3:“int”;s:4:“name”;s:5:“tr_id”;s:4:“span”;s:9:",trIdEdit";s:8:“readonly”;s:1:“1”;}s:4:“span”;s:12:",user_filter";}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_private";s:5:“label”;s:7:“Private”;}s:1:“D”;a:2:{s:4:“type”;s:8:“checkbox”;s:4:“name”;s:10:“tr_private”;}}i:3;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:9:",cat_id";s:5:“label”;s:8:“Category”;}s:1:“B”;a:6:{s:4:“name”;s:6:“cat_id”;s:4:“size”;s:10:“Select one”;s:7:“no_lang”;s:1:“1”;s:4:“type”;s:6:“select”;s:6:“needed”;s:1:“1”;s:4:“span”;s:11:",cat_select";}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_version";s:5:“label”;s:7:“Version”;}s:1:“D”;a:6:{s:4:“type”;s:6:“select”;s:4:“name”;s:10:“tr_version”;s:7:“no_lang”;s:1:“1”;s:4:“size”;s:10:“Select one”;s:6:“needed”;s:1:“1”;s:4:“span”;s:12:",user_select";}}i:4;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:14:",tr_assigned";s:5:“label”;
s:11:“Assigned to”;}s:1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:5:{s:4:“type”;s:6:“select”;s:4:“name”;s:11:“tr_assigned”;s:4:“size”;s:12:“Not assigned”;s:7:“no_lang”;s:1:“1”;s:4:“span”;s:12:",user_select";}i:2;a:5:{s:4:“type”;s:10:“buttononly”;s:4:“size”;s:5:“users”;s:5:“label”;s:15:“Select multiple”;s:5:“align”;s:5:“right”;s:7:“onclick”;s:236:"if (selectbox=document.getElementById(form::name(‘tr_assigned’))) { selectbox.size=3; selectbox.multiple=true; if(selectbox.options[0].value==’’)selectbox.options[0]=null; selectbox.name+=’[]’;} this.style.display=‘none’; return false;";}}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:11:“tr_priority”;s:5:“label”;s:8:“Priority”;}s:1:“D”;a:2:{s:4:“type”;s:6:“select”;s:4:“name”;s:11:“tr_priority”;}}i:5;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:12:",tr_status";s:5:“label”;s:6:“Status”;}s:1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“type”;s:6:“select”;s:4:“name”;s:9:“
tr_status”;s:4:“help”;s:12:"@status_help";}i:2;a:3:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:9:“tr_closed”;s:5:“label”;s:1:" “;}}s:1:“C”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:10:“Resolution”;s:4:“size”;s:16:”,tr_resolution";}s:1:“D”;a:4:{s:4:“type”;s:4:“hbox”;i:1;a:2:{s:4:“type”;s:6:“select”;s:4:“name”;s:13:“tr_resolution”;}i:2;a:3:{s:4:“type”;s:14:“select-percent”;s:4:“name”;s:13:“tr_completion”;s:4:“span”;s:9:",leftPad5";}s:4:“size”;s:6:“2,0,0”;}}i:6;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:5:“label”;s:2:“Cc”;s:4:“help”;s:36:“List of coma separated email address”;}s:1:“B”;a:6:{s:4:“type”;s:4:“grid”;s:4:“data”;a:3:{i:0;a:2:{s:2:“c2”;s:9:“hiddenRow”;s:1:“B”;s:2:“16”;}i:1;a:2:{s:1:“A”;a:4:{s:4:“type”;s:4:“text”;s:4:“size”;s:4:",254";s:4:“name”;s:5:“tr_cc”;s:4:“span”;s:15:",inputFullWidth";}s:1:“B”;a:4:{s:4:“type”;s:10:“buttononly”;s:4:“size”;s:5:“users”;s:5:“label”;s:20:“Add from Addressbook”;s:7:“onclick”;s:67:“return add_email_from_ab(form::name(‘ab[id]’),form::na
me(‘tr_cc’));”;}}i:2;a:2:{s:1:“A”;a:5:{s:4:“type”;s:10:“link-entry”;s:4:“size”;s:17:“addressbook-email”;s:4:“name”;s:2:“ab”;s:4:“blur”;s:6:“Search”;s:4:“span”;s:3:“all”;}s:1:“B”;a:1:{s:4:“type”;s:5:“label”;}}}s:4:“rows”;i:2;s:4:“cols”;i:2;s:4:“size”;s:7:“100%,0”;s:7:“options”;a:2:{i:0;s:4:“100%”;i:2;s:1:“0”;}}s:1:“C”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:5:“Group”;}s:1:“D”;a:5:{s:4:“type”;s:6:“select”;i:1;a:1:{s:4:“type”;s:8:“groupbox”;}s:7:“no_lang”;s:1:“1”;s:4:“name”;s:8:“tr_group”;s:4:“help”;s:23:“Ownership of the ticket”;}}i:7;a:4:{s:1:“A”;a:3:{s:4:“type”;s:5:“label”;s:4:“size”;s:13:",tr_summary";s:5:“label”;s:7:“Summary”;}s:1:“B”;a:5:{s:4:“type”;s:4:“text”;s:4:“size”;s:3:",80";s:4:“span”;s:16:“3,inputFullWidth”;s:4:“name”;s:10:“tr_summary”;s:6:“needed”;s:1:“1”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:8;a:4:{s:1:“A”;a:5:{s:4:“type”;s:3:“tab”;s:5:“label”;s:62:“Description|Comments|Add comment|Links|Custom|History|Bounties”;s:4
:“span”;s:3:“all”;s:4:“name”;s:67:“tabs=description|comments|add_comment|links|custom|history|bounties”;s:4:“help”;s:149:“Description|Comments|Add comment|Attachments & Links|Custom fields|History|If this item is important for you, please consider to set a bounty for it!”;}s:1:“B”;a:5:{s:4:“type”;s:8:“textarea”;s:4:“size”;s:4:“8,80”;s:4:“span”;s:1:“3”;s:4:“name”;s:14:“tr_description”;s:6:“needed”;s:1:“1”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:1:{s:4:“type”;s:5:“label”;}}i:9;a:4:{s:1:“A”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:10:“Created by”;}s:1:“B”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“name”;s:10:“tr_creator”;s:7:“no_lang”;s:1:“1”;s:4:“type”;s:6:“select”;}i:2;a:4:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:10:“tr_created”;s:5:“label”;s:1:",";s:8:“readonly”;s:1:“1”;}}s:1:“C”;a:2:{s:4:“type”;s:5:“label”;s:5:“label”;s:13:“Last modified”;}s:1:“D”;a:4:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:3:{s:4:“type”;s:14:“select-account”;s:4:
“name”;s:11:“tr_modifier”;s:8:“readonly”;s:1:“1”;}i:2;a:4:{s:4:“type”;s:9:“date-time”;s:4:“name”;s:11:“tr_modified”;s:5:“label”;s:1:",";s:8:“readonly”;s:1:“1”;}}}i:10;a:4:{s:1:“A”;a:3:{s:4:“type”;s:6:“button”;s:5:“label”;s:4:“Save”;s:4:“name”;s:12:“button[save]”;}s:1:“B”;a:5:{s:4:“type”;s:4:“hbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:4:{s:4:“type”;s:6:“button”;s:5:“label”;s:6:“Cancel”;s:4:“name”;s:14:“button[cancel]”;s:7:“onclick”;s:10:"@on_cancel";}i:2;a:3:{s:4:“type”;s:8:“checkbox”;s:5:“label”;s:30:“Do not notify of these changes”;s:4:“name”;s:16:“no_notifications”;}s:4:“span”;s:1:“2”;}s:1:“C”;a:1:{s:4:“type”;s:5:“label”;}s:1:“D”;a:5:{s:4:“type”;s:4:“vbox”;s:4:“size”;s:6:“2,0,0”;i:1;a:6:{s:4:“type”;s:6:“button”;s:5:“label”;s:12:“Vote for it!”;s:4:“name”;s:12:“button[vote]”;s:4:“help”;s:54:“If this item is important for you, please vote for it.”;s:5:“align”;s:5:“right”;s:7:“onclick”;s:52:“return confirm(‘Do you want to vote for this item’);”;}i:2;a:5:{s:4:“type”;s:5:“label”;s:4
:“name”;s:7:“no_vote”;s:4:“span”;s:10:",redItalic";s:7:“no_lang”;s:1:“1”;s:5:“align”;s:5:“right”;}s:5:“align”;s:5:“right”;}}}s:4:“rows”;i:10;s:4:“cols”;i:4;s:4:“size”;s:4:“100%”;s:7:“options”;a:1:{i:0;s:4:“100%”;}}}’,‘size’ => ‘100%’,‘style’ => ‘.hiddenRow {
display: none;
}’,‘modified’ => ‘1286908291’,);
Modified: trunk/tracker/templates/default/edit.xet
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/edit.xet?rev=37009&r1=37008&r2=37009&view=diff
— trunk/tracker/templates/default/edit.xet (original)
+++ trunk/tracker/templates/default/edit.xet Thu Oct 20 15:05:23 2011
@@ -153,7 +153,7 @@
@@ -163,7 +163,7 @@
-
<description align="center" id="msg" no_lang="1" span="all" class="redItalic"/>
-
<html align="center" id="msg" no_lang="1" readonly="true" span="all" class="redItalic"/> <description/> <description/> <description/>
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Ciosco Self-Assessment and learn
about Cisco certifications, training, and career opportunities.
http://p.sf.net/sfu/cisco-dev2dev
eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs