- added percent, (date-)completed and location for better iCal / SyncML conformance

- remove a lot not needed images
This commit is contained in:
Ralf Becker 2006-03-17 20:53:26 +00:00
parent 3f9535c0e0
commit aa8136ef60
66 changed files with 272 additions and 166 deletions

View File

@ -181,23 +181,26 @@ function cat_id($cats)
$info_names = array(
'type' => 'Type: char(10) task,phone,note,confirm,reject,email,fax',
'from' => 'From: text(64) free text if no Addressbook-entry assigned',
'addr' => 'Addr: text(64) phone-nr/email-address',
'subject' => 'Subject: text(64)',
'from' => 'From: text(255) free text if no Addressbook-entry assigned',
'addr' => 'Addr: text(255) phone-nr/email-address',
'subject' => 'Subject: text(255)',
'des' => 'Description: text long free text',
'location' => 'Location: text(255)',
'responsible' => 'Responsible: int(11) user-id or user-name',
'owner' => 'Owner: int(11) user-id/-name of owner, if empty current user',
'access' => 'Access: public,private',
'cat' => 'Category: int(11) category-id or -name (new ones got created)',
'startdate' => 'Start Date: DateTime: Timestamp or eg. YYYY-MM-DD hh:mm',
'enddate' => 'End Date: DateTime',
'datecompleted'=> 'Date completed: DateTime',
'datemodified'=> 'Date Last Modified: DateTime, if empty = Date Created',
'modifier' => 'Modifier: int(11) user-id, if empty current user',
'priority' => 'Priority: 3=urgent, 2=high, 1=normal, 0=low',
'planned_time'=> 'planned Time: int(11) time used in min',
'used_time' => 'used Time: int(11) time used in min',
'status' => 'Status: char(10) offer,ongoing,call,will-call,done,billed,xx%',
'confirm' => 'Confirmation: char(10) not,accept,finish,both when to confirm',
'status' => 'Status: char(10) offer,not-started,ongoing,call,will-call,done,billed,cancelled',
'percent' => 'Percent completed: int',
// 'confirm' => 'Confirmation: char(10) not,accept,finish,both when to confirm',
'addr_id' => 'Addressbook id, to set use @addr_id(nlast,nfirst,org)'
);
@ -427,7 +430,7 @@ function cat_id($cats)
}
// convert dates to timestamps
foreach(array('startdate','enddate','datemodified') as $date)
foreach(array('startdate','enddate','datemodified','datecompleted') as $date)
{
if (isset($values[$date]) && !is_numeric($date))
{
@ -479,5 +482,3 @@ function cat_id($cats)
$GLOBALS['egw']->template->set_var('hiddenvars',str_replace('{','{',$hiddenvars));
$GLOBALS['egw']->template->pfp('phpgw_body','import');
$GLOBALS['egw']->common->egw_footer();
?>

View File

@ -58,13 +58,17 @@
);
var $xmlrpc = False; // called via xmlrpc
var $tz_offset = 0;
/**
* @var int $tz_offset_s offset in secconds between user and server-time,
* it need to be add to a server-time to get the user-time or substracted from a user-time to get the server-time
*/
var $tz_offset = 0;
var $tz_offset_s = 0;
var $user_time_now;
/**
* @var array $timestamps name of timestamps in an InfoLog entry
*/
var $timestamps = array('info_startdate','info_enddate','info_datemodified','info_datecompleted');
/**
* @var array $config infolog configuration
*/
@ -101,15 +105,20 @@
'defaults' => array(
'task' => 'ongoing', 'phone' => 'call', 'note' => 'done'),
'task' => array(
'offer' => 'offer','ongoing' => 'ongoing','done' => 'done',
'0%' => '0%', '10%' => '10%', '20%' => '20%', '30%' => '30%', '40%' => '40%',
'50%' => '50%', '60%' => '60%', '70%' => '70%', '80%' => '80%', '90%' => '90%',
'billed' => 'billed' ),
'offer' => 'offer', // --> NEEDS-ACTION
'not-started' => 'not-started', // iCal NEEDS-ACTION
'ongoing' => 'ongoing', // iCal IN-PROCESS
'done' => 'done', // iCal COMPLETED
'cancelled' => 'cancelled', // iCal CANCELLED
'billed' => 'billed' ), // --> DONE
'phone' => array(
'call' => 'call','will-call' => 'will-call',
'done' => 'done', 'billed' => 'billed' ),
'call' => 'call', // --> NEEDS-ACTION
'will-call' => 'will-call', // --> IN-PROCESS
'done' => 'done', // iCal COMPLETED
'billed' => 'billed' ), // --> DONE
'note' => array(
'ongoing' => 'ongoing', 'done' => 'done'
'ongoing' => 'ongoing', // iCal has no status on notes
'done' => 'done'
));
$this->so =& new soinfolog();
@ -120,7 +129,7 @@
}
$this->link =& $GLOBALS['egw']->link;
$this->config =& CreateObject('phpgwapi.config');
$this->config =& CreateObject('phpgwapi.config','infolog');
$this->config->read_repository();
$this->customfields = array();
@ -310,7 +319,7 @@
if ($run_link_id2from) $this->link_id2from($data);
// convert system- to user-time
foreach(array('info_startdate','info_enddate','info_datemodified') as $time)
foreach($this->timestamps as $time)
{
if ($data[$time]) $data[$time] += $this->tz_offset_s;
}
@ -416,32 +425,43 @@
}
if ($status_only) // make sure only status gets writen
{
$set_enddate = !$values['info_enddate'] && // set enddate of finished job, only if its not already set
($values['info_status'] == 'done' || $values['info_status'] == 'billed');
$set_completed = !$values['info_datecompleted'] && // set date completed of finished job, only if its not already set
(in_array($values['info_status'],array('done','billed','cancelled')) || (int)$values['info_percent'] == 100);
$backup_values = $values; // to return the full values
$values = array(
'info_id' => $values['info_id'],
'info_status' => $values['info_status'],
'info_percent' => $values['info_percent'],
'info_owner' => $values['info_owner'],
'info_datemodified' => $values['info_datemodified'],
);
if ($set_enddate)
if ($set_completed)
{
$values['info_enddate'] = $this->user_time_now;
$values['info_datecompleted'] = $this->user_time_now;
$values['info_percent'] = '100%';
if (!in_array($values['info_status'],array('done','billed','cancelled'))) $values['info_status'] = 'done';
}
$check_defaults = False;
}
if ($check_defaults)
{
if (!$values['info_enddate'] &&
($values['info_status'] == 'done' || $values['info_status'] == 'billed'))
if (!$values['info_datecompleted'] &&
(in_array($values['info_status'],array('done','billed')) || (int)$values['info_percent'] == 100))
{
$values['info_enddate'] = $this->user_time_now; // set enddate to today if status == done
$values['info_datecompleted'] = $this->user_time_now; // set date completed to today if status == done
}
if (in_array($values['info_status'],array('done','billed')))
{
$values['info_percent'] == '100%';
}
if ((int)$values['info_percent'] == 100 && !in_array($values['info_status'],array('done','billed','cancelled')))
{
$values['info_status'] = 'done';
}
if (count($values['info_responsible']) && $values['info_status'] == 'offer')
{
$values['info_status'] = 'ongoing'; // have to match if not finished
$values['info_status'] = 'not-started'; // have to match if not finished
}
if (isset($values['info_subject']) && empty($values['info_subject']))
{
@ -471,7 +491,7 @@
$to_write = $values;
if ($status_only) $values = array_merge($backup_values,$values);
// convert user- to system-time
foreach(array('info_startdate','info_enddate','info_datemodified') as $time)
foreach($this->timestamps as $time)
{
if ($to_write[$time]) $to_write[$time] -= $this->tz_offset_s;
}
@ -541,7 +561,7 @@
{
foreach($ret as $id => $data)
{
foreach(array('info_startdate','info_enddate','info_datemodified') as $time)
foreach($this->timestamps as $time)
{
if ($data[$time]) $ret[$id][$time] += $this->tz_offset_s;
}
@ -549,7 +569,8 @@
}
if ($this->xmlrpc && is_array($ret))
{
$infos = $ret;
$infos =& $ret;
unset($ret);
$ret = array();
foreach($infos as $id => $data)
{
@ -782,13 +803,15 @@
// translate timestamps
if($data['info_enddate'] == 0) unset($data['info_enddate']);
foreach(array('info_startdate','info_enddate','info_datemodified') as $name)
foreach($this->timestamps as $name)
{
if (isset($data[$name]))
{
$data[$name] = $GLOBALS['server']->date2iso8601($data[$name]);
}
}
$ret[$id]['info_percent'] = (int)$data['info_percent'].'%';
// translate cat_id
if (isset($data['info_cat']))
{
@ -830,7 +853,7 @@
}
}
// translate timestamps
foreach(array('info_startdate','info_enddate','info_datemodified') as $name)
foreach($this->timestamps as $name)
{
if (isset($data[$name]))
{

View File

@ -38,7 +38,7 @@ class datasource_infolog extends datasource
{
$this->datasource('infolog');
$this->valid = PM_COMPLETION|PM_REAL_START|PM_REAL_END|PM_PLANNED_TIME|PM_USED_TIME|PM_RESOURCES;
$this->valid = PM_COMPLETION|PM_PLANNED_START|PM_PLANNED_END|PM_REAL_END|PM_PLANNED_TIME|PM_USED_TIME|PM_RESOURCES;
}
/**
@ -67,9 +67,10 @@ class datasource_infolog extends datasource
}
return array(
'pe_title' => $GLOBALS['boinfolog']->link_title($data),
'pe_completion' => $this->status2completion($data['info_status']).'%',
'pe_real_start' => $data['info_startdate'] ? $data['info_startdate'] : null,
'pe_real_end' => $data['info_enddate'] ? $data['info_enddate'] : null,
'pe_completion' => $data['info_percent'],
'pe_planned_start'=> $data['info_startdate'] ? $data['info_startdate'] : null,
'pe_planned_end' => $data['info_enddate'] ? $data['info_enddate'] : null,
'pe_real_end' => $data['info_datecompleted'] ? $data['info_datecompleted'] : null,
'pe_planned_time' => $data['info_planned_time'],
'pe_used_time' => $data['info_used_time'],
'pe_resources' => count($data['info_responsible']) ? $data['info_responsible'] : array($data['info_owner']),
@ -83,33 +84,6 @@ class datasource_infolog extends datasource
);
}
/**
* converts InfoLog status into a percentage completion
*
* percentages are just used, done&billed give 100, ongoing&will-call give 50, rest (incl. all custome status) give 0
*
* @param string $status
* @return int completion in percent
*/
function status2completion($status)
{
if ((int) $status || substr($status,-1) == '%') return (int) $status; // allready a percentage
switch ($status)
{
case 'done':
case 'billed':
return 100;
case 'will-call':
return 50;
case 'ongoing':
return 10;
}
return 0;
}
/**
* Copy the datasource of a projectelement (InfoLog entry) and re-link it with project $target
*

View File

@ -183,8 +183,8 @@
switch ($filter)
{
case 'done': return " AND info_status IN ('done','billed')";
case 'open': return " AND NOT (info_status IN ('done','billed'))";
case 'done': return " AND info_status IN ('done','billed','cancelled')";
case 'open': return " AND NOT (info_status IN ('done','billed','cancelled'))";
case 'offer': return " AND info_status = 'offer'";
}
return '';
@ -229,7 +229,7 @@
}
return " AND ($today <= info_startdate AND info_startdate < $tomorrow)";
case 'limit':
return " AND (info_modified >= '$today' OR NOT (info_status IN ('done','billed')))";
return " AND (info_modified >= '$today' OR NOT (info_status IN ('done','billed','cancelled')))";
}
return '';
}

View File

@ -125,6 +125,7 @@
}
if (!isset($info['info_anz_subs'])) $info['info_anz_subs'] = $this->bo->anzSubs($id);
$this->bo->link_id2from($info,$action,$action_id); // unset from for $action:$action_id
$info['info_percent'] = (int) $info['info_percent'].'%';
$readonlys["edit[$id]"] = !$this->bo->check_access($info,EGW_ACL_EDIT);
$readonlys["close[$id]"] = $done || ($readonlys["edit_status[$id]"] = !($this->bo->check_access($info,EGW_ACL_EDIT) ||
@ -336,6 +337,7 @@
break;
}
$values['main'][1] = $this->get_info($action_id,$readonlys['main']);
$values['main']['no_times'] = !$this->prefs['show_times'];
break;
}
$readonlys['cancel'] = $action != 'sp';
@ -628,9 +630,12 @@
{
$content['info_cat'] = (int) $_REQUEST['cat_id'];
}
$now = time() + 3600*$GLOBALS['egw_info']['user']['preferences']['common']['tz_offset']; // time() is server-time and we need a user-time
$today = mktime(0,0,0,date('m',$now),date('d',$now),date('Y',$now)); // time=00:00
switch($this->prefs['set_start'])
{
case 'date': default: $set_startdate = mktime(0,0,0,date('m',$this->bo->user_time_now),date('d',$this->bo->user_time_now),date('Y',$this->bo->user_time_now)); break;
case 'datetime': $set_startdate = $this->bo->user_time_now; break;
case 'empty': $set_startdate = 0; break;
}
if (intval($content['info_link_id']) > 0 && !$this->link->get_link($content['info_link_id']))
{
$content['info_link_id'] = 0; // link has been deleted
@ -655,13 +660,14 @@
*/
$content['info_type'] = $parent['info_type'];
$content['info_status'] = $this->bo->status['defaults'][$content['info_type']];
$content['info_percent'] = '0%';
$content['info_confirm'] = 'not';
$content['info_subject']=lang($this->messages['re']).' '.$parent['info_subject'];
$content['info_des'] = '';
$content['info_lastmodified'] = '';
if ($content['info_startdate'] < $this->bo->user_time_now) // parent-startdate is in the past => today
{
$content['info_startdate'] = $today;
$content['info_startdate'] = $set_startdate;
}
if ($content['info_enddate'] < $this->bo->user_time_now) // parent-enddate is in the past => empty
{
@ -738,7 +744,7 @@
break; // normal edit
}
case 'new': // new entry
$content['info_startdate'] = (int) $_GET['startdate'] ? (int) $_GET['startdate'] : $today;
$content['info_startdate'] = (int) $_GET['startdate'] ? (int) $_GET['startdate'] : $set_startdate;
$content['info_priority'] = 1; // normal
$content['info_owner'] = $this->user;
if ($type != '')
@ -746,6 +752,7 @@
$content['info_type'] = $type;
}
$content['info_status'] = $this->bo->status['defaults'][$content['info_type']];
$content['info_percent'] = '0%';
break;
}
if (!isset($this->bo->enums['type'][$content['info_type']]))

View File

@ -11,11 +11,27 @@
/* $Id$ */
require_once PHPGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php';
require_once PHPGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php';
require_once EGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php';
require_once EGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php';
class vcalinfolog extends boinfolog
{
var $status2vtodo = array(
'offer' => 'NEEDS-ACTION',
'not-started' => 'NEEDS-ACTION',
'ongoing' => 'IN-PROCESS',
'done' => 'COMPLETED',
'cancelled' => 'CANCELLED',
'billed' => 'DONE',
'call' => 'NEEDS-ACTION',
'will-call' => 'IN-PROCESS',
);
var $vtodo2status = array(
'NEEDS-ACTION' => 'not-started',
'IN-PROCESS' => 'ongoing',
'COMPLETED' => 'done',
'CANCELLED' => 'cancelled',
);
function exportVTODO($_taskID, $_version)
{
$taskData = $this->read($_taskID);
@ -39,16 +55,20 @@
$vevent->setAttribute('SUMMARY',$taskData['info_subject']);
$vevent->setAttribute('DESCRIPTION',$taskData['info_des']);
$vevent->setAttribute('LOCATION',$taskData['info_location']);
if($taskData['info_startdate'])
$vevent->setAttribute('DTSTART',$taskData['info_startdate']);
if($taskData['info_enddate'])
$vevent->setAttribute('DUE',$taskData['info_enddate']);
if($taskData['info_datecompleted'])
$vevent->setAttribute('COMPLETED',$taskData['info_datecompleted']);
$vevent->setAttribute('DTSTAMP',time());
$vevent->setAttribute('CREATED',$GLOBALS['phpgw']->contenthistory->getTSforAction($eventGUID,'add'));
$vevent->setAttribute('LAST-MODIFIED',$GLOBALS['phpgw']->contenthistory->getTSforAction($eventGUID,'modify'));
$vevent->setAttribute('UID',$taskGUID);
$vevent->setAttribute('CLASS',(($taskData['info_access'] == 'public')?'PUBLIC':'PRIVATE'));
$vevent->setAttribute('STATUS',(($taskData['info_status'] == 'completed')?'COMPLETED':'NEEDS-ACTION'));
$vevent->setAttribute('CLASS',$taskData['info_access'] == 'public' ? 'PUBLIC' : 'PRIVATE');
$vevent->setAttribute('STATUS',isset($this->status2vtodo[$taskData['info_status']]) ?
$this->status2vtodo[$taskData['info_status']] : 'NEEDS-ACTION');
// 3=urgent => 1, 2=high => 2, 1=normal => 3, 0=low => 4
$vevent->setAttribute('PRIORITY',4-$taskData['info_priority']);
@ -71,8 +91,6 @@
function importVTODO(&$_vcalData, $_taskID=-1)
{
$botranslation = CreateObject('phpgwapi.translation');
$vcal = &new Horde_iCalendar;
if(!$vcal->parsevCalendar($_vcalData))
{
@ -86,11 +104,10 @@
{
if($_taskID>0)
$taskData['info_id'] = $_taskID;
foreach($component->_attributes as $attributes)
{
#print $attributes['name'].' - '.$attributes['value'].'<br>';
#$attributes['value'] = $GLOBALS['egw']->translation->convert($attributes['value'],'UTF-8');
switch($attributes['name'])
{
case 'CLASS':
@ -99,9 +116,15 @@
case 'DESCRIPTION':
$taskData['info_des'] = $attributes['value'];
break;
case 'LOCATION':
$taskData['info_location'] = $attributes['value'];
break;
case 'DUE':
$taskData['info_enddate'] = $attributes['value'];
break;
case 'COMPLETED':
$taskData['info_datecompleted'] = $attributes['value'];
break;
case 'DTSTART':
$taskData['info_startdate'] = $attributes['value'];
break;
@ -117,21 +140,20 @@
}
break;
case 'STATUS':
$taskData['info_status'] = (strtolower($attributes['value']) == 'completed') ? 'done' : 'ongoing';
$taskData['info_status'] = isset($this->vtodo2status[strtoupper($attributes['value'])]) ?
$this->vtodo2status[strtoupper($attributes['value'])] : 'ongoing';
break;
case 'SUMMARY':
$taskData['info_subject'] = $attributes['value'];
break;
}
}
$taskData = $GLOBALS['egw']->translation->convert($taskData,'UTF-8');
#_debug_array($eventData);exit;
return $this->write($taskData);
}
}
return FALSE;
}
}
?>

View File

@ -71,15 +71,6 @@
'xmlrpc' => True,
'admin' => False
),
/* 'longNames' => array(
'type' => 'check',
'label' => 'Show full usernames',
'name' => 'longNames',
'help' => 'Should InfoLog use full names (surname and familyname) or just the loginnames.',
'xmlrpc' => True,
'admin' => False
),
*/
'show_links' => array(
'type' => 'select',
'label' => 'Show in the InfoLog list',
@ -105,6 +96,19 @@
'xmlrpc' => True,
'admin' => False
),
'set_start' => array(
'type' => 'select',
'label' => 'Startdate for new entries',
'name' => 'set_start',
'values' => array(
'date' => lang('todays date'),
'datetime' => lang('actual date and time'),
'empty' => lang('leave it empty'),
),
'help' => 'To what should the startdate of new entries be set.',
'xmlrpc' => True,
'admin' => False
),
);
unset($show_entries);

File diff suppressed because one or more lines are too long

View File

@ -3,6 +3,7 @@
- subprojects from infolog de - Untereinträge von
0% infolog de 0%
10% infolog de 10%
100% infolog de 100%
20% infolog de 20%
30% infolog de 30%
40% infolog de 40%
@ -16,6 +17,7 @@ a short subject for the entry infolog de einen kurzen Titel f
abort without deleting infolog de Abruch ohne zu Löschen
accept infolog de bei Annahme
action infolog de Befehle
actual date and time infolog de aktuelles Datum und Uhrzeit
add infolog de Hinzufügen
add a file infolog de Datei anhängen
add a new entry infolog de einen neuen Eintrag anlegen
@ -38,6 +40,7 @@ billed infolog de abgerechnet
both infolog de Annahme+erledigt
call infolog de anrufen
cancel infolog de Abbruch
cancelled infolog de Abgesagt
categories infolog de Kategorien
category infolog de Kategorie
change the status of an entry, eg. close it infolog de Status eines Eintrags ändern, zB. ihn als erledigt markieren
@ -47,6 +50,7 @@ click here to create the link infolog de hier klicken um die Verkn
click here to start the search infolog de hier klicken um die Suche zu starten
close infolog de Schließen
comment infolog de Kommentar
completed infolog de Erledigt
configuration infolog de Konfiguration
confirm infolog de Bestätigung
contact infolog de Kontakt
@ -67,6 +71,8 @@ custom fields, typ and status common de Benutzerdefinierte Felder, Typen und Sta
custom regarding infolog de Benutzerdefinierter Bezug
custom status for typ infolog de Benutzerdefinierter Status für Typ
customfields infolog de Benutzerdefinierte Felder
date completed infolog de Erledigt am
date completed (leave it empty to have it automatic set if status is done or billed) infolog de Fertigstellungsdatum (leer lassen um es automatisch zu setzen wenn der Status erledigt oder abgerechnet ist)
datecreated infolog de Erstellt am
dates, status, access infolog de Daten, Status, Zugriff
days infolog de Tage
@ -110,6 +116,7 @@ fieldseparator infolog de Feldbegrenzer
finish infolog de wenn erledigt
for which types should this field be used infolog de für welche Typen soll dieses Feld benutzt werden
from infolog de Von
general infolog de Allgemein
high infolog de hoch
id infolog de Id
if not set, the line with search and filters is hidden for less entries then "max matches per page" (as defined in your common preferences). infolog de Falls nicht gesetzt, wird die Suche und die Filter ausgeblendet für weniger Einträge als "maximale Treffer pro Seite" (in ihren allg. Einstellungen definiert).
@ -132,14 +139,16 @@ invalid filename infolog de Ung
label<br>helptext infolog de Beschriftung<br>Hilfetext
last changed infolog de letzte Änderung
last modified infolog de zuletzt geändert
leave it empty infolog de leer lassen
leave without saveing the entry infolog de Abbruch ohne den Eintrag zu speichern
leaves without saveing infolog de Abbroch ohne speichern
length<br>rows infolog de Länge<br>Zeilen
length<br>rows infolog de Länge<br />Zeilen
link infolog de Verknüpfung
links infolog de Verknüpfungen
links of this entry infolog de Verknüpfungen dieses Eintrags
list all categories infolog de Alle Kathegorien anzeigen
list no subs/childs infolog de Untereinträge nicht anzeigen
location infolog de Ort
longer textual description infolog de längere textliche Beschreibung
low infolog de niedrig
max length of the input [, length of the inputfield (optional)] infolog de max. Länge der Eingabe [, Länge des Eingabefeldes (optional)]
@ -159,6 +168,7 @@ none infolog de keine
normal infolog de normal
not infolog de nicht
not assigned infolog de nicht zugewiesen
not-started infolog de nicht gestartet
note infolog de Notiz
number of records to read (%1) infolog de Anzahl Datensätze lesen (%1)
number of row for a multiline inputfield or line of a multi-select-box infolog de Anzahl Zeilen für ein mehrzeiliges Eingabefeld oder eines mehrfachen Auswahlfeldes
@ -179,6 +189,7 @@ path on (web-)serverside<br>eg. /var/samba/share infolog de Pfad auf (Web-)Serve
path to user and group files has to be outside of the webservers document-root!!! infolog de Pfad zu Benutzer- und Gruppen-Dateien MUSS AUSSERHALB des Wurzelverzeichnisses des Webservers (document-root) liegen!!!
pattern for search in addressbook infolog de Muster für Suche im Adressbuch
pattern for search in projects infolog de Muster für Suche des Projekts
percent completed infolog de Prozent erledigt
permission denied infolog de Zugriff verweigert
phone infolog de Anruf
phone/email infolog de Telefon/Email
@ -233,10 +244,11 @@ small view infolog de schmale Ansicht
start a new search, cancel this link infolog de eine neue Suche starten, diese Verknüpfung abbrechen
startdate infolog de Startdatum
startdate enddate infolog de Startdatum Endedatum
startdate for new entries infolog de Startdatum für neue Einträge
startrecord infolog de Startdatensatz
status infolog de Status
status ... infolog de Status ...
sub infolog de Unter-<br>einträge
sub infolog de Unter-<br />einträge
sub-entries become subs of the parent or main entries, if there's no parent infolog de Untereinträge gehören dann zum übergeordneten Eintrag oder werden Haupteinträge wenn es keinen übergeordneten gibt.
subject infolog de Titel
task infolog de Aufgabe
@ -248,7 +260,9 @@ this is the filter infolog uses when you enter the application. filters limit th
til when should the todo or phonecall be finished infolog de bis wann soll der Auftrag oder Anruf erledigt sein
times infolog de Zeiten
to many might exceed your execution-time-limit infolog de zu viel können Ihre Laufzeitbeschränkung überschreiten
to what should the startdate of new entries be set. infolog de Auf was soll das Startdatum von neuen Einträgen gesetzt werden.
today infolog de Heute
todays date infolog de heutiges Datum
todo infolog de Aufgabe
translation infolog de Translation
typ infolog de Typ

View File

@ -3,6 +3,7 @@
- subprojects from infolog en - Subprojects from
0% infolog en 0%
10% infolog en 10%
100% infolog en 100%
20% infolog en 20%
30% infolog en 30%
40% infolog en 40%
@ -16,6 +17,7 @@ a short subject for the entry infolog en a short subject for the entry
abort without deleting infolog en Abort without deleting
accept infolog en accept
action infolog en Action
actual date and time infolog en actual date and time
add infolog en Add
add a file infolog en Add a file
add a new entry infolog en Add a new Entry
@ -38,6 +40,7 @@ billed infolog en billed
both infolog en both
call infolog en call
cancel infolog en Cancel
cancelled infolog en cancelled
categories infolog en Categories
category infolog en Category
change the status of an entry, eg. close it infolog en Change the status of an entry, eg. close it
@ -47,6 +50,7 @@ click here to create the link infolog en click here to create the Link
click here to start the search infolog en click here to start the search
close infolog en Close
comment infolog en Comment
completed infolog en Completed
configuration infolog en Configuration
confirm infolog en Confirm
contact infolog en Contact
@ -67,6 +71,8 @@ custom fields, typ and status common en Custom fields, type and status
custom regarding infolog en Custom regarding
custom status for typ infolog en Custom status for type
customfields infolog en Customfields
date completed infolog en Date completed
date completed (leave it empty to have it automatic set if status is done or billed) infolog en Date completed (leave it empty to have it automatic set if status is done or billed)
datecreated infolog en date created
dates, status, access infolog en Dates, Status, Access
days infolog en days
@ -110,6 +116,7 @@ fieldseparator infolog en Fieldseparator
finish infolog en finish
for which types should this field be used infolog en for which types should this field be used
from infolog en From
general infolog en General
high infolog en high
id infolog en Id
if not set, the line with search and filters is hidden for less entries then "max matches per page" (as defined in your common preferences). infolog en If not set, the line with search and filters is hidden for less entries then "max matches per page" (as defined in your common preferences).
@ -132,6 +139,7 @@ invalid filename infolog en Invalid filename
label<br>helptext infolog en Label<br>Helptext
last changed infolog en Last changed
last modified infolog en Last modified
leave it empty infolog en leave it empty
leave without saveing the entry infolog en leave without saveing the entry
leaves without saveing infolog en leaves without saveing
length<br>rows infolog en Length<br>Rows
@ -140,6 +148,7 @@ links infolog en Links
links of this entry infolog en Links of this entry
list all categories infolog en List all categories
list no subs/childs infolog en List no Subs/Childs
location infolog en Location
longer textual description infolog en longer textual description
low infolog en low
max length of the input [, length of the inputfield (optional)] infolog en max length of the input [, length of the inputfield (optional)]
@ -159,6 +168,7 @@ none infolog en None
normal infolog en normal
not infolog en not
not assigned infolog en not assigned
not-started infolog en not started
note infolog en Note
number of records to read (%1) infolog en Number of records to read (%1)
number of row for a multiline inputfield or line of a multi-select-box infolog en number of row for a multiline inputfield or line of a multi-select-box
@ -179,6 +189,7 @@ path on (web-)serverside<br>eg. /var/samba/share infolog en path on (web-)server
path to user and group files has to be outside of the webservers document-root!!! infolog en Path to user and group files HAS TO BE OUTSIDE of the webservers document-root!!!
pattern for search in addressbook infolog en pattern for search in Addressbook
pattern for search in projects infolog en pattern for search in Projects
percent completed infolog en Percent completed
permission denied infolog en Permission denied
phone infolog en Phone Call
phone/email infolog en Phone/Email
@ -233,6 +244,7 @@ small view infolog en small view
start a new search, cancel this link infolog en start a new search, cancel this link
startdate infolog en Start Date
startdate enddate infolog en Start Date End Date
startdate for new entries infolog en Startdate for new entries
startrecord infolog en Startrecord
status infolog en Status
status ... infolog en Status ...
@ -248,7 +260,9 @@ this is the filter infolog uses when you enter the application. filters limit th
til when should the todo or phonecall be finished infolog en til when should the ToDo or Phone call be finished
times infolog en Times
to many might exceed your execution-time-limit infolog en to many might exceed your execution-time-limit
to what should the startdate of new entries be set. infolog en To what should the startdate of new entries be set.
today infolog en Today
todays date infolog en todays date
todo infolog en ToDo
translation infolog en Translation
typ infolog en Type

View File

@ -12,7 +12,7 @@
/* $Id$ */
$setup_info['infolog']['name'] = 'infolog';
$setup_info['infolog']['version'] = '1.2.001';
$setup_info['infolog']['version'] = '1.2.002';
$setup_info['infolog']['app_order'] = 5;
$setup_info['infolog']['tables'] = array('egw_infolog','egw_infolog_extra');
$setup_info['infolog']['enable'] = 1;
@ -73,3 +73,5 @@
);

View File

@ -36,7 +36,10 @@
'info_link_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'),
'info_priority' => array('type' => 'int','precision' => '2','default' => '1'),
'pl_id' => array('type' => 'int','precision' => '4'),
'info_price' => array('type' => 'float','precision' => '8')
'info_price' => array('type' => 'float','precision' => '8'),
'info_percent' => array('type' => 'int','precision' => '2','default' => '0'),
'info_datecompleted' => array('type' => 'int','precision' => '8'),
'info_location' => array('type' => 'varchar','precision' => '255')
),
'pk' => array('info_id'),
'fk' => array(),

