adaption for the new nextmatch feature plus some nice extra columns

This commit is contained in:
Ralf Becker 2007-03-07 12:31:48 +00:00
parent 6bd5ac2da8
commit c0b6563e17
15 changed files with 123 additions and 119 deletions

View File

@ -149,28 +149,14 @@ class contacts_admin_prefs
'xmlrpc' => True,
'admin' => False,
);
$column_display_options = array(
'' => lang('only if there is content'),
'always' => lang('always'),
'never' => lang('never'),
$GLOBALS['settings']['no_auto_hide'] = array(
'type' => 'check',
'label' => 'Don\'t hide empty columns',
'name' => 'no_auto_hide',
'help' => 'Should the columns photo and home address always be displayed, even if they are empty.',
'xmlrpc' => True,
'admin' => false,
);
foreach(array(
'photo_column' => lang('Photo'),
'home_column' => lang('Home address'),
'custom_colum' => lang('custom fields'),
) as $name => $label)
{
$GLOBALS['settings'][$name] = array(
'type' => 'select',
'label' => lang('Show a column for %1',$label),
'run_lang' => -1,
'name' => $name,
'values' => $column_display_options,
'help' => 'When should the contacts list display that colum. "Only if there is content" hides the column, unless there is some content in the view.',
'xmlrpc' => True,
'admin' => false,
);
}
// CSV Export
$GLOBALS['settings']['csv_fields'] = array(
'type' => 'select',

View File

@ -161,6 +161,7 @@ class uicontacts extends bocontacts
'filter2_no_lang'=> True, // I set no_lang for filter2 (=dont translate the options)
'lettersearch' => true,
'do_email' => $do_email,
'default_cols' => '!cat_id,contact_created_contact_modified',
);
// use the state of the last session stored in the user prefs
if (($state = @unserialize($this->prefs[$do_email ? 'email_state' : 'index_state'])))
@ -644,6 +645,10 @@ class uicontacts extends bocontacts
case 'adr_one_postalcode':
$order = "adr_one_postalcode!='' DESC,adr_one_postalcode $sort,org_name $sort,n_family $sort,n_given $sort";
break;
case 'contact_modified':
case 'contact_created':
$order = "$query[order] IS NULL,$query[order] $sort,org_name $sort,n_family $sort,n_given $sort";
break;
}
if ($query['searchletter']) // only show contacts if the order-criteria starts with the given letter
{
@ -694,7 +699,7 @@ class uicontacts extends bocontacts
switch($order)
{
case 'adr_one_postalcode':
default: // postalcode, created, modified, ...
case 'org_name':
$row['line1'] = $row['org_name'];
$row['line2'] = $row['n_family'].($given ? ', '.$given : '');
@ -772,12 +777,15 @@ class uicontacts extends bocontacts
}
}
}
// disable photo column, if view contains no photo(s)
if (!$photos || $this->prefs['photo_column'] == 'never') $rows['no_photo'] = '1';
if (!$this->prefs['no_auto_hide'])
{
// disable photo column, if view contains no photo(s)
if (!$photos) $rows['no_photo'] = true;
// disable homeaddress column, if we have no homeaddress(es)
if (!$homeaddress) $rows['no_home'] = true;
}
// disable customfields column, if we have no customefield(s)
if (!$customfields || $this->prefs['custom_column'] == 'never') $rows['no_customfields'] = '1';
// disable homeaddress column, if we have no homeaddress(es)
if ($homeaddress && !$this->prefs['home_column'] || $this->prefs['home_column'] == 'always') $rows['show_home'] = '1';
if (!$customfields) $rows['no_customfields'] = true;
$rows['order'] = $order;
$rows['call_popup'] = $this->config['call_popup'];

File diff suppressed because one or more lines are too long

View File

@ -104,6 +104,7 @@ do you want a private addressbook, which can not be viewed by users, you grant a
do your really want to delete this contact? addressbook de Wollen sie diesen Kontakt wirklich löschen?
doesn't matter addressbook de egal
domestic addressbook de Wohnung
don't hide empty columns addressbook de Leere Spalten nicht ausblenden
download addressbook de Herunterladen
download export file (uncheck to debug output in browser) addressbook de Download Export-Datei (zur Vorschau im Browser Ankreuzfeld frei lassen)
download this contact as vcard file addressbook de Diese Adresse als vCard Datei herunterladen
@ -184,8 +185,8 @@ list all customfields addressbook de Liste alle benutzerdefinierten Felder
load vcard addressbook de VCard laden
locations addressbook de Standorte
mark records as private addressbook de Eintrag als Privat kennzeichnen
merged addressbook en vereinigt
merge into first or account, deletes all other! addressbook en Vereinige im ersten oder Benutzerkonto, löscht alle anderen!
merge into first or account, deletes all other! addressbook de Vereinige im ersten oder Benutzerkonto, löscht alle anderen!
merged addressbook de vereinigt
message phone addressbook de Anrufbeantworter
middle name addressbook de Zweiter Vorname
migration finished addressbook de Migration beendet
@ -200,7 +201,6 @@ name, address addressbook de Name, Adresse
no vcard addressbook de Keine VCard
number addressbook de Nummer
number of records to read (%1) addressbook de Anzahl der einzulesenden Datensätze (%1)
only if there is content addressbook de nur wenn etwas angezeigt wird
options for type admin de Optionen für Typ
organisation addressbook de Organisation
organisations addressbook de Organisationen
@ -244,8 +244,8 @@ select the type of conversion addressbook de Typ der Umwandlung ausw
select the type of conversion: addressbook de Typ der Umwandlung auswählen:
select where you want to store / retrieve contacts admin de Auswählen wo Sie Adressen speichern wollen
selected contacts addressbook de ausgewählte Kontakte
should the columns photo and home address always be displayed, even if they are empty. addressbook de Sollen die Spalten Foto und Privatadresse immer angezeigt werden, auch wenn sie leer sind.
show addressbook de Anzeigen
show a column for %1 addressbook de Zeige eine %1 Spalte
show birthday reminders on main screen addressbook de Geburtstagserinnerungen auf der Startseite anzeigen
show infolog entries for this organisation addressbook de InfoLog Einträge dieser Organisation anzeigen
show the contacts of this organisation addressbook de Kontakte dieser Organisation anzeigen
@ -282,7 +282,6 @@ view linked infolog entries addressbook de Verkn
warning!! ldap is valid only if you are not using contacts for accounts storage! admin de WARNUNG!! LDAP darf nur verwendet werden, wenn sie die Benutzerkonten nicht im Adressbuch speichern!
warning: all contacts found will be deleted! addressbook de WARNUNG: Alle gefundenen Kontakte werden gelöscht!
what should links to the addressbook display in other applications. empty values will be left out. you need to log in anew, if you change this setting! addressbook de Was sollen Verknüpfungen zum Adressbuch in anderen Anwendungen anzeigen. Leere Werte werden ausgelassen. Sie müssen sich neu anmelden, wenn Sie hier eine Änderung vornehmen!
when should the contacts list display that colum. "only if there is content" hides the column, unless there is some content in the view. addressbook de Wann soll die Adressliste diese Spalte anzeigen. "Nur wenn etwas angezeigt wird" blendet die Spalte aus, wenn Sie in dieser Anzeige leer wäre.
which addressbook should be selected when adding a contact and you have no add rights to the current addressbook. addressbook de Welches Adressbuch soll ausgewählt sein beim Hinzfügen von Kontakten, wenn Sie keine Hinzufügen Rechte zum aktuellen Adressbuch haben.
which charset should be used for the csv export. the system default is the charset of this egroupware installation. addressbook de Welcher Zeichensatz soll für den CSV Export verwendet werden. Die systemweite Vorgabe ist der Zeichensatz der eGroupWare Installation.
which fields should be exported. all means every field stored in the addressbook incl. the custom fields. the business or home address only contains name, company and the selected address. addressbook de Welche Felder sollen exportiert werden. Alle bedeutet jedes Feld das im Adressbuch gespeichert ist einschl. der benutzerdefinierten Felder. Die Geschäfts- oder Privatadresse enthält nur Name, Firma und die ausgewählte Adresse.

View File

@ -104,6 +104,7 @@ do you want a private addressbook, which can not be viewed by users, you grant a
do your really want to delete this contact? addressbook en Do your really want to delete this contact?
doesn't matter addressbook en doesn't matter
domestic addressbook en Domestic
don't hide empty columns addressbook en Don't hide empty columns
download addressbook en Download
download export file (uncheck to debug output in browser) addressbook en Download export file (Uncheck to debug output in browser)
download this contact as vcard file addressbook en download this contact as vCard file
@ -184,8 +185,8 @@ list all customfields addressbook en List all customfields
load vcard addressbook en Load VCard
locations addressbook en locations
mark records as private addressbook en Mark records as private
merged addressbook en merged
merge into first or account, deletes all other! addressbook en Merge into first or account, deletes all other!
merged addressbook en merged
message phone addressbook en Message Phone
middle name addressbook en Middle Name
migration finished addressbook en Migration finished
@ -200,7 +201,6 @@ name, address addressbook en Name, Address
no vcard addressbook en No VCard
number addressbook en Number
number of records to read (%1) addressbook en Number of records to read (%1)
only if there is content addressbook en only if there is content
options for type admin en Options for type
organisation addressbook en organisation
organisations addressbook en Organisations
@ -244,8 +244,8 @@ select the type of conversion addressbook en Select the type of conversion
select the type of conversion: addressbook en Select the type of conversion:
select where you want to store / retrieve contacts admin en Select where you want to store / retrieve contacts
selected contacts addressbook en selected contacts
should the columns photo and home address always be displayed, even if they are empty. addressbook en Should the columns photo and home address always be displayed, even if they are empty.
show addressbook en Show
show a column for %1 addressbook en Show a column for %1
show birthday reminders on main screen addressbook en Show birthday reminders on main screen
show infolog entries for this organisation addressbook en Show InfoLog entries for this organisation
show the contacts of this organisation addressbook en Show the contacts of this organisation
@ -282,7 +282,6 @@ view linked infolog entries addressbook en View linked InfoLog entries
warning!! ldap is valid only if you are not using contacts for accounts storage! admin en WARNING!! LDAP is valid only if you are NOT using contacts for accounts storage!
warning: all contacts found will be deleted! addressbook en WARNING: All contacts found will be deleted!
what should links to the addressbook display in other applications. empty values will be left out. you need to log in anew, if you change this setting! addressbook en What should links to the addressbook display in other applications. Empty values will be left out. You need to log in anew, if you change this setting!
when should the contacts list display that colum. "only if there is content" hides the column, unless there is some content in the view. addressbook en When should the contacts list display that colum. "Only if there is content" hides the column, unless there is some content in the view.
which addressbook should be selected when adding a contact and you have no add rights to the current addressbook. addressbook en Which addressbook should be selected when adding a contact AND you have no add rights to the current addressbook.
which charset should be used for the csv export. the system default is the charset of this egroupware installation. addressbook en Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.
which fields should be exported. all means every field stored in the addressbook incl. the custom fields. the business or home address only contains name, company and the selected address. addressbook en Which fields should be exported. All means every field stored in the addressbook incl. the custom fields. The business or home address only contains name, company and the selected address.

View File

@ -70,3 +70,6 @@
.space{
width: 80px;
}
.noWrap{
white-space: nowrap;
}

View File

@ -9,26 +9,15 @@
<column/>
<column/>
<column/>
<column disabled="@no_customfields"/>
<column width="90"/>
</columns>
<rows>
<row class="th">
<description/>
<description value="#" align="center"/>
<nextmatch-header label="#" align="center" id="number"/>
<nextmatch-sortheader id="org_name" label="Organisation"/>
<description value="department"/>
<nextmatch-header label="Department" id="org_unit"/>
<description value="Business address"/>
<grid spacing="0" padding="0">
<columns>
<column/>
</columns>
<rows>
<row>
<description no_lang="1" id="customfields[$row][label]"/>
</row>
</rows>
</grid>
<hbox align="center" class="noPrint">
<description value="Actions" align="center"/>
<button image="check" label="Check all" id="check_all" statustext="Check all" onclick="toggle_all(this.form,form::name('checked[]')); return false;" needed="1" align="right"/>
@ -48,16 +37,6 @@
<description no_lang="1" id="${row}[adr_one_street]"/>
<description id="${row}[adr_one_street2]" no_lang="1"/>
</vbox>
<grid height="60" spacing="0" padding="0" overflow="auto">
<columns>
<column/>
</columns>
<rows>
<row>
<description class="fixedHeight" id="$row" no_lang="1"/>
</row>
</rows>
</grid>
<hbox options="0" class="noPrint" orient="0">
<button image="view" label="View" id="view[$row_cont[id]]" statustext="Show the contacts of this organisation"/>
<button image="new" label="Add" onclick="window.open(egw::link('/index.php','menuaction=addressbook.uicontacts.edit&amp;org=$row_cont[id]'),'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;" id="add[$row_cont[id]]" statustext="Add a contact to this organisation"/>

