[eGroupWare-svn] r56118 - in /trunk/tracker: inc/ templates/default/ templates/pixelegg/
[email protected] Wed, 11 May 2016 09:51:01 -0000
| Newsgroups | gmane.comp.web.egroupware.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ralfbecker
Date: Wed May 11 11:51:00 2016
New Revision: 56118
URL: http://svn.stylite.de/viewvc/egroupware?rev=56118&view=rev
Log:
fix PHP Warning: tracker_so::escalate_filter called static and many IDE warnings
@Nathan please have a look at tracker_import_csv line 452
Added:
trunk/tracker/templates/default/admin.types.xet.bak
trunk/tracker/templates/default/admin.xet.bak
trunk/tracker/templates/default/customfields.xet.bak
trunk/tracker/templates/default/edit.custom.xet.bak
trunk/tracker/templates/default/edit.xet.bak
trunk/tracker/templates/default/escalations.xet.bak
trunk/tracker/templates/default/importexport_wizard_chooseowner.xet.bak
trunk/tracker/templates/default/index.left.xet.bak
trunk/tracker/templates/default/index.left_multiqueue.xet.bak
trunk/tracker/templates/default/index.rows.xet.bak
trunk/tracker/templates/default/index.xet.bak
trunk/tracker/templates/default/report.xet.bak
trunk/tracker/templates/default/wizard_import_options.xet.bak
trunk/tracker/templates/pixelegg/app.less.edited
Modified:
trunk/tracker/inc/class.tracker_admin.inc.php
trunk/tracker/inc/class.tracker_egw_record.inc.php
trunk/tracker/inc/class.tracker_escalations.inc.php
trunk/tracker/inc/class.tracker_export_csv.inc.php
trunk/tracker/inc/class.tracker_hooks.inc.php
trunk/tracker/inc/class.tracker_import_csv.inc.php
trunk/tracker/inc/class.tracker_mailhandler.inc.php
trunk/tracker/inc/class.tracker_so.inc.php
trunk/tracker/inc/class.tracker_tracking.inc.php
trunk/tracker/inc/class.tracker_widget.inc.php
trunk/tracker/inc/class.tracker_wizard_export_csv.inc.php
trunk/tracker/inc/class.tracker_wizard_import_csv.inc.php
Modified: trunk/tracker/inc/class.tracker_admin.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_admin.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_admin.inc.php (original)
+++ trunk/tracker/inc/class.tracker_admin.inc.php Wed May 11 11:51:00 2016
@@ -5,7 +5,7 @@
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package tracker
- * @copyright (c) 2006-10 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
+ * @copyright (c) 2006-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -58,13 +58,13 @@
/**
* Site configuration
*
- * @param array $content=null
+ * @param array $_content=null
* @return string
*/
- function admin($content=null,$msg='')
+ function admin($_content=null,$msg='')
{
- //_debug_array($content);
- $tracker = (int) $content['tracker'];
+ //_debug_array($_content);
+ $tracker = (int) $_content['tracker'];
// apply preferences for assigning of defaultprojects, and provide the project list
if ($this->prefs['allow_defaultproject'] && $tracker)
@@ -72,24 +72,24 @@
$allow_defaultproject = $this->prefs['allow_defaultproject'];
}
- if (is_array($content))
- {
- list($button) = @each($content['button']);
+ if (is_array($_content))
+ {
+ list($button) = @each($_content['button']);
$defaultresolution = false;
- if (isset($content['resolutions']['isdefaultresolution']))
+ if (isset($_content['resolutions']['isdefaultresolution']))
{
$name = 'resolutions';
- $defaultresolution = $content[$name]['isdefaultresolution'];
- unset($content[$name]['isdefaultresolution']);
+ $defaultresolution = $_content[$name]['isdefaultresolution'];
+ unset($_content[$name]['isdefaultresolution']);
}
switch($button)
{
case 'add':
- if (!$content['add_name'])
+ if (!$_content['add_name'])
{
$msg = lang('You need to enter a name');
}
- elseif (($id = $this->add_tracker($content['add_name'])))
+ elseif (($id = $this->add_tracker($_content['add_name'])))
{
$tracker = $id;
$msg = lang('Tracker added');
@@ -101,11 +101,11 @@
break;
case 'rename':
- if (!$content['add_name'])
+ if (!$_content['add_name'])
{
$msg = lang('You need to enter a name');
}
- elseif($tracker && $this->rename_tracker($tracker,$content['add_name']))
+ elseif($tracker && $this->rename_tracker($tracker,$_content['add_name']))
{
$msg = lang('Tracker queue renamed');
}
@@ -132,18 +132,18 @@
foreach(array_diff($this->config_names,array('field_acl','technicians','admins','users','restrictions','notification','mailhandling','priorities')) as $name)
{
if (in_array($name,array('overdue_days','pending_close_days')) &&
- $content[$name] === '')
+ $_content[$name] === '')
{
- $content[$name] = '0'; // otherwise it does NOT get stored
+ $_content[$name] = '0'; // otherwise it does NOT get stored
}
- if ((string) $this->$name !== $content[$name])
+ if ((string) $this->$name !== $_content[$name])
{
- $this->$name = $content[$name];
+ $this->$name = $_content[$name];
$need_update = true;
}
}
// field_acl
- foreach($content['field_acl'] as $row)
+ foreach($_content['field_acl'] as $row)
{
$rights = 0;
foreach(array(
@@ -172,18 +172,18 @@
{
$staff =& $this->$name;
if (!isset($staff[$tracker])) $staff[$tracker] = array();
- if (!isset($content[$name])) $content[$name] = array();
-
- if ($staff[$tracker] != $content[$name])
- {
- $staff[$tracker] = $content[$name];
+ if (!isset($_content[$name])) $_content[$name] = array();
+
+ if ($staff[$tracker] != $_content[$name])
+ {
+ $staff[$tracker] = $_content[$name];
$need_update = true;
}
}
// build the (normalized!) priority array
$prios = array();
- foreach($content['priorities'] as $value => $data)
+ foreach($_content['priorities'] as $value => $data)
{
if ($value == 'cat_id')
{
@@ -223,7 +223,8 @@
$validationError=true;
}
$mailhandler = new tracker_mailhandler($this->mailhandling);
- foreach((array)$this->mailhandling as $queue_id => $handling) {
+ foreach(array_keys((array)$this->mailhandling) as $queue_id)
+ {
if (is_array($this->mailhandling[$queue_id]) && $this->mailhandling[$queue_id]['interval'])
{
try
@@ -253,7 +254,7 @@
'responses' => lang('Canned response'),
) as $name => $what)
{
- foreach($content[$name] as $cat)
+ foreach($_content[$name] as $cat)
{
//_debug_array(array($name=>$cat));
if (!is_array($cat) || !$cat['name']) continue; // ignore empty (new) cats
@@ -399,9 +400,9 @@
'responses' => lang('Canned response'),
) as $name => $what)
{
- if (isset($content[$name]['delete']))
- {
- list($id) = each($content[$name]['delete']);
+ if (isset($_content[$name]['delete']))
+ {
+ list($id) = each($_content[$name]['delete']);
if ((int)$id)
{
$GLOBALS['egw']->categories->delete($id);
@@ -423,9 +424,9 @@
'notification' => $this->notification[$tracker],
'restrictions' => $this->restrictions[$tracker],
'mailhandling' => $this->mailhandling[$tracker],
- 'tabs' => $content['tabs'],
+ 'tabs' => $_content['tabs'],
// keep priority cat only if tracker is unchanged, otherwise reset it
- 'priorities' => $tracker == $content['tracker'] ? array('cat_id' => $content['priorities']['cat_id']) : array(),
+ 'priorities' => $tracker == $_content['tracker'] ? array('cat_id' => $_content['priorities']['cat_id']) : array(),
);
foreach(array_diff($this->config_names,array('admins','technicians','users','notification','restrictions','mailhandling','priorities')) as $name)
@@ -638,16 +639,16 @@
/**
* Define escalations
*
- * @param array $content
+ * @param array $_content
* @param string $msg
*/
- function escalations(array $content=null,$msg='')
+ function escalations(array $_content=null,$msg='')
{
$escalations = new tracker_escalations();
- if (!is_array($content))
- {
- $content['nm'] = array(
+ if (!is_array($_content))
+ {
+ $_content['nm'] = array(
'get_rows' => 'tracker.tracker_admin.get_rows',
'no_cat' => true,
'no_filter2'=> true,
@@ -671,33 +672,33 @@
}
else
{
- list($button) = @each($content['button']);
- unset($content['button']);
- $escalations->init($content);
+ list($button) = @each($_content['button']);
+ unset($_content['button']);
+ $escalations->init($_content);
switch($button)
{
case 'save':
case 'apply':
// 'Before' only valid for start & due dates
- if($content['esc_before_after'] == tracker_escalations::BEFORE &&
- !in_array($content['esc_type'],array(tracker_escalations::START,tracker_escalations::DUE)))
+ if($_content['esc_before_after'] == tracker_escalations::BEFORE &&
+ !in_array($_content['esc_type'],array(tracker_escalations::START,tracker_escalations::DUE)))
{
$msg = lang('"%2" only valid for start date and due date. Use "%1".',lang('after'),lang('before'));
$escalations->data['esc_before_after'] = tracker_escalations::AFTER;
break;
}
// Handle before time
- $escalations->data['esc_time'] *= ($content['esc_before_after'] == tracker_escalations::BEFORE ? -1 : 1);
+ $escalations->data['esc_time'] *= ($_content['esc_before_after'] == tracker_escalations::BEFORE ? -1 : 1);
if (($err = $escalations->not_unique()))
{
$msg = lang('There already an escalation for that filter!');
$button = '';
}
- elseif (($err = $escalations->save(null,null,!$content['esc_run_on_existing'])) == 0)
- {
- $msg = $content['esc_id'] ? lang('Escalation saved.') : lang('Escalation added.');
+ elseif (($err = $escalations->save(null,null,!$_content['esc_run_on_existing'])) == 0)
+ {
+ $msg = $_content['esc_id'] ? lang('Escalation saved.') : lang('Escalation added.');
}
if ($button == 'apply' || $err) break;
// fall-through
@@ -705,18 +706,18 @@
$escalations->init();
break;
}
- if($content['nm']['rows']['edit'] || $content['nm']['rows']['delete'])
+ if($_content['nm']['rows']['edit'] || $_content['nm']['rows']['delete'])
{
- $content['nm']['action'] = key($content['nm']['rows']);
- $content['nm']['selected'] = array(key($content['nm']['rows'][$content['nm']['action']]));
+ $_content['nm']['action'] = key($_content['nm']['rows']);
+ $_content['nm']['selected'] = array(key($_content['nm']['rows'][$_content['nm']['action']]));
}
- if($content['nm']['action'])
+ if($_content['nm']['action'])
{
- $action = $content['nm']['action'];
- list($id) = $content['nm']['selected'];
- $id = (int)$id;
- unset($content['nm']['action']);
- unset($content['nm']['selected']);
+ $action = $_content['nm']['action'];
+ list($_id) = $_content['nm']['selected'];
+ $id = (int)$_id;
+ unset($_content['nm']['action']);
+ unset($_content['nm']['selected']);
switch($action)
{
case 'edit':
@@ -740,7 +741,7 @@
}
}
$content = $escalations->data + array(
- 'nm' => $content['nm'],
+ 'nm' => $_content['nm'],
'msg' => $msg,
);
Modified: trunk/tracker/inc/class.tracker_egw_record.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_egw_record.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_egw_record.inc.php (original)
+++ trunk/tracker/inc/class.tracker_egw_record.inc.php Wed May 11 11:51:00 2016
@@ -124,7 +124,7 @@
* @return string identifier
*/
public function save ( $_dst_identifier ) {
-
+ unset($_dst_identifier); // not used
}
/**
@@ -134,7 +134,7 @@
* @return string dst_identifier
*/
public function copy ( $_dst_identifier ) {
-
+ unset($_dst_identifier); // not used
}
/**
@@ -144,7 +144,7 @@
* @return string dst_identifier
*/
public function move ( $_dst_identifier ) {
-
+ unset($_dst_identifier); // not used
}
/**
Modified: trunk/tracker/inc/class.tracker_escalations.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_escalations.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_escalations.inc.php (original)
+++ trunk/tracker/inc/class.tracker_escalations.inc.php Wed May 11 11:51:00 2016
@@ -1,13 +1,13 @@
<?php
/**
- * eGroupWare Tracker - Escalation of tickets
+ * EGroupware Tracker - Escalation of tickets
*
* Sponsored by Hexagon Metrolegy (www.hexagonmetrology.net)
*
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package tracker
- * @copyright (c) 2008 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
+ * @copyright (c) 2008-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -135,7 +135,7 @@
$data['set'][substr($key,4)] = $value;
if (!is_null($value))
{
- static $col2action;
+ static $col2action=null;
if (is_null($col2action))
{
$col2action = array(
@@ -233,7 +233,7 @@
/**
* Get an SQL filter to include in a tracker search returning only matches of a given escalation
*
- * @param boolean $due=false true = return only tickets due to escalate, default false = return all tickets matching the escalation filter
+ * @param boolean $due =false true = return only tickets due to escalate, default false = return all tickets matching the escalation filter
* @return array|boolean array with filter or false if escalation not found
*/
function get_filter($due=false)
@@ -372,7 +372,7 @@
}
self::$tracker->init($ticket);
- if ($result = self::$tracker->save() != 0)
+ if (($result = self::$tracker->save()) != 0)
{
return false; // error saving the ticket
}
@@ -478,7 +478,8 @@
// filter only due tickets
$filter = $this->get_filter(true);
// not having this escalation already done
- $filter[] = tracker_bo::escalated_filter($this->id,$join,
+ $join = null;
+ $filter[] = self::$tracker->escalated_filter($this->id,$join,
$this->data['esc_match_repeat'] ? time() - $this->data['esc_match_repeat']*60 : false
);
@@ -520,7 +521,7 @@
/**
* Check if exist and if not start or stop an async job to close pending items
*
- * @param boolean $start=true true=start, false=stop
+ * @param boolean $start =true true=start, false=stop
*/
static function set_async_job($start=true)
{
@@ -567,7 +568,8 @@
// filter only due tickets
$filter = $this->get_filter(true);
// not having this escalation already done
- $filter[] = tracker_bo::escalated_filter($this->id,$join,
+ $join = null;
+ $filter[] = self::$tracker->escalated_filter($this->id,$join,
$this->data['esc_match_repeat'] ? time() - $this->data['esc_match_repeat']*60 : false
);
@@ -624,6 +626,7 @@
// Get a list of users
$users = self::$tracker->users_with_open_entries();
+ $notified = null;
foreach($users as $user)
{
if (isset($notified)) $notified=array();
Modified: trunk/tracker/inc/class.tracker_export_csv.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_export_csv.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_export_csv.inc.php (original)
+++ trunk/tracker/inc/class.tracker_export_csv.inc.php Wed May 11 11:51:00 2016
@@ -42,6 +42,7 @@
// ui selection with checkbox 'use_all'
$query['num_rows'] = -1; // all
$query['csv_export'] = true; // so get_rows method _can_ produce different content or not store state in the session
+ $readonlys = null;
$this->ui->get_rows($query,$selection,$readonlys);
// Reset nm params
@@ -56,7 +57,7 @@
);
if($options['selection'] == 'filter')
{
- $fields = importexport_helper_functions::get_filter_fields($_definition->application, $this);
+ importexport_helper_functions::get_filter_fields($_definition->application, $this);
$query['col_filter'] = $_definition->filter;
// Backend expects a string
@@ -182,6 +183,7 @@
* @param tracker_egw_record $record Record to be converted
*/
protected static function convert(tracker_egw_record &$record, array $options = array()) {
+ unset($options); // not used, but required by function signature
$record->tr_description = htmlspecialchars_decode(strip_tags($record->tr_description));
if(is_array($record->replies)) {
@@ -202,7 +204,7 @@
if( count($record->bounties) > 0) {
$bounties = array();
$total = 0;
- foreach($record->bounties as $key => $bounty) {
+ foreach($record->bounties as $bounty) {
$date = date($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'] . ', '.
($GLOBALS['egw_info']['user']['preferences']['common']['timeformat'] == '24' ? 'H' : 'h').':i:s',$bounty['bounty_created']);
$name = Api\Accounts::username($bounty['bounty_creator']);
@@ -230,7 +232,7 @@
'tr_priority' => $this->ui->get_tracker_priorities(),
'tr_private' => array('' => lang('no'),0 => lang('no'),'1'=>lang('yes')),
);
- foreach($this->selects['tr_tracker'] as $id => $name) {
+ foreach(array_keys($this->selects['tr_tracker']) as $id) {
$this->selects['tr_version'] += $this->ui->get_tracker_labels('version', $id);
$this->selects['tr_status'] += $this->ui->get_tracker_stati($id);
$this->selects['tr_resolution'] += $this->ui->get_tracker_labels('resolution',$id);
Modified: trunk/tracker/inc/class.tracker_hooks.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_hooks.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_hooks.inc.php (original)
+++ trunk/tracker/inc/class.tracker_hooks.inc.php Wed May 11 11:51:00 2016
@@ -5,7 +5,7 @@
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package tracker
- * @copyright (c) 2006-11 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
+ * @copyright (c) 2006-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -28,6 +28,8 @@
*/
static function search_link($location)
{
+ unset($location); // not used, but required by function signature
+
$link = array(
'query' => 'tracker.tracker_bo.link_query',
'title' => 'tracker.tracker_bo.link_title',
@@ -246,8 +248,6 @@
// Merge print
if ($GLOBALS['egw_info']['user']['apps']['filemanager'])
{
- $link = Egw::link('/index.php','menuaction=tracker.tracker_merge.show_replacements');
-
$settings['default_document'] = array(
'type' => 'vfs_file',
'size' => 60,
@@ -293,10 +293,11 @@
}
catch (Exception $e)
{
+ unset($e); // not used
// permission error
continue;
}
- if ($title = $definition->get_title())
+ if (($title = $definition->get_title()))
{
$options[$title] = $title;
}
@@ -346,6 +347,8 @@
*/
public static function mail_import($args)
{
+ unset($args); // not used, but required by function signature
+
return array(
'menuaction' => 'tracker.tracker_ui.mail_import',
'popup' => Link::get_registry('tracker', 'add_popup'),
Modified: trunk/tracker/inc/class.tracker_import_csv.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_import_csv.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_import_csv.inc.php (original)
+++ trunk/tracker/inc/class.tracker_import_csv.inc.php Wed May 11 11:51:00 2016
@@ -147,9 +147,6 @@
$_definition->plugin_options['record_owner'] = isset( $_definition->plugin_options['record_owner'] ) ?
$_definition->plugin_options['record_owner'] : $this->user;
- // Used to try to automatically match names to account IDs
- $addressbook = new Api\Contacts\Storage();
-
// Process cat_id as a normal select
$types = tracker_egw_record::$types;
unset($types['select-cat']);
@@ -171,10 +168,10 @@
// don't import empty records
if( count( array_unique( $record ) ) < 2 ) continue;
-
+
$result = importexport_import_csv::convert($record, $types, 'tracker', $_lookups, $_definition->plugin_options['convert']);
if($result) $this->warnings[$import_csv->get_current_position()] = $result;
-
+
// Set creator/group, unless it's supposed to come from CSV file
foreach(array('owner' => 'creator', 'group' => 'group', 'assigned' => 'assigned') as $option => $field) {
if($_definition->plugin_options[$option.'_from_csv'] && $record['tr_'.$field]) {
@@ -215,12 +212,12 @@
// Translate lookups
foreach($lookups as $field => &$l_values)
{
- foreach($l_values as $l_key => &$l_label)
+ foreach($l_values as &$l_label)
{
$l_label = lang($l_label);
}
}
- $lookups = $_lookups + $lookups;
+ $all_lookups = $_lookups + $lookups;
foreach(array('tr_tracker', 'tr_version','tr_status','tr_priority','tr_resolution','cat_id') as $field) {
if(!is_numeric($record[$field]) || $_definition->plugin_options['convert'] == 1) {
@@ -230,12 +227,12 @@
//echo "Checking $field. Currently {$record[$field]}.<br />";
// Check for key as value - importing DB values, or from conversion
- if(is_numeric($record[$field]) && $lookups[$field][$record[$field]]) $key = $record[$field];
+ if(is_numeric($record[$field]) && $all_lookups[$field][$record[$field]]) $key = $record[$field];
// Look for human values - existing ones should already be IDs
if(!$key)
{
- $key = array_search($record[$field], $lookups[$field]);
+ $key = array_search($record[$field], $all_lookups[$field]);
}
if($key !== false) {
$record[$field] = $key;
@@ -282,7 +279,7 @@
));
}
$record[$field] = $cat_id;
- } elseif($key = array_search($t_field, $lookups[$field])) {
+ } elseif(($key = array_search($t_field, $all_lookups[$field]))) {
$record[$field] = $key;
} else {
$record[$field] = $t_field;
@@ -292,8 +289,8 @@
}
}
if($field == 'tr_tracker') {
- $lookups['tr_priority'] = $this->bo->get_tracker_priorities($record['tr_tracker'], $record['cat_id']);
- $lookups['cat_id'] = $this->bo->get_tracker_labels('cat', $record['tr_tracker']);
+ $all_lookups['tr_priority'] = $this->bo->get_tracker_priorities($record['tr_tracker'], $record['cat_id']);
+ $all_lookups['cat_id'] = $this->bo->get_tracker_labels('cat', $record['tr_tracker']);
}
//echo "Final: {$record[$field]}<br />";
}
@@ -402,7 +399,7 @@
$this->results['unchanged']++;
break;
}
-
+
// Fall through
case 'insert' :
// Defaults
@@ -442,8 +439,7 @@
}
// Process some additional fields
- $_link_id = false;
- foreach(self::$special_fields as $field => $desc) {
+ foreach(array_keys(self::$special_fields) as $field) {
if(!$_data[$field]) continue;
// Links
@@ -453,8 +449,8 @@
$app = $field;
$id = $_data[$field];
}
- if ($app && $app_id) {
- $link_id = Link::link('tracker',$id,$app,$app_id);
+ if ($app && $app_id) { // todo nathan: $app_id is undefined
+ Link::link('tracker',$id,$app,$app_id);
}
}
return true;
@@ -550,21 +546,21 @@
// end of iface_export_plugin
// Extra conversion functions - must be static
- public static function addr_id( $n_family,$n_given=null,$org_name=null ) {
+ public static function addr_id( $_n_family,$n_given=null,$org_name=null ) {
// find in Addressbook, at least n_family AND (n_given OR org_name) have to match
- static $contacts;
+ static $contacts=null;
+ if (!isset($contacts))
+ {
+ $contacts = new Api\Contacts();
+ }
if (is_null($n_given) && is_null($org_name))
{
// Maybe all in one
- list($n_family, $n_given, $org_name) = explode(',', $n_family);
- }
- $n_family = trim($n_family);
+ list($_n_family, $n_given, $org_name) = explode(',', $_n_family);
+ }
+ $n_family = trim($_n_family);
if(!is_null($n_given)) $n_given = trim($n_given);
- if (!is_object($contacts))
- {
- $contacts =& CreateObject('phpgwapi.contacts');
- }
if (!is_null($org_name)) // org_name given?
{
$org_name = trim($org_name);
@@ -589,4 +585,3 @@
return False;
}
}
-?>
Modified: trunk/tracker/inc/class.tracker_mailhandler.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_mailhandler.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_mailhandler.inc.php (original)
+++ trunk/tracker/inc/class.tracker_mailhandler.inc.php Wed May 11 11:51:00 2016
@@ -1,6 +1,6 @@
<?php
/**
- * eGroupWare Tracker - Handle incoming mails
+ * EGroupware Tracker - Handle incoming mails
*
* This class handles incoming mails in the async services.
* It is an addition for the eGW Tracker app by Ralf Becker
@@ -159,6 +159,7 @@
}
catch(Exception $e)
{
+ unset($e); // not used
if ($reference->hostspec != $profile->hostspec) $diff['acc_imap_host']=array('reference'=>$reference->hostspec,'profile'=>$profile->hostspec);
if ($reference->port != $profile->port) $diff['acc_imap_port']=array('reference'=>$reference->port,'profile'=>$profile->port);
if ($reference->username != $profile->username) $diff['acc_imap_username']=array('reference'=>$reference->username,'profile'=>$profile->username);
@@ -377,7 +378,6 @@
// load lang stuff for mailheaderInfoSection creation
Api\Translation::add_app('mail');
// retrieve list
- if (self::LOG_LEVEL>0 && $tretval===false) error_log(__METHOD__.__LINE__.'#'.array2string($tretval).$mailobjecterrorMessage);
if (self::LOG_LEVEL>1) error_log(__METHOD__.__LINE__." Processing mailbox {$_folderName} with ServerID:".$mailobject->icServer->ImapServerId." for queue $queue\n".array2string($mailobject->icServer));
$_filter=array('status'=>array('UNSEEN','UNDELETED'));
if (!empty($this->mailhandling[$queue]['address']))
@@ -385,12 +385,12 @@
$_filter['type']='TO';
$_filter['string']=trim($this->mailhandling[$queue]['address']);
}
- $_sortResult = $mailobject->getSortedList($_folderName, $_sort=0, $_reverse=1, $_filter,$byUid=true,false);
+ $_sortResult = $mailobject->getSortedList($_folderName, $_sort=0, 1, $_filter, true, false);
$sortResult = $_sortResult['match']->ids;
if (self::LOG_LEVEL>1 && $sortResult) error_log(__METHOD__.__LINE__.'#'.array2string($sortResult));
$deletedCounter = 0;
$mailobject->reopen($_folderName);
- foreach ((array)$sortResult as $i => $uid)
+ foreach ((array)$sortResult as $uid)
{
if (empty($uid)) continue;
if (self::LOG_LEVEL>1) error_log(__METHOD__.__LINE__.'# fetching Data for:'.array2string(array('uid'=>$uid,'folder'=>$_folderName)).' Mode:'.$this->htmledit.' SaveAsOption:'.$GLOBALS['egw_info']['user']['preferences']['mail']['saveAsOptions']);
@@ -557,7 +557,7 @@
$oMInx = 0;
$alienSender = false;
- foreach ($mailCntArray as $key => $val)
+ foreach (array_keys($mailCntArray) as $key)
{
if (preg_match ("/^From:.*@gmail.*/", $mailCntArray[$key]))
{
@@ -683,7 +683,7 @@
if (empty($newBody)) $newBody = htmlentities($body,ENT_QUOTES);
$body = $newBody;
}
- $body = preg_replace($nonDisplayAbleCharacters,'',$body);
+ $body_out = preg_replace($nonDisplayAbleCharacters,'',$body);
// handle Attachments
$contentParts = count($structure->parts);
@@ -737,7 +737,10 @@
}
}
$att[$k] = $rv['struct'];
- if (!empty($rv['attachments'])) for ($a=0; $a<sizeof($rv['attachments']);$a++) $additionalAttachments[] = $rv['attachments'][$a];
+ if (!empty($rv['attachments'])) for ($a=0; $a<sizeof($rv['attachments']);$a++)
+ {
+ $additionalAttachments[] = $rv['attachments'][$a];
+ }
if (empty($attachments[$num]['attachment']) && empty($rv['attachments']))
{
unset($attachments[$num]);
@@ -793,15 +796,12 @@
}
}
//if (!empty($attachments)) error_log(__METHOD__." Attachments with this mail:".print_r($attachments,true));
- if (!empty($additionalAttachments))
- {
- //error_log(__METHOD__." Attachments retrieved with attachments:".print_r($additionalAttachments,true));
- for ($a=0; $a<sizeof($additionalAttachments);$a++) $attachments[] = $additionalAttachments[$a];
- }
- return array('body' => Api\Translation::convertHTMLToText(nl2br(Api\Html::purify($body))),
- 'struct' => $struct,
- 'attachments' => $attachments
- );
+ return array(
+ 'body' => Api\Translation::convertHTMLToText(nl2br(Api\Html::purify($body_out))),
+ 'struct' => $struct,
+ 'attachments' => !empty($additionalAttachments) ?
+ array_merge($attachments, $additionalAttachments) : $attachments,
+ );
}
/**
@@ -875,7 +875,6 @@
break;
case 'process' : // Process normally...
return false; // ...so act as if it's no automail
- break;
default : // default: 'ignore'
break;
}
@@ -937,8 +936,8 @@
$returnVal = $this->forward_message2($mailobject, $uid, $mailcontent['subject'], lang("automatic mails (bounces) are configured to be forwarded"), $queue);
if ($returnVal)
{
- $rv = $mailobject->flagMessages('seen', $uid, $_folderName);
- $rv = $mailobject->flagMessages('forwarded', $uid, $_folderName);
+ $mailobject->flagMessages('seen', $uid, $_folderName);
+ $mailobject->flagMessages('forwarded', $uid, $_folderName);
}
default : // default: 'ignore'
break;
@@ -962,13 +961,12 @@
$returnVal = $this->forward_message2($mailobject, $uid, $mailcontent['subject'], lang("automatic mails (replies) are configured to be forwarded"), $queue);
if ($returnVal)
{
- $rv = $mailobject->flagMessages('seen', $uid, $_folderName);
- $rv = $mailobject->flagMessages('forwarded', $uid, $_folderName);
+ $mailobject->flagMessages('seen', $uid, $_folderName);
+ $mailobject->flagMessages('forwarded', $uid, $_folderName);
}
break;
case 'process' : // Process normally...
return false; // ...so act as if it's no automail
- break;
default : // default: 'ignore'
break;
}
@@ -1097,16 +1095,13 @@
{
case 'ignore' : // Do nothing
return false;
- break;
case 'delete' : // Delete, whatever the overall delete setting is
@imap_delete($this->mbox, $mid);
return false; // Prevent from a second delete attempt
- break;
case 'forward' : // Return the status of the forward attempt
$returnVal = self::forward_message($mid, $msgHeader, $queue);
if ($returnVal) $status = $this->flagMessageAsSeen($mid, $msgHeader);
return $returnVal;
- break;
case 'default' : // Save as default user; handled below
default : // Duh ??
break;
@@ -1291,9 +1286,9 @@
function process_message2 ($mailobject, $uid, $_folderName, $queue)
{
$senderIdentified = true;
- $sR = $mailobject->getHeaders($_folderName, $_startMessage=1, $_numberOfMessages=1, $_sort='INTERNALDATE', $_reverse=true, $_filter=array(),$_thisUIDOnly=$uid, $_cacheResult=false);
+ $sR = $mailobject->getHeaders($_folderName, $_startMessage=1, 1, 'INTERNALDATE', true, array(), $uid, false);
$s = $sR['header'][$uid];
- $subject = $mailobject->decode_subject($s['subject']);// we use the needed headers for determining beforehand, if we have a new ticket, or a comment
+ $subject_in = $mailobject->decode_subject($s['subject']);// we use the needed headers for determining beforehand, if we have a new ticket, or a comment
// FLAGS - control in case filter wont work
$flags = $s;//implicit with retrieved information on getHeaders
if ($flags['deleted'] || $flags['seen'])
@@ -1307,13 +1302,13 @@
($flags['answered'] && $flags['seen']) || // is answered and seen
$flags['draft']) // is Draft
{
- if (self::LOG_LEVEL>1) error_log(__METHOD__.__LINE__.':'."UID:$uid in Folder $_folderName with".' Subject:'.$subject.
+ if (self::LOG_LEVEL>1) error_log(__METHOD__.__LINE__.':'."UID:$uid in Folder $_folderName with".' Subject:'.$subject_in.
"\n Date:".$s['date'].
"\n Flags:".print_r($flags,true).
"\n Stopped processing Mail ($uid). Not recent, new, or already answered, or draft");
return false;
}
- $subject = Mail::adaptSubjectForImport($subject);
+ $subject = Mail::adaptSubjectForImport($subject_in);
$tId = $this->get_ticketId($subject);
if ($tId)
{
@@ -1399,20 +1394,17 @@
{
case 'ignore' : // Do nothing
return false;
- break;
case 'delete' : // Delete, whatever the overall delete setting is
$mailobject->deleteMessages($uid, $_folderName, 'move_to_trash');
return false; // Prevent from a second delete attempt
- break;
case 'forward' : // Return the status of the forward attempt
$returnVal = $this->forward_message2($mailobject, $uid, $mailcontent['subject'], $this->data['msg'], $queue);
if ($returnVal)
{
- $rv = $mailobject->flagMessages('seen', $uid, $_folderName);
- $rv = $mailobject->flagMessages('forwarded', $uid, $_folderName);
+ $mailobject->flagMessages('seen', $uid, $_folderName);
+ $mailobject->flagMessages('forwarded', $uid, $_folderName);
}
return $returnVal;
- break;
case 'default' : // Save as default user; handled below
default : // Duh ??
break;
@@ -1560,6 +1552,7 @@
return false;
}
//preg_match_all("/[a-zA-Z0-9_\-\.]+?@([a-zA-Z0-9_\-]+?\.)+?[a-zA-Z]{2,}/", $addr, $address);
+ $address = null;
preg_match_all("/([A-Za-z0-9][A-Za-z0-9._-]*)?[A-Za-z0-9]@([A-Za-z0-9ÃÃÃäöüÃ](|[A-Za-z0-9ÃÃÃäöüÃ_-]*[A-Za-z0-9ÃÃÃäöüÃ])\.)+[A-Za-z]{2,6}/", $addr, $address);
return ($address[0][0]);
}
@@ -1567,7 +1560,7 @@
/**
* Retrieve the user ID based on the mail address that was extracted from the mailheaders
*
- * @param string $mail_addr, the mail address.
+ * @param string $mail_addr ='' the mail address.
*/
function search_user($mail_addr='')
{
@@ -1648,7 +1641,7 @@
* Check if exist and if not start or stop an async job to check incoming mails
*
* @param int $queue ID of the queue to check email for
- * @param int $interval=1 >0=start, 0=stop
+ * @param int $interval =1 >0=start, 0=stop
*/
static function set_async_job($queue=0, $interval=0)
{
Modified: trunk/tracker/inc/class.tracker_so.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_so.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_so.inc.php (original)
+++ trunk/tracker/inc/class.tracker_so.inc.php Wed May 11 11:51:00 2016
@@ -5,7 +5,7 @@
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package tracker
- * @copyright (c) 2006-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
+ * @copyright (c) 2006-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -134,7 +134,7 @@
* Reimplemented to save the reply too
*
* @param array $keys if given $keys are copied to data before saveing => allows a save as
- * @param string|array $extra_where=null extra where clause, eg. to check an etag, returns true if no affected rows!
+ * @param string|array $extra_where =null extra where clause, eg. to check an etag, returns true if no affected rows!
* @return int|boolean 0 on success, or errno != 0 on error, or true if $extra_where is given and no rows affected
*/
function save($keys=null,$extra_where=null)
@@ -143,7 +143,7 @@
{
$this->data_merge($keys);
}
- if (($ret = parent::save()) == 0)
+ if (($ret = parent::save(null, $extra_where)) == 0)
{
$this->data2db();
if ($this->data['reply_message'])
@@ -189,22 +189,24 @@
* Reimplemented to join with the votes table and respect the private attribute
*
* @param array|string $criteria array of key and data cols, OR a SQL query (content for WHERE), fully quoted (!)
- * @param boolean|string|array $only_keys=true True returns only keys, False returns all cols. or
+ * @param boolean|string|array $only_keys =true True returns only keys, False returns all cols. or
* comma seperated list or array of columns to return
- * @param string $order_by='' fieldnames + {ASC|DESC} separated by colons ',', can also contain a GROUP BY (if it contains ORDER BY)
- * @param string|array $extra_cols='' string or array of strings to be added to the SELECT, eg. "count(*) as num"
- * @param string $wildcard='' appended befor and after each criteria
- * @param boolean $empty=false False=empty criteria are ignored in query, True=empty have to be empty in row
- * @param string $op='AND' defaults to 'AND', can be set to 'OR' too, then criteria's are OR'ed together
- * @param mixed $start=false if != false, return only maxmatch rows begining with start, or array($start,$num), or 'UNION' for a part of a union query
- * @param array $filter=null if set (!=null) col-data pairs, to be and-ed (!) into the query without wildcards
- * @param string $join_in='' sql to do a join, added as is after the table-name, eg. "JOIN table2 ON x=y" or
+ * @param string $order_by ='' fieldnames + {ASC|DESC} separated by colons ',', can also contain a GROUP BY (if it contains ORDER BY)
+ * @param string|array $extra_cols ='' string or array of strings to be added to the SELECT, eg. "count(*) as num"
+ * @param string $wildcard ='' appended befor and after each criteria
+ * @param boolean $empty =false False=empty criteria are ignored in query, True=empty have to be empty in row
+ * @param string $op ='AND' defaults to 'AND', can be set to 'OR' too, then criteria's are OR'ed together
+ * @param mixed $start =false if != false, return only maxmatch rows begining with start, or array($start,$num), or 'UNION' for a part of a union query
+ * @param array $filter =null if set (!=null) col-data pairs, to be and-ed (!) into the query without wildcards
+ * @param string $join_in ='' sql to do a join, added as is after the table-name, eg. "JOIN table2 ON x=y" or
* "LEFT JOIN table2 ON (x=y AND z=o)", Note: there's no quoting done on $join, you are responsible for it!!!
- * @param boolean $need_full_no_count=false If true an unlimited query is run to determine the total number of rows, default false
+ * @param boolean $need_full_no_count =false If true an unlimited query is run to determine the total number of rows, default false
* @return array|NULL array of matching rows (the row is an array of the cols) or NULL
*/
function &search($criteria,$only_keys=True,$order_by='',$extra_cols='',$wildcard='',$empty=False,$op='AND',$start=false,$filter=null,$join_in=true,$need_full_no_count=false)
{
+ unset($need_full_no_count); // not used
+
if (!$this->trackers)
{
return array(); // no access to any tracker queue, but tracker app
@@ -212,7 +214,7 @@
$join = $join_in && $join_in != 1 ? $join_in : '';
// private ACL: private items are only visible for create, assiged or tracker admins
- foreach ((array)$filter['tr_tracker'] as $k => $tr)
+ foreach ((array)$filter['tr_tracker'] as $tr)
{
$need_private_acl = $this->user && method_exists($this,'is_admin') && !$this->is_admin($tr);
}
@@ -393,7 +395,7 @@
// Add in custom filters that = closed
$custom_closed = array();
$stati = ExecMethod('tracker.tracker_bo.get_tracker_stati', $tracker);
- foreach($stati as $stati_id => $stati_label)
+ foreach(array_keys($stati) as $stati_id)
{
$data = Api\Categories::id2name($stati_id, 'data');
if($data['closed']) $custom_closed[] = $stati_id;
@@ -537,8 +539,8 @@
* Filter by a certain escalation (either done or not done)
*
* @param int $esc_id
- * @param string &$join join with escalation table is added there
- * @param boolean/timetamp $escalated=true default true=return only escalated tickets, false = return not escalated ticktes,
+ * @param string& $join join with escalation table is added there
+ * @param boolean|timetamp $escalated =true default true=return only escalated tickets, false = return not escalated ticktes,
* timestamp = return tickets escalated before the time
* @return string filter
*/
@@ -556,8 +558,8 @@
/**
* Delete tracker items with the given keys
*
- * @param array|int $keys=null if given array with col => value pairs to characterise the rows to delete, or integer autoinc id
- * @param boolean $only_return_ids=false return $ids of delete call to db object, but not run it (can be used by extending classes!)
+ * @param array|int $keys =null if given array with col => value pairs to characterise the rows to delete, or integer autoinc id
+ * @param boolean $only_return_ids =false return $ids of delete call to db object, but not run it (can be used by extending classes!)
* @return int|array affected rows, should be 1 if ok, 0 if an error or array with id's if $only_return_ids
*/
function delete($keys=null,$only_return_ids=false)
@@ -590,7 +592,7 @@
*
* @param array $args hook arguments
* @param int $args['account_id'] account to delete
- * @param int $args['new_owner']=0 new owner
+ * @param int $args['new_owner'] =0 new owner
*/
function change_delete_owner(array $args) // new_owner=0 means delete
{
@@ -621,8 +623,14 @@
unset($toUpdate[$row['tr_id']]);
}
}
- foreach ($toDelete as $trid => $who) $this->db->delete(self::ASSIGNEE_TABLE,array('tr_id'=>$trid,'tr_assigned'=>$who),__LINE__,__FILE__,'tracker');
- foreach ($toUpdate as $trid => $who) $this->db->update(self::ASSIGNEE_TABLE,array('tr_assigned'=>$args['new_owner']),array('tr_id'=>$trid,'tr_assigned'=>$args['account_id']),__LINE__,__FILE__,'tracker');
+ foreach ($toDelete as $trid => $who)
+ {
+ $this->db->delete(self::ASSIGNEE_TABLE,array('tr_id'=>$trid,'tr_assigned'=>$who),__LINE__,__FILE__,'tracker');
+ }
+ foreach ($toUpdate as $trid => $who)
+ {
+ $this->db->update(self::ASSIGNEE_TABLE,array('tr_assigned'=>$args['new_owner']),array('tr_id'=>$trid,'tr_assigned'=>$args['account_id']),__LINE__,__FILE__,'tracker');
+ }
}
}
@@ -631,7 +639,7 @@
*
* @param int $tr_id tracker-id
* @param int $user account_id
- * @param string $ip=null IP, if it should be checked too
+ * @param string $ip =null IP, if it should be checked too
*/
function check_vote($tr_id,$user,$ip=null)
{
@@ -692,7 +700,7 @@
/**
* Delete a bounty
*
- * @param int $bounty_id
+ * @param int $id
* @return int number of deleted rows: 1 = success, 0 = failure
*/
function delete_bounty($id)
Modified: trunk/tracker/inc/class.tracker_tracking.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_tracking.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_tracking.inc.php (original)
+++ trunk/tracker/inc/class.tracker_tracking.inc.php Wed May 11 11:51:00 2016
@@ -5,7 +5,7 @@
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package tracker
- * @copyright (c) 2006-12 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
+ * @copyright (c) 2006-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -81,11 +81,11 @@
* Overridden from parent to hide restricted comments
*
* @param array $data current entry
- * @param array $old=null old/last state of the entry or null for a new entry
- * @param int $user=null user who made the changes, default to current user
- * @param boolean $deleted=null can be set to true to let the tracking know the item got deleted or undeleted
- * @param array $changed_fields=null changed fields from ealier call to $this->changed_fields($data,$old), to not compute it again
- * @param boolean $skip_notification=false do NOT send any notification
+ * @param array $old =null old/last state of the entry or null for a new entry
+ * @param int $user =null user who made the changes, default to current user
+ * @param boolean $deleted =null can be set to true to let the tracking know the item got deleted or undeleted
+ * @param array $changed_fields =null changed fields from ealier call to $this->changed_fields($data,$old), to not compute it again
+ * @param boolean $skip_notification =false do NOT send any notification
* @return int|boolean false on error, integer number of changes logged or true for new entries ($old == null)
*/
public function track(array $data,array $old=null,$user=null,$deleted=null,array $changed_fields=null,$skip_notification=false)
@@ -95,7 +95,7 @@
$changes = true;
// Hide restricted comments from reply count
- foreach((array)$data['replies'] as $key => $reply)
+ foreach((array)$data['replies'] as $reply)
{
if($reply['reply_visible'] != 0)
{
@@ -129,7 +129,7 @@
* @param array $autoreply values for:
* 'reply_text' => Texline to add to the mail message
* 'reply_to' => UserID or email address
- * @param array $old=null old/last state of the entry or null for a new entry
+ * @param array $old =null old/last state of the entry or null for a new entry
*/
function autoreply($data,$autoreply,$old=null)
{
@@ -167,13 +167,12 @@
*
* @internal use only track($data,$old,$user)
* @param array $data current entry
- * @param array $old=null old/last state of the entry or null for a new entry
- * @param boolean $deleted=null can be set to true to let the tracking know the item got deleted or undelted
+ * @param array $old =null old/last state of the entry or null for a new entry
+ * @param boolean $deleted =null can be set to true to let the tracking know the item got deleted or undelted
* @return boolean true on success, false on error (error messages are in $this->errors)
*/
public function do_notifications($data,$old,$deleted, $changes)
{
- $success = True;
$skip = $this->get_config('skip_notify',$data,$old);
$email_notified = $skip ? $skip : array();
@@ -191,7 +190,7 @@
$data['tr_private'] = true;
// Send notification - $email_notified will be skipped
- $success = $success && parent::do_notifications($data, $old, $deleted, $email_notified);
+ $success = parent::do_notifications($data, $old, $deleted, $email_notified);
//error_log(__METHOD__.__LINE__." email notified with restricted comments:".array2string($email_notified));
@@ -219,26 +218,28 @@
$this->creator_field = $creator_field;
}
$data['tr_private'] = $private;
- $already_notified = $email_notified;
- $success = $success && parent::do_notifications($data, $old, $deleted, $email_notified);
+ //$already_notified = $email_notified;
+ $ret = $success && parent::do_notifications($data, $old, $deleted, $email_notified);
//error_log(__METHOD__.__LINE__." email notified, restricted comments removed:".array2string(array_diff($email_notified,$already_notified)));
- return $success;
+ return $ret;
}
/**
* Get a notification-config value
*
- * @param string $what
+ * @param string $name
* - 'copy' array of email addresses notifications should be copied too, can depend on $data
* - 'lang' string lang code for copy mail
* - 'sender' string send email address
* @param array $data current entry
- * @param array $old=null old/last state of the entry or null for a new entry
+ * @param array $old =null old/last state of the entry or null for a new entry
* @return mixed
*/
function get_config($name,$data,$old=null)
{
+ unset($old); // not used
+
$tracker = $data['tr_tracker'];
$config = $this->tracker->notification[$tracker][$name] ? $this->tracker->notification[$tracker][$name] : $this->tracker->notification[0][$name];
@@ -272,6 +273,8 @@
*/
function get_subject($data,$old)
{
+ unset($old); // not used
+
return $data['prefix'] . $this->tracker->trackers[$data['tr_tracker']].' #'.$data['tr_id'].': '.$data['tr_summary'];
}
@@ -291,10 +294,10 @@
{
$notification = $this->tracker->notification[$data['tr_tracker']];
$merge = new tracker_merge();
-
+
// Set comments according to data, avoids re-reading from DB
if (isset($data['replies'])) $merge->set_comments($data['tr_id'], $data['replies']);
-
+
if(trim(strip_tags($notification['message'])) == '' || !$notification['use_custom'])
{
$notification['message'] = $this->tracker->notification[0]['message'];
@@ -312,6 +315,7 @@
}
else
{
+ $error = null;
$notification['signature'] = $merge->merge_string($notification['signature'], array($data['tr_id']), $error, 'text/html');
}
@@ -337,9 +341,13 @@
/**
* Override parent to return nothing, it's taken care of in get_body()
+ *
* @see get_body()
*/
- protected function get_signature($data,$old,$receiver) {
+ protected function get_signature($data,$old,$receiver)
+ {
+ unset($data,$old,$receiver); // not used
+
return false;
}
@@ -383,7 +391,7 @@
*/
function get_details($data)
{
- static $cats,$versions,$statis,$priorities,$resolutions;
+ static $cats=null,$versions=null,$statis=null,$priorities=null,$resolutions=null;
if (!$cats)
{
$cats = $this->tracker->get_tracker_labels('cat',$data['tr_tracker']);
@@ -486,7 +494,7 @@
* - tr_completion is postfixed with a percent
*
* @param array $data
- * @param array $old=null
+ * @param array $old =null
* @return array of keys with different values in $data and $old
*/
public function changed_fields(array $data,array $old=null)
Modified: trunk/tracker/inc/class.tracker_widget.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_widget.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_widget.inc.php (original)
+++ trunk/tracker/inc/class.tracker_widget.inc.php Wed May 11 11:51:00 2016
@@ -138,172 +138,29 @@
return $entry;
}
- /**
- * pre-processing of the extension
- *
- * This function is called before the extension gets rendered
- *
- * @param string $name form-name of the control
- * @param mixed &$value value / existing content, can be modified
- * @param array &$cell array with the widget, can be modified for ui-independent widgets
- * @param array &$readonlys names of widgets as key, to be made readonly
- * @param mixed &$extension_data data the extension can store persisten between pre- and post-process
- * @param etemplate &$tmpl reference to the template we belong too
- * @return boolean true if extra label is allowed, false otherwise
- */
- function pre_process($name,&$value,&$cell,&$readonlys,&$extension_data,&$tmpl)
- {
- switch($cell['type'])
- {
- case 'tracker-fields':
- Api\Translation::add_app('addressbook');
- $cell['sel_options'] = $this->_get_fields();
- $cell['type'] = 'select';
- $cell['no_lang'] = 1;
- break;
-
- case 'tracker-value':
- default:
- if (substr($value,0,8) == 'tracker:') $value = substr($value,8); // link-entry syntax
- if (!$value || !$cell['size'] || (!is_array($this->data) || $this->data['tr_id'] != $value) &&
- !($this->data = $this->tracker->read($value)))
- {
- $cell = $tmpl->empty_cell();
- $value = '';
- break;
- }
- list($type,$compare,$alternatives,$contactfield,$regex,$replace) = explode(',',$cell['size'],6);
- $value = $this->data[$type];
- $cell['size'] = '';
- $cell['no_lang'] = 1;
- $cell['readonly'] = true;
-
- switch($type)
- {
- case '': // Sum of the alternatives, field-name can be prefixed with a minus to substract it's value
- $cell['type'] = 'float';
- $cell['size'] = ',,,%0.2lf';
- $value = 0.0;
- foreach(explode(':',$alternatives) as $name)
- {
- if ($name[0] === '-')
- {
- $val = '-'.$this->data[substr($name, 1)];
- }
- else
- {
- $val = $this->data[$name];
- }
- $value += str_replace(array(' ',','), array('','.'), $val);
- }
- $alternatives = '';
- break;
-
- case 'tr_created':
- case 'tr_startdate':
- case 'tr_duedate':
- case 'tr_modified':
- case 'tr_closed':
- $cell['type'] = 'date-time';
- break;
-
- case 'tr_assigned':
- case 'tr_creator':
- case 'tr_group':
- case 'tr_modifier':
- $cell['type'] = 'select-owner';
- break;
-
- case 'tr_tracker':
- case 'cat_id':
- case 'tr_version':
- case 'tr_status':
- case 'tr_resolution':
- $cell['type'] = 'select-cat';
- break;
-
- case 'tr_completion':
- $cell['type'] = 'select-percent';
- break;
-
- case 'tr_private':
- $cell['type'] = 'checkbox';
- break;
-
- default:
- if ($type{0} == '#') // custom field --> use field-type itself
- {
- $field = $this->tracker->customfields[substr($type,1)];
- if (($cell['type'] = $field['type']))
- {
- if ($field['type'] == 'select')
- {
- $cell['sel_options'] = $field['values'];
- }
- break;
- }
- }
- $cell['type'] = 'label';
- break;
- }
- if ($alternatives && empty($value)) // use first non-empty alternative if value is empty
- {
- foreach(explode(':',$alternatives) as $name)
- {
- if (($value = $this->data[$name])) break;
- }
- }
- if (!empty($compare)) // compare with value and print a X is equal and nothing otherwise
- {
- $value = $value == $compare ? 'X' : '';
- $cell['type'] = 'label';
- }
- // modify the value with a regular expression
- if (!empty($regex))
- {
- $parts = explode('/',$regex);
- if (strchr(array_pop($parts),'e') === false) // dont allow e modifier, which would execute arbitrary php code
- {
- $value = preg_replace($regex,$replace,$value);
- }
- $cell['type'] = 'label';
- $cell['size'] = '';
- }
- // use a contact widget to render the value, eg. to fetch contact data from an linked tracker
- if (!empty($contactfield))
- {
- $cell['type'] = 'contact-value';
- $cell['size'] = $contactfield;
- }
- break;
- }
- $cell['id'] = ($cell['id'] ? $cell['id'] : $cell['name'])."[$type]";
-
- return True; // extra label ok
- }
-
function _get_fields()
{
- static $fields;
+ static $fields=null;
- if (!is_null($fields)) return $fields;
+ if (!isset($fields))
+ {
+ $fields = array(
+ '' => lang('Sum'),
+ );
- $fields = array(
- '' => lang('Sum'),
- );
+ static $remove = array(
+ 'link_to','canned_response','reply_message','add','vote',
+ 'no_notifications','bounty','num_replies','customfields',
+ );
+ $fields += array_diff_key($this->tracker->field2label, array_flip($remove));
+ $fileds['tr_id'] = 'ID';
+ $fileds['tr_modified'] = 'Modified';
+ $fileds['tr_modifier'] = 'Modifier';
- static $remove = array(
- 'link_to','canned_response','reply_message','add','vote',
- 'no_notifications','bounty','num_replies','customfields',
- );
- $fields += array_diff_key($this->tracker->field2label, array_flip($remove));
- $fileds['tr_id'] = 'ID';
- $fileds['tr_modified'] = 'Modified';
- $fileds['tr_modifier'] = 'Modifier';
-
- foreach(Api\Storage\Customfields::get('tracker') as $name => $data)
- {
- $fields['#'.$name] = lang($data['label']);
+ foreach(Api\Storage\Customfields::get('tracker') as $name => $data)
+ {
+ $fields['#'.$name] = lang($data['label']);
+ }
}
return $fields;
}
Modified: trunk/tracker/inc/class.tracker_wizard_export_csv.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_wizard_export_csv.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_wizard_export_csv.inc.php (original)
+++ trunk/tracker/inc/class.tracker_wizard_export_csv.inc.php Wed May 11 11:51:00 2016
@@ -1,6 +1,6 @@
<?php
/**
- * eGroupWare - Wizard for Tracker CSV export
+ * EGroupware - Wizard for Tracker CSV export
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package tracker
@@ -14,11 +14,11 @@
class tracker_wizard_export_csv extends importexport_wizard_basic_export_csv
{
- public function __construct() {
+ public function __construct()
+ {
parent::__construct();
// Field mapping
- $bo = new tracker_bo();
$this->export_fields = array(
'tr_id' => 'Tracker ID',
'tr_summary' => 'Summary',
@@ -49,7 +49,8 @@
// Custom fields
$custom = Api\Storage\Customfields::get('tracker', true);
- foreach($custom as $name => $data) {
+ foreach($custom as $name => $data)
+ {
$this->export_fields['#'.$name] = $data['label'];
}
}
Modified: trunk/tracker/inc/class.tracker_wizard_import_csv.inc.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/inc/class.tracker_wizard_import_csv.inc.php?rev=56118&r1=56117&r2=56118&view=diff
==============================================================================
--- trunk/tracker/inc/class.tracker_wizard_import_csv.inc.php (original)
+++ trunk/tracker/inc/class.tracker_wizard_import_csv.inc.php Wed May 11 11:51:00 2016
@@ -1,6 +1,6 @@
<?php
/**
- * eGroupWare - Wizard for Tracker CSV import
+ * EGroupware - Wizard for Tracker CSV import
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package tracker
@@ -14,7 +14,6 @@
class tracker_wizard_import_csv extends importexport_wizard_basic_import_csv
{
-
/**
* constructor
*/
@@ -137,7 +136,7 @@
'translate_resolution' => $options + $add_queue + array($set_to => $ui->get_tracker_labels('resolution', null)),
'translate_cat_id' => $options + $add_queue + array($set_to => $ui->get_tracker_labels('cat', null)),
);
- foreach($sel_options['translate_tracker'][$set_to] as $id => $name) {
+ foreach(array_keys($sel_options['translate_tracker'][$set_to]) as $id) {
$sel_options['translate_version'][$set_to] += $ui->get_tracker_labels('version', $id);
$sel_options['translate_cat_id'][$set_to] += $ui->get_tracker_labels('cat', $id);
$sel_options['translate_status'][$set_to] += $ui->get_tracker_stati($id);
@@ -156,10 +155,10 @@
function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv)
{
$result = parent::wizard_step50($content, $sel_options, $readonlys, $preserv);
-
+
return $result;
}
-
+
function wizard_step60(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log(__METHOD__.'->$content '.print_r($content,true));
@@ -205,6 +204,6 @@
unset ($preserv['button']);
return 'tracker.importexport_wizard_chooseowner';
}
-
+
}
}
Added: trunk/tracker/templates/default/admin.types.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/admin.types.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/admin.types.xet.bak (added)
+++ trunk/tracker/templates/default/admin.types.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.admin.types" template="" lang="" group="0" version="1.9.002">
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/admin.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/admin.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/admin.xet.bak (added)
+++ trunk/tracker/templates/default/admin.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,656 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.admin.cats" template="" lang="" group="0" version="1.9.003">
+ <grid width="100%" height="450" overflow="auto">
+ <columns>
+ <column width="100"/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="row" valign="top">
+ <description value="Categories"/>
+ <grid width="100%" height="140" overflow="auto" id="cats">
+ <columns>
+ <column/>
+ <column/>
+ <column width="110" disabled="!@@tracker"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description value="Autoassign to"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row>
+ <textbox blur="--> enter new name" id="${row}[name]" size="60" maxlength="150"/>
+ <menulist>
+ <menupopup id="${row}[autoassign]" no_lang="1" options="Noone"/>
+ </menulist>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this category" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this category','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ <row class="row" valign="top">
+ <description value="Versions"/>
+ <grid width="100%" height="100" overflow="auto" id="versions">
+ <columns>
+ <column/>
+ <column width="110" disabled="!@@tracker"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row class="row">
+ <textbox blur="--> enter new name" id="${row}[name]" size="80" maxlength="150"/>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this version" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this version','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ <row class="row" valign="top">
+ <description value="Status"/>
+ <grid width="100%" height="100" overflow="auto" id="statis">
+ <columns>
+ <column/>
+ <column/>
+ <column width="110" disabled="!@@tracker"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description align="center" value="Closed"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row class="row">
+ <textbox blur="--> enter new name" id="${row}[name]" size="80" maxlength="150"/>
+ <checkbox align="center" id="${row}[closed]"/>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this status" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this status','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ <row valign="top">
+ <description value="Resolution"/>
+ <grid width="100%" height="100" overflow="auto" id="resolutions">
+ <columns>
+ <column/>
+ <column/>
+ <column width="110" disabled="!@@tracker"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description align="center" value="Default"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row class="row">
+ <hbox>
+ <textbox blur="--> enter new name" id="${row}[name]" size="80" maxlength="150"/>
+ <description id="${row}[name]" readonly="true"/>
+ </hbox>
+ <radio align="center" id="isdefaultresolution" options="$row_cont[id]"/>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this status" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this status','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ <row class="row" valign="top">
+ <description value="Canned responses"/>
+ <grid width="100%" id="responses">
+ <columns>
+ <column/>
+ <column/>
+ <column width="110" disabled="!@@tracker"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description value="Canned response"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row class="row" valign="top">
+ <textbox blur="--> enter new name" id="${row}[name]" size="30"/>
+ <textbox multiline="true" id="${row}[description]"/>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this canned response" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this canned response','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ <row class="row" valign="top" disabled="!@allow_defaultproject">
+ <description value="Assign to project"/>
+ <grid width="100%" height="90" overflow="auto" id="projects">
+ <columns>
+ <column/>
+ <column/>
+ <column width="110" disabled="1"/>
+ <column width="45"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Name"/>
+ <description value="Project selection"/>
+ <description align="center" value="Deny global"/>
+ <description value="Actions"/>
+ </row>
+ <row class="row" valign="top">
+ <textbox blur="--> enter new name" id="${row}[name]" size="40" maxlength="40"/>
+ <projectmanager-select id="${row}[projectlist]" no_lang="1" options="--> choose a project from the drop-down list"/>
+ <checkbox align="center" id="${row}[denyglobal]" options="@@tracker"/>
+ <button align="center" statustext="Delete this entry" label="Delete" id="delete[$row_cont[id]]" onclick="et2_dialog.confirm(widget,'Delete this entry','Delete')" image="delete"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.priorities" template="" lang="" group="0" version="1.5.001">
+ <grid width="100%" height="450" id="priorities">
+ <columns>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row height="20">
+ <description for="cat_id" value="Category"/>
+ <menulist span="all">
+ <menupopup statustext="Changes made below will be lost, if not applied before!" id="cat_id" onchange="1" options="All"/>
+ </menulist>
+ </row>
+ <row class="th" height="20">
+ <description value="Value" class="tracker_leftPad5"/>
+ <description value="Label"/>
+ <description align="right" value="Priorities with empty label are not available to the user"/>
+ </row>
+ <row class="row">
+ <description id="${row}[value]" readonly="true" class="tracker_leftPad5"/>
+ <textbox id="${row}[label]" size="80"/>
+ <description id="${row}[label]"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.staff" template="" lang="" group="0" version="1.5.001">
+ <grid width="100%" height="450" overflow="auto">
+ <columns>
+ <column width="100"/>
+ <column/>
+ <column/>
+ <column width="30%"/>
+ </columns>
+ <rows>
+ <row class="row">
+ <description value="Staff"/>
+ <description for="users" value="Users"/>
+ <description for="technicians" value="Technicians"/>
+ <description value="Tracker admins"/>
+ </row>
+ <row class="row" valign="top">
+ <description/>
+ <listbox type="select-account" statustext="You can enable/disable the queue access restrictions in the configuration tab (for all queues)" id="users" rows="28" options="both"/>
+ <listbox type="select-account" id="technicians" rows="28" options="both"/>
+ <listbox type="select-account" id="admins" rows="28" options="both"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.config" template="" lang="" group="0" version="1.9.004">
+ <grid width="100%" height="450" overflow="auto">
+ <columns>
+ <column width="100"/>
+ <column/>
+ <column/>
+ <column width="40%"/>
+ </columns>
+ <rows>
+ <row class="th" disabled="@tracker">
+ <description value="Configuration for all trackers" span="all"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <description for="allow_assing_groups" value="Assigning groups"/>
+ <menulist>
+ <menupopup statustext="Allow to assign groups to tracker items" id="allow_assign_groups" no_lang="1"/>
+ </menulist>
+ <description for="allow_voting" value="Allow voting"/>
+ <menulist>
+ <menupopup statustext="Allow voting on tracker items, show and sort after the votes" id="allow_voting"/>
+ </menulist>
+ </row>
+ <row class="row" disabled="@tracker">
+ <description for="allow_bounties" value="Allow bounties"/>
+ <menulist>
+ <menupopup id="allow_bounties"/>
+ </menulist>
+ <description for="currency" value="Currency"/>
+ <textbox id="currency"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <description for="overdue_days" value="Overdue after"/>
+ <menulist>
+ <menupopup type="select-number" statustext="After how many days a not replied item should be marked overdue?" id="overdue_days" options="Never,1,30"/>
+ </menulist>
+ <description for="pending_close_days" value="Close pending"/>
+ <menulist>
+ <menupopup type="select-number" statustext="After how many days pending items should be closed automatic" id="pending_close_days" options="Never,1,30"/>
+ </menulist>
+ </row>
+ <row class="row" disabled="@tracker">
+ <description for="htmledit" value="Html editing"/>
+ <checkbox statustext="Permit html editing in overview and comments" id="htmledit"/>
+ <description for="enabled_queue_acl_access" value="Activate users queue access control"/>
+ <checkbox statustext="Activate users queue access control" label="only explicitly named users have read access (otherwise everyone)" id="enabled_queue_acl_access" onchange="app.tracker.acl_queue_access()"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <description value="Exclude links of the following apps on timesheet creation" span="2"/>
+ <listbox statustext="Exclude links of the following apps on timesheet creation" id="exclude_app_on_timesheetcreation" rows="5"/>
+ <description value="Note: timesheet itself is always excluded"/>
+ </row>
+ <row class="th" disabled="!@tracker">
+ <description value="Restrict tracker items to staff and:" span="all"/>
+ </row>
+ <row class="row" disabled="!@tracker">
+ <description for="restricted" statustext="Restict tracker items to the creators primary group and the staff only" value="Group"/>
+ <checkbox statustext="Restict tracker items to the creators primary group and the staff only" id="restrictions[group]"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="row" disabled="!@tracker">
+ <description for="restricted" statustext="Restict tracker items to the creators primary group and the staff only" value="Creator"/>
+ <checkbox statustext="Restict tracker items to the creator and the staff only" id="restrictions[creator]"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="th" disabled="@tracker">
+ <description value="Miscellaneous" span="all"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <checkbox statustext="tracker entry can only seen by creator and admins" id="create_new_as_private"/>
+ <description for="create_new_as_private" value="create new tracker entry's as default "private" for approval process" span="3"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <checkbox statustext="Staff "Users" will be allowed for assignment to tracker tickets" id="allow_assign_users"/>
+ <description for="allow_assign_users" value="allow to assign to a ticket not only "Tracker Admins" and "Technians", but also "Users" in the staff tab" span="3"/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <checkbox id="show_dates"/>
+ <description value="Show start date and due date"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="row" disabled="@tracker">
+ <checkbox statustext="Allow creation of infolog entries from tracker tickets" id="allow_infolog"/>
+ <description value="Allow creation of infolog entries from tracker tickets" span="3"/>
+ </row>
+ <row disabled="@tracker">
+ <checkbox id="allow_restricted_comments"/>
+ <description value="Allow creating of restricted comments which are only visible for admins, technicians and assigned users" span="all"/>
+ </row>
+ <row class="th">
+ <description value="E-Mail notifications" span="all"/>
+ </row>
+ <row class="row">
+ <description for="notification_sender" value="Sender address"/>
+ <textbox statustext="Sender address for all notifications, eg. [email protected]" id="notification[sender]" size="30"/>
+ <description for="notification_link" value="URL of the tracker"/>
+ <textbox statustext="URL to be included in the notification, eg. to the page with the SiteMgr module, default tracker inside eGW" id="notification[link]" size="30"/>
+ </row>
+ <row class="row">
+ <description value="Copy to"/>
+ <textbox statustext="E-Mail address to which a copy of all tracker-notifications should be send" id="notification[copy]" size="30"/>
+ <description for="notification_lang" value="Language" no_lang="1"/>
+ <menulist>
+ <menupopup statustext="Language for the copy" id="notification[lang]" no_lang="1"/>
+ </menulist>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.acl" template="" lang="" group="0" version="1.9.002">
+ <grid width="100%" height="450" overflow="auto">
+ <columns>
+ <column width="100"/>
+ <column/>
+ <column/>
+ <column width="40%"/>
+ </columns>
+ <rows>
+ <row class="th" disabled="@tracker">
+ <description value="ACL" span="all"/>
+ </row>
+ <row class="row" valign="top" disabled="@tracker">
+ <description value="Allow editing by"/>
+ <grid width="100%" height="425" overflow="auto" id="field_acl">
+ <columns>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Field"/>
+ <description align="center" value="Tracker admins"/>
+ <description align="center" value="Technicians"/>
+ <description align="center" value="Non-anonymous users"/>
+ <description align="center" value="Everybody"/>
+ <description align="center" value="Item creator"/>
+ <description value="Group"/>
+ <description align="center" value="Item assignee"/>
+ <description align="center" value="New items"/>
+ </row>
+ <row class="row">
+ <description id="${row}[label]" readonly="true"/>
+ <checkbox align="center" id="${row}[TRACKER_ADMIN]"/>
+ <checkbox align="center" id="${row}[TRACKER_TECHNICIAN]"/>
+ <checkbox align="center" id="${row}[TRACKER_USER]"/>
+ <checkbox align="center" id="${row}[TRACKER_EVERYBODY]"/>
+ <checkbox align="center" id="${row}[TRACKER_ITEM_CREATOR]"/>
+ <checkbox align="center" id="${row}[TRACKER_ITEM_GROUP]"/>
+ <checkbox align="center" id="${row}[TRACKER_ITEM_ASSIGNEE]"/>
+ <checkbox align="center" id="${row}[TRACKER_ITEM_NEW]"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.mail" template="" lang="" group="0" version="1.9.003">
+ <grid>
+ <columns>
+ <column width="200"/>
+ <column/>
+ <column width="200"/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="row">
+ <description value="Check mail interval"/>
+ <menulist>
+ <menupopup statustext="Interval in minutes for checking the incoming mails" id="mailhandling[interval]"/>
+ </menulist>
+ <description value="Read mail address"/>
+ <textbox statustext="Enter the mail address that will be read." id="mailhandling[address]" size="20"/>
+ </row>
+ <row class="row">
+ <description value="Incoming mail server"/>
+ <textbox statustext="Enter the IMAP server from which emails should be fetched" id="mailhandling[server]" size="40"/>
+ <description value="Server type"/>
+ <menulist>
+ <menupopup id="mailhandling[servertype]"/>
+ </menulist>
+ </row>
+ <row class="row">
+ <description value="Port number"/>
+ <textbox type="integer" id="mailhandling[serverport]"/>
+ <description value="Incoming mail folder"/>
+ <textbox id="mailhandling[folder]" size="20"/>
+ </row>
+ <row class="row">
+ <description value="Username"/>
+ <textbox id="mailhandling[username]" size="20"/>
+ <description value="Password"/>
+ <passwd id="mailhandling[password]" options="20"/>
+ </row>
+ <row class="th">
+ <description value="Incoming mail rules" span="all"/>
+ </row>
+ <row class="row">
+ <description value="Delete mails from server"/>
+ <checkbox id="mailhandling[delete_from_server]"/>
+ <description value="Tracker for new tickets"/>
+ <menulist>
+ <menupopup statustext="Select a default tracker for new tickets or 'Reject' to disallow ticket creation via mail." id="mailhandling[default_tracker]" options="Reject"/>
+ </menulist>
+ </row>
+ <row class="row">
+ <description/>
+ <description/>
+ <box span="2">
+ <grid>
+ <columns>
+ <column width="199"/>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <description value="Category for new tickets"/>
+ <menulist>
+ <menupopup class="tracker_cat_select" id="mailhandling[default_cat]" options="select one"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Version for new tickets"/>
+ <menulist>
+ <menupopup class="tracker_cat_select" id="mailhandling[default_version]" options="select one"/>
+ </menulist>
+ </row>
+ </rows>
+ </grid>
+ </box>
+ </row>
+ <row class="row">
+ <description value="Unrecognized mails"/>
+ <radio statustext="Ignore unrecognized mails. They will not be deleted from the server, even if 'Delete mails' above is tagged." label="Ignore" id="mailhandling[unrecognized_mails]" options="ignore"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="row">
+ <description/>
+ <radio statustext="Delete unrecognized mails from the server, even if 'Delete mails' above is not tagged." label="Delete" id="mailhandling[unrecognized_mails]" options="delete"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="row">
+ <description/>
+ <hbox>
+ <radio statustext="Forward unrecognized mails to the email address that has to be specified here." label="Forward to" id="mailhandling[unrecognized_mails]" options="forward"/>
+ <textbox statustext="Enter an email address here if unrecognized mails should be forwarded" id="mailhandling[forward_to]"/>
+ </hbox>
+ <description/>
+ <description/>
+ </row>
+ <row class="row">
+ <description/>
+ <hbox>
+ <radio statustext="Use a default user for mails that where not recognized" label="Store as" id="mailhandling[unrecognized_mails]" options="default"/>
+ <menulist>
+ <menupopup statustext="Select which username should be used when unrecognized replies are handled" id="mailhandling[unrec_reply]"/>
+ </menulist>
+ </hbox>
+ <hbox span="all">
+ <description value="(New tickets as"/>
+ <menulist>
+ <menupopup type="select-account" statustext="Select which username should be used when unrecognized mails are handled." id="mailhandling[unrec_mail]" options="Reject"/>
+ </menulist>
+ <description value=")"/>
+ </hbox>
+ </row>
+ <row class="row">
+ <description/>
+ <checkbox statustext="When emails are received from an unknown email address, tag this field to have them added to the Tracker's CC field automatically. This field is ignored if unrecognized mail addresses are not handled." label="Add unrecognized mail address to the CC field" id="mailhandling[auto_cc]"/>
+ <description/>
+ <description/>
+ </row>
+ <row class="row" valign="top">
+ <description value="Handling Mailheader Information"/>
+ <description value="Do you want to add Mailheader Information to Description and/or Comments?"/>
+ <menulist span="2">
+ <menupopup id="mailhandling[mailheaderhandling]"/>
+ </menulist>
+ </row>
+ <row class="row">
+ <description value="Handling autoreplies"/>
+ <radio statustext="Ignore the mail. It will remain in the mailbox, even if 'Delete mails from server' above is checked." label="Ignore" id="mailhandling[autoreplies]" options="ignore"/>
+ <description value="Handling bounced mails"/>
+ <radio statustext="Ignore the mail. It will remain in the mailbox, even if 'Delete mails from server' above is checked." label="Ignore" id="mailhandling[bounces]" options="ignore"/>
+ </row>
+ <row class="row">
+ <description/>
+ <radio statustext="Delete the mail from the server." label="Delete" id="mailhandling[autoreplies]" options="delete"/>
+ <description/>
+ <radio statustext="Delete the mail from the server" label="Delete" id="mailhandling[bounces]" options="delete"/>
+ </row>
+ <row class="row">
+ <description/>
+ <radio statustext="Forward the mail to the same address where unrecognized mails can be forwarded to (so this address must be entered!). Afterwards, the mail will be deleted from the server." label="Forward" id="mailhandling[autoreplies]" options="forward"/>
+ <description/>
+ <radio statustext="Forward the mail to the same address where unrecognized mails can be forwarded to (so this address must be entered!). Afterwards, the mail will be deleted from the server." label="Forward" id="mailhandling[bounces]" options="forward"/>
+ </row>
+ <row class="row">
+ <description/>
+ <hbox span="all">
+ <radio statustext="Process the message normally. *NOTE* This might cause mailloops when "Sent autoreplies" below is enabled!" label="Process" id="mailhandling[autoreplies]" options="process"/>
+ <description value="(Beware of mailloops, check the help!)" span="all"/>
+ </hbox>
+ </row>
+ <row class="row">
+ <description value="Sent autoreplies"/>
+ <menulist>
+ <menupopup statustext="Select how autoreplies should be sent when mails are received" id="mailhandling[auto_reply]"/>
+ </menulist>
+ <description value="Reply also to unknown addresses"/>
+ <checkbox id="mailhandling[reply_unknown]"/>
+ </row>
+ <row class="row">
+ <description value="Introduction message"/>
+ <textbox statustext="Enter an opening text for the reply message" id="mailhandling[reply_text]" size="100" span="3"/>
+ </row>
+ <row>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.admin.notifications" template="" lang="" group="0" version="1.9.002">
+ <grid width="100%" id="notification">
+ <columns>
+ <column/>
+ <column disabled="@no_checkboxes"/>
+ </columns>
+ <rows>
+ <row>
+ <description value="Notification message"/>
+ <checkbox label="Use custom notification message" id="use_custom"/>
+ </row>
+ <row>
+ <htmlarea height="200" mode="advanced" id="message" span="all" toolbar="false" width="100%"/>
+ </row>
+ <row>
+ <description extra_link_target="_blank" href="tracker.tracker_merge.show_replacements" value="Full list of placeholder names" span="all"/>
+ </row>
+ <row>
+ <description value="Signature"/>
+ <checkbox label="Use custom signature" id="use_signature"/>
+ </row>
+ <row>
+ <htmlarea height="200" mode="advanced" id="signature" span="all" toolbar="false" width="100%"/>
+ </row>
+ </rows>
+ </grid>
+ <styles>
+ textarea {
+ padding-right: 2ex;
+ width:99%;
+ height: 20ex;
+}
+ </styles>
+ </template>
+ <template id="tracker.admin" template="" lang="" group="0" version="1.9.004">
+ <grid width="100%">
+ <columns>
+ <column width="1"/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row disabled="!@msg">
+ <description align="center" id="msg" no_lang="1" span="all" class="message"/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ </row>
+ <row>
+ <description disabled="true" for="tracker" value="tracker" class="bold"/>
+ <menulist>
+ <menupopup class="bold" label="Tracker Queue" id="tracker" no_lang="1" onchange="1" options="All"/>
+ </menulist>
+ <hbox align="right" span="all">
+ <textbox blur="--> enter new name" id="add_name" size="32" maxlength="150"/>
+ <button label="Rename" id="button[rename]"/>
+ <button label="Add" id="button[add]"/>
+ </hbox>
+ </row>
+ <row>
+ <tabbox id="tabs" span="all">
+ <tabs>
+ <tab id="tracker.admin.cats" label="Categories" statustext="Categories, versions, canned responses"/>
+ <tab id="tracker.admin.priorities" label="Priorities" statustext="Custom tracker priorities"/>
+ <tab id="tracker.admin.staff" label="Staff" statustext="Tracker admins & technicians"/>
+ <tab id="tracker.admin.config" label="Configuration" statustext="Configuration, Notifications"/>
+ <tab id="tracker.admin.acl" label="ACL" statustext="ACL"/>
+ <tab id="tracker.admin.mail" label="Mail handling" statustext="Automatic email handling"/>
+ <tab id="tracker.admin.notifications" label="Notifications" statustext="Custom notifications"/>
+ </tabs>
+ <tabpanels>
+ <template id="tracker.admin.cats"/>
+ <template id="tracker.admin.priorities"/>
+ <template id="tracker.admin.staff"/>
+ <template id="tracker.admin.config"/>
+ <template id="tracker.admin.acl"/>
+ <template id="tracker.admin.mail"/>
+ <template id="tracker.admin.notifications"/>
+ </tabpanels>
+ </tabbox>
+ </row>
+ <row>
+ <hbox span="2">
+ <button label="Save" id="button[save]"/>
+ <button label="Apply" id="button[apply]"/>
+ <button label="Cancel" id="button[cancel]"/>
+ </hbox>
+ <button align="right" label="Delete" id="button[delete]" onclick="et2_dialog.confirm(widget,'Delete this tracker including all its items and categories','Delete')" span="all"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/customfields.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/customfields.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/customfields.xet.bak (added)
+++ trunk/tracker/templates/default/customfields.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.customfields.fields" template="" lang="" group="0" version="1.9.001">
+ <grid>
+ <columns>
+ <column/>
+ <column/>
+ <column disabled="!@type2"/>
+ <column/>
+ <column disabled="!@use_private"/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th">
+ <description value="Queue"/>
+ <description statustext="the name used internaly (<= 20 chars), changeing it makes existing data unavailible" value="Name"/>
+ <description value="Label"/>
+ <description value="Type of field"/>
+ <description value="Private"/>
+ <description statustext="each value is a line like <id>[=<label>]" value="Options"/>
+ <vbox>
+ <description value="Length"/>
+ <description value="Rows"/>
+ </vbox>
+ <description value="Order"/>
+ <description align="center" statustext="deletes this field" value="Action"/>
+ </row>
+ <row class="row" valign="top">
+ <listbox id="${row}[type2]" no_lang="1" rows="3"/>
+ <textbox statustext="the name used internaly (<= 20 chars), changeing it makes existing data unavailible" id="${row}[name]" size="20" maxlength="32"/>
+ <vbox>
+ <textbox statustext="the text displayed to the user" id="${row}[label]" maxlength="255"/>
+ <description id="${row}[label]"/>
+ </vbox>
+ <vbox options="0,0">
+ <customfields-types statustext="Type of customfield" id="{$row}[type]"/>
+ <checkbox label="required" id="${row}[needed]"/>
+ </vbox>
+ <select-account statustext="Select accounts for which the custom field should be visible" id="${row}[private]" rows="3" account_type="both"/>
+ <textbox multiline="true" statustext="each value is a line like id[=label]" id="${row}[values]" rows="4" cols="30"/>
+ <vbox>
+ <textbox statustext="max length of the input [, length of the inputfield (optional)]" id="${row}[len]" size="5"/>
+ <textbox type="integer" blur="1" statustext="number of row for a multiline inputfield or line of a multi-select-box" id="${row}[rows]" min="0" max="10" size="2"/>
+ </vbox>
+ <textbox type="integer" statustext="determines the order the fields are displayed" id="${row}[order]" min="1" size="3"/>
+ <hbox>
+ <button statustext="deletes this field" label="Delete" id="delete[$row_cont[name]]"/>
+ <button statustext="creates a new field" label="Create" id="create$row_cont[name]"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.customfields" template="" lang="" group="0" version="1.9.001">
+ <grid>
+ <columns>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column width="80%"/>
+ </columns>
+ <rows>
+ <row>
+ <description align="center" id="error_msg" no_lang="1" span="all" class="message"/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <description no_lang="1"/>
+ </row>
+ <row>
+ <description span="all"/>
+ </row>
+ <row>
+ <template id="tracker.customfields.fields" content="fields" span="all"/>
+ </row>
+ <row>
+ <hbox span="all">
+ <button statustext="saves the changes made and leaves" label="Save" id="button[save]"/>
+ <button statustext="applies the changes" label="Apply" id="button[apply]"/>
+ <button statustext="leaves without saveing" label="Cancel" id="button[cancel]"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/edit.custom.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/edit.custom.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/edit.custom.xet.bak (added)
+++ trunk/tracker/templates/default/edit.custom.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.edit.custom" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%" height="250" overflow="auto">
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row valign="top">
+ <customfields options="@tr_tracker"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/edit.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/edit.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/edit.xet.bak (added)
+++ trunk/tracker/templates/default/edit.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.edit.description" template="" lang="" group="0" version="1.9.005">
+ <htmlarea options="@tr_description_options" id="tr_description" needed="1" span="3" width="99%" height="250"/>
+ </template>
+ <template id="tracker.edit.comments" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%" class="egwGridView_grid">
+ <columns>
+ <column width="100"/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th" height="29px">
+ <description value="Comments"/>
+ <textbox type="integer" id="num_replies" readonly="true"/>
+ </row>
+ <row class="row" valign="top">
+ <vbox options="0,0">
+ <date-time id="replies[$row][reply_created]" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" id="replies[$row][reply_creator]" readonly="true"/>
+ </menulist>
+ </vbox>
+ <htmlarea id="replies[$row][reply_message]" readonly="true" span="3" class="@replies[$row][reply_visible_class]"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.add_comment" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%">
+ <columns>
+ <column width="100"/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th" disabled="@no_canned">
+ <description value="Canned response" for="canned_response" class="3"/>
+ <menulist>
+ <menupopup statustext="The canned response will be prefix the text you type." id="canned_response" no_lang="1" onchange="app.tracker.canned_comment_requst" options="Select one"/>
+ </menulist>
+ </row>
+ <row disabled="@no_comment_visibility">
+ <description/>
+ <checkbox label="Only for admins, technicians or assigned" id="reply_visible"/>
+ </row>
+ <row class="row" valign="top" disabled="@no_reply">
+ <vbox>
+ <description value="Comment" for="reply_message"/>
+ </vbox>
+ <htmlarea id="reply_message" options="@tr_reply_options" span="3"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.links" template="" lang="" group="0" version="0.1.002">
+ <grid width="100%" overflow="auto">
+ <columns>
+ <column width="99%"/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th" disabled="@no_links">
+ <description value="Create new links" span="all"/>
+ </row>
+ <row class="row" disabled="@status_only">
+ <link-to id="link_to" span="all"/>
+ </row>
+ <row class="th">
+ <description value="Existing links" span="all"/>
+ </row>
+ <row class="row_off" valign="top">
+ <link-list id="link_to" span="all"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.custom" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%" overflow="auto">
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row valign="top">
+ <customfields options="$cont[tr_tracker]"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.history" template="" lang="" group="0" version="0.1.002">
+ <grid width="100%">
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row valign="top">
+ <historylog id="history"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.bounties" template="" lang="" group="0" version="0.1.003">
+ <grid width="100%" overflow="auto" id="bounties">
+ <columns>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row disabled="@no_set_bounty">
+ <description value="Set an own bounty (in %s)" id="currency" no_lang="1" span="2"/>
+ <textbox type="float" id="new[bounty_amount]"/>
+ <textbox blur="@user_name" statustext="Donator name to show" id="new[bounty_name]" size="16" maxlength="64"/>
+ <textbox blur="@user_email" statustext="Email address to contact you" id="new[bounty_email]" size="24" maxlength="64"/>
+ <button statustext="If this item is important for you, please consider to set a bounty for it!" label="Set bounty" id="bounty" onclick="et2_dialog.confirm(widget,'Confirm that you pay the specified bounty to implement or fix the issue','Confirmation')" span="all"/>
+ </row>
+ <row class="th">
+ <description value="Datum"/>
+ <description value="User"/>
+ <textbox type="float" label="Amount" id="total" readonly="true"/>
+ <description value="Name"/>
+ <description value="Email"/>
+ <description value="Confirmed"/>
+ </row>
+ <row class="row" disabled="!@num_bounties">
+ <date-time id="${row}[bounty_created]" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" id="${row}[bounty_creator]" readonly="true"/>
+ </menulist>
+ <textbox type="float" label="@currency" id="${row}[bounty_amount]" no_lang="1" readonly="true"/>
+ <description id="${row}[bounty_name]" no_lang="1"/>
+ <description id="${row}[bounty_email]" no_lang="1"/>
+ <hbox align="center" options="0,0">
+ <date-time id="${row}[bounty_confirmed]" readonly="true"/>
+ <button align="center" statustext="Confirm the receipt of money for this bounty" label="Confirm" id="confirm[$row_cont[bounty_id]]" onclick="et2_dialog.confirm(widget,'Confirm the receipt of money for this bounty','Confirmation')" image="edit"/>
+ <button align="center" statustext="Delete this bounty" label="Delete" id="delete[$row_cont[bounty_id]]" onclick="et2_dialog.confirm(widget,'Delete this bounty','Delete')" image="delete"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit.details" template="" lang="" group="0" version="1.9.008">
+ <grid width="100%">
+ <columns>
+ <column width="85"/>
+ <column width="165"/>
+ <column width="40"/>
+ <column width="70"/>
+ <column width="200"/>
+ </columns>
+ <rows>
+ <row>
+ <description statustext="List of coma separated email address" value="Cc"/>
+ <taglist-email id="tr_cc" allowFreeEntries="true" empty_label="Add email-address" class="et2_fullWidth"/>
+ <description/>
+ <description value="Group"/>
+ <menulist span="all" >
+ <menupopup statustext="Ownership of the ticket" id="tr_group" no_lang="1" class="et2_fullWidth"/>
+ </menulist>
+ </row>
+ <row>
+ <description for="tr_assigned" value="Assigned to"/>
+ <menulist>
+ <menupopup class="tracker_assign" id="tr_assigned" multiple="true" no_lang="1" tags="true" empty_label="User or group"/>
+ </menulist>
+ <description/>
+ <description for="tr_private" value="Private"/>
+ <checkbox id="tr_private" span="all" class="et2_fullWidth" unselected_value="0"/>
+ </row>
+ <row>
+ <description value="Close date" />
+ <date-time label=" " id="tr_closed" class="et2_fullWidth"/>
+ <description/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.edit" template="" lang="" group="0" version="1.9.008">
+ <grid width="100%">
+ <columns>
+ <column width="100"/>
+ <column width="200"/>
+ <column width="30"/>
+ <column width="90"/>
+ <column width="100"/>
+ <column width="30"/>
+ <column width="50"/>
+ <column width="4"/>
+ </columns>
+ <rows>
+ <row class="dialogHeader">
+ <description for="tr_summary" value="Summary"/>
+ <textbox id="tr_summary" needed="1" maxlength="80" span="4" class="et2_fullWidth" tabindex="1"/>
+ <textbox type="integer" id="tr_id" readonly="true" class="tracker_trIdEdit"/>
+ <appicon/>
+ <description/>
+ </row>
+ <row class="dialogHeader2">
+ <description for="tr_tracker" value="Tracker Queue"/>
+ <menulist>
+ <menupopup id="tr_tracker" no_lang="1" onchange="widget.getInstanceManager().submit(null,false,true); return false;" class="et2_fullWidth"/>
+ </menulist>
+ <description/>
+ <description for="cat_id" value="Category"/>
+ <menulist span="3">
+ <menupopup id="cat_id" needed="1" no_lang="1" options="Select one" class="et2_fullWidth"/>
+ </menulist>
+ <description/>
+ </row>
+ <row class="dialogHeader3">
+ <description for="tr_version" value="Version"/>
+ <menulist>
+ <menupopup id="tr_version" needed="1" no_lang="1" options="Select one" class="et2_fullWidth"/>
+ </menulist>
+ <description/>
+ <description for="tr_priority" value="Priority"/>
+ <menulist span="all" >
+ <menupopup id="tr_priority" class="et2_fullWidth"/>
+ </menulist>
+ </row>
+ <row class="dialogHeader4" disabled="!@show_dates">
+ <description value="Start date"/>
+ <date-time id="tr_startdate" class="et2_fullWidth"/>
+ <description/>
+ <description value="Due date"/>
+ <date-time id="tr_duedate" class="et2_fullWidth" span="3"/>
+ <description/>
+ </row>
+ <row valign="top">
+ <tabbox id="tabs" span="all" tab_height="250">
+ <tabs>
+ <tab id="description" label="Description" statustext="Description"/>
+ <tab id="details" label="Details" statustext="Details"/>
+ <tab id="comments" label="Comments" statustext="Comments"/>
+ <tab id="add_comment" label="Add comment" statustext="Add comment"/>
+ <tab id="links" label="Links" statustext="Attachments & Links"/>
+ <tab id="custom" label="Custom" statustext="Custom fields"/>
+ <tab id="history" label="History" statustext="History"/>
+ <tab id="bounties" label="Bounties" statustext="If this item is important for you, please consider to set a bounty for it!"/>
+ </tabs>
+ <tabpanels>
+ <template id="tracker.edit.description"/>
+ <template id="tracker.edit.details"/>
+ <template id="tracker.edit.comments"/>
+ <template id="tracker.edit.add_comment"/>
+ <template id="tracker.edit.links"/>
+ <template id="tracker.edit.custom"/>
+ <template id="tracker.edit.history"/>
+ <template id="tracker.edit.bounties"/>
+ </tabpanels>
+ </tabbox>
+ </row>
+ <row class="dialogOperators" disabled="!@tr_id">
+ <description for="tr_status" value="Status"/>
+ <menulist>
+ <menupopup statustext="@status_help" id="tr_status" class="et2_fullWidth"/>
+ </menulist>
+ <description/>
+ <description for="tr_resolution" value="Resolution"/>
+ <menulist>
+ <menupopup id="tr_resolution" class="et2_fullWidth"/>
+ </menulist>
+ <menulist span="2">
+ <menupopup type="select-percent" id="tr_completion" class="et2_fullWidth"/>
+ </menulist>
+ <description/>
+ </row>
+ <row class="dialogOperators">
+ <description value="Created by"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="tr_creator" no_lang="1"/>
+ </menulist>
+ <date-time id="tr_created" readonly="true" align="right"/>
+ </hbox>
+ <description/>
+ <description value="Last modified"/>
+ <menulist>
+ <menupopup type="select-account" id="tr_modifier" readonly="true"/>
+ </menulist>
+ <date-time id="tr_modified" readonly="true" class="et2_nowrap" span="2" align="right"/>
+ <description/>
+ </row>
+ <row class="dialogFooterToolbar">
+ <hbox options="0,0" span="all">
+ <button label="Save" id="button[save]"/>
+ <button label="Apply" id="button[apply]"/>
+ <button label="Cancel" id="button[cancel]" onclick="@on_cancel"/>
+ <checkbox label="Do not notify" id="no_notifications"/>
+ <vbox align="right" options="0,0">
+ <button align="right" statustext="If this item is important for you, please vote for it." label="Vote for it!" id="button[vote]" onclick="et2_dialog.confirm(widget,'Do you want to vote for this item','Vote');"/>
+ <description align="right" id="no_vote" no_lang="1" class="redItalic"/>
+ </vbox>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/escalations.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/escalations.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/escalations.xet.bak (added)
+++ trunk/tracker/templates/default/escalations.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.escalations.rows" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%">
+ <columns>
+ <column width="20%"/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row class="th">
+ <nextmatch-sortheader label="Title" id="esc_title"/>
+ <nextmatch-filterheader id="tr_tracker" options="Queue"/>
+ <nextmatch-header label="Resolution" id="tr_resolution"/>
+ <nextmatch-header label="Category" id="cat_id"/>
+ <nextmatch-header label="Version" id="tr_version"/>
+ <nextmatch-header label="Status" id="tr_status"/>
+ <nextmatch-sortheader label="Priority" id="tr_priority"/>
+ <nextmatch-header label="Action" id="esc_action_label"/>
+ <nextmatch-sortheader label="Time" id="esc_time"/>
+ <nextmatch-sortheader label="Match again after" id="esc_match_repeat"/>
+ <nextmatch-header label="Actions" id="actions"/>
+ </row>
+ <row class="row">
+ <description id="${row}[esc_title]" no_lang="1"/>
+ <menulist>
+ <menupopup type="select-cat" id="${row}[tr_tracker]" readonly="true" options="All"/>
+ </menulist>
+ <menulist>
+ <menupopup type="select-cat" id="${row}[tr_resolution]" readonly="true" options="All"/>
+ </menulist>
+ <menulist>
+ <menupopup type="select-cat" id="${row}[cat_id]" readonly="true" options="All"/>
+ </menulist>
+ <menulist>
+ <menupopup type="select-cat" id="${row}[tr_version]" readonly="true" options="All"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[tr_status]" readonly="true" options="All"/>
+ </menulist>
+ <description id="${row}[prio_label]"/>
+ <textbox multiline="true" id="${row}[esc_action_label]" readonly="true"/>
+ <vbox options="0,0">
+ <date-duration id="${row}[esc_time]" readonly="true" options=",dhm,24"/>
+ <hbox readonly="true">
+ <menulist>
+ <menupopup id="${row}[esc_before_after]" no_lang="1" readonly="true"/>
+ </menulist>
+ <menulist class="noWrap">
+ <menupopup id="${row}[esc_type]" no_lang="1" readonly="true"/>
+ </menulist>
+ </hbox>
+ </vbox>
+ <vbox readonly="true">
+ <date-duration id="${row}[esc_match_repeat]" readonly="true" class="noWrap"/>
+ <description id="${row}[esc_limit_label]"/>
+ </vbox>
+ <hbox options="0,0">
+ <button label="Edit" id="edit[$row_cont[esc_id]]" image="edit"/>
+ <button statustext="Delete this escalation" label="Delete" id="delete[$row_cont[esc_id]]" onclick="et2_dialog.confirm(widget,'Delete this escalation','Delete')" image="delete"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.escalations" template="" lang="" group="0" version="1.9.004">
+ <grid width="100%">
+ <columns>
+ <column width="100"/>
+ <column width="500"/>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <nextmatch id="nm" template="tracker.escalations.rows" span="all"/>
+ </row>
+ <row>
+ <hrule span="all"/>
+ </row>
+ <row>
+ <description id="msg" span="all" class="message"/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ </row>
+ <row>
+ <description value="Title"/>
+ <textbox id="esc_title" size="80" maxlength="128" span="all" />
+ </row>
+ <row>
+ <description value="Time"/>
+ <hbox options="0,0">
+ <date-duration id="esc_time" options=",dhm,24"/>
+ <menulist>
+ <menupopup id="esc_before_after"/>
+ </menulist>
+ <menulist>
+ <menupopup class="tracker_leftPad5" id="esc_type"/>
+ </menulist>
+ </hbox>
+ <description/>
+ </row>
+ <row>
+ <description value="Match again after"/>
+ <hbox options="0,0">
+ <date-duration statustext="If a ticket has matched before, should the actions be taken again?" id="esc_match_repeat" options=",dhm,24"/>
+ <textbox type="integer" label="maximum %s times" id="esc_limit" min="0" max="255"/>
+ </hbox>
+ <description/>
+ </row>
+ <row>
+ <groupbox span="2">
+ <caption label="Filter"/>
+ <grid class="big_boxes">
+ <columns>
+ <column width="87"/>
+ <column width="200"/>
+ <column width="60"/>
+ <column width="200"/>
+ </columns>
+ <rows>
+ <row valign="top">
+ <description value="Queue"/>
+ <hbox onchange="1" options="0,0">
+ <menulist>
+ <menupopup id="tr_tracker" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ <description value="Resolution"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="tr_resolution" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ </row>
+ <row valign="top">
+ <description value="Category"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="cat_id" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ <description value="Version"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="tr_version" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ </row>
+ <row valign="top">
+ <description value="Status"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="tr_status" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ <description value="Priority"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup id="tr_priority" options="All"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="navbar" class="mStatus"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+ <groupbox class="tracker_escalation_action">
+ <caption label="Action"/>
+ <grid width="100%" id="set">
+ <columns>
+ <column width="87"/>
+ <column width="150"/>
+ <column width="60"/>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <description value="Queue"/>
+ <menulist span="all">
+ <menupopup id="tr_tracker" onchange="1" options="Unchanged"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Category"/>
+ <menulist>
+ <menupopup id="cat_id" options="Unchanged"/>
+ </menulist>
+ <description value="Version"/>
+ <menulist>
+ <menupopup id="tr_version" options="Unchanged"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Status"/>
+ <menulist>
+ <menupopup id="tr_status" options="Unchanged"/>
+ </menulist>
+ <description value="Priority"/>
+ <menulist>
+ <menupopup id="tr_priority" options="Unchanged"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Assigned to"/>
+ <hbox options="0,0" span="all">
+ <menulist>
+ <menupopup id="tr_assigned" options="Unchanged"/>
+ </menulist>
+ <buttononly label="Select multiple" onclick="app.tracker.multiple_assigned" options="users" class="tracker_leftPad5"/>
+ <checkbox label="add additionally" id="add_assigned" class="tracker_leftPad5"/>
+ </hbox>
+ </row>
+ <row valign="top">
+ <description value="Comment"/>
+ <textbox multiline="true" id="reply_message" rows="3" span="all" class="reply"/>
+ <description/>
+ <description/>
+ </row>
+ <row disabled="@no_comment_visibility">
+ <description/>
+ <checkbox label="Only for admins, technicians or assigned" id="reply_visible" span="all"/>
+ </row>
+ <row>
+ <description value="Notification"/>
+ <menulist>
+ <menupopup id="notify"/>
+ </menulist>
+ <description/>
+ <description/>
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+ </row>
+ <row class="dialogFooterToolbar">
+ <hbox span="all">
+ <button label="Save" id="button[save]"/>
+ <button label="Apply" id="button[apply]"/>
+ <button label="Cancel" id="button[cancel]"/>
+ <checkbox statustext="If left unchecked, marks every existing, matching ticket as already escalated, without taking the action." label="Run on existing tickets" id="esc_run_on_existing"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ <styles>
+ .tracker_escalation_action {position: relative;top: -28px;}
+ .reply, .reply>textarea { width: 100%; }
+.mStatus, .mStatus img { width: 16px; height: 16px; padding-left: 5px; }
+fieldset>table>tbody>tr>td>table, td>table>tbody>tr>td>select {width: 100%;}
+ </styles>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/importexport_wizard_chooseowner.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/importexport_wizard_chooseowner.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/importexport_wizard_chooseowner.xet.bak (added)
+++ trunk/tracker/templates/default/importexport_wizard_chooseowner.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.importexport_wizard_chooseowner" template="" lang="" group="0" version="1.9.002">
+ <grid>
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <description id="msg" no_lang="1"/>
+ </row>
+ <row class="th">
+ <description value="Owner"/>
+ </row>
+ <row disabled="@no_owner_map">
+ <checkbox label="Use field from CSV if possible" id="owner_from_csv"/>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-account" id="record_owner" options="Select"/>
+ </menulist>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-bool" label="Change owner when updating" id="change_owner"/>
+ </menulist>
+ </row>
+ <row class="th">
+ <description value="Group"/>
+ </row>
+ <row>
+ <checkbox label="Use field from CSV if possible" id="group_from_csv"/>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-account" id="record_group" options="Select,groups"/>
+ </menulist>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-bool" label="Change group when updating" id="change_group"/>
+ </menulist>
+ </row>
+ <row class="th">
+ <description value="Assigned to"/>
+ </row>
+ <row>
+ <checkbox label="Use field from CSV if possible" id="assigned_from_csv"/>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-account" id="record_assigned" options="Select,both"/>
+ </menulist>
+ </row>
+ <row>
+ <menulist>
+ <menupopup type="select-bool" label="Change assigned when updating" id="change_assigned"/>
+ </menulist>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/index.left.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/index.left.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/index.left.xet.bak (added)
+++ trunk/tracker/templates/default/index.left.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.index.left" template="" lang="" group="0" version="1.9.001">
+ <hbox>
+ <menulist class="bold">
+ <menupopup cols="1" label="Tracker Queue" id="col_filter[tr_tracker]" no_lang="1" rows="1" options="All"/>
+ </menulist>
+ <button id="col_filter[multi_queue][true]" image="foldertree_nolines_plus"/>
+ </hbox>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/index.left_multiqueue.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/index.left_multiqueue.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/index.left_multiqueue.xet.bak (added)
+++ trunk/tracker/templates/default/index.left_multiqueue.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.index.left_multiqueue" template="" lang="" group="0" version="1.9.001">
+ <grid width="100%">
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <hbox>
+ <listbox id="col_filter[tr_tracker]" no_lang="1" multiple="true" tags="true" width="100%" class="tracker_queue" empty_label="Select tracker queues"/>
+ <button id="clear_tracker" onclick="widget.getParent().getWidgetById('col_filter[tr_tracker]').set_value(''); widget.getRoot().getWidgetById('nm').applyFilters({col_filter: {tr_tracker: ''}});" image="cancel"/>
+ <button id="col_filter[multi_queue][false]" image="foldertree_nolines_minus"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ <styles>
+ .tracker_queue select {
+ width: 100%;
+}
+.tracker_queue.chzn-container {
+ min-width: 200px;
+}
+ </styles>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/index.rows.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/index.rows.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/index.rows.xet.bak (added)
+++ trunk/tracker/templates/default/index.rows.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.index.rows" template="" lang="" group="0" version="1.9.009">
+ <grid width="100%">
+ <columns>
+ <column width="65"/>
+ <column width="10%" disabled="@no_tr_tracker"/>
+ <column width="10%" disabled="@no_cat_id"/>
+ <column width="10%"/>
+ <column width="40%"/>
+ <column width="40%"/>
+ <column width="135"/>
+ <column width="135" disabled="@no_tr_startdate_tr_duedate"/>
+ <column width="45"/>
+ <column width="10%"/>
+ <column width="10%"/>
+ <column width="65"/>
+ <column width="135"/>
+ <column disabled="@no_tr_sum_timesheets"/>
+ <column disabled="@no_votes"/>
+ <column disabled="@no_bounties"/>
+ <column/>
+ <column width="10%"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <vbox>
+ <nextmatch-sortheader label="ID" id="tr_id" class="tracker-id" sortmode="DESC"/>
+ <nextmatch-filterheader id="tr_private" options="Private"/>
+ </vbox>
+ <nextmatch-sortheader label="Tracker Queue" id="tr_tracker" class="tracker"/>
+ <nextmatch-sortheader label="Category" id="cat_id" class="tracker-cat"/>
+ <nextmatch-sortheader label="Version" id="tr_version" class="tracker"/>
+ <nextmatch-sortheader label="Summary" id="tr_summary" options="1" class="tracker-summary"/>
+ <vbox>
+ <nextmatch-sortheader label="Summary" id="tr_summary" options="1" class="tracker-summary"/>
+ <nextmatch-header label="Description" id="tr_description" class="tracker-summary"/>
+ </vbox>
+ <vbox>
+ <nextmatch-sortheader label="Date opened" id="tr_created" class="tracker-created" sortmode="DESC"/>
+ <nextmatch-sortheader label="Last modified" id="tr_modified" sortmode="DESC"/>
+ </vbox>
+ <vbox>
+ <nextmatch-sortheader label="Start date" id="tr_startdate" sortmode="DESC"/>
+ <nextmatch-sortheader label="Due date" id="tr_duedate" sortmode="DESC"/>
+ </vbox>
+ <nextmatch-sortheader align="center" label="Priority" id="tr_priority" class="tracker-priority" sortmode="DESC"/>
+ <vbox>
+ <nextmatch-filterheader label="Status" id="tr_status" options="All" class="tracker_status_filter"/>
+ </vbox>
+ <nextmatch-filterheader label="Resolution" id="tr_resolution" options="All" class="tracker_status_filter"/>
+ <nextmatch-sortheader align="center" label="Completed" id="tr_completion" class="tracker-completion"/>
+ <vbox>
+ <nextmatch-accountfilter id="tr_creator" options="Created by" class="tracker_user_filter"/>
+ <nextmatch-filterheader id="tr_assigned" no_lang="1" options="Assigned to" class="tracker_user_filter"/>
+ </vbox>
+ <nextmatch-header align="center" label="Times" id="tr_sum_timesheets" class="tracker-times"/>
+ <nextmatch-sortheader label="Votes" id="votes" class="tracker-votes" sortmode="DESC"/>
+ <nextmatch-sortheader label="Bounties" id="bounties" class="tracker-bounties" sortmode="DESC"/>
+ <nextmatch-filterheader id="esc_id" options="Escalation"/>
+ <nextmatch-customfields id="customfields"/>
+ </row>
+ <row class="$row_cont[cat_id] $row_cont[class]" valign="top">
+ <vbox no_lang="1">
+ <description id="${row}[tr_id]" no_lang="1"/>
+ <menulist>
+ <menupopup type="select-bool" id="${row}[tr_private]" readonly="true"/>
+ </menulist>
+ </vbox>
+ <menulist>
+ <menupopup id="${row}[tr_tracker]" no_lang="1" readonly="true"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[cat_id]" readonly="true" options="None"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[tr_version]" readonly="true" options="None"/>
+ </menulist>
+ <description extra_link_popup="780x535" href="tracker.tracker_ui.edit&tr_id=$row_cont[tr_id]" id="${row}[tr_summary]" no_lang="1" class="$row_cont[seen_class]"/>
+ <vbox no_lang="1" class="colfullWidth">
+ <description extra_link_popup="780x535" href="tracker.tracker_ui.edit&tr_id=$row_cont[tr_id]" id="${row}[tr_summary]" no_lang="1" class="$row_cont[seen_class]"/>
+ <hrule/>
+ <box no_lang="1" class="trackerDes">
+ <html id="${row}[tr_description]" no_lang="1"/>
+ </box>
+ </vbox>
+ <vbox readonly="true">
+ <date-time id="${row}[tr_created]" readonly="true" class="noWrap $row_cont[overdue_class]"/>
+ <date-time id="${row}[tr_modified]" readonly="true" class="noWrap"/>
+ <menulist>
+ <menupopup type="select-account" class="noWrap" id="${row}[tr_modifier]" readonly="true"/>
+ </menulist>
+ </vbox>
+ <vbox>
+ <date-time id="${row}[tr_startdate]" readonly="true" class="noWrap"/>
+ <date-time id="${row}[tr_duedate]" readonly="true" class="noWrap $row_cont[overdue_class]"/>
+ </vbox>
+ <description align="center" id="${row}[prio_label]" class="tracker_indexPrio"/>
+ <menulist>
+ <menupopup id="${row}[tr_status]" readonly="true"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[tr_resolution]" readonly="true" options="None"/>
+ </menulist>
+ <progress align="center" label="$row_cont[tr_completion]" id="${row}[tr_completion]" no_lang="1"/>
+ <vbox>
+ <hbox readonly="true">
+ <image label="Created by" src="move2" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" class="tracker_leftPad5" id="${row}[tr_creator]" readonly="true"/>
+ </menulist>
+ </hbox>
+ <hbox readonly="true">
+ <image label="Assigned to" src="groupevent" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" class="tracker_leftPad5" id="${row}[tr_assigned]" readonly="true"/>
+ </menulist>
+ </hbox>
+ </vbox>
+ <date-duration align="center" id="${row}[tr_sum_timesheets]" readonly="true" options="@duration_format"/>
+ <textbox type="integer" align="center" id="${row}[votes]" readonly="true"/>
+ <textbox type="float" align="center" label="$row_cont[currency]" id="${row}[bounties]" no_lang="1" readonly="true"/>
+ <date-since id="${row}[esc_start]"/>
+ <customfields-list id="$row"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/index.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/index.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/index.xet.bak (added)
+++ trunk/tracker/templates/default/index.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.index.left" template="" lang="" group="0" version="1.9.001">
+ <hbox>
+ <menulist>
+ <menupopup class="bold" label="Tracker Queue" id="col_filter[tr_tracker]" no_lang="1" options="All"/>
+ </menulist>
+ <button id="col_filter[multi_queue][true]" image="foldertree_nolines_plus"/>
+ </hbox>
+ </template>
+ <template id="tracker.index.right" template="" lang="" group="0" version="1.7.001">
+ <buttononly label="Add" id="add" onclick="egw.open('', 'tracker', 'add', {tracker:widget.getRoot().getWidgetById('nm').activeFilters.col_filter.tr_tracker});"/>
+ </template>
+ <template id="tracker.index.rows" template="" lang="" group="0" version="1.9.009">
+ <grid width="100%">
+ <columns>
+ <column width="65"/>
+ <column width="10%" disabled="@no_tr_tracker"/>
+ <column width="10%" disabled="@no_cat_id"/>
+ <column width="10%"/>
+ <column width="40%"/>
+ <column width="40%"/>
+ <column width="135"/>
+ <column width="135" disabled="@no_tr_startdate_tr_duedate"/>
+ <column width="45"/>
+ <column width="10%"/>
+ <column width="10%"/>
+ <column width="65"/>
+ <column width="135"/>
+ <column disabled="@no_tr_sum_timesheets"/>
+ <column disabled="@no_votes"/>
+ <column disabled="@no_bounties"/>
+ <column/>
+ <column width="10%"/>
+ </columns>
+ <rows>
+ <row class="th">
+ <vbox>
+ <nextmatch-sortheader label="ID" id="tr_id" class="tracker-id" sortmode="DESC"/>
+ <nextmatch-filterheader id="tr_private" options="Private"/>
+ </vbox>
+ <nextmatch-sortheader label="Tracker Queue" id="tr_tracker" class="tracker"/>
+ <nextmatch-sortheader label="Category" id="cat_id" class="tracker-cat"/>
+ <nextmatch-sortheader label="Version" id="tr_version" class="tracker"/>
+ <nextmatch-sortheader label="Summary" id="tr_summary" options="1" class="tracker-summary"/>
+ <vbox>
+ <nextmatch-sortheader label="Summary" id="tr_summary" options="1" class="tracker-summary"/>
+ <nextmatch-header label="Description" id="tr_description" class="tracker-summary"/>
+ </vbox>
+ <vbox>
+ <nextmatch-sortheader label="Date opened" id="tr_created" class="tracker-created" sortmode="DESC"/>
+ <nextmatch-sortheader label="Last modified" id="tr_modified" sortmode="DESC"/>
+ </vbox>
+ <vbox>
+ <nextmatch-sortheader label="Start date" id="tr_startdate" sortmode="DESC"/>
+ <nextmatch-sortheader label="Due date" id="tr_duedate" sortmode="DESC"/>
+ </vbox>
+ <nextmatch-sortheader align="center" label="Priority" id="tr_priority" class="tracker-priority" sortmode="DESC"/>
+ <vbox>
+ <nextmatch-filterheader label="Status" id="tr_status" options="All" class="tracker_status_filter"/>
+ </vbox>
+ <nextmatch-filterheader label="Resolution" id="tr_resolution" options="All" class="tracker_status_filter"/>
+ <nextmatch-sortheader align="center" label="Completed" id="tr_completion" class="tracker-completion"/>
+ <vbox>
+ <nextmatch-accountfilter id="tr_creator" options="Created by" class="tracker_user_filter"/>
+ <nextmatch-filterheader id="tr_assigned" no_lang="1" options="Assigned to" class="tracker_user_filter"/>
+ </vbox>
+ <nextmatch-header align="center" label="Times" id="tr_sum_timesheets" class="tracker-times"/>
+ <nextmatch-sortheader label="Votes" id="votes" class="tracker-votes" sortmode="DESC"/>
+ <nextmatch-sortheader label="Bounties" id="bounties" class="tracker-bounties" sortmode="DESC"/>
+ <nextmatch-filterheader id="esc_id" options="Escalation"/>
+ <nextmatch-customfields id="customfields"/>
+ </row>
+ <row class="$row_cont[cat_id] $row_cont[class]" valign="top">
+ <vbox no_lang="1">
+ <description id="${row}[tr_id]" no_lang="1"/>
+ <menulist>
+ <menupopup type="select-bool" id="${row}[tr_private]" readonly="true"/>
+ </menulist>
+ </vbox>
+ <menulist>
+ <menupopup id="${row}[tr_tracker]" no_lang="1" readonly="true"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[cat_id]" readonly="true" options="None"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[tr_version]" readonly="true" options="None"/>
+ </menulist>
+ <description extra_link_popup="780x535" href="tracker.tracker_ui.edit&tr_id=$row_cont[tr_id]" id="${row}[tr_summary]" no_lang="1" class="$row_cont[seen_class]"/>
+ <vbox no_lang="1" class="colfullWidth">
+ <description extra_link_popup="780x535" href="tracker.tracker_ui.edit&tr_id=$row_cont[tr_id]" id="${row}[tr_summary]" no_lang="1" class="$row_cont[seen_class]"/>
+ <hrule/>
+ <box no_lang="1" class="trackerDes">
+ <html id="${row}[tr_description]" no_lang="1"/>
+ </box>
+ </vbox>
+ <vbox readonly="true">
+ <date-time id="${row}[tr_created]" readonly="true" class="noWrap $row_cont[overdue_class]"/>
+ <date-time id="${row}[tr_modified]" readonly="true" class="noWrap"/>
+ <menulist>
+ <menupopup type="select-account" class="noWrap" id="${row}[tr_modifier]" readonly="true"/>
+ </menulist>
+ </vbox>
+ <vbox>
+ <date-time id="${row}[tr_startdate]" readonly="true" class="noWrap"/>
+ <date-time id="${row}[tr_duedate]" readonly="true" class="noWrap $row_cont[overdue_class]"/>
+ </vbox>
+ <description align="center" id="${row}[prio_label]" class="tracker_indexPrio"/>
+ <menulist>
+ <menupopup id="${row}[tr_status]" readonly="true"/>
+ </menulist>
+ <menulist>
+ <menupopup id="${row}[tr_resolution]" readonly="true" options="None"/>
+ </menulist>
+ <progress align="center" label="$row_cont[tr_completion]" id="${row}[tr_completion]" no_lang="1"/>
+ <vbox>
+ <hbox readonly="true">
+ <image label="Created by" src="move2" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" class="tracker_leftPad5" id="${row}[tr_creator]" readonly="true"/>
+ </menulist>
+ </hbox>
+ <hbox readonly="true">
+ <image label="Assigned to" src="groupevent" readonly="true"/>
+ <menulist>
+ <menupopup type="select-account" class="tracker_leftPad5" id="${row}[tr_assigned]" readonly="true"/>
+ </menulist>
+ </hbox>
+ </vbox>
+ <date-duration align="center" id="${row}[tr_sum_timesheets]" readonly="true" options="@duration_format"/>
+ <textbox type="integer" align="center" id="${row}[votes]" readonly="true"/>
+ <textbox type="float" align="center" label="$row_cont[currency]" id="${row}[bounties]" no_lang="1" readonly="true"/>
+ <date-since id="${row}[esc_start]"/>
+ <customfields-list id="$row"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+ <template id="tracker.index" template="" lang="" group="0" version="1.9.003">
+ <grid width="100%" class="tracker-index">
+ <columns>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row disabled="!@css">
+ <html id="css" span="all"/>
+ </row>
+ <row >
+ <description align="center" id="msg" no_lang="1" span="all" class="message"/>
+ <description/>
+ </row>
+ <row disabled="1">
+ <template id="left"/>
+ <template align="right" id="right"/>
+ </row>
+ <row>
+ <nextmatch id="nm" template="tracker.index.rows" span="all"/>
+ </row>
+ <row disabled="!@nm[selectcols]=/legacy_actions/">
+ <button label="Add" id="add" onclick="window.open(egw::link('/index.php','menuaction=tracker.tracker_ui.edit&tracker={$cont[nm][col_filter][tr_tracker]}'),'_blank','dependent=yes,width=700,height=480,scrollbars=yes,status=yes'); return false;"/>
+ <hbox align="right">
+ <button label="Select action" onclick="if (!egw_globalObjectManager.getObjectById('tracker.index.rows').executeActionImplementation(this, 'popup')) alert(egw::lang('You need to select some entries first!')); return false;;"/>
+ <button statustext="Check all" label="Check all" id="check_all" needed="1" onclick="egw_globalObjectManager.getObjectById('tracker.index.rows').toggleAllSelected(); return false;" image="arrow_ltr" class="checkAllArrow"/>
+ </hbox>
+ </row>
+ <row>
+ <box id="admin_popup" class="action_popup prompt">
+ <description value="Multiple changes" span="all" class="promptheader"/>
+ <grid width="500px" class="action_popup-content">
+ <columns>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <description for="cat_id" value="Category"/>
+ <menulist>
+ <menupopup id="cat_id" no_lang="1" options="No change"/>
+ </menulist>
+ </row>
+ <row>
+ <description for="tr_version" value="Version"/>
+ <menulist>
+ <menupopup id="tr_version" no_lang="1" options="No change"/>
+ </menulist>
+ </row>
+ <row>
+ <description for="tr_priority" value="Priority"/>
+ <menulist>
+ <menupopup id="tr_priority" options="No change"/>
+ </menulist>
+ </row>
+ <row>
+ <description font_style="tr_status" value="Status"/>
+ <menulist>
+ <menupopup statustext="@status_help" id="tr_status_admin" options="No change"/>
+ </menulist>
+ </row>
+ <row>
+ <description for="tr_resolution" value="Resolution"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup statustext="@status_help" id="tr_resolution" options="No change"/>
+ </menulist>
+ <menulist>
+ <menupopup type="select-percent" class="tracker_leftPad5" id="tr_completion" options="No change"/>
+ </menulist>
+ </hbox>
+ </row>
+ <row>
+ <description for="tr_assigned" value="Assigned to"/>
+ <menulist>
+ <menupopup id="tr_assigned" no_lang="1" options="No change"/>
+ </menulist>
+ </row>
+ <row>
+ <description for="canned_response" value="Canned response"/>
+ <menulist>
+ <menupopup statustext="The canned response will be prefix the text you type." id="canned_response" no_lang="1" options="Select one"/>
+ </menulist>
+ </row>
+ <row valign="top">
+ <description for="reply_message" value="Comment"/>
+ <textbox multiline="true" id="reply_message" rows="5" cols="60"/>
+ </row>
+ <row>
+ <button label="Update" id="update" onclick="nm_submit_popup(this); return false;"/>
+ <buttononly label="Cancel" id="cancel" onclick="nm_hide_popup(this,'admin_popup');"/>
+ </row>
+ </rows>
+ </grid>
+ </box>
+ <hbox align="right">
+ <box id="link_popup" class="action_popup prompt">
+ <vbox>
+ <description value="Add / Remove link" class="promptheader"/>
+ <link-entry id="link" class="action_popup-content"/>
+ <hbox>
+ <button label="Add" id="link_action[add]" onclick="nm_submit_popup(this); return false;"/>
+ <button label="Delete" id="link_action[delete]" onclick="nm_submit_popup(this); return false;"/>
+ <buttononly label="Cancel" onclick="nm_hide_popup(this,'link_popup');"/>
+ </hbox>
+ </vbox>
+ </box>
+ <box id="assigned_popup" class="action_popup prompt">
+ <vbox>
+ <description value="Change assigned" class="promptheader"/>
+ <description value="Select users or groups"/>
+ <hbox options="0,0">
+ <menulist>
+ <menupopup class="tracker_user_select" id="assigned" no_lang="1" options="Select one..."/>
+ </menulist>
+ <buttononly align="right" label="Select multiple" onclick="if (selectbox=document.getElementById(form::name('assigned'))) { selectbox.size=5; selectbox.multiple=true; if(selectbox.options[0].value=='')selectbox.options[0]=null; selectbox.name+='[]';} this.style.display='none'; return false;" options="users"/>
+ </hbox>
+ <hbox>
+ <button label="Add" id="assigned_action[add]" onclick="nm_submit_popup(this); return false;"/>
+ <button label="Delete" id="assigned_action[delete]" onclick="nm_submit_popup(this); return false;"/>
+ <buttononly label="Cancel" onclick="nm_hide_popup(this,'assigned_popup');"/>
+ </hbox>
+ </vbox>
+ </box>
+ <box id="group_popup" class="action_popup prompt">
+ <vbox>
+ <description value="Change group" class="promptheader"/>
+ <description value="Select group"/>
+ <menulist>
+ <menupopup type="select-account" class="action_popup-content" id="group" options=",groups"/>
+ </menulist>
+ <hbox>
+ <button label="Ok" id="group_set" onclick="nm_submit_popup(this); return false;"/>
+ <buttononly label="Cancel" onclick="nm_hide_popup(this,'group_popup');"/>
+ </hbox>
+ </vbox>
+ </box>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ <styles>
+ /**
+ * Add / remove link or category popup used for actions on multiple entries
+ */
+
+.action_popup.prompt {
+ position: fixed;
+ top: 200px;
+ left: 450px;
+ width: 90ex;
+ z-index: 20000;
+ display: none;
+ border-collapse:collapse;
+ border-spacing:0px
+}
+.action_popup-content {
+ display:block;
+ padding:2ex;
+ color:#666666;
+ margin: -2px -1px 0px -2px;
+}
+.action_popup > table {
+ width: 100%
+}
+.action_popup .promptheader {
+ padding: 1ex;
+ /*width: 100%*/
+}
+
+.action_select {
+ width: 100%
+}
+ </styles>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/report.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/report.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/report.xet.bak (added)
+++ trunk/tracker/templates/default/report.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.report" template="" lang="" group="0" version="1.9.001">
+ <grid>
+ <columns>
+ <column/>
+ </columns>
+ <rows>
+ <row disabled="!@msg">
+ <html align="center" id="msg" span="all" class="redItalic"/>
+ </row>
+ <row>
+ <groupbox class="noPrint">
+ <caption label="Reports"/>
+ <grid>
+ <columns>
+ <column width="80%"/>
+ <column width="10%"/>
+ </columns>
+ <rows>
+ <row>
+ <menulist>
+ <menupopup id="tracker_reports" options="select one"/>
+ </menulist>
+ <button align="right" label="Delete" id="delete"/>
+ </row>
+ <row>
+ <textbox blur="Save new report" id="new_report"/>
+ <button align="right" label="Save" id="save"/>
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+ </row>
+ <row>
+ <groupbox>
+ <caption label="Report parameter"/>
+ <grid>
+ <columns>
+ <column/>
+ <column/>
+ <column width="20%"/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row valign="baseline">
+ <description value="Tracker Queue"/>
+ <menulist>
+ <menupopup id="tr_tracker" options="All"/>
+ </menulist>
+ <description value="Category"/>
+ <menulist>
+ <menupopup type="select-cat" id="cat_id" onchange="1" options="All"/>
+ </menulist>
+ <description value="Version"/>
+ <menulist>
+ <menupopup id="tr_version" options="All"/>
+ </menulist>
+ </row>
+ <row valign="baseline">
+ <description value="Status"/>
+ <menulist>
+ <menupopup id="tr_status" options="All"/>
+ </menulist>
+ <description value="Resolution" for="filter"/>
+ <menulist>
+ <menupopup id="tr_resolution" onchange="1" options="All"/>
+ </menulist>
+ <description value="Customfield"/>
+ <menulist>
+ <menupopup options="Select one"/>
+ </menulist>
+ </row>
+ <row valign="top">
+ <description value="Creator"/>
+ <menulist>
+ <menupopup type="select-account" id="tr_creator" options="All"/>
+ </menulist>
+ <description value="Assigned to"/>
+ <menulist>
+ <menupopup type="select-account" id="tr_assigned" options="All"/>
+ </menulist>
+ <description/>
+ <description/>
+ </row>
+ <row valign="top">
+ <description value="Reporting Timeframe" span="2"/>
+ <menulist span="2">
+ <menupopup id="tr_timeframe" options="All"/>
+ </menulist>
+ <description/>
+ <description/>
+ </row>
+ <row>
+ <button label="Update" id="update"/>
+ <description/>
+ <description/>
+ <description/>
+ <description/>
+ <button align="right" label="Export as CSV" id="export"/>
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+ </row>
+ <row valign="bottom" height="30">
+ <description align="center" value="Report as bar chart by the selected criterias" span="all"/>
+ </row>
+ <row>
+ <html id="map"/>
+ </row>
+ <row>
+ <image src="reportchart" imagemap="reportchart"/>
+ </row>
+ <row>
+ <hrule/>
+ </row>
+ <row height="30">
+ <description align="center" value="Report as pie chart for the main criterias"/>
+ </row>
+ <row>
+ <grid>
+ <columns>
+ <column width="30%"/>
+ <column width="30%"/>
+ <column width="30%"/>
+ </columns>
+ <rows>
+ <row>
+ <description value="Status"/>
+ <description value="Category"/>
+ <description value="Version"/>
+ </row>
+ <row>
+ <image src="statuschart" imagemap="statuschart"/>
+ <image src="categorychart" imagemap="categorychart"/>
+ <image src="versionchart" imagemap="versionchart"/>
+ </row>
+ <row>
+ <description value="Creator"/>
+ <description value="Assigned to"/>
+ <description value="Customfield"/>
+ </row>
+ <row>
+ <image src="creatorchart" imagemap="creatorchart"/>
+ <image src="assignedchart" imagemap="assignedchart"/>
+ <image src="customchart" imagemap="customchart"/>
+ </row>
+ </rows>
+ </grid>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/default/wizard_import_options.xet.bak
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/default/wizard_import_options.xet.bak?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/default/wizard_import_options.xet.bak (added)
+++ trunk/tracker/templates/default/wizard_import_options.xet.bak Wed May 11 11:51:00 2016
@@ -1,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="tracker.wizard_import_options" template="" lang="" group="0" version="1.9.001">
+ <grid>
+ <columns>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row disabled="!@message">
+ <description id="message" span="all" class="message"/>
+ <description/>
+ </row>
+ <row>
+ <description value="What should be done with unknown values?" span="all"/>
+ </row>
+ <row>
+ <description value="Queue"/>
+ <menulist>
+ <menupopup id="translate_tracker"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Version"/>
+ <menulist>
+ <menupopup id="translate_version"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Status"/>
+ <menulist>
+ <menupopup id="translate_status"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Resolution"/>
+ <menulist>
+ <menupopup id="translate_resolution"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Category"/>
+ <menulist>
+ <menupopup id="translate_cat_id"/>
+ </menulist>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
Added: trunk/tracker/templates/pixelegg/app.less.edited
URL: http://svn.stylite.de/viewvc/egroupware/trunk/tracker/templates/pixelegg/app.less.edited?rev=56118&view=auto
==============================================================================
--- trunk/tracker/templates/pixelegg/app.less.edited (added)
+++ trunk/tracker/templates/pixelegg/app.less.edited Wed May 11 11:51:00 2016
@@ -1,0 +1,35 @@
+/**
+ * EGroupware: CSS with less preprocessor
+ *
+ * TRACKER
+ *
+ * Please do NOT change app.css directly, instead change app.less and compile it!
+ *
+ * @link http://www.egroupware.org
+ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
+ * @author Stefan Reinhardt <[email protected]>
+ * @package tracker
+ * @version $Id: app.less 55255 2016-03-04 15:02:50Z hnategh $
+ */
+
+
+@import (reference) "../../../pixelegg/less/definitions.less";
+@import (reference) "../../../pixelegg/less/def_mobile.less";
+@import (less) "../default/app.css";
+
+//******************************************************************
+// sidebar
+#egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_scrollarea_outerdiv .egw_fw_ui_sidemenu_entry_header_active h1 {font-size: 1.15em !important;}
+
+//**********************************
+// main
+
+#tracker-edit.et2_container
+{
+}
+label.tracker_trIdEdit:before { content: "#"; }
+
+.tracker_assign { width:100% !important;}
+
+// Dialog Tracker bearbeiten und alle weiteren
+// #####################################################
------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
eGroupWare-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs