R37009 - in /trunk/tracker: inc/ setup/ templates/default/

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 @@
/**

    • generated by soetemplate::dump4setup() 2011-10-14 20:29

$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