View File

@ -14,14 +14,16 @@
<template id="addressbook.index.rows" template="" lang="" group="0" version="1.3.001">
<grid width="100%">
<columns>
<column/>
<column/>
<column/>
<column width="60" disabled="@no_photo"/>
<column/>
<column disabled="!@show_home"/>
<column disabled="@no_home"/>
<column/>
<column/>
<column disabled="@no_customfields"/>
<column/>
<column width="90"/>
</columns>
<rows>
@ -47,7 +49,7 @@
<row>
<nextmatch-sortheader id="org_name" label="Organisation" span="all"/>
</row>
<row disabled="!@order=/^(org_name|n_fileas|adr_one_postalcode)$/">
<row disabled="!@order=/^(org_name|n_fileas|adr_one_postalcode|contact_modified|contact_created)$/">
<nextmatch-sortheader id="n_family" label="Name"/>
<nextmatch-sortheader id="n_given" label="Firstname" class="leftPad5"/>
</row>
@ -56,33 +58,41 @@
</row>
</rows>
</grid>
<description value="Photo"/>
<nextmatch-header label="Category" id="cat_id"/>
<nextmatch-header label="Photo" id="photo"/>
<vbox options="0,0">
<description value="Business address"/>
<nextmatch-header label="Business address" id="business"/>
<nextmatch-customfilter id="adr_one_countryname" options="select-country,Country,1" class="countrySelect"/>
<nextmatch-sortheader id="adr_one_postalcode" label="zip code"/>
</vbox>
<description value="Home address"/>
<nextmatch-header label="Home address" id="home"/>
<vbox options="0,0">
<description id="tel_work" value="Business phone"/>
<description value="Mobile phone" id="tel_cell"/>
<description id="tel_home" value="Home phone"/>
<nextmatch-header id="tel_work" label="Business phone"/>
<nextmatch-header label="Mobile phone" id="tel_cell"/>
<nextmatch-header id="tel_home" label="Home phone"/>
</vbox>
<vbox options="0,0">
<description id="url" value="Url"/>
<description value="Business email" id="email"/>
<description id="email_home" value="Home email"/>
<nextmatch-header id="url" label="Url"/>
<nextmatch-header label="Business email" id="email"/>
<nextmatch-header id="email_home" label="Home email"/>
</vbox>
<vbox options="0,0">
<nextmatch-header id="customfields" options="Custom fields"/>
<grid spacing="0" padding="0">
<columns>
<column/>
</columns>
<rows>
<row>
<description no_lang="1" id="customfields[$row][label]"/>
</row>
</rows>
</grid>
</vbox>
<vbox options="0,0">
<nextmatch-sortheader id="contact_created" label="Created"/>
<nextmatch-sortheader id="contact_modified" label="Last modified"/>
</vbox>
<grid spacing="0" padding="0">
<columns>
<column/>
</columns>
<rows>
<row>
<description no_lang="1" id="customfields[$row][label]"/>
</row>
</rows>
</grid>
<hbox align="center" class="noPrint">
<description value="Actions" align="center"/>
<button image="check" label="Check all" id="check_all" statustext="Check all" onclick="toggle_all(this.form,form::name('checked[]')); return false;" needed="1" align="right"/>
@ -97,6 +107,9 @@
<description id="${row}[title]" no_lang="1"/>
<description id="${row}[first_org]" no_lang="1"/>
</vbox>
<menulist>
<menupopup type="select-cat" options="1" id="${row}[cat_id]" readonly="true"/>
</menulist>
<image src="${row}[photo]"/>
<vbox options="0,0">
<description id="${row}[adr_one_countryname]" no_lang="1"/>
@ -127,16 +140,26 @@
<description options=",@${row}[email_link],,,_blank,$row_cont[email_popup]" class="fixedHeight" id="${row}[email]" no_lang="1"/>
<description options=",@${row}[email_home_link],,,_blank,$row_cont[email_home_popup]" class="fixedHeight" id="${row}[email_home]" no_lang="1"/>
</vbox>
<grid height="48" border="0" spacing="0" padding="0" overflow="auto">
<grid height="48" border="0" spacing="0" padding="0" overflow="auto" id="${row}[customfields]">
<columns>
<column/>
</columns>
<rows>
<row>
<description class="fixedHeight" id="$row" no_lang="1"/>
<description class="fixedHeight" no_lang="1" id="$row"/>
</row>
</rows>
</grid>
<vbox options="0,0">
<date-time id="${row}[created]" readonly="true" class="noWrap"/>
<menulist>
<menupopup type="select-account" id="${row}[creator]" readonly="true"/>
</menulist>
<date-time id="${row}[modified]" readonly="true" class="noBreak"/>
<menulist>
<menupopup type="select-account" id="${row}[modifier]" readonly="true"/>
</menulist>
</vbox>
<hbox options="0" class="noPrint" orient="0">
<image options="addressbook.uicontacts.view&amp;contact_id=$row_cont[id]" label="View" src="view"/>
<button image="edit" label="Edit" onclick="window.open(egw::link('/index.php','menuaction=addressbook.uicontacts.edit&amp;contact_id=$row_cont[id]'),'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;" id="edit[$row_cont[id]]"/>