View File

@ -484,4 +484,45 @@
return $GLOBALS['setup_info']['infolog']['currentver'] = '1.2.001';
}
$test[] = '1.2.001';
function infolog_upgrade1_2_001()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_infolog','info_percent',array(
'type' => 'int',
'precision' => '2',
'default' => '0'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_infolog','info_datecompleted',array(
'type' => 'int',
'precision' => '8'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_infolog','info_location',array(
'type' => 'varchar',
'precision' => '255'
));
// all not explicit named stati have the default percent 0
$GLOBALS['egw_setup']->oProc->query("UPDATE egw_infolog SET info_percent=10 WHERE info_status='ongoing'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->oProc->query("UPDATE egw_infolog SET info_percent=50 WHERE info_status='will-call'",__LINE__,__FILE__);
for($p = 0; $p <= 90; $p += 10)
{
$GLOBALS['egw_setup']->oProc->query("UPDATE egw_infolog SET info_percent=$p,info_status='".(!$p ? 'not-started' : 'ongoing').
"' WHERE info_status = '$p%'",__LINE__,__FILE__);
}
$GLOBALS['egw_setup']->oProc->query("UPDATE egw_infolog SET info_datecompleted=info_datemodified,info_percent=100 WHERE info_status IN ('done','billed','100%')",__LINE__,__FILE__);
// remove the percentages from the custom stati, if they exist
$config =& CreateObject('phpgwapi.config','infolog');
$config->read_repository();
if (is_array($config->config_data['status']['task']))
{
$config->config_data['status']['task'] = array_diff($config->config_data['status']['task'],
array('0%','10%','20%','30%','40%','50%','60%','70%','80%','90%','100%'));
$config->save_repository();
}
return $GLOBALS['setup_info']['infolog']['currentver'] = '1.2.002';
}
?>

