mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 09:09:04 +01:00
added ability to add timesheets to infolog entries
This commit is contained in:
parent
2362499507
commit
6c4cda6bfc
@ -134,19 +134,34 @@
|
|||||||
$readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD);
|
$readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD);
|
||||||
$readonlys["view[$id]"] = $info['info_anz_subs'] < 1;
|
$readonlys["view[$id]"] = $info['info_anz_subs'] < 1;
|
||||||
$readonlys['view[0]'] = True; // no parent
|
$readonlys['view[0]'] = True; // no parent
|
||||||
|
$readonlys["timesheet[$id]"] = !$this->prefs['show_times'] || !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
|
||||||
|
|
||||||
if (!$show_links) $show_links = $this->prefs['show_links'];
|
if (!$show_links) $show_links = $this->prefs['show_links'];
|
||||||
|
|
||||||
if ($show_links != 'none' && $show_links != 'no_describtion' && ($links = $this->link->get_links('infolog',$info['info_id'])))
|
if (($show_links != 'none' && $show_links != 'no_describtion' ||
|
||||||
|
$this->prefs['show_times'] && isset($GLOBALS['egw_info']['user']['apps']['timesheet'])) &&
|
||||||
|
($links = $this->link->get_links('infolog',$info['info_id'])))
|
||||||
{
|
{
|
||||||
|
$timesheets = array();
|
||||||
foreach ($links as $link)
|
foreach ($links as $link)
|
||||||
{
|
{
|
||||||
if ($link['link_id'] != $info['info_link_id'] &&
|
if ($show_links != 'none' && $show_links != 'no_describtion' &&
|
||||||
|
$link['link_id'] != $info['info_link_id'] &&
|
||||||
($link['app'] != $action || $link['id'] != $action_id) &&
|
($link['app'] != $action || $link['id'] != $action_id) &&
|
||||||
($show_links == 'all' || ($show_links == 'links') === ($link['app'] != $this->link->vfs_appname)))
|
($show_links == 'all' || ($show_links == 'links') === ($link['app'] != $this->link->vfs_appname)))
|
||||||
{
|
{
|
||||||
$info['filelinks'][] = $link;
|
$info['filelinks'][] = $link;
|
||||||
}
|
}
|
||||||
|
if (!$info['pm_id'] && $link['app'] == 'projectmanager')
|
||||||
|
{
|
||||||
|
$info['pm_id'] = $link['id'];
|
||||||
|
}
|
||||||
|
if ($link['app'] == 'timesheet') $timesheets[] = $link['id'];
|
||||||
|
}
|
||||||
|
if ($this->prefs['show_times'] && isset($GLOBALS['egw_info']['user']['apps']['timesheet']) && $timesheets)
|
||||||
|
{
|
||||||
|
$sum = ExecMethod('timesheet.botimesheet.sum',$timesheets);
|
||||||
|
$info['info_sum_timesheets'] = $sum['duration'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$info['info_type_label'] = $this->bo->enums['type'][$info['info_type']];
|
$info['info_type_label'] = $this->bo->enums['type'][$info['info_type']];
|
||||||
@ -210,7 +225,8 @@
|
|||||||
$rows[] = $info;
|
$rows[] = $info;
|
||||||
}
|
}
|
||||||
if ($query['no_actions']) $rows['no_actions'] = true;
|
if ($query['no_actions']) $rows['no_actions'] = true;
|
||||||
if ($query['no_times']) $rows['no_times'] = true;
|
$rows['no_times'] = !$this->prefs['show_times'];
|
||||||
|
$rows['no_timesheet'] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
|
||||||
//echo "<p>readonlys = "; _debug_array($readonlys);
|
//echo "<p>readonlys = "; _debug_array($readonlys);
|
||||||
//echo "rows=<pre>".print_r($rows,True)."</pre>\n";
|
//echo "rows=<pre>".print_r($rows,True)."</pre>\n";
|
||||||
|
|
||||||
@ -361,7 +377,6 @@
|
|||||||
$values['nm']['bottom_too'] = True;
|
$values['nm']['bottom_too'] = True;
|
||||||
$values['nm']['never_hide'] = isset($this->prefs['never_hide']) ?
|
$values['nm']['never_hide'] = isset($this->prefs['never_hide']) ?
|
||||||
$this->prefs['never_hide'] : $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'] > 15;
|
$this->prefs['never_hide'] : $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'] > 15;
|
||||||
$values['nm']['no_times'] = !$this->prefs['show_times'];
|
|
||||||
$values['action'] = $persist['action'] = $values['nm']['action'] = $action;
|
$values['action'] = $persist['action'] = $values['nm']['action'] = $action;
|
||||||
$values['action_id'] = $persist['action_id'] = $values['nm']['action_id'] = $action_id;
|
$values['action_id'] = $persist['action_id'] = $values['nm']['action_id'] = $action_id;
|
||||||
$persist['called_as'] = $called_as;
|
$persist['called_as'] = $called_as;
|
||||||
|
File diff suppressed because one or more lines are too long
@ -27,6 +27,7 @@ add a new sub-task, -note, -call to this entry infolog de einen neuen Unterauftr
|
|||||||
add a new todo infolog de einen neuen Auftrag anlegen
|
add a new todo infolog de einen neuen Auftrag anlegen
|
||||||
add file infolog de Datei zufügen
|
add file infolog de Datei zufügen
|
||||||
add sub infolog de neuen Untereintrag anlegen
|
add sub infolog de neuen Untereintrag anlegen
|
||||||
|
add timesheet entry infolog de Stundenzettel Eintrag hinzfügen
|
||||||
add: infolog de Hinzufügen:
|
add: infolog de Hinzufügen:
|
||||||
all infolog de alle
|
all infolog de alle
|
||||||
all links and attachments infolog de alle Verknüpfungen und Anhänge
|
all links and attachments infolog de alle Verknüpfungen und Anhänge
|
||||||
@ -101,8 +102,8 @@ edit status infolog de Status
|
|||||||
edit the entry infolog de Eintrag bearbeiten
|
edit the entry infolog de Eintrag bearbeiten
|
||||||
edit this entry infolog de diesen Eintrag bearbeiten
|
edit this entry infolog de diesen Eintrag bearbeiten
|
||||||
empty for all infolog de leer für alle
|
empty for all infolog de leer für alle
|
||||||
enddate infolog de Enddatum
|
enddate infolog de Fällig am
|
||||||
enddate can not be before startdate infolog de Das Enddatum kann nicht vor dem Startdatum liegen
|
enddate can not be before startdate infolog de Das Fälligkeitsdatum kann nicht vor dem Startdatum liegen
|
||||||
enter a custom contact, leave empty if linked entry should be used infolog de benutzerdefinierter Kontakt, leer lassen um die Daten der Verknüpfung zu verwenden
|
enter a custom contact, leave empty if linked entry should be used infolog de benutzerdefinierter Kontakt, leer lassen um die Daten der Verknüpfung zu verwenden
|
||||||
enter a custom phone/email, leave empty if linked entry should be used infolog de benutzerdefinierte Telefonnumer/Emailadresse, leer lassen um die Daten der Verknüpfung zu verwenden
|
enter a custom phone/email, leave empty if linked entry should be used infolog de benutzerdefinierte Telefonnumer/Emailadresse, leer lassen um die Daten der Verknüpfung zu verwenden
|
||||||
enter a textual description of the log-entry infolog de geben Sie eine textliche Beschreibung des Eintrags ein
|
enter a textual description of the log-entry infolog de geben Sie eine textliche Beschreibung des Eintrags ein
|
||||||
@ -243,7 +244,7 @@ show times infolog de Zeiten anzeigen
|
|||||||
small view infolog de schmale Ansicht
|
small view infolog de schmale Ansicht
|
||||||
start a new search, cancel this link infolog de eine neue Suche starten, diese Verknüpfung abbrechen
|
start a new search, cancel this link infolog de eine neue Suche starten, diese Verknüpfung abbrechen
|
||||||
startdate infolog de Startdatum
|
startdate infolog de Startdatum
|
||||||
startdate enddate infolog de Startdatum Endedatum
|
startdate enddate infolog de Startdatum Fälligkeitsdatum
|
||||||
startdate for new entries infolog de Startdatum für neue Einträge
|
startdate for new entries infolog de Startdatum für neue Einträge
|
||||||
startrecord infolog de Startdatensatz
|
startrecord infolog de Startdatensatz
|
||||||
status infolog de Status
|
status infolog de Status
|
||||||
@ -289,7 +290,7 @@ write (add or update) a record by passing its fields. infolog de Schreiben (zuf
|
|||||||
yes - delete infolog de Ja - Löschen
|
yes - delete infolog de Ja - Löschen
|
||||||
yes - delete including sub-entries infolog de Ja - Löschen einschließlich Untereinträge
|
yes - delete including sub-entries infolog de Ja - Löschen einschließlich Untereinträge
|
||||||
you can't delete one of the stock types !!! infolog de Sie können keinen der Standardtypen löschen!!!
|
you can't delete one of the stock types !!! infolog de Sie können keinen der Standardtypen löschen!!!
|
||||||
you have entered an invalid ending date infolog de Sie haben ein ungültiges Enddatum eingegeben
|
you have entered an invalid ending date infolog de Sie haben ein ungültiges Fälligkeitsdatum eingegeben
|
||||||
you have entered an invalid starting date infolog de Sie haben ein ungültiges Startdatum eingegeben
|
you have entered an invalid starting date infolog de Sie haben ein ungültiges Startdatum eingegeben
|
||||||
you have to enter a name, to create a new typ!!! infolog de Sie müssen einen Namen angeben, um einen neuen Typ zu erzeugen!!!
|
you have to enter a name, to create a new typ!!! infolog de Sie müssen einen Namen angeben, um einen neuen Typ zu erzeugen!!!
|
||||||
you must enter a subject or a description infolog de Sie müssen einen Titel oder eine Beschreibung eingeben
|
you must enter a subject or a description infolog de Sie müssen einen Titel oder eine Beschreibung eingeben
|
||||||
|
@ -27,6 +27,7 @@ add a new sub-task, -note, -call to this entry infolog en Add a new sub-task, -n
|
|||||||
add a new todo infolog en Add a new ToDo
|
add a new todo infolog en Add a new ToDo
|
||||||
add file infolog en Add file
|
add file infolog en Add file
|
||||||
add sub infolog en add Sub
|
add sub infolog en add Sub
|
||||||
|
add timesheet entry infolog en Add timesheet entry
|
||||||
add: infolog en Add:
|
add: infolog en Add:
|
||||||
all infolog en All
|
all infolog en All
|
||||||
all links and attachments infolog en all links and attachments
|
all links and attachments infolog en all links and attachments
|
||||||
@ -97,12 +98,12 @@ duration infolog en Duration
|
|||||||
each value is a line like <id>[=<label>] infolog en each value is a line like <id>[=<label>]
|
each value is a line like <id>[=<label>] infolog en each value is a line like <id>[=<label>]
|
||||||
edit infolog en Edit
|
edit infolog en Edit
|
||||||
edit or create categories for ingolog infolog en Edit or create categories for IngoLog
|
edit or create categories for ingolog infolog en Edit or create categories for IngoLog
|
||||||
edit status infolog en Edit Status
|
edit status infolog en Edit status
|
||||||
edit the entry infolog en Edit the entry
|
edit the entry infolog en Edit the entry
|
||||||
edit this entry infolog en Edit this entry
|
edit this entry infolog en Edit this entry
|
||||||
empty for all infolog en empty for all
|
empty for all infolog en empty for all
|
||||||
enddate infolog en End Date
|
enddate infolog en Due date
|
||||||
enddate can not be before startdate infolog en End date can not be before start date
|
enddate can not be before startdate infolog en Due date can not be before start date
|
||||||
enter a custom contact, leave empty if linked entry should be used infolog en enter a custom contact, leave empty if linked entry should be used
|
enter a custom contact, leave empty if linked entry should be used infolog en enter a custom contact, leave empty if linked entry should be used
|
||||||
enter a custom phone/email, leave empty if linked entry should be used infolog en enter a custom phone/email, leave empty if linked entry should be used
|
enter a custom phone/email, leave empty if linked entry should be used infolog en enter a custom phone/email, leave empty if linked entry should be used
|
||||||
enter a textual description of the log-entry infolog en enter a textual description of the log-entry
|
enter a textual description of the log-entry infolog en enter a textual description of the log-entry
|
||||||
@ -243,7 +244,7 @@ show times infolog en Show times
|
|||||||
small view infolog en small view
|
small view infolog en small view
|
||||||
start a new search, cancel this link infolog en start a new search, cancel this link
|
start a new search, cancel this link infolog en start a new search, cancel this link
|
||||||
startdate infolog en Start Date
|
startdate infolog en Start Date
|
||||||
startdate enddate infolog en Start Date End Date
|
startdate enddate infolog en Start Date Due Date
|
||||||
startdate for new entries infolog en Startdate for new entries
|
startdate for new entries infolog en Startdate for new entries
|
||||||
startrecord infolog en Startrecord
|
startrecord infolog en Startrecord
|
||||||
status infolog en Status
|
status infolog en Status
|
||||||
@ -289,7 +290,7 @@ write (add or update) a record by passing its fields. infolog en Write (add or u
|
|||||||
yes - delete infolog en Yes - Delete
|
yes - delete infolog en Yes - Delete
|
||||||
yes - delete including sub-entries infolog en Yes - Delete including sub-entries
|
yes - delete including sub-entries infolog en Yes - Delete including sub-entries
|
||||||
you can't delete one of the stock types !!! infolog en You can't delete one of the stock types !!!
|
you can't delete one of the stock types !!! infolog en You can't delete one of the stock types !!!
|
||||||
you have entered an invalid ending date infolog en You have entered an invalid ending date
|
you have entered an invalid ending date infolog en You have entered an invalid due date
|
||||||
you have entered an invalid starting date infolog en You have entered an invalid starting date
|
you have entered an invalid starting date infolog en You have entered an invalid starting date
|
||||||
you have to enter a name, to create a new typ!!! infolog en You have to enter a name, to create a new type!!!
|
you have to enter a name, to create a new typ!!! infolog en You have to enter a name, to create a new type!!!
|
||||||
you must enter a subject or a description infolog en You must enter a subject or a description
|
you must enter a subject or a description infolog en You must enter a subject or a description
|
||||||
|
@ -198,7 +198,7 @@
|
|||||||
</menulist>
|
</menulist>
|
||||||
</row>
|
</row>
|
||||||
<row class="row">
|
<row class="row">
|
||||||
<description options=",,,info_datecompleted" value="Completed"/>
|
<description options=",,,info_datecompleted" value="Date completed"/>
|
||||||
<date-time id="info_datecompleted" statustext="Date completed (leave it empty to have it automatic set if status is done or billed)"/>
|
<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"/>
|
<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"/>
|
<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"/>
|
||||||
|
BIN
infolog/templates/default/images/timesheet.png
Normal file
BIN
infolog/templates/default/images/timesheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 875 B |
@ -13,7 +13,7 @@
|
|||||||
<button image="note" label="Note" id="add[note]" statustext="Add a new Note" onclick="window.open(egw::link('/index.php','menuaction=infolog.uiinfolog.edit&type=note&action=$cont[action]&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&type=note&action=$cont[action]&action_id=$cont[action_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</template>
|
</template>
|
||||||
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.2.002">
|
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.2.003">
|
||||||
<grid>
|
<grid>
|
||||||
<columns>
|
<columns>
|
||||||
<column width="2%"/>
|
<column width="2%"/>
|
||||||
@ -70,9 +70,10 @@
|
|||||||
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
|
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
|
||||||
<date-time id="${row}[info_datecompleted]" readonly="true"/>
|
<date-time id="${row}[info_datecompleted]" readonly="true"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox>
|
<vbox data="" rows="3" cols="1">
|
||||||
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
|
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
|
||||||
<date-duration id="${row}[info_planned_time]" class="planned" readonly="true" options=",,,,1"/>
|
<date-duration id="${row}[info_sum_timesheets]" readonly="true" options=",,,,1" class="timesheet"/>
|
||||||
|
<date-duration id="${row}[info_planned_time]" span="all" class="planned" readonly="true" options=",,,,1"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox orient="0,0">
|
<vbox orient="0,0">
|
||||||
<menulist>
|
<menulist>
|
||||||
@ -90,6 +91,7 @@
|
|||||||
<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&action=sp&action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,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&action=sp&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="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"/>
|
<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"/>
|
||||||
|
<button image="timesheet" label="Add timesheet entry" id="timesheet[$row_cont[info_id]]" onclick="window.open(egw::link('/index.php','menuaction=timesheet.uitimesheet.edit&link_app[0]=infolog&link_id[0]=$row_cont[info_id]&link_app[1]=projectmanager&link_id[1]=$row_cont[pm_id]'),'_blank','dependent=yes,width=600,height=400,scrollbars=yes,status=yes'); return false;" align="center"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<hbox>
|
<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&info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,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&info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
|
||||||
@ -100,7 +102,7 @@
|
|||||||
</rows>
|
</rows>
|
||||||
</grid>
|
</grid>
|
||||||
</template>
|
</template>
|
||||||
<template id="infolog.index.rows" template="" lang="" group="0" version="1.2.002">
|
<template id="infolog.index.rows" template="" lang="" group="0" version="1.2.003">
|
||||||
<grid>
|
<grid>
|
||||||
<columns>
|
<columns>
|
||||||
<column width="2%"/>
|
<column width="2%"/>
|
||||||
@ -140,7 +142,7 @@
|
|||||||
<nextmatch-sortheader label="Enddate" id="info_enddate"/>
|
<nextmatch-sortheader label="Enddate" id="info_enddate"/>
|
||||||
<nextmatch-sortheader id="info_datecompleted" label="Date completed"/>
|
<nextmatch-sortheader id="info_datecompleted" label="Date completed"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox>
|
<vbox data="" rows="2" cols="1" options="2">
|
||||||
<nextmatch-sortheader label="Times" id="info_used_time"/>
|
<nextmatch-sortheader label="Times" id="info_used_time"/>
|
||||||
<nextmatch-sortheader id="info_planned_time" class="planned" label="planned"/>
|
<nextmatch-sortheader id="info_planned_time" class="planned" label="planned"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
@ -169,9 +171,10 @@
|
|||||||
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
|
<date class="$row_cont[end_class]" id="${row}[info_enddate]" readonly="true"/>
|
||||||
<date-time id="${row}[info_datecompleted]" readonly="true"/>
|
<date-time id="${row}[info_datecompleted]" readonly="true"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox>
|
<vbox data="" rows="3" cols="1" options="3">
|
||||||
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
|
<date-duration id="${row}[info_used_time]" readonly="true" options=",,,,1"/>
|
||||||
<date-duration id="${row}[info_planned_time]" class="planned" readonly="true" options=",,,,1"/>
|
<date-duration id="${row}[info_sum_timesheets]" readonly="true" options=",,,,1" class="timesheet"/>
|
||||||
|
<date-duration id="${row}[info_planned_time]" span="all" class="planned" readonly="true" options=",,,,1"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<vbox orient="0,0">
|
<vbox orient="0,0">
|
||||||
<menulist>
|
<menulist>
|
||||||
@ -189,6 +192,7 @@
|
|||||||
<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&action=sp&action_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,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&action=sp&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="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"/>
|
<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"/>
|
||||||
|
<button image="timesheet" label="Add timesheet entry" id="timesheet[$row_cont[info_id]]" onclick="window.open(egw::link('/index.php','menuaction=timesheet.uitimesheet.edit&link_app[0]=infolog&link_id[0]=$row_cont[info_id]&link_app[1]=projectmanager&link_id[1]=$row_cont[pm_id]'),'_blank','dependent=yes,width=600,height=400,scrollbars=yes,status=yes'); return false;" align="center"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<hbox>
|
<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&info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,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&info_id=$row_cont[info_id]'),'_blank','dependent=yes,width=750,height=600,scrollbars=yes,status=yes'); return false;"/>
|
||||||
|
@ -77,6 +77,11 @@ class botimesheet extends so_sql
|
|||||||
/**
|
/**
|
||||||
* @var array $grants
|
* @var array $grants
|
||||||
*/
|
*/
|
||||||
|
var $grants;
|
||||||
|
/**
|
||||||
|
* @var array $summary array sums of the last search in keys duration and price
|
||||||
|
*/
|
||||||
|
var $summary;
|
||||||
|
|
||||||
function botimesheet()
|
function botimesheet()
|
||||||
{
|
{
|
||||||
@ -229,9 +234,10 @@ class botimesheet extends so_sql
|
|||||||
* @param string $join='' sql to do a join, added as is after the table-name, eg. ", table2 WHERE x=y" or
|
* @param string $join='' sql to do a join, added as is after the table-name, eg. ", table2 WHERE x=y" or
|
||||||
* "LEFT JOIN table2 ON (x=y)", Note: there's no quoting done on $join!
|
* "LEFT JOIN table2 ON (x=y)", Note: there's no quoting done on $join!
|
||||||
* @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
|
||||||
|
* @param boolean $only_summary=false If true only return the sums as array with keys duration and price, default false
|
||||||
* @return array of matching rows (the row is an array of the cols) or False
|
* @return array of matching rows (the row is an array of the cols) or False
|
||||||
*/
|
*/
|
||||||
function &search($criteria,$only_keys=True,$order_by='',$extra_cols='',$wildcard='',$empty=False,$op='AND',$start=false,$filter=null,$join='',$need_full_no_count=false)
|
function &search($criteria,$only_keys=True,$order_by='',$extra_cols='',$wildcard='',$empty=False,$op='AND',$start=false,$filter=null,$join='',$need_full_no_count=false,$only_summary=false)
|
||||||
{
|
{
|
||||||
if (!$extra_cols) $extra_cols = 'ts_quantity*ts_unitprice AS ts_total';
|
if (!$extra_cols) $extra_cols = 'ts_quantity*ts_unitprice AS ts_total';
|
||||||
|
|
||||||
@ -254,12 +260,15 @@ class botimesheet extends so_sql
|
|||||||
if (!count($filter['ts_owner']))
|
if (!count($filter['ts_owner']))
|
||||||
{
|
{
|
||||||
$this->total = 0;
|
$this->total = 0;
|
||||||
|
$this->summary = array();
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
$this->summary = parent::search($criteria,'SUM(ts_duration) AS duration,SUM(ts_quantity*ts_unitprice) AS price',
|
$this->summary = parent::search($criteria,'SUM(ts_duration) AS duration,SUM(ts_quantity*ts_unitprice) AS price',
|
||||||
'','',$wildcard,$empty,$op,false,$filter,$join);
|
'','',$wildcard,$empty,$op,false,$filter,$join);
|
||||||
$this->summary = $this->summary[0];
|
$this->summary = $this->summary[0];
|
||||||
|
|
||||||
|
if ($only_summary) return $this->summary;
|
||||||
|
|
||||||
return parent::search($criteria,$only_keys,$order_by,$extra_cols,$wildcard,$empty,$op,$start,$filter,$join,$need_full_no_count);
|
return parent::search($criteria,$only_keys,$order_by,$extra_cols,$wildcard,$empty,$op,$start,$filter,$join,$need_full_no_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,6 +391,17 @@ class botimesheet extends so_sql
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the time- and pricesum for the given timesheet entries
|
||||||
|
*
|
||||||
|
* @param array $ids array of timesheet id's
|
||||||
|
* @return array with keys time and price
|
||||||
|
*/
|
||||||
|
function sum($ids)
|
||||||
|
{
|
||||||
|
return $this->search(array('ts_id'=>$ids),true,'','','',false,'AND',false,null,'',false,true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get title for an timesheet entry identified by $entry
|
* get title for an timesheet entry identified by $entry
|
||||||
*
|
*
|
||||||
|
@ -68,7 +68,8 @@ class uitimesheet extends botimesheet
|
|||||||
'cat_id' => (int) $_REQUEST['cat_id'],
|
'cat_id' => (int) $_REQUEST['cat_id'],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$referer = preg_match('/menuaction=([^&]+)/',$_SERVER['HTTP_REFERER'],$matches) ? $matches[1] : TIMESHEET_APP.'.uitimesheet.index';
|
$referer = preg_match('/menuaction=([^&]+)/',$_SERVER['HTTP_REFERER'],$matches) ? $matches[1] :
|
||||||
|
(strstr($_SERVER['HTTP_REFERER'],'/infolog/index.php') ? 'infolog.uiinfolog.index' : TIMESHEET_APP.'.uitimesheet.index');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -94,6 +95,7 @@ class uitimesheet extends botimesheet
|
|||||||
$this->data['ts_quantity'] = $this->data['ts_duration'] / 60.0;
|
$this->data['ts_quantity'] = $this->data['ts_duration'] / 60.0;
|
||||||
}
|
}
|
||||||
if (!$this->data['ts_project']) $this->data['ts_project'] = $this->data['ts_project_blur'];
|
if (!$this->data['ts_project']) $this->data['ts_project'] = $this->data['ts_project_blur'];
|
||||||
|
if (!$this->data['ts_title']) $this->data['ts_title'] = $this->data['ts_title_blur'];
|
||||||
|
|
||||||
if ($this->save() != 0)
|
if ($this->save() != 0)
|
||||||
{
|
{
|
||||||
@ -162,6 +164,7 @@ class uitimesheet extends botimesheet
|
|||||||
$preserv = $this->data + array(
|
$preserv = $this->data + array(
|
||||||
'view' => $view,
|
'view' => $view,
|
||||||
'referer' => $referer,
|
'referer' => $referer,
|
||||||
|
'ts_title_blur' => $content['ts_title_blur'],
|
||||||
);
|
);
|
||||||
$content = array_merge($this->data,array(
|
$content = array_merge($this->data,array(
|
||||||
'msg' => $msg,
|
'msg' => $msg,
|
||||||
@ -175,14 +178,26 @@ class uitimesheet extends botimesheet
|
|||||||
'ts_quantity_blur' => $this->data['ts_duration'] ? $this->data['ts_duration'] / 60.0 : '',
|
'ts_quantity_blur' => $this->data['ts_duration'] ? $this->data['ts_duration'] / 60.0 : '',
|
||||||
));
|
));
|
||||||
$links = array();
|
$links = array();
|
||||||
if (!$this->data['ts_id'] && isset($_GET['link_app']) && isset($_GET['link_id']) &&
|
// create links specified in the REQUEST (URL)
|
||||||
preg_match('/^[a-z_0-9-]+:[:a-z_0-9-]+$/i',$_GET['link_app'].':'.$_GET['link_id']) && // gard against XSS
|
if (!$this->data['ts_id'] && isset($_REQUEST['link_app']) && isset($_REQUEST['link_id']) && !is_array($content['link_to']['to_id']))
|
||||||
!is_array($content['link_to']['to_id']))
|
|
||||||
{
|
{
|
||||||
$this->link->link(TIMESHEET_APP,$content['link_to']['to_id'],$_GET['link_app'],$_GET['link_id']);
|
$link_ids = is_array($_REQUEST['link_id']) ? $_REQUEST['link_id'] : array($_REQUEST['link_id']);
|
||||||
if ($_GET['link_app'] == 'projectmanager')
|
foreach(is_array($_REQUEST['link_app']) ? $_REQUEST['link_app'] : array($_REQUEST['link_app']) as $n => $link_app)
|
||||||
{
|
{
|
||||||
$links = array($_GET['link_id']);
|
$link_id = $link_ids[$n];
|
||||||
|
if (preg_match('/^[a-z_0-9-]+:[:a-z_0-9-]+$/i',$link_app.':'.$link_id)) // gard against XSS
|
||||||
|
{
|
||||||
|
$this->link->link(TIMESHEET_APP,$content['link_to']['to_id'],$link_app,$link_id);
|
||||||
|
switch ($link_app)
|
||||||
|
{
|
||||||
|
case 'projectmanager':
|
||||||
|
$links[] = $link_id;
|
||||||
|
break;
|
||||||
|
case 'infolog':
|
||||||
|
$preserv['ts_title_blur'] = $this->link->title('infolog',$link_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif ($this->data['ts_id'])
|
elseif ($this->data['ts_id'])
|
||||||
@ -196,6 +211,8 @@ class uitimesheet extends botimesheet
|
|||||||
{
|
{
|
||||||
$preserv['ts_project_blur'] = $content['ts_project_blur'] = $this->link->title('projectmanager',$content['pm_id']);
|
$preserv['ts_project_blur'] = $content['ts_project_blur'] = $this->link->title('projectmanager',$content['pm_id']);
|
||||||
}
|
}
|
||||||
|
$content['ts_title_blur'] = $preserv['ts_title_blur'] = $preserv['ts_title_blur'] ? $preserv['ts_title_blur'] : $preserv['ts_project_blur'];
|
||||||
|
|
||||||
$readonlys = array(
|
$readonlys = array(
|
||||||
'button[delete]' => !$this->data['ts_id'] || !$this->check_acl(EGW_ACL_DELETE),
|
'button[delete]' => !$this->data['ts_id'] || !$this->check_acl(EGW_ACL_DELETE),
|
||||||
'button[edit]' => !$view || !$this->check_acl(EGW_ACL_EDIT),
|
'button[edit]' => !$view || !$this->check_acl(EGW_ACL_EDIT),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
// eTemplates for Application 'timesheet', generated by soetemplate::dump4setup() 2006-01-10 23:59
|
// eTemplates for Application 'timesheet', generated by soetemplate::dump4setup() 2006-03-21 14:49
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
@ -9,7 +9,11 @@ $templ_data[] = array('name' => 'timesheet.edit','template' => '','lang' => '','
|
|||||||
|
|
||||||
$templ_data[] = array('name' => 'timesheet.edit','template' => '','lang' => '','group' => '0','version' => '0.2.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:8:{s:2:"c2";s:2:"th";s:2:"c3";s:3:"row";s:1:"A";s:3:"100";s:2:"c6";s:3:"row";s:2:"h6";s:14:",!@ts_modified";s:2:"c4";s:3:"row";s:2:"h2";s:2:"28";s:2:"h1";s:6:",!@msg";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_owner";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:8:"ts_owner";s:4:"span";s:3:"all";s:7:"no_lang";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,ts_project";s:5:"label";s:7:"Project";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:6:{s:4:"type";s:21:"projectmanager-select";s:4:"size";s:4:"None";s:4:"name";s:5:"pm_id";s:4:"span";s:3:"all";s:4:"help";s:16:"Select a project";s:8:"onchange";s:1:"1";}i:2;a:4:{s:4:"type";s:4:"text";s:4:"name";s:10:"ts_project";s:4:"blur";s:16:"@ts_project_blur";s:4:"size";s:5:"65,80";}}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,ts_unitprice";s:5:"label";s:9:"Unitprice";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"span";s:3:"all";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:24:"projectmanager-pricelist";s:4:"name";s:5:"pl_id";s:4:"size";s:4:"None";s:8:"onchange";s:209:"this.form[\'exec[ts_unitprice]\'].value=this.options[this.selectedIndex].text.lastIndexOf(\'(\') < 0 ? \'\' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf(\'(\')+1,-1);";}i:2;a:3:{s:4:"type";s:5:"float";s:4:"name";s:12:"ts_unitprice";s:4:"span";s:3:"all";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:19:"General|Notes|Links";s:4:"name";s:19:"general|notes|links";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Last modified";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:11:"ts_modified";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"ts_modifier";s:5:"label";s:2:"by";s:8:"readonly";s:1:"1";}}}i:7;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"2,0,0";s:4:"span";s:1:"2";i:1;a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"6";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Edit";s:4:"name";s:12:"button[edit]";s:4:"help";s:15:"Edit this entry";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:16:"button[save_new]";s:5:"label";s:10:"Save & New";s:4:"help";s:34:"Saves this entry and add a new one";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[save]";s:5:"label";s:4:"Save";s:4:"help";s:22:"Saves the changes made";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:24:"Applies the changes made";}i:5;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}i:6;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}}i:2;a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:5:"align";s:5:"right";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.width100 { width: 100%; }','modified' => '1136861594',);
|
$templ_data[] = array('name' => 'timesheet.edit','template' => '','lang' => '','group' => '0','version' => '0.2.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:8:{s:2:"c2";s:2:"th";s:2:"c3";s:3:"row";s:1:"A";s:3:"100";s:2:"c6";s:3:"row";s:2:"h6";s:14:",!@ts_modified";s:2:"c4";s:3:"row";s:2:"h2";s:2:"28";s:2:"h1";s:6:",!@msg";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_owner";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:8:"ts_owner";s:4:"span";s:3:"all";s:7:"no_lang";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,ts_project";s:5:"label";s:7:"Project";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:6:{s:4:"type";s:21:"projectmanager-select";s:4:"size";s:4:"None";s:4:"name";s:5:"pm_id";s:4:"span";s:3:"all";s:4:"help";s:16:"Select a project";s:8:"onchange";s:1:"1";}i:2;a:4:{s:4:"type";s:4:"text";s:4:"name";s:10:"ts_project";s:4:"blur";s:16:"@ts_project_blur";s:4:"size";s:5:"65,80";}}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,ts_unitprice";s:5:"label";s:9:"Unitprice";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"span";s:3:"all";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:24:"projectmanager-pricelist";s:4:"name";s:5:"pl_id";s:4:"size";s:4:"None";s:8:"onchange";s:209:"this.form[\'exec[ts_unitprice]\'].value=this.options[this.selectedIndex].text.lastIndexOf(\'(\') < 0 ? \'\' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf(\'(\')+1,-1);";}i:2;a:3:{s:4:"type";s:5:"float";s:4:"name";s:12:"ts_unitprice";s:4:"span";s:3:"all";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:19:"General|Notes|Links";s:4:"name";s:19:"general|notes|links";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Last modified";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:11:"ts_modified";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"ts_modifier";s:5:"label";s:2:"by";s:8:"readonly";s:1:"1";}}}i:7;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"2,0,0";s:4:"span";s:1:"2";i:1;a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"6";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Edit";s:4:"name";s:12:"button[edit]";s:4:"help";s:15:"Edit this entry";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:16:"button[save_new]";s:5:"label";s:10:"Save & New";s:4:"help";s:34:"Saves this entry and add a new one";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[save]";s:5:"label";s:4:"Save";s:4:"help";s:22:"Saves the changes made";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:24:"Applies the changes made";}i:5;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}i:6;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}}i:2;a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:5:"align";s:5:"right";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.width100 { width: 100%; }','modified' => '1136861594',);
|
||||||
|
|
||||||
$templ_data[] = array('name' => 'timesheet.edit.general','template' => '','lang' => '','group' => '0','version' => '0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:5:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:2:"c2";s:3:"row";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_title";s:5:"label";s:5:"Title";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"65,80";s:4:"name";s:8:"ts_title";s:6:"needed";s:1:"1";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:9:",,,cat_id";s:5:"label";s:8:"Category";}s:1:"B";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:6:"cat_id";s:4:"size";s:4:"None";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_start";s:5:"label";s:4:"Date";}s:1:"B";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:8:"ts_start";s:6:"needed";s:1:"1";s:4:"size";s:2:",8";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,,ts_duration";s:5:"label";s:8:"Duration";}s:1:"B";a:3:{s:4:"type";s:13:"date-duration";s:4:"name";s:11:"ts_duration";s:4:"size";s:2:",h";}}i:5;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,,ts_quantity";s:5:"label";s:8:"Quantity";}s:1:"B";a:4:{s:4:"type";s:5:"float";s:4:"name";s:11:"ts_quantity";s:4:"help";s:30:"empty if identical to duration";s:4:"blur";s:17:"@ts_quantity_blur";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:4:"size";s:8:"100%,150";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"150";}}}','size' => '100%,150','style' => '','modified' => '1134773043',);
|
$templ_data[] = array('name' => 'timesheet.edit','template' => '','lang' => '','group' => '0','version' => '1.0.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:8:{s:2:"c2";s:2:"th";s:2:"c3";s:3:"row";s:1:"A";s:3:"100";s:2:"c6";s:3:"row";s:2:"h6";s:14:",!@ts_modified";s:2:"c4";s:3:"row";s:2:"h2";s:2:"28";s:2:"h1";s:6:",!@msg";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_owner";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:8:"ts_owner";s:4:"span";s:3:"all";s:7:"no_lang";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,ts_project";s:5:"label";s:7:"Project";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:6:{s:4:"type";s:21:"projectmanager-select";s:4:"size";s:4:"None";s:4:"name";s:5:"pm_id";s:4:"span";s:3:"all";s:4:"help";s:16:"Select a project";s:8:"onchange";i:1;}i:2;a:4:{s:4:"type";s:4:"text";s:4:"name";s:10:"ts_project";s:4:"blur";s:16:"@ts_project_blur";s:4:"size";s:5:"65,80";}}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,ts_unitprice";s:5:"label";s:9:"Unitprice";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"span";s:3:"all";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:24:"projectmanager-pricelist";s:4:"name";s:5:"pl_id";s:4:"size";s:4:"None";s:8:"onchange";s:209:"this.form[\'exec[ts_unitprice]\'].value=this.options[this.selectedIndex].text.lastIndexOf(\'(\') < 0 ? \'\' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf(\'(\')+1,-1);";}i:2;a:3:{s:4:"type";s:5:"float";s:4:"name";s:12:"ts_unitprice";s:4:"span";s:3:"all";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:19:"General|Notes|Links";s:4:"name";s:19:"general|notes|links";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Last modified";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:11:"ts_modified";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"ts_modifier";s:5:"label";s:2:"by";s:8:"readonly";s:1:"1";}}}i:7;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"2,0,0";s:4:"span";s:1:"2";i:1;a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"6";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Edit";s:4:"name";s:12:"button[edit]";s:4:"help";s:15:"Edit this entry";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:16:"button[save_new]";s:5:"label";s:10:"Save & New";s:4:"help";s:34:"Saves this entry and add a new one";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[save]";s:5:"label";s:4:"Save";s:4:"help";s:22:"Saves the changes made";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:24:"Applies the changes made";}i:5;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}i:6;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}}i:2;a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:5:"align";s:5:"right";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.width100 { width: 100%; }','modified' => '1136861594',);
|
||||||
|
|
||||||
|
$templ_data[] = array('name' => 'timesheet.edit','template' => '','lang' => '','group' => '0','version' => '1.2.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:8:{s:2:"c2";s:2:"th";s:2:"c3";s:3:"row";s:1:"A";s:3:"100";s:2:"c6";s:3:"row";s:2:"h6";s:14:",!@ts_modified";s:2:"c4";s:3:"row";s:2:"h2";s:2:"28";s:2:"h1";s:6:",!@msg";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_owner";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:8:"ts_owner";s:4:"span";s:3:"all";s:7:"no_lang";s:1:"1";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:13:",,,ts_project";s:5:"label";s:7:"Project";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:6:{s:4:"type";s:21:"projectmanager-select";s:4:"size";s:4:"None";s:4:"name";s:5:"pm_id";s:4:"span";s:3:"all";s:4:"help";s:16:"Select a project";s:8:"onchange";i:1;}i:2;a:4:{s:4:"type";s:4:"text";s:4:"name";s:10:"ts_project";s:4:"blur";s:16:"@ts_project_blur";s:4:"size";s:5:"65,80";}}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,ts_unitprice";s:5:"label";s:9:"Unitprice";}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"span";s:3:"all";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:24:"projectmanager-pricelist";s:4:"name";s:5:"pl_id";s:4:"size";s:4:"None";s:8:"onchange";s:209:"this.form[\'exec[ts_unitprice]\'].value=this.options[this.selectedIndex].text.lastIndexOf(\'(\') < 0 ? \'\' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf(\'(\')+1,-1);";}i:2;a:3:{s:4:"type";s:5:"float";s:4:"name";s:12:"ts_unitprice";s:4:"span";s:3:"all";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:19:"General|Notes|Links";s:4:"name";s:19:"general|notes|links";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Last modified";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:11:"ts_modified";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:11:"ts_modifier";s:5:"label";s:2:"by";s:8:"readonly";s:1:"1";}}}i:7;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"2,0,0";s:4:"span";s:1:"2";i:1;a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"6";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Edit";s:4:"name";s:12:"button[edit]";s:4:"help";s:15:"Edit this entry";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:16:"button[save_new]";s:5:"label";s:10:"Save & New";s:4:"help";s:34:"Saves this entry and add a new one";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[save]";s:5:"label";s:4:"Save";s:4:"help";s:22:"Saves the changes made";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";s:4:"help";s:24:"Applies the changes made";}i:5;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}i:6;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}}i:2;a:6:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:5:"align";s:5:"right";s:4:"name";s:14:"button[delete]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.width100 { width: 100%; }','modified' => '1142930663',);
|
||||||
|
|
||||||
|
$templ_data[] = array('name' => 'timesheet.edit.general','template' => '','lang' => '','group' => '0','version' => '0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:5:{s:2:"c1";s:3:"row";s:1:"A";s:2:"95";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:2:"c2";s:3:"row";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_title";s:5:"label";s:5:"Title";}s:1:"B";a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"65,80";s:4:"name";s:8:"ts_title";s:6:"needed";s:1:"1";s:4:"blur";s:14:"@ts_title_blur";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:9:",,,cat_id";s:5:"label";s:8:"Category";}s:1:"B";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:6:"cat_id";s:4:"size";s:4:"None";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:11:",,,ts_start";s:5:"label";s:4:"Date";}s:1:"B";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:8:"ts_start";s:6:"needed";s:1:"1";s:4:"size";s:2:",8";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,,ts_duration";s:5:"label";s:8:"Duration";}s:1:"B";a:3:{s:4:"type";s:13:"date-duration";s:4:"name";s:11:"ts_duration";s:4:"size";s:2:",h";}}i:5;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:14:",,,ts_quantity";s:5:"label";s:8:"Quantity";}s:1:"B";a:4:{s:4:"type";s:5:"float";s:4:"name";s:11:"ts_quantity";s:4:"help";s:30:"empty if identical to duration";s:4:"blur";s:17:"@ts_quantity_blur";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:4:"size";s:8:"100%,150";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:3:"150";}}}','size' => '100%,150','style' => '','modified' => '1134773043',);
|
||||||
|
|
||||||
$templ_data[] = array('name' => 'timesheet.edit.links','template' => '','lang' => '','group' => '0','version' => '0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:7:{s:1:"A";s:3:"100";s:2:"h1";s:6:",@view";s:2:"h2";s:13:",@status_only";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:2:"c3";s:2:"th";s:2:"c4";s:11:"row_off,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:16:"Create new links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:7:"link-to";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"Existing links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:9:"link-list";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:17:"100%,150,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"150";i:6;s:4:"auto";}}}','size' => '100%,150,,,,,auto','style' => '','modified' => '1134775301',);
|
$templ_data[] = array('name' => 'timesheet.edit.links','template' => '','lang' => '','group' => '0','version' => '0.1.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:7:{s:1:"A";s:3:"100";s:2:"h1";s:6:",@view";s:2:"h2";s:13:",@status_only";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:2:"c3";s:2:"th";s:2:"c4";s:11:"row_off,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:16:"Create new links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:7:"link-to";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"Existing links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:9:"link-list";s:4:"span";s:3:"all";s:4:"name";s:7:"link_to";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:17:"100%,150,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"150";i:6;s:4:"auto";}}}','size' => '100%,150,,,,,auto','style' => '','modified' => '1134775301',);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<rows>
|
<rows>
|
||||||
<row class="row">
|
<row class="row">
|
||||||
<description options=",,,ts_title" value="Title"/>
|
<description options=",,,ts_title" value="Title"/>
|
||||||
<textbox size="65" maxlength="80" id="ts_title" needed="1"/>
|
<textbox size="65" maxlength="80" id="ts_title" needed="1" blur="@ts_title_blur"/>
|
||||||
</row>
|
</row>
|
||||||
<row class="row">
|
<row class="row">
|
||||||
<description options=",,,cat_id" value="Category"/>
|
<description options=",,,cat_id" value="Category"/>
|
||||||
@ -67,7 +67,7 @@
|
|||||||
</rows>
|
</rows>
|
||||||
</grid>
|
</grid>
|
||||||
</template>
|
</template>
|
||||||
<template id="timesheet.edit" template="" lang="" group="0" version="0.2.001">
|
<template id="timesheet.edit" template="" lang="" group="0" version="1.2.001">
|
||||||
<grid width="100%">
|
<grid width="100%">
|
||||||
<columns>
|
<columns>
|
||||||
<column width="100"/>
|
<column width="100"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user