View File

@ -313,6 +313,17 @@ class uiinfolog
$ids = array( );
}
$details = $query['filter2'] == 'all';
// add a '-details' to the name of the columnselection pref
if ($details)
{
$query['columnselection_pref'] = (is_object($query['template'])?$query['template']->name:'infolog.index.rows').'-details';
$query['default_cols'] = '!cat_id,info_used_time_info_planned_time,info_id';
}
else
{
unset($query['columnselection_pref']); // it might be set
$query['default_cols'] = '!cat_id,info_datemodified,info_used_time_info_planned_time,info_id';
}
$readonlys = $rows = array();
foreach($ids as $id => $info)
{
@ -324,13 +335,17 @@ class uiinfolog
}
$rows[] = $info;
}
if ($query['cat_id']) $rows['no_cat_id'] = true;
if ($query['no_actions']) $rows['no_actions'] = true;
$rows['no_modified'] = !$this->prefs['show_modified'] || $this->prefs['show_modified'] == 2 && !$details;
$rows['no_times'] = !$this->prefs['show_times'] || $this->prefs['show_times'] == 2 && !$details;
$rows['no_timesheet'] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
$rows['duration_format'] = ','.$this->duration_format.',,1';
$rows['no_users'] = $GLOBALS['egw_info']['user']['preferences']['common']['account_selection'] == 'none' &&
!isset($GLOBALS['egw_info']['user']['apps']['admin']);
if ($GLOBALS['egw_info']['user']['preferences']['common']['account_selection'] == 'none' &&
!isset($GLOBALS['egw_info']['user']['apps']['admin']))
{
$rows['no_info_owner_info_responsible'] = true;
// dont show owner, responsible in the columnselection
$query['options-selectcols']['info_owner'] = $query['options-selectcols']['info_responsible'] = false;
}
//echo "<p>readonlys = "; _debug_array($readonlys);
//echo "rows=<pre>".print_r($rows,True)."</pre>\n";
@ -482,7 +497,6 @@ class uiinfolog
break;
}
$values['main'][1] = $this->get_info($action_id,$readonlys['main']);
$values['main']['no_times'] = !$this->prefs['show_times'];
break;
}
$readonlys['cancel'] = $action != 'sp';
@ -498,6 +512,15 @@ class uiinfolog
'all' => 'details',
);
if(!isset($values['nm']['filter2'])) $values['nm']['filter2'] = $this->prefs['show_links'];
// disable columns for main entry as set in the pref for details or no details
if ($action == 'sp')
{
$pref = 'nextmatch-infolog.index.rows'.($values['nm']['filter2']=='all'?'-details':'');
foreach(array('info_used_time_info_planned_time','info_datemodified','info_owner_info_responsible') as $name)
{
$values['main']['no_'.$name] = strstr($this->prefs[$pref],$name) === false;
}
}
$values['nm']['header_right'] = 'infolog.index.header_right';
if ($extra_app_header)
{

View File

@ -86,15 +86,6 @@
'xmlrpc' => True,
'admin' => False
),
'show_times' => array(
'type' => 'select',
'label' => 'Show times',
'name' => 'show_times',
'values' => $show_details,
'help' => 'Show a column for used and planned times in the list.',
'xmlrpc' => True,
'admin' => False
),
'show_percent' => array(
'type' => 'select',
'label' => 'Show status and percent done separate',
@ -113,15 +104,6 @@
'xmlrpc' => True,
'admin' => False
),
'show_modified' => array(
'type' => 'select',
'label' => 'Show last modified',
'name' => 'show_modified',
'values' => $show_details,
'help' => 'Should the Infolog list show the column "last modified".',
'xmlrpc' => True,
'admin' => False
),
'set_start' => array(
'type' => 'select',
'label' => 'Startdate for new entries',

File diff suppressed because one or more lines are too long

View File

@ -13,13 +13,13 @@
<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.3.002">
<template id="infolog.index.rows-noheader" template="" lang="" group="0" version="1.3.003">
<grid>
<columns>
<column width="2%"/>
<column/>
<column width="120"/>
<column disabled="@no_times"/>
<column disabled="@no_info_used_time_info_planned_time"/>
<column width="8%" disabled="@no_users"/>
<column width="12%" disabled="@no_modified"/>
<column width="3%" disabled="@no_actions"/>
@ -112,7 +112,7 @@
<column width="2%"/>
<column/>
<column width="120"/>
<column disabled="@no_times"/>
<column/>
<column width="8%" disabled="@no_users"/>
<column width="12%" disabled="@no_modified"/>
<column width="3%" disabled="@no_actions"/>
@ -175,7 +175,7 @@
<description class="$row_cont[sub_class]" no_lang="1" id="${row}[info_subject]"/>
<description no_lang="1" align="right" id="{$row}[info_number]" class="infoId"/>
</hbox>
<description options=",,1" no_lang="1" id="${row}[info_des]"/>
<description no_lang="1" id="${row}[info_des]" options=",,1"/>
<link-string id="${row}[filelinks]"/>
</vbox>
<vbox options="0,0,1" rows="3" cols="1">

View File

@ -526,7 +526,7 @@ class uitimesheet extends botimesheet
$row['titleClass'] = 'titleDetails';
}
}
$rows['no_cats'] = !$have_cats;
if (!$have_cats || $query['cat_id']) $rows['no_cat_id'] = true;
if ($query['col_filter']['ts_owner']) $rows['ownerClass'] = 'noPrint';
$rows['no_owner_col'] = $query['no_owner_col'];
if ($query['filter'])