View File

@ -13,7 +13,7 @@
</row>
<row class="row" valign="top">
<description/>
<textbox multiline="true" rows="14" cols="80" no_lang="1" id="info_des" statustext="enter a textual description of the log-entry"/>
<textbox multiline="true" rows="13" cols="75" no_lang="1" id="info_des" statustext="enter a textual description of the log-entry"/>
</row>
</rows>
</grid>
@ -40,7 +40,7 @@
</rows>
</grid>
</template>
<template id="infolog.edit.delegation" template="" lang="" group="0" version="1.2.001">
<template id="infolog.edit.delegation" template="" lang="" group="0" version="1.2.002">
<grid width="100%" height="245">
<columns>
<column width="100"/>
@ -48,7 +48,7 @@
</columns>
<rows>
<row class="th">
<description span="all" value="Priority"/>
<description span="all" value="General"/>
</row>
<row class="row">
<description value="Priority" options=",,,info_priority"/>
@ -56,6 +56,10 @@
<menupopup id="info_priority" statustext="select a priority for this task"/>
</menulist>
</row>
<row class="row">
<description options=",,,info_location" value="Location"/>
<textbox id="info_location" size="80" maxlength="255"/>
</row>
<row class="th">
<description span="all" value="Delegation"/>
</row>
@ -119,12 +123,12 @@
</rows>
</grid>
</template>
<template id="infolog.edit" template="" lang="" group="0" version="1.2.001">
<template id="infolog.edit" template="" lang="" group="0" version="1.2.002">
<grid width="100%">
<columns>
<column width="103"/>
<column width="260"/>
<column width="120"/>
<column width="140"/>
<column/>
</columns>
<rows>
@ -148,13 +152,13 @@
</row>
<row class="row">
<description value="Contact" options=",,,info_from"/>
<textbox size="35" maxlength="64" id="info_from" statustext="Custom contact-information, leave emtpy to use information from most recent link" blur="@blur_title"/>
<textbox size="36" maxlength="255" id="info_from" statustext="Custom contact-information, leave emtpy to use information from most recent link" blur="@blur_title"/>
<description value="Phone/Email" options=",,,_info_addr"/>
<textbox size="35" maxlength="64" id="info_addr" statustext="Custom contact-address, leave empty to use information from most recent link"/>
<textbox size="30" maxlength="255" id="info_addr" statustext="Custom contact-address, leave empty to use information from most recent link"/>
</row>
<row class="row">
<description value="Subject" options=",,,info_subject"/>
<textbox size="64" maxlength="64" span="all" id="info_subject" needed="1" statustext="a short subject for the entry"/>
<textbox size="80" maxlength="255" span="all" id="info_subject" needed="1" statustext="a short subject for the entry"/>
</row>
<row valign="top" height="250">
<tabbox span="all">
@ -186,8 +190,16 @@
<row class="row">
<description value="Status" options=",,,info_status"/>
<menulist>
<menupopup id="info_status" statustext="@status_help"/>
<menupopup id="info_status" statustext="@status_help" onchange="if (this.value=='done' || this.value=='billed') this.form['exec[info_percent]'].value=100; else if (this.value=='not-started') this.form['exec[info_percent]'].value=0;"/>
</menulist>
<description value="Completed" options=",,,info_percent"/>
<menulist>
<menupopup type="select-percent" id="info_percent" statustext="Percent completed" onchange="if (this.value==100 &amp;&amp; this.form['exec[info_status]'].value != 'done' &amp;&amp; this.form['exec[info_status]'].value != 'billed' &amp;&amp; this.form['exec[info_status]'].value != 'cancelled') this.form['exec[info_status]'].value='done'; else if (this.value != 100 &amp;&amp; this.form['exec[info_status]'].value != 'cancelled') this.form['exec[info_status]'].value=this.value != 0 ? 'ongoing' : 'not-started'; else if (this.value==0 &amp;&amp; this.form['exec[info_status]'].value != 'cancelled' &amp;&amp; this.form['exec[info_status]'].value != 'offer') this.form['exec[info_status]'].value='not-started'; "/>
</menulist>
</row>
<row class="row">
<description options=",,,info_datecompleted" value="Completed"/>
<date-time id="info_datecompleted" statustext="Date completed (leave it empty to have it automatic set if status is done or billed)"/>
<description value="Private" options=",,,info_access"/>
<checkbox options="private,public" id="info_access" statustext="should this entry only be visible to you and people you grant privat access via the ACL"/>
</row>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

