diff --git a/addressbook/inc/class.uicontacts.inc.php b/addressbook/inc/class.uicontacts.inc.php
index b372a28bb9..230750de33 100644
--- a/addressbook/inc/class.uicontacts.inc.php
+++ b/addressbook/inc/class.uicontacts.inc.php
@@ -831,13 +831,16 @@ class uicontacts extends bocontacts
// do we need to read the custom fields, depends on the column is enabled and customfields exist
$columselection = $this->prefs['nextmatch-addressbook.'.($do_email ? 'email' : 'index').'.rows'];
if ($columselection) $columselection = explode(',',$columselection);
- if (!$id_only && (!$columselection || in_array('customfields',$columselection)) && $rows && $this->customfields)
+ if (!$id_only && $rows && (
+ ($show_custom_fields = (!$columselection || in_array('customfields',$columselection)) && $this->customfields) ||
+ ($show_calendar = !$columselection || in_array('calendar',$columselection))))
{
foreach((array) $rows as $n => $val)
{
if ($val && (int)$val['id']) $ids[] = $val['id'];
}
- if ($ids) $customfields = $this->read_customfields($ids);
+ if ($ids && $show_custom_fields) $customfields = $this->read_customfields($ids);
+ if ($ids && $show_calendar) $calendar = $this->read_calendar($ids);
}
}
if (!$rows) $rows = array();
@@ -931,6 +934,13 @@ class uicontacts extends bocontacts
$row['#'.$name] = $customfields[$row['id']][$name];
}
}
+ if (isset($calendar[$row['id']]))
+ {
+ foreach($calendar[$row['id']] as $name => $data)
+ {
+ $row[$name] = $data;
+ }
+ }
if ($this->prefs['home_column'] != 'never' && !$homeaddress)
{
foreach(array('adr_two_countryname','adr_two_locality','adr_two_postalcode','adr_two_street','adr_two_street2') as $name)
@@ -1922,6 +1932,73 @@ $readonlys['button[vcard]'] = true;
}
return $actions;
}
+
+ /**
+ * Read the next and last event of given contacts
+ *
+ * @param array $ids contact_id's
+ * @return array
+ */
+ function read_calendar($ids)
+ {
+ if (!$GLOBALS['egw_info']['user']['apps']['calendar']) return null;
+
+ $uids = array();
+ foreach($ids as $id)
+ {
+ $uids[] = 'c'.$id;
+ }
+ include_once(EGW_INCLUDE_ROOT.'/calendar/inc/class.bocal.inc.php');
+ $bocal = new bocal;
+ $events = $bocal->search(array(
+ 'users' => $uids,
+ 'enum_recuring' => true,
+ ));
+ if (!$events) return array();
+
+ //_debug_array($events);
+ $calendars = array();
+ foreach($events as $event)
+ {
+ foreach($event['participants'] as $uid => $status)
+ {
+ if ($uid{0} != 'c' || ($status == 'R' && !$GLOBALS['egw_info']['user']['preferences']['calendar']['show_rejected']))
+ {
+ continue;
+ }
+ $id = (int)substr($uid,1);
+
+ if ($event['start'] < $this->now_su) // past event --> check for last event
+ {
+ if (!isset($calendars[$id]['last_event']) || $event['start'] > $calendars[$id]['last_event'])
+ {
+ $calendars[$id]['last_event'] = $event['start'];
+ $calendars[$id]['last_link'] = array(
+ 'id' => $event['id'],
+ 'app' => 'calendar',
+ 'title' => date($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'],$event['start']),
+ 'extra_title' => $bocal->link_title($event),
+ );
+ }
+ }
+ else // future event --> check for next event
+ {
+ if (!isset($calendars[$id]['next_event']) || $event['start'] < $calendars[$id]['next_event'])
+ {
+ $calendars[$id]['next_event'] = $event['start'];
+ $calendars[$id]['next_link'] = array(
+ 'id' => $event['id'],
+ 'app' => 'calendar',
+ 'title' => date($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'],$event['start']),
+ 'extra_title' => $bocal->link_title($event),
+ );
+ }
+ }
+ }
+ }
+ //_debug_array($calendars);
+ return $calendars;
+ }
}
if (!function_exists('array_intersect_key')) // php5.1 function
diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php
index 703a40addd..5148371ae6 100755
--- a/addressbook/setup/etemplates.inc.php
+++ b/addressbook/setup/etemplates.inc.php
@@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application addressbook
* http://www.egroupware.org
- * generated by soetemplate::dump4setup() 2007-07-22 14:41
+ * generated by soetemplate::dump4setup() 2007-09-14 12:09
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package addressbook
@@ -162,6 +162,8 @@ $templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang'
$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.4.002','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:7:"row,top";s:1:"I";s:17:",@no_customfields";s:1:"F";s:9:",@no_home";s:1:"D";s:12:"60,@no_photo";s:1:"K";s:2:"90";}i:1;a:11:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:5:{s:2:"h2";s:16:",!@order=n_given";s:2:"h5";s:84:",!@order=/^(org_name|n_fileas|adr_one_postalcode|contact_modified|contact_created)$/";s:2:"h3";s:17:",!@order=n_family";s:2:"h1";s:17:",!@order=n_fileas";s:2:"h6";s:16:",@order=n_fileas";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"span";s:3:"all";s:5:"label";s:11:"own sorting";s:4:"name";s:8:"n_fileas";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}}i:4;a:2:{s:1:"A";a:4:{s:4:"name";s:8:"org_name";s:5:"label";s:12:"Organisation";s:4:"span";s:3:"all";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:5;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:8:"n_family";s:5:"label";s:4:"Name";}s:1:"B";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";s:4:"span";s:9:",leftPad5";}}i:6;a:2:{s:1:"A";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"span";s:3:"all";s:5:"label";s:11:"own sorting";s:4:"name";s:8:"n_fileas";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:2;s:7:"options";a:2:{i:4;s:1:"0";i:5;s:1:"0";}s:4:"size";s:7:",,,,0,0";}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:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"E";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:16:"Business address";s:4:"name";s:8:"business";}i:2;a:4:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"name";s:19:"adr_one_countryname";s:4:"size";s:24:"select-country,Country,1";s:4:"span";s:14:",countrySelect";}i:3;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:18:"adr_one_postalcode";s:5:"label";s:8:"zip code";}}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"G";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:8:"tel_work";s:5:"label";s:14:"Business phone";}i:2;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Mobile phone";s:4:"name";s:8:"tel_cell";}i:3;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:8:"tel_home";s:5:"label";s:10:"Home phone";}}s:1:"H";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:3:"url";s:5:"label";s:3:"Url";}i:2;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:14:"Business email";s:4:"name";s:5:"email";}i:3;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:10:"email_home";s:5:"label";s:10:"Home email";}}s:1:"I";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:12:"customfields";s:4:"size";s:13:"Custom fields";}i:2;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:25:"customfields[$row][label]";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:7:",,,,0,0";}}s:1:"J";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:15:"contact_created";s:5:"label";s:7:"Created";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:16:"contact_modified";s:5:"label";s:13:"Last modified";}}s:1:"K";a:6:{s:4:"type";s:4:"hbox";s:5:"align";s:6:"center";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:5:"align";s:6:"center";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:5:"label";s:9:"Check all";s:4:"name";s:9:"check_all";s:4:"help";s:9:"Check all";s:7:"onclick";s:60:"toggle_all(this.form,form::name(\'checked[]\')); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";}s:4:"span";s:8:",noPrint";}}i:2;a:11:{s:1:"A";a:5:{s:4:"type";s:5:"image";s:5:"label";s:21:"$row_cont[type_label]";s:4:"name";s:12:"${row}[type]";s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";}s:1:"B";a:8:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[line1]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[line2]";s:7:"no_lang";s:1:"1";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[org_unit]";s:7:"no_lang";s:1:"1";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[title]";s:7:"no_lang";s:1:"1";}i:5;a:3:{s:4:"type";s:5:"label";s:4:"name";s:17:"${row}[first_org]";s:7:"no_lang";s:1:"1";}s:4:"name";s:10:"${row}[id]";}s:1:"C";a:4:{s:4:"type";s:10:"select-cat";s:4:"size";s:1:"1";s:4:"name";s:14:"${row}[cat_id]";s:8:"readonly";s:1:"1";}s:1:"D";a:2:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";}s:1:"E";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:7:"3,0,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:24:"${row}[adr_one_locality]";}i:2;a:4:{s:4:"type";s:5:"label";s:4:"span";s:9:",leftPad5";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_one_region]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:26:"${row}[adr_one_postalcode]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}i:3;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_one_street]";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:23:"${row}[adr_one_street2]";s:7:"no_lang";s:1:"1";}}s:1:"F";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:24:"${row}[adr_two_locality]";}i:2;a:4:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_two_region]";s:4:"span";s:9:",leftPad5";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:26:"${row}[adr_two_postalcode]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}i:3;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_two_street]";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:23:"${row}[adr_two_street2]";s:7:"no_lang";s:1:"1";}}s:1:"G";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_work_link],,,calling,$cont[call_popup]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_cell]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_cell_link],,,calling,$cont[call_popup]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_home]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_home_link],,,calling,$cont[call_popup]";}i:4;a:4:{s:4:"type";s:5:"label";s:4:"name";s:20:"${row}[tel_prefered]";s:7:"no_lang";s:1:"1";s:4:"size";s:57:",$row_cont[tel_prefered_link],,,calling,$cont[call_popup]";}}s:1:"H";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:4:"size";s:3:",,1";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:11:"${row}[url]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"size";s:52:",@${row}[email_link],,,_blank,$row_cont[email_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:7:"no_lang";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"size";s:62:",@${row}[email_home_link],,,_blank,$row_cont[email_home_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:7:"no_lang";s:1:"1";}}s:1:"I";a:6:{s:4:"type";s:17:"customfields-list";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:4:"$row";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"name";s:4:"$row";s:4:"span";s:13:",customfields";}s:1:"J";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:15:"${row}[created]";s:8:"readonly";s:1:"1";s:4:"span";s:7:",noWrap";}i:2;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[modified]";s:8:"readonly";s:1:"1";s:4:"span";s:8:",noBreak";}i:4;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[modifier]";s:8:"readonly";s:1:"1";}}s:1:"K";a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"5,0,0";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:23:"document[$row_cont[id]]";s:4:"size";s:3:"new";s:5:"label";s:18:"Insert in document";}i:2;a:4:{s:4:"type";s:5:"image";s:4:"size";s:52:"addressbook.uicontacts.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:3;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:189:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:4;a:6:{s:4:"type";s:6:"button";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"help";s:19:"Delete this contact";s:7:"onclick";s:38:"return confirm(\'Delete this contact\');";}s:4:"span";s:8:",noPrint";i:5;a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"checked[]";s:4:"size";s:13:"$row_cont[id]";s:4:"help";s:45:"Select multiple contacts for a further action";s:5:"align";s:5:"right";}}}}s:4:"rows";i:2;s:4:"cols";i:11;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1145192391',);
+$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.5.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:7:"row,top";s:1:"I";s:17:",@no_customfields";s:1:"F";s:9:",@no_home";s:1:"D";s:12:"60,@no_photo";s:1:"L";s:2:"90";}i:1;a:12:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:5:{s:2:"h2";s:16:",!@order=n_given";s:2:"h5";s:84:",!@order=/^(org_name|n_fileas|adr_one_postalcode|contact_modified|contact_created)$/";s:2:"h3";s:17:",!@order=n_family";s:2:"h1";s:17:",!@order=n_fileas";s:2:"h6";s:16:",@order=n_fileas";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"span";s:3:"all";s:5:"label";s:11:"own sorting";s:4:"name";s:8:"n_fileas";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}}i:4;a:2:{s:1:"A";a:4:{s:4:"name";s:8:"org_name";s:5:"label";s:12:"Organisation";s:4:"span";s:3:"all";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:5;a:2:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:8:"n_family";s:5:"label";s:4:"Name";}s:1:"B";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";s:4:"span";s:9:",leftPad5";}}i:6;a:2:{s:1:"A";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"span";s:3:"all";s:5:"label";s:11:"own sorting";s:4:"name";s:8:"n_fileas";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:2;s:7:"options";a:2:{i:4;s:1:"0";i:5;s:1:"0";}s:4:"size";s:7:",,,,0,0";}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:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"E";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:16:"Business address";s:4:"name";s:8:"business";}i:2;a:4:{s:4:"type";s:22:"nextmatch-customfilter";s:4:"name";s:19:"adr_one_countryname";s:4:"size";s:24:"select-country,Country,1";s:4:"span";s:14:",countrySelect";}i:3;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:18:"adr_one_postalcode";s:5:"label";s:8:"zip code";}}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"G";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:8:"tel_work";s:5:"label";s:14:"Business phone";}i:2;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Mobile phone";s:4:"name";s:8:"tel_cell";}i:3;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:8:"tel_home";s:5:"label";s:10:"Home phone";}}s:1:"H";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:3:"url";s:5:"label";s:3:"Url";}i:2;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:14:"Business email";s:4:"name";s:5:"email";}i:3;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:10:"email_home";s:5:"label";s:10:"Home email";}}s:1:"I";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:12:"customfields";s:4:"size";s:13:"Custom fields";}i:2;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:25:"customfields[$row][label]";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:7:",,,,0,0";}}s:1:"J";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:9:"Last date";s:4:"name";s:8:"calendar";}i:2;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:9:"Next date";s:4:"name";s:8:"calendar";}}s:1:"K";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:15:"contact_created";s:5:"label";s:7:"Created";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:16:"contact_modified";s:5:"label";s:13:"Last modified";}}s:1:"L";a:6:{s:4:"type";s:4:"hbox";s:5:"align";s:6:"center";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:5:"align";s:6:"center";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:5:"label";s:9:"Check all";s:4:"name";s:9:"check_all";s:4:"help";s:9:"Check all";s:7:"onclick";s:60:"toggle_all(this.form,form::name(\'checked[]\')); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";}s:4:"span";s:8:",noPrint";}}i:2;a:12:{s:1:"A";a:5:{s:4:"type";s:5:"image";s:5:"label";s:21:"$row_cont[type_label]";s:4:"name";s:12:"${row}[type]";s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";}s:1:"B";a:8:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[line1]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[line2]";s:7:"no_lang";s:1:"1";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[org_unit]";s:7:"no_lang";s:1:"1";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[title]";s:7:"no_lang";s:1:"1";}i:5;a:3:{s:4:"type";s:5:"label";s:4:"name";s:17:"${row}[first_org]";s:7:"no_lang";s:1:"1";}s:4:"name";s:10:"${row}[id]";}s:1:"C";a:4:{s:4:"type";s:10:"select-cat";s:4:"size";s:1:"1";s:4:"name";s:14:"${row}[cat_id]";s:8:"readonly";s:1:"1";}s:1:"D";a:2:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";}s:1:"E";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:7:"3,0,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:24:"${row}[adr_one_locality]";}i:2;a:4:{s:4:"type";s:5:"label";s:4:"span";s:9:",leftPad5";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_one_region]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:26:"${row}[adr_one_postalcode]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}i:3;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_one_street]";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:23:"${row}[adr_one_street2]";s:7:"no_lang";s:1:"1";}}s:1:"F";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:24:"${row}[adr_two_locality]";}i:2;a:4:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_two_region]";s:4:"span";s:9:",leftPad5";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:26:"${row}[adr_two_postalcode]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}i:3;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[adr_two_street]";}i:4;a:3:{s:4:"type";s:5:"label";s:4:"name";s:23:"${row}[adr_two_street2]";s:7:"no_lang";s:1:"1";}}s:1:"G";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_work_link],,,calling,$cont[call_popup]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_cell]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_cell_link],,,calling,$cont[call_popup]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_home]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_home_link],,,calling,$cont[call_popup]";}i:4;a:4:{s:4:"type";s:5:"label";s:4:"name";s:20:"${row}[tel_prefered]";s:7:"no_lang";s:1:"1";s:4:"size";s:57:",$row_cont[tel_prefered_link],,,calling,$cont[call_popup]";}}s:1:"H";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:4:"size";s:3:",,1";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:11:"${row}[url]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"size";s:52:",@${row}[email_link],,,_blank,$row_cont[email_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:7:"no_lang";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"size";s:62:",@${row}[email_home_link],,,_blank,$row_cont[email_home_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:7:"no_lang";s:1:"1";}}s:1:"I";a:6:{s:4:"type";s:17:"customfields-list";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:4:"$row";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"name";s:4:"$row";s:4:"span";s:13:",customfields";}s:1:"J";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";i:1;a:2:{s:4:"type";s:4:"link";s:4:"name";s:17:"${row}[last_link]";}i:2;a:2:{s:4:"type";s:4:"link";s:4:"name";s:17:"${row}[next_link]";}}s:1:"K";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:15:"${row}[created]";s:8:"readonly";s:1:"1";s:4:"span";s:7:",noWrap";}i:2;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:16:"${row}[modified]";s:8:"readonly";s:1:"1";s:4:"span";s:8:",noBreak";}i:4;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[modifier]";s:8:"readonly";s:1:"1";}}s:1:"L";a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"5,0,0";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:23:"document[$row_cont[id]]";s:4:"size";s:3:"new";s:5:"label";s:18:"Insert in document";}i:2;a:4:{s:4:"type";s:5:"image";s:4:"size";s:52:"addressbook.uicontacts.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:3;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:189:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:4;a:6:{s:4:"type";s:6:"button";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"help";s:19:"Delete this contact";s:7:"onclick";s:38:"return confirm(\'Delete this contact\');";}s:4:"span";s:8:",noPrint";i:5;a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"checked[]";s:4:"size";s:13:"$row_cont[id]";s:4:"help";s:45:"Select multiple contacts for a further action";s:5:"align";s:5:"right";}}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1145192391',);
+
$templ_data[] = array('name' => 'addressbook.search','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"name";s:16:"addressbook.edit";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:6:"select";s:5:"label";s:8:"Operator";s:4:"name";s:8:"operator";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:6:"select";s:4:"name";s:11:"meth_select";s:7:"no_lang";s:1:"1";}s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Search";s:4:"name";s:14:"button[search]";s:7:"onclick";s:37:"xajax_eT_wrapper(this); return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:7:"onclick";s:29:"window.close(); return false;";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:3;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1161707411',);
$templ_data[] = array('name' => 'addressbook.view','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:1:{s:1:"A";s:3:"750";}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:3:"tab";s:5:"label";s:28:"overview|link|details|custom";s:4:"name";s:28:"overview|link|details|custom";}}i:3;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"owner";}i:2;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:5:"owner";s:8:"readonly";s:1:"1";}}i:2;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"last modified";}i:2;a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:8:"last_mod";s:8:"readonly";s:1:"1";}}}}i:4;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:5:{s:4:"name";s:15:"button[private]";s:7:"onclick";s:13:"return false;";s:5:"label";s:7:"private";s:4:"size";s:8:"password";s:4:"type";s:6:"button";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Edit";s:4:"name";s:12:"button[edit]";s:7:"onclick";s:213:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$cont[id]\'),\'\',\'dependent=yes,width=800,height=600,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false;";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Copy";s:4:"name";s:12:"button[copy]";s:7:"onclick";s:222:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$cont[id]&makecp=1\'),\'\',\'dependent=yes,width=800,height=600,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false;";}i:4;a:3:{s:4:"type";s:6:"button";s:5:"label";s:5:"Vcard";s:4:"name";s:13:"button[vcard]";}i:5;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"1";s:5:"align";s:5:"right";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:7:"onclick";s:60:"return confirm(\'Do you really want do delte this contact?\');";}}}}}s:4:"rows";i:4;s:4:"cols";i:1;s:5:"align";s:6:"center";s:7:"options";a:0:{}}}','size' => '','style' => '.contactviewblock{
diff --git a/addressbook/setup/phpgw_de.lang b/addressbook/setup/phpgw_de.lang
index 501e07ec83..60d293ad58 100644
--- a/addressbook/setup/phpgw_de.lang
+++ b/addressbook/setup/phpgw_de.lang
@@ -65,6 +65,7 @@ calendar uri addressbook de Kalender URI
can be changed via setup >> configuration admin de Kann über Setup >> Konfiguration geändert werden
car phone addressbook de Autotelefon
categories, notes, ... addressbook de Kategorien, Notizen, ...
+category tree admin de Kategoriebaum
cell phone addressbook de Mobiltelefon
change all organisation members addressbook de Alle Mitglieder der Organisation ändern
charset for the csv export addressbook de Zeichensatz für den CSV Export
@@ -210,6 +211,7 @@ insert in document addressbook de Einf
insufficent rights to delete this list! addressbook de Keine Rechte diese Liste zu löschen!
international addressbook de International
label addressbook de Adressetikett
+last date addressbook de Letzter Termin
last modified addressbook de Letzte Änderung
last modified by addressbook de Letzte Änderung durch
ldap context for contacts admin de LDAP Kontext für Kontakte
@@ -247,6 +249,7 @@ name for the distribution list addressbook de Name f
name of current user, all other contact fields are valid too addressbook de Name des aktuellen Benutzers, auch alle anderen Kontaktfelder sind erlaubt
name, address addressbook de Name, Adresse
new contact submitted by %1 at %2 addressbook de Neuer Kontakt eingetragen von %1 am %2
+next date addressbook de Nächster Termin
no vcard addressbook de Keine VCard
number addressbook de Nummer
number of records to read (%1) addressbook de Anzahl der einzulesenden Datensätze (%1)
diff --git a/addressbook/setup/phpgw_en.lang b/addressbook/setup/phpgw_en.lang
index 7804ad48ba..36820688ac 100644
--- a/addressbook/setup/phpgw_en.lang
+++ b/addressbook/setup/phpgw_en.lang
@@ -65,6 +65,7 @@ calendar uri addressbook en Calendar URI
can be changed via setup >> configuration admin en Can be changed via Setup >> Configuration
car phone addressbook en Car Phone
categories, notes, ... addressbook en Categories, Notes, ...
+category tree admin en Category tree
cell phone addressbook en Mobile phone
change all organisation members addressbook en change all organisation members
charset for the csv export addressbook en Charset for the CSV export
@@ -107,7 +108,6 @@ custom addressbook en Custom
custom etemplate for the contactform addressbook en Custom eTemplate for the contactform
custom fields addressbook en Custom Fields
debug output in browser addressbook en Debug output in browser
-default addressbook en default
default address format addressbook en Default address format
default addressbook for adding contacts addressbook en Default addressbook for adding contacts
default document to insert contacts addressbook en Default document to insert contacts
@@ -211,6 +211,7 @@ insert in document addressbook en Insert in document
insufficent rights to delete this list! addressbook en Insufficent rights to delete this list!
international addressbook en International
label addressbook en Label
+last date addressbook en Last date
last modified addressbook en last modified
last modified by addressbook en last modified by
ldap context for contacts admin en LDAP context for contacts
@@ -248,6 +249,7 @@ name for the distribution list addressbook en Name for the distribution list
name of current user, all other contact fields are valid too addressbook en Name of current user, all other contact fields are valid too
name, address addressbook en Name, Address
new contact submitted by %1 at %2 addressbook en New contact submitted by %1 at %2
+next date addressbook en Next date
no vcard addressbook en No VCard
number addressbook en Number
number of records to read (%1) addressbook en Number of records to read (%1)
diff --git a/addressbook/templates/default/index.xet b/addressbook/templates/default/index.xet
index c09dca219f..47f0f99324 100644
--- a/addressbook/templates/default/index.xet
+++ b/addressbook/templates/default/index.xet
@@ -14,7 +14,7 @@
.rightPadAdd { width: 30px; }
-
+
@@ -27,6 +27,7 @@
+
@@ -92,6 +93,10 @@
+
+
+
+
@@ -146,6 +151,10 @@
+
+
+
+