View File

@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application timesheet
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2007-01-12 01:04
* generated by soetemplate::dump4setup() 2007-03-04 12:23
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package timesheet
@ -44,5 +44,5 @@ $templ_data[] = array('name' => 'timesheet.index.dates','template' => '','lang'
$templ_data[] = array('name' => 'timesheet.index.rows','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:3:{i:0;a:5:{s:2:"c1";s:2:"th";s:2:"c2";s:16:"$row_cont[class]";s:1:"A";s:3:"15%";s:1:"G";s:14:",@no_owner_col";s:1:"B";s:3:"50%";}i:1;a:8:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Date";s:4:"name";s:8:"ts_start";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";s:7:"no_lang";s:1:"1";i:1;a:4:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"size";s:7:"Project";s:4:"name";s:10:"ts_project";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Title";s:4:"name";s:8:"ts_title";}}s:1:"C";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Duration";s:4:"name";s:11:"ts_duration";}i:2;a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:8:"duration";s:4:"size";s:6:",h,,,1";s:8:"readonly";s:1:"1";}}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Quantity";s:4:"name";s:11:"ts_quantity";}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Price";s:4:"name";s:12:"ts_unitprice";}s:1:"F";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Total";s:4:"name";s:8:"ts_total";}i:2;a:4:{s:4:"type";s:5:"float";s:4:"name";s:5:"price";s:8:"readonly";s:1:"1";s:4:"size";s:4:",,,2";}}s:1:"G";a:5:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"name";s:8:"ts_owner";s:4:"size";s:4:"User";s:7:"no_lang";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"H";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"span";s:8:",noPrint";}}i:2;a:8:{s:1:"A";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[ts_start]";s:8:"readonly";s:1:"1";s:4:"size";s:2:",8";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:4:"link";s:4:"name";s:15:"${row}[ts_link]";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[ts_title]";s:7:"no_lang";s:1:"1";s:4:"span";s:22:",$row_cont[titleClass]";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:22:"${row}[ts_description]";s:7:"no_lang";s:1:"1";}}s:1:"C";a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:19:"${row}[ts_duration]";s:8:"readonly";s:1:"1";s:4:"size";s:6:",h,,,1";}s:1:"D";a:5:{s:4:"type";s:5:"float";s:4:"name";s:19:"${row}[ts_quantity]";s:7:"no_lang";s:1:"1";s:4:"size";s:4:",,,3";s:8:"readonly";s:1:"1";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[ts_unitprice]";}s:1:"F";a:5:{s:4:"type";s:5:"float";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[ts_total]";s:4:"size";s:4:",,,2";s:8:"readonly";s:1:"1";}s:1:"G";a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[ts_owner]";s:8:"readonly";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"H";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:5:"label";s:4:"View";s:4:"name";s:22:"view[$row_cont[ts_id]]";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.view&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:4:"help";s:15:"View this entry";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:4:"name";s:22:"edit[$row_cont[ts_id]]";s:4:"help";s:15:"Edit this entry";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.edit&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";}i:3;a:6:{s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"name";s:24:"delete[$row_cont[ts_id]]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:8;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1134799629',);
$templ_data[] = array('name' => 'timesheet.index.rows','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:6:{s:2:"c1";s:2:"th";s:2:"c2";s:16:"$row_cont[class]";s:1:"A";s:3:"15%";s:1:"B";s:3:"50%";s:1:"H";s:14:",@no_owner_col";s:1:"C";s:9:",@no_cats";}i:1;a:9:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Date";s:4:"name";s:8:"ts_start";}s:1:"B";a:7:{s:4:"type";s:4:"grid";s:7:"no_lang";s:1:"1";s:4:"data";a:4:{i:0;a:2:{s:2:"h1";s:21:",@pm_integration=full";s:2:"h2";s:22:",!@pm_integration=full";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"size";s:12:"All projects";s:4:"name";s:10:"ts_project";s:7:"no_lang";s:1:"1";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"size";s:34:"projectmanager-select,All projects";s:4:"name";s:5:"pm_id";s:8:"onchange";i:1;}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Title";s:4:"name";s:8:"ts_title";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:7:"options";a:2:{i:4;s:1:"1";i:5;s:1:"1";}s:4:"size";s:7:",,,,1,1";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"D";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Duration";s:4:"name";s:11:"ts_duration";}i:2;a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:8:"duration";s:4:"size";s:6:",h,,,1";s:8:"readonly";s:1:"1";}}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Quantity";s:4:"name";s:11:"ts_quantity";}s:1:"F";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Price";s:4:"name";s:12:"ts_unitprice";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Total";s:4:"name";s:8:"ts_total";}i:2;a:4:{s:4:"type";s:5:"float";s:4:"name";s:5:"price";s:8:"readonly";s:1:"1";s:4:"size";s:4:",,,2";}}s:1:"H";a:5:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"name";s:8:"ts_owner";s:4:"size";s:4:"User";s:7:"no_lang";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"I";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"span";s:8:",noPrint";}}i:2;a:9:{s:1:"A";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[ts_start]";s:8:"readonly";s:1:"1";s:4:"size";s:2:",8";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:4:"link";s:4:"name";s:15:"${row}[ts_link]";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[ts_title]";s:7:"no_lang";s:1:"1";s:4:"span";s:22:",$row_cont[titleClass]";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:22:"${row}[ts_description]";s:7:"no_lang";s:1:"1";}}s:1:"C";a:4:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:1:"1";s:4:"name";s:14:"${row}[cat_id]";s:4:"span";s:7:",noWrap";}s:1:"D";a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:19:"${row}[ts_duration]";s:8:"readonly";s:1:"1";s:4:"size";s:6:",h,,,1";}s:1:"E";a:5:{s:4:"type";s:5:"float";s:4:"name";s:19:"${row}[ts_quantity]";s:7:"no_lang";s:1:"1";s:4:"size";s:4:",,,3";s:8:"readonly";s:1:"1";}s:1:"F";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[ts_unitprice]";}s:1:"G";a:5:{s:4:"type";s:5:"float";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[ts_total]";s:4:"size";s:4:",,,2";s:8:"readonly";s:1:"1";}s:1:"H";a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[ts_owner]";s:8:"readonly";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"I";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:5:"label";s:4:"View";s:4:"name";s:22:"view[$row_cont[ts_id]]";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.view&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:4:"help";s:15:"View this entry";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:4:"name";s:22:"edit[$row_cont[ts_id]]";s:4:"help";s:15:"Edit this entry";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.edit&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";}i:3;a:6:{s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"name";s:24:"delete[$row_cont[ts_id]]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:9;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1134799629',);
$templ_data[] = array('name' => 'timesheet.index.rows','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:6:{s:2:"c1";s:2:"th";s:2:"c2";s:16:"$row_cont[class]";s:1:"A";s:3:"15%";s:1:"B";s:3:"50%";s:1:"H";s:14:",@no_owner_col";s:1:"C";s:11:",@no_cat_id";}i:1;a:9:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Date";s:4:"name";s:8:"ts_start";}s:1:"B";a:7:{s:4:"type";s:4:"grid";s:7:"no_lang";s:1:"1";s:4:"data";a:4:{i:0;a:2:{s:2:"h1";s:21:",@pm_integration=full";s:2:"h2";s:22:",!@pm_integration=full";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"size";s:12:"All projects";s:4:"name";s:10:"ts_project";s:7:"no_lang";s:1:"1";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"size";s:34:"projectmanager-select,All projects";s:4:"name";s:5:"pm_id";s:8:"onchange";i:1;}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Title";s:4:"name";s:8:"ts_title";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:7:"options";a:2:{i:4;s:1:"1";i:5;s:1:"1";}s:4:"size";s:7:",,,,1,1";}s:1:"C";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"D";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Duration";s:4:"name";s:11:"ts_duration";}i:2;a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:8:"duration";s:4:"size";s:6:",h,,,1";s:8:"readonly";s:1:"1";}}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Quantity";s:4:"name";s:11:"ts_quantity";}s:1:"F";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Price";s:4:"name";s:12:"ts_unitprice";}s:1:"G";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:5:"Total";s:4:"name";s:8:"ts_total";}i:2;a:4:{s:4:"type";s:5:"float";s:4:"name";s:5:"price";s:8:"readonly";s:1:"1";s:4:"size";s:4:",,,2";}}s:1:"H";a:5:{s:4:"type";s:22:"nextmatch-filterheader";s:4:"name";s:8:"ts_owner";s:4:"size";s:4:"User";s:7:"no_lang";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"I";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"span";s:8:",noPrint";}}i:2;a:9:{s:1:"A";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[ts_start]";s:8:"readonly";s:1:"1";s:4:"size";s:2:",8";}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:4:"link";s:4:"name";s:15:"${row}[ts_link]";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[ts_title]";s:7:"no_lang";s:1:"1";s:4:"span";s:22:",$row_cont[titleClass]";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:22:"${row}[ts_description]";s:7:"no_lang";s:1:"1";}}s:1:"C";a:4:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:1:"1";s:4:"name";s:14:"${row}[cat_id]";s:4:"span";s:7:",noWrap";}s:1:"D";a:4:{s:4:"type";s:13:"date-duration";s:4:"name";s:19:"${row}[ts_duration]";s:8:"readonly";s:1:"1";s:4:"size";s:6:",h,,,1";}s:1:"E";a:5:{s:4:"type";s:5:"float";s:4:"name";s:19:"${row}[ts_quantity]";s:7:"no_lang";s:1:"1";s:4:"size";s:4:",,,3";s:8:"readonly";s:1:"1";}s:1:"F";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[ts_unitprice]";}s:1:"G";a:5:{s:4:"type";s:5:"float";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[ts_total]";s:4:"size";s:4:",,,2";s:8:"readonly";s:1:"1";}s:1:"H";a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[ts_owner]";s:8:"readonly";s:1:"1";s:4:"span";s:18:",$cont[ownerClass]";}s:1:"I";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:5:"label";s:4:"View";s:4:"name";s:22:"view[$row_cont[ts_id]]";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.view&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:4:"help";s:15:"View this entry";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:4:"name";s:22:"edit[$row_cont[ts_id]]";s:4:"help";s:15:"Edit this entry";s:7:"onclick";s:186:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.uitimesheet.edit&ts_id=$row_cont[ts_id]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";}i:3;a:6:{s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"name";s:24:"delete[$row_cont[ts_id]]";s:4:"help";s:17:"Delete this entry";s:7:"onclick";s:36:"return confirm(\'Delete this entry\');";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:9;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1134799629',);

View File

@ -20,7 +20,7 @@
<columns>
<column width="15%"/>
<column width="50%"/>
<column disabled="@no_cats"/>
<column disabled="@no_cat_id"/>
<column/>
<column/>
<column/>
@ -47,7 +47,7 @@
</row>
</rows>
</grid>
<nextmatch-sortheader label="Category" id="cat_id"/>
<nextmatch-header label="Category" id="cat_id"/>
<vbox>
<nextmatch-sortheader label="Duration" id="ts_duration"/>
<date-duration id="duration" options=",h,,,1" readonly="true"/>