View File

Before

Width:  |  Height:  |  Size: 963 B

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

View File

@ -5,20 +5,20 @@
<description class="headertext bold" value="InfoLog"/>
<styles>.bold { font-weight: bold; }</styles>
</template>
<template id="infolog.index.header_right" template="" lang="" group="0" version="1.0.1.001">
<template id="infolog.index.header_right" template="" lang="" group="0" version="1.2.002">
<hbox>
<description class="headertext" value="Add:"/>
<button image="task" label="ToDo" id="add[task]" statustext="Add a new ToDo" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=task&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="phone" label="Phonecall" id="add[phone]" statustext="Add a new Phonecall" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=phone&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="note" label="Note" id="add[note]" statustext="Add a new Note" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="task" label="ToDo" id="add[task]" statustext="Add a new ToDo" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=task&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="phone" label="Phonecall" id="add[phone]" statustext="Add a new Phonecall" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=phone&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="note" label="Note" id="add[note]" statustext="Add a new Note" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
</hbox>
</template>
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.0.1.002">
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.2.002">
<grid>
<columns>
<column width="5%"/>
<column width="2%"/>
<column/>
<column width="8%"/>
<column width="120"/>
<column disabled="@no_times"/>
<column width="8%"/>
<column width="12%"/>
@ -27,17 +27,19 @@
</columns>
<rows>
<row class="th">
<vbox>
<vbox orient="0,0">
<description value="Type"/>
<description value="Status"/>
<description value="Status" align="center"/>
<description value="Completed" align="right"/>
</vbox>
<vbox>
<vbox data="" rows="2" cols="1" options="2">
<description value="Subject"/>
<description value="Description"/>
</vbox>
<vbox>
<description value="Startdate"/>
<description value="Enddate"/>
<description value="Date completed"/>
</vbox>
<vbox>
<description value="Times"/>
@ -52,19 +54,21 @@
<description value="Action"/>
</row>
<row class="row" valign="top">
<hbox align="center" orient="2,2">
<hbox align="center" orient=",5">
<image label="$row_cont[info_type]" src="${row}[info_type]"/>
<button image="$row_cont[info_status]" ro_image="$row_cont[info_status]" label="$row_cont[info_status]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="$row_cont[info_status]" ro_image="$row_cont[info_status]" label="$row_cont[info_status]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="$row_cont[info_percent]" ro_image="$row_cont[info_percent]" label="$row_cont[info_percent]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
</hbox>
<vbox orient="0,0">
<link label="%s $row_cont[info_addr]" id="${row}[info_link]"/>
<link label="%s $row_cont[info_addr]" id="${row}[info_link]" options="b"/>
<description class="$row_cont[sub_class]" no_lang="1" id="${row}[info_subject]"/>
<description options=",,1" no_lang="1" id="${row}[info_des]"/>
<link-string id="${row}[filelinks]"/>
</vbox>
<vbox orient="0,0">
<date id="${row}[info_startdate]" readonly="true"/>
<date-time options=",8" id="${row}[info_startdate]" readonly="true"/>
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
<date-time id="${row}[info_datecompleted]" readonly="true"/>
</vbox>
<vbox>
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
@ -83,12 +87,12 @@
</menulist>
</vbox>
<vbox align="center" orient="0,0">
<button image="new" label="Add sub" align="center" id="sp[$row_cont[info_id]]" statustext="Add a new sub-task, -note, -call to this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;action=sp&amp;action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="new" label="Add sub" align="center" id="sp[$row_cont[info_id]]" statustext="Add a new sub-task, -note, -call to this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;action=sp&amp;action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="view.gif" label="View subs" align="center" id="view[$row_cont[info_id]]" statustext="View all subs of this entry"/>
<button image="parent.gif" label="View parent" align="center" id="view[$row_cont[info_id_parent]]" statustext="View the parent of this entry and all his subs"/>
</vbox>
<hbox>
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="delete" label="Delete" id="delete[$row_cont[info_id]]" statustext="Delete this entry" onclick="return $row_cont[info_anz_subs] || confirm('Delete this entry');"/>
<button image="done" label="Close" id="close[$row_cont[info_id]]" statustext="Sets the status of this entry and its subs to done"/>
</hbox>
@ -96,12 +100,12 @@
</rows>
</grid>
</template>
<template id="infolog.index.rows" template="" lang="" group="0" version="1.0.1.003">
<template id="infolog.index.rows" template="" lang="" group="0" version="1.2.002">
<grid>
<columns>
<column width="2%"/>
<column/>
<column width="8%"/>
<column width="120"/>
<column disabled="@no_times"/>
<column width="8%"/>
<column width="12%"/>
@ -113,6 +117,7 @@
<vbox orient="0,0">
<nextmatch-filterheader options="Type ..." id="info_type"/>
<nextmatch-filterheader options="Status ..." id="info_status"/>
<nextmatch-sortheader label="Completed" id="info_percent" align="right"/>
</vbox>
<grid width="100%" spacing="0" padding="0">
<columns>
@ -133,6 +138,7 @@
<vbox>
<nextmatch-sortheader label="Startdate" id="info_startdate"/>
<nextmatch-sortheader label="Enddate" id="info_enddate"/>
<nextmatch-sortheader id="info_datecompleted" label="Date completed"/>
</vbox>
<vbox>
<nextmatch-sortheader label="Times" id="info_used_time"/>
@ -149,7 +155,8 @@
<row class="row" valign="top">
<hbox align="center" orient=",5">
<image label="$row_cont[info_type]" src="${row}[info_type]"/>
<button image="$row_cont[info_status]" ro_image="$row_cont[info_status]" label="$row_cont[info_status]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="$row_cont[info_status]" ro_image="$row_cont[info_status]" label="$row_cont[info_status]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="$row_cont[info_percent]" ro_image="$row_cont[info_percent]" label="$row_cont[info_percent]" id="edit_status[$row_cont[info_id]]" statustext="Change the status of an entry, eg. close it" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
</hbox>
<vbox orient="0,0">
<link label="%s $row_cont[info_addr]" id="${row}[info_link]" options="b"/>
@ -160,6 +167,7 @@
<vbox orient="0,0">
<date-time options=",8" id="${row}[info_startdate]" readonly="true"/>
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
<date-time id="${row}[info_datecompleted]" readonly="true"/>
</vbox>
<vbox>
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
@ -178,12 +186,12 @@
</menulist>
</vbox>
<vbox align="center" orient="0,0">
<button image="new" label="Add sub" align="center" id="sp[$row_cont[info_id]]" statustext="Add a new sub-task, -note, -call to this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;action=sp&amp;action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="new" label="Add sub" align="center" id="sp[$row_cont[info_id]]" statustext="Add a new sub-task, -note, -call to this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;action=sp&amp;action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="view.gif" label="View subs" align="center" id="view[$row_cont[info_id]]" statustext="View all subs of this entry"/>
<button image="parent.gif" label="View parent" align="center" id="view[$row_cont[info_id_parent]]" statustext="View the parent of this entry and all his subs"/>
</vbox>
<hbox>
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button image="edit" label="Edit" id="edit[$row_cont[info_id]]" statustext="Edit this entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button image="delete" label="Delete" id="delete[$row_cont[info_id]]" statustext="Delete this entry" onclick="return $row_cont[info_anz_subs] || confirm('Delete this entry');"/>
<button image="done" label="Close" id="close[$row_cont[info_id]]" statustext="Sets the status of this entry and its subs to done"/>
</hbox>
@ -214,7 +222,7 @@
</row>
<row>
<hbox span="all">
<button label="Add" id="add[note]" statustext="Add a new Entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=550,scrollbars=yes,status=yes'); return false;"/>
<button label="Add" id="add[note]" statustext="Add a new Entry" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&amp;type=note&amp;action=$cont[action]&amp;action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
<button label="Cancel" id="cancel" statustext="Back to main list"/>
</hbox>
</row>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

View File

@ -1,34 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>eGroupWare Info Log Icons</title>
</head>
<body bgcolor=Silver>
Types:<br>
<img src="phone.gif" width="20" height="20" alt="Telefon" border="0"> &nbsp;
<img src="task.gif" width="20" height="20" alt="Aufgabe" border="0"> &nbsp;
<img src="note.gif" width="20" height="20" alt="Notiz" border="0"> &nbsp;
<img src="confirm.gif" width="20" height="20" alt="Bestätigung" border="0"> &nbsp;
<img src="reject.gif" width="20" height="20" alt="Absage" border="0">
<p>
Status:<br>
<img src="offer.gif" width="20" height="20" alt="Angebot" border="0"> &nbsp;
<img src="ongoing.gif" width="20" height="20" alt="läuft" border="0"> &nbsp;
<img src="call.gif" width="20" height="20" alt="anrufen" border="0"> &nbsp;
<img src="will-call.gif" width="20" height="20" alt="ruft zurück" border="0">
&nbsp;
<img src="done.gif" width="20" height="20" alt="erledigt" border="0"> &nbsp;
<img src="billed.gif" width="20" height="20" alt="abgerechnet" border="0">
<p>
Actions:<br>
<img src="new.gif" width="20" height="20" alt="neue Teilaufgabe" border="0">
&nbsp;
<img src="view.gif" width="20" height="20" alt="Teilaufgagen anzeigen"
border="0"> &nbsp;
<img src="edit.gif" width="20" height="20" alt="bearbeiten" border="0"> &nbsp;
<img src="delete.gif" width="20" height="20" alt="löschen" border="0">
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1001 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 963 B