From 40d786871ec3cb8f8cdcbfe45b3a264e415e7a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Lehrke?= Date: Sat, 25 Sep 2010 15:19:48 +0000 Subject: [PATCH 01/27] Improve Mac OS Addressbook.App CardDAV support as far as reasonable --- .../inc/class.addressbook_groupdav.inc.php | 49 ++++++++++++++++++- phpgwapi/inc/class.groupdav.inc.php | 13 ----- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/addressbook/inc/class.addressbook_groupdav.inc.php b/addressbook/inc/class.addressbook_groupdav.inc.php index 8ecde4f5d9..d7a3257ed3 100644 --- a/addressbook/inc/class.addressbook_groupdav.inc.php +++ b/addressbook/inc/class.addressbook_groupdav.inc.php @@ -33,6 +33,42 @@ class addressbook_groupdav extends groupdav_handler 'FN' => 'n_fn', ); + var $supportedFields = array( + 'ADR;WORK' => array('','adr_one_street2','adr_one_street','adr_one_locality','adr_one_region', + 'adr_one_postalcode','adr_one_countryname'), + 'ADR;HOME' => array('','adr_two_street2','adr_two_street','adr_two_locality','adr_two_region', + 'adr_two_postalcode','adr_two_countryname'), + 'BDAY' => array('bday'), + //'CLASS' => array('private'), + //'CATEGORIES' => array('cat_id'), + 'EMAIL;WORK' => array('email'), + 'EMAIL;HOME' => array('email_home'), + 'N' => array('n_family','n_given','n_middle', + 'n_prefix','n_suffix'), + 'FN' => array('n_fn'), + 'NOTE' => array('note'), + 'ORG' => array('org_name','org_unit','room'), + 'TEL;CELL;WORK' => array('tel_cell'), + 'TEL;CELL;HOME' => array('tel_cell_private'), + 'TEL;CAR' => array('tel_car'), + 'TEL;OTHER' => array('tel_other'), + 'TEL;VOICE;WORK' => array('tel_work'), + 'TEL;FAX;WORK' => array('tel_fax'), + 'TEL;HOME;VOICE' => array('tel_home'), + 'TEL;FAX;HOME' => array('tel_fax_home'), + 'TEL;PAGER' => array('tel_pager'), + 'TITLE' => array('title'), + 'URL;WORK' => array('url'), + 'URL;HOME' => array('url_home'), + 'ROLE' => array('role'), + 'NICKNAME' => array('label'), + 'FBURL' => array('freebusy_uri'), + 'PHOTO' => array('jpegphoto'), + 'X-ASSISTANT' => array('assistent'), + 'X-ASSISTANT-TEL' => array('tel_assistent'), + 'UID' => array('uid'), + ); + /** * Charset for exporting data, as some clients ignore the headers specifying the charset * @@ -277,6 +313,11 @@ class addressbook_groupdav extends groupdav_handler $handler = self::_get_handler(); $vCard = htmlspecialchars_decode($options['content']); + if ($this->agent == 'cfnetwork') + { + // Apple Addressbook + $vCard = preg_replace('/item\d\.(ADR|TEL)/', '\1', $vCard); + } $charset = null; if (!empty($options['content_type'])) { @@ -481,8 +522,14 @@ class addressbook_groupdav extends groupdav_handler */ private function _get_handler() { + if ($this->agent != 'cfnetwork' && $this->agent != 'dataaccess') + { + // Apple Addressbook don't support CLASS + $this->supportedFields['CLASS'] = array('private'); + $this->supportedFields['CATEGORIES'] = array('cat_id'); + } $handler = new addressbook_vcal('addressbook','text/vcard'); - $handler->setSupportedFields('GroupDAV',$this->agent); + $handler->setSupportedFields('GroupDAV',$this->agent, $this->supportedFields); return $handler; } diff --git a/phpgwapi/inc/class.groupdav.inc.php b/phpgwapi/inc/class.groupdav.inc.php index e01dc6d957..21514eb018 100644 --- a/phpgwapi/inc/class.groupdav.inc.php +++ b/phpgwapi/inc/class.groupdav.inc.php @@ -221,19 +221,6 @@ class groupdav extends HTTP_WebDAV_Server { if ($this->debug) error_log(__CLASS__."::$method(".array2string($options,true).')'); - - if (groupdav_handler::get_agent() == 'cfnetwork' && // Apple Addressbook - $options['root']['name'] == 'propfind') - { - foreach ($options['props'] as $props) - { - if ($props['name'] == 'current-user-privilege-set') - { - if ($this->debug > 2) error_log(__CLASS__."::$method: current-user-privilege-set not implemented!"); - return '501 Not Implemented'; - } - } - } // parse path in form [/account_lid]/app[/more] if (!self::_parse_path($options['path'],$id,$app,$user,$user_prefix) && $app && !$user) { From 61812f4dc59cbd149b190370e4e7187bba71abe0 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Mon, 27 Sep 2010 07:51:32 +0000 Subject: [PATCH 02/27] allow for forced passwordchange on next login at account creation time --- admin/inc/class.soaccounts.inc.php | 2 +- phpgwapi/inc/class.accounts_sql.inc.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/inc/class.soaccounts.inc.php b/admin/inc/class.soaccounts.inc.php index 0f27e16b9a..c63fdad3d4 100755 --- a/admin/inc/class.soaccounts.inc.php +++ b/admin/inc/class.soaccounts.inc.php @@ -25,7 +25,7 @@ { $userData['account_email'] = $userData['email']; } - + if ($userData['mustchangepassword'] == 1) $userData['account_lastpwd_change']=0; if (!($userData['account_id'] = $GLOBALS['egw']->accounts->create($userData))) { return false; diff --git a/phpgwapi/inc/class.accounts_sql.inc.php b/phpgwapi/inc/class.accounts_sql.inc.php index 89de3a9b7d..d1abb98555 100644 --- a/phpgwapi/inc/class.accounts_sql.inc.php +++ b/phpgwapi/inc/class.accounts_sql.inc.php @@ -156,7 +156,6 @@ class accounts_sql //echo "

accounts_sql::save(".print_r($data,true).")

\n"; $to_write = $data; unset($to_write['account_passwd']); - // encrypt password if given or unset it if not if ($data['account_passwd']) { @@ -169,6 +168,7 @@ class accounts_sql $to_write['account_pwd'] = $data['account_passwd']; $to_write['account_lastpwd_change'] = time(); } + if ($data['mustchangepassword'] == 1) $to_write['account_lastpwd_change']=0; if (!(int)$data['account_id'] || !$this->id2name($data['account_id'])) { if ($to_write['account_id'] < 0) $to_write['account_id'] *= -1; @@ -176,7 +176,7 @@ class accounts_sql if (!isset($to_write['account_pwd'])) $to_write['account_pwd'] = ''; // is NOT NULL! if (!isset($to_write['account_status'])) $to_write['account_status'] = ''; // is NOT NULL! - // postgres requires the auto-id field to be unset! + // postgres requires the auto-id field to be unset! if (isset($to_write['account_id']) && !$to_write['account_id']) unset($to_write['account_id']); if (!in_array($to_write['account_type'],array('u','g')) || From c1d7256972e33969fef5cb29c54ada4ade72667e Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Mon, 27 Sep 2010 07:55:15 +0000 Subject: [PATCH 03/27] added support for PHP running as (F)CGI (uses ORIG_PATH_INFO instead of PATH_INFO) --- webdav.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webdav.php b/webdav.php index f7e2a138f0..4d091fe99b 100644 --- a/webdav.php +++ b/webdav.php @@ -33,7 +33,7 @@ function check_access(&$account) } // if we are called with a /apps/$app path, use that $app as currentapp, to not require filemanager rights for the links -$parts = explode('/',$_SERVER['PATH_INFO']); +$parts = explode('/',isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['ORIG_PATH_INFO']); //error_log("webdav: explode".print_r($parts,true)); if(count($parts) == 1) { From cce85a534066d14748a17c39c4bc0aa801ba5b83 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Mon, 27 Sep 2010 08:47:42 +0000 Subject: [PATCH 04/27] colored calendar list view --- calendar/setup/etemplates.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/calendar/setup/etemplates.inc.php b/calendar/setup/etemplates.inc.php index 76d2a190ab..d923c4441f 100644 --- a/calendar/setup/etemplates.inc.php +++ b/calendar/setup/etemplates.inc.php @@ -2,7 +2,7 @@ /** * eGroupWare - eTemplates for Application calendar * http://www.egroupware.org - * generated by soetemplate::dump4setup() 2010-08-23 17:52 + * generated by soetemplate::dump4setup() 2010-09-27 10:42 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package calendar @@ -61,7 +61,7 @@ $templ_data[] = array('name' => 'calendar.list','template' => '','lang' => '','g $templ_data[] = array('name' => 'calendar.list.dates','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:10:{s:4:"type";s:4:"hbox";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:1:"4";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Start";}i:2;a:2:{s:4:"type";s:4:"date";s:4:"name";s:9:"startdate";}i:3;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"End";}i:4;a:2:{s:4:"type";s:4:"date";s:4:"name";s:7:"enddate";}s:4:"span";s:12:",custom_hide";}}','size' => '','style' => '.custom_hide { visibility: hidden; }','modified' => '1173420675',); -$templ_data[] = array('name' => 'calendar.list.rows','template' => '','lang' => '','group' => '0','version' => '1.7.003','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:1:"B";s:3:"40%";s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:13:{s:1:"A";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Start";s:4:"name";s:9:"cal_start";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:3:"End";s:4:"name";s:7:"cal_end";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"C";a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"D";a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"E";a:3:{s:5:"label";s:10:"Recurrence";s:4:"name";s:6:"recure";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"F";a:3:{s:5:"label";s:7:"Project";s:4:"name";s:5:"pm_id";s:4:"type";s:16:"nextmatch-header";}s:1:"G";a:3:{s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";s:4:"type";s:16:"nextmatch-header";}s:1:"H";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"I";a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"J";a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"K";a:4:{s:5:"label";s:12:"Participants";s:4:"name";s:11:"participant";s:4:"size";s:3:"All";s:4:"type";s:23:"nextmatch-accountfilter";}s:1:"L";a:4:{s:5:"label";s:13:"Custom fields";s:8:"readonly";s:4:"true";s:4:"name";s:3:"cfs";s:4:"type";s:22:"nextmatch-customfields";}s:1:"M";a:7:{s:5:"label";s:7:"Actions";s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"help";s:9:"Check all";s:4:"span";s:8:",noPrint";}i:2;a:8:{s:5:"label";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:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:4:"help";s:9:"Check all";}s:4:"span";s:8:",noPrint";}}i:2;a:13:{s:1:"A";a:5:{s:4:"name";s:5:"start";s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[start]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}i:2;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:11:"${row}[end]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:5:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[title]";s:4:"size";s:1:"b";s:4:"type";s:5:"label";}i:2;a:5:{s:7:"no_lang";s:1:"1";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:4:"span";s:16:",listDescription";}i:3;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}}s:1:"C";a:2:{s:4:"name";s:13:"${row}[title]";s:4:"type";s:5:"label";}s:1:"D";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:1:"E";a:2:{s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:1:"F";a:3:{s:4:"name";s:10:"${row}[id]";s:4:"size";s:23:"calendar,projectmanager";s:4:"type";s:11:"link-string";}s:1:"G";a:3:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:4:"true";s:4:"name";s:16:"${row}[category]";}s:1:"H";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}i:2;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}}s:1:"I";a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}s:1:"J";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}s:1:"K";a:4:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[parts]";s:4:"type";s:4:"html";}s:1:"L";a:2:{s:4:"name";s:4:"$row";s:4:"type";s:17:"customfields-list";}s:1:"M";a:5:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"vbox";i:1;a:8:{s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:6:{s:5:"label";s:4:"View";s:7:"onclick";s:206:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.calendar_uiforms.edit&cal_id=$row_cont[id]&date=$row_cont[date]\'),\'425\',\'dependent=yes,width=750,height=450,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"view[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:4:"help";s:15:"View this event";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:9:"timesheet";s:5:"label";s:19:"Add timesheet entry";s:4:"name";s:29:"timesheet[$row_cont[info_id]]";s:7:"onclick";s:267:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.timesheet_ui.edit&link_app[]=$row_cont[app]&cat_id=$row_cont[category]&link_id[]=$row_cont[app_id]$row_cont[extra_links]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:6:"center";}i:3;a:6:{s:5:"label";s:4:"Edit";s:7:"onclick";s:20:"$row_cont[edit_link]";s:4:"name";s:19:"edit[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:4:"help";s:15:"Edit this event";}i:4;a:6:{s:5:"label";s:6:"Delete";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:4:"help";s:17:"Delete this event";}i:5;a:5:{s:5:"align";s:5:"right";s:4:"name";s:9:"checked[]";s:4:"size";s:35:"$row_cont[id]:$row_cont[recur_date]";s:4:"type";s:8:"checkbox";s:4:"help";s:45:"Select multiple contacts for a further action";}}i:2;a:3:{s:4:"size";s:6:"1,,0,0";s:4:"type";s:4:"hbox";i:1;a:6:{s:5:"label";s:11:"Filemanager";s:4:"size";s:18:"filemanager/navbar";s:4:"type";s:6:"button";s:4:"name";s:26:"filemanager[$row_cont[id]]";s:4:"span";s:8:",image16";s:7:"onclick";s:139:"window.location.href=egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.index&path=/apps/calendar/$row_cont[id]\'); return false;";}}s:4:"span";s:8:",noPrint";}}}s:4:"cols";i:13;s:4:"rows";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1272389089',); +$templ_data[] = array('name' => 'calendar.list.rows','template' => '','lang' => '','group' => '0','version' => '1.7.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:1:"B";s:3:"40%";s:2:"c1";s:2:"th";s:2:"c2";s:23:"$row_cont[category],top";}i:1;a:13:{s:1:"A";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Start";s:4:"name";s:9:"cal_start";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:3:"End";s:4:"name";s:7:"cal_end";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"C";a:3:{s:5:"label";s:5:"Title";s:4:"name";s:9:"cal_title";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"D";a:3:{s:5:"label";s:11:"Description";s:4:"name";s:15:"cal_description";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"E";a:3:{s:5:"label";s:10:"Recurrence";s:4:"name";s:6:"recure";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"F";a:3:{s:5:"label";s:7:"Project";s:4:"name";s:5:"pm_id";s:4:"type";s:16:"nextmatch-header";}s:1:"G";a:3:{s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";s:4:"type";s:16:"nextmatch-header";}s:1:"H";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}i:2;a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}}s:1:"I";a:4:{s:5:"label";s:5:"Owner";s:8:"readonly";s:4:"true";s:4:"name";s:9:"cal_owner";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"J";a:3:{s:5:"label";s:8:"Location";s:4:"name";s:12:"cal_location";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"K";a:4:{s:5:"label";s:12:"Participants";s:4:"name";s:11:"participant";s:4:"size";s:3:"All";s:4:"type";s:23:"nextmatch-accountfilter";}s:1:"L";a:4:{s:5:"label";s:13:"Custom fields";s:8:"readonly";s:4:"true";s:4:"name";s:3:"cfs";s:4:"type";s:22:"nextmatch-customfields";}s:1:"M";a:7:{s:5:"label";s:7:"Actions";s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:4:"help";s:9:"Check all";s:4:"span";s:8:",noPrint";}i:2;a:8:{s:5:"label";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:"name";s:9:"check_all";s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:4:"help";s:9:"Check all";}s:4:"span";s:8:",noPrint";}}i:2;a:13:{s:1:"A";a:5:{s:4:"name";s:5:"start";s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[start]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}i:2;a:5:{s:8:"readonly";s:4:"true";s:4:"name";s:11:"${row}[end]";s:4:"size";s:14:",$cont[format]";s:4:"type";s:9:"date-time";s:4:"span";s:7:",noWrap";}}s:1:"B";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"3";i:1;a:5:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[title]";s:4:"size";s:1:"b";s:4:"type";s:5:"label";}i:2;a:5:{s:7:"no_lang";s:1:"1";s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:4:"span";s:16:",listDescription";}i:3;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}}s:1:"C";a:2:{s:4:"name";s:13:"${row}[title]";s:4:"type";s:5:"label";}s:1:"D";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[description]";s:4:"type";s:5:"label";}s:1:"E";a:2:{s:4:"name";s:14:"${row}[recure]";s:4:"type";s:5:"label";}s:1:"F";a:3:{s:4:"name";s:10:"${row}[id]";s:4:"size";s:23:"calendar,projectmanager";s:4:"type";s:11:"link-string";}s:1:"G";a:3:{s:4:"type";s:10:"select-cat";s:8:"readonly";s:1:"1";s:4:"name";s:16:"${row}[category]";}s:1:"H";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}i:2;a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}}s:1:"I";a:4:{s:4:"type";s:14:"select-account";s:5:"class";s:6:"noWrap";s:8:"readonly";s:4:"true";s:4:"name";s:13:"${row}[owner]";}s:1:"J";a:3:{s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[location]";s:4:"type";s:5:"label";}s:1:"K";a:4:{s:8:"readonly";s:4:"true";s:7:"no_lang";s:1:"1";s:4:"name";s:13:"${row}[parts]";s:4:"type";s:4:"html";}s:1:"L";a:2:{s:4:"name";s:4:"$row";s:4:"type";s:17:"customfields-list";}s:1:"M";a:5:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"vbox";i:1;a:8:{s:5:"class";s:7:"noPrint";s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:6:{s:5:"label";s:4:"View";s:7:"onclick";s:206:"window.open(egw::link(\'/index.php\',\'menuaction=calendar.calendar_uiforms.edit&cal_id=$row_cont[id]&date=$row_cont[date]\'),\'425\',\'dependent=yes,width=750,height=450,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"view[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"view";s:4:"help";s:15:"View this event";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"size";s:9:"timesheet";s:5:"label";s:19:"Add timesheet entry";s:4:"name";s:29:"timesheet[$row_cont[info_id]]";s:7:"onclick";s:267:"window.open(egw::link(\'/index.php\',\'menuaction=timesheet.timesheet_ui.edit&link_app[]=$row_cont[app]&cat_id=$row_cont[category]&link_id[]=$row_cont[app_id]$row_cont[extra_links]\'),\'_blank\',\'dependent=yes,width=600,height=400,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:6:"center";}i:3;a:6:{s:5:"label";s:4:"Edit";s:7:"onclick";s:20:"$row_cont[edit_link]";s:4:"name";s:19:"edit[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:4:"help";s:15:"Edit this event";}i:4;a:6:{s:5:"label";s:6:"Delete";s:7:"onclick";s:36:"return confirm(\'Delete this event\');";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:4:"help";s:17:"Delete this event";}i:5;a:5:{s:5:"align";s:5:"right";s:4:"name";s:9:"checked[]";s:4:"size";s:35:"$row_cont[id]:$row_cont[recur_date]";s:4:"type";s:8:"checkbox";s:4:"help";s:45:"Select multiple contacts for a further action";}}i:2;a:3:{s:4:"size";s:6:"1,,0,0";s:4:"type";s:4:"hbox";i:1;a:6:{s:5:"label";s:11:"Filemanager";s:4:"size";s:18:"filemanager/navbar";s:4:"type";s:6:"button";s:4:"name";s:26:"filemanager[$row_cont[id]]";s:4:"span";s:8:",image16";s:7:"onclick";s:139:"window.location.href=egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.index&path=/apps/calendar/$row_cont[id]\'); return false;";}}s:4:"span";s:8:",noPrint";}}}s:4:"cols";i:13;s:4:"rows";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1285575877',); $templ_data[] = array('name' => 'calendar.print','template' => '','lang' => '','group' => '0','version' => '1.6.001','data' => 'a:1:{i:0;a:3:{s:4:"size";s:6:"1,,0,0";s:4:"type";s:4:"hbox";i:1;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:15:{i:0;a:13:{s:1:"A";s:2:"95";s:2:"c2";s:2:"th";s:2:"c5";s:3:"row";s:2:"c6";s:7:"row_off";s:2:"c7";s:3:"row";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:2:"c8";s:3:"row";s:2:"c9";s:3:"row";s:2:"h2";s:2:"28";s:2:"c1";s:2:"th";s:3:"c10";s:4:",top";s:3:"c11";s:2:"th";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"image";s:4:"name";s:5:"print";s:7:"onclick";s:15:"window.print();";}s:1:"B";a:4:{s:4:"type";s:5:"label";s:4:"span";s:5:",bold";s:5:"label";s:8:"Calendar";s:4:"size";s:4:"bold";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Title";}s:1:"B";a:5:{s:4:"type";s:4:"text";s:4:"name";s:5:"title";s:4:"size";s:6:"80,255";s:8:"readonly";s:1:"1";s:4:"span";s:3:"all";}}i:3;a:2:{s:1:"A";a:4:{s:5:"width";s:2:"95";s:4:"size";s:8:",,,start";s:4:"type";s:5:"label";s:5:"label";s:5:"Start";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"name";s:5:"start";s:4:"type";s:9:"date-time";s:8:"readonly";s:1:"1";}i:2;a:7:{s:5:"label";s:9:"whole day";s:4:"name";s:9:"whole_day";s:4:"size";s:11:",, ,disable";s:4:"type";s:8:"checkbox";s:4:"help";s:31:"Event will occupy the whole day";s:5:"align";s:6:"center";s:8:"readonly";s:1:"1";}}}i:4;a:2:{s:1:"A";a:4:{s:5:"width";s:1:"0";s:4:"size";s:11:",,,duration";s:4:"type";s:5:"label";s:5:"label";s:8:"Duration";}s:1:"B";a:4:{s:4:"size";s:6:"2,,0,0";s:4:"type";s:4:"hbox";i:1;a:7:{s:7:"no_lang";s:1:"1";s:8:"onchange";s:227:"set_style_by_class(\'table\',\'end_hide\',\'visibility\',this.value == \'\' ? \'visible\' : \'hidden\'); if (this.value == \'\') document.getElementById(form::name(\'end[str]\')).value = document.getElementById(form::name(\'start[str]\')).value;";s:4:"name";s:8:"duration";s:4:"size";s:12:"Use end date";s:4:"type";s:6:"select";s:4:"help";s:23:"Duration of the meeting";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"name";s:3:"end";s:4:"type";s:9:"date-time";s:4:"span";s:9:",end_hide";s:8:"readonly";s:1:"1";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"size";s:11:",,,location";s:4:"type";s:5:"label";s:5:"label";s:8:"Location";s:5:"width";s:1:"0";}s:1:"B";a:5:{s:4:"size";s:4:",255";s:4:"name";s:8:"location";s:4:"type";s:4:"text";s:4:"span";s:15:",inputFullWidth";s:8:"readonly";s:1:"1";}}i:6;a:2:{s:1:"A";a:4:{s:4:"size";s:11:",,,priority";s:4:"type";s:5:"label";s:5:"label";s:8:"Priority";s:5:"width";s:1:"0";}s:1:"B";a:3:{s:4:"type";s:15:"select-priority";s:4:"name";s:8:"priority";s:8:"readonly";s:1:"1";}}i:7;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Options";s:5:"width";s:1:"0";}s:1:"B";a:6:{s:4:"name";s:12:"non_blocking";s:4:"size";s:11:",, ,disable";s:4:"type";s:8:"checkbox";s:4:"help";s:56:"A non blocking event will not conflict with other events";s:5:"label";s:12:"non blocking";s:8:"readonly";s:1:"1";}}i:8;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:5:{s:4:"name";s:6:"public";s:4:"size";s:3:"0,1";s:4:"type";s:8:"checkbox";s:5:"label";s:7:"Private";s:8:"readonly";s:1:"1";}}i:9;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"Categories";}s:1:"B";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:8:"category";s:8:"readonly";s:1:"1";}}i:10;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Description";}s:1:"B";a:3:{s:4:"type";s:8:"textarea";s:4:"name";s:11:"description";s:8:"readonly";s:1:"1";}}i:11;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:13:"custom fields";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:12;a:2:{s:1:"A";a:3:{s:4:"type";s:12:"customfields";s:4:"span";s:3:"all";s:8:"readonly";s:1:"1";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:13;a:2:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"name";s:27:"calendar.print.participants";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:14;a:2:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"span";s:3:"all";s:4:"name";s:20:"calendar.print.links";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"cols";i:2;s:4:"rows";i:14;s:4:"size";s:8:"100%,200";}}}','size' => '','style' => '','modified' => '1229596125',); From 453945c9c904d362d32a607bc45019b226e13f9c Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Mon, 27 Sep 2010 14:28:36 +0000 Subject: [PATCH 05/27] fix an other PHP5.3 deprecated error --- setup/check_install.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup/check_install.php b/setup/check_install.php index eaa43e36d0..6765d1a6cb 100644 --- a/setup/check_install.php +++ b/setup/check_install.php @@ -693,8 +693,8 @@ function php_ini_check($name,$args) break; case 'contain': $check = lang('contain'); - $sep = $is_windows ? '[; ]+' : '[: ]+'; - $result = in_array($args['value'],split($sep,$ini_value)); + $sep = $is_windows ? '/[; ]+/' : '/[: ]+/'; + $result = in_array($args['value'],preg_split($sep,$ini_value)); break; case '=': default: From 1482dbc1be51afbeff29452165e93dac6c5b1708 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 16:27:48 +0000 Subject: [PATCH 06/27] Add the ability to hide and hold deleted links, pending final deletion of linked record. This prevents links to deleted items showing when deleted items are held for purging. --- phpgwapi/inc/class.egw_link.inc.php | 17 +++++---- phpgwapi/inc/class.solink.inc.php | 52 +++++++++++++++++++++++---- phpgwapi/setup/setup.inc.php | 3 +- phpgwapi/setup/tables_current.inc.php | 5 +-- phpgwapi/setup/tables_update.inc.php | 28 +++++++++++++++ 5 files changed, 88 insertions(+), 17 deletions(-) diff --git a/phpgwapi/inc/class.egw_link.inc.php b/phpgwapi/inc/class.egw_link.inc.php index 88b2d54fc8..7d940200b0 100644 --- a/phpgwapi/inc/class.egw_link.inc.php +++ b/phpgwapi/inc/class.egw_link.inc.php @@ -304,11 +304,12 @@ class egw_link extends solink * @param string $order='link_lastmod DESC' defaults to newest links first * @param boolean $cache_titles=false should all titles be queryed and cached (allows to query each link app only once!) * This option also removes links not viewable by current user from the result! + * @param boolean $deleted Include links that have been flagged as deleted, waiting for purge. * @return array of links or empty array if no matching links found */ - static function get_links( $app,$id,$only_app='',$order='link_lastmod DESC',$cache_titles=false ) + static function get_links( $app,$id,$only_app='',$order='link_lastmod DESC',$cache_titles=false,$deleted=false ) { - if (self::DEBUG) echo "

egw_link::get_links(app='$app',id='$id',only_app='$only_app',order='$order')

\n"; + if (self::DEBUG) echo "

egw_link::get_links(app='$app',id='$id',only_app='$only_app',order='$order',deleted='$deleted')

\n"; if (is_array($id) || !$id) { @@ -330,7 +331,7 @@ class egw_link extends solink } return $ids; } - $ids = solink::get_links($app,$id,$only_app,$order); + $ids = solink::get_links($app,$id,$only_app,$order,$deleted); if (empty($only_app) || $only_app == self::VFS_APPNAME || ($only_app[0] == '!' && $only_app != '!'.self::VFS_APPNAME)) { @@ -474,11 +475,12 @@ class egw_link extends solink * @param string/array $id='' id in $app or array with links, if 1. entry not yet created * @param string $app2='' app of second endpoint * @param string $id2='' id in $app2 + * @param boolean $hold_for_purge Don't really delete the link, just mark it as deleted and wait for final delete * @return the number of links deleted */ - static function unlink($link_id,$app='',$id='',$owner='',$app2='',$id2='') + static function unlink($link_id,$app='',$id='',$owner='',$app2='',$id2='',$hold_for_purge=false) { - return self::unlink2($link_id,$app,$id,$owner,$app2,$id2); + return self::unlink2($link_id,$app,$id,$owner,$app2,$id2,$hold_for_purge); } /** @@ -489,9 +491,10 @@ class egw_link extends solink * @param string/array &$id='' id in $app or array with links, if 1. entry not yet created * @param string $app2='' app of second endpoint, or !file (other !app are not yet supported!) * @param string $id2='' id in $app2 + * @param boolean $hold_for_purge Don't really delete the link, just mark it as deleted and wait for final delete * @return the number of links deleted */ - static function unlink2($link_id,$app,&$id,$owner='',$app2='',$id2='') + static function unlink2($link_id,$app,&$id,$owner='',$app2='',$id2='',$hold_for_purge=false) { if (self::DEBUG) { @@ -516,7 +519,7 @@ class egw_link extends solink self::delete_attached($app,$id); // deleting all attachments self::delete_cache($app,$id); } - $deleted =& solink::unlink($link_id,$app,$id,$owner,$app2 != '!'.self::VFS_APPNAME ? $app2 : '',$id2); + $deleted =& solink::unlink($link_id,$app,$id,$owner,$app2 != '!'.self::VFS_APPNAME ? $app2 : '',$id2,$hold_for_purge); // only notify on real links, not the one cached for writing or fileattachments self::notify_unlink($deleted); diff --git a/phpgwapi/inc/class.solink.inc.php b/phpgwapi/inc/class.solink.inc.php index d00ff2453e..482cd818fa 100644 --- a/phpgwapi/inc/class.solink.inc.php +++ b/phpgwapi/inc/class.solink.inc.php @@ -114,13 +114,14 @@ class solink * @param string/array $id id(s) in $app * @param string $only_app if set return only links from $only_app (eg. only addressbook-entries) or NOT from if $only_app[0]=='!' * @param string $order defaults to newest links first + * @param boolean $deleted Include links that have been flagged as deleted, waiting for purge of linked record. * @return array id => links pairs if $id is an array or just the links (only_app: ids) or empty array if no matching links found */ - static function get_links( $app,$id,$only_app='',$order='link_lastmod DESC' ) + static function get_links( $app,$id,$only_app='',$order='link_lastmod DESC',$deleted ) { if (self::DEBUG) { - echo "

solink.get_links($app,".print_r($id,true).",$only_app,$order)

\n"; + echo "

solink.get_links($app,".print_r($id,true).",$only_app,$order,$deleted)

\n"; } if (($not_only = $only_app[0] == '!')) { @@ -128,13 +129,14 @@ class solink } #var_dump($not_only);echo "$only_app
"; $links = array(); - foreach(self::$db->select(self::TABLE,'*',self::$db->expression(self::TABLE,'(',array( + foreach(self::$db->select(self::TABLE,'*',self::$db->expression(self::TABLE,'((',array( 'link_app1' => $app, 'link_id1' => $id, ),') OR (',array( 'link_app2' => $app, 'link_id2' => $id, - ),')' + ),'))', + $deleted ? '' : ' AND deleted IS NULL' ),__LINE__,__FILE__,False,$order ? " ORDER BY $order" : '') as $row) { // check if left side (1) is one of our targets --> add it @@ -229,9 +231,10 @@ class solink * @param int $owner=0 account_id to delete all links of a given owner, or 0 * @param string $app2='' appname of 2. endpoint of the link * @param string $id2='' id in $app2 + * @param boolean $hold_for_purge Don't really delete the link, just mark it as deleted and wait for final delete of linked entry * @return array with deleted links */ - static function &unlink($link_id,$app='',$id='',$owner=0,$app2='',$id2='') + static function &unlink($link_id,$app='',$id='',$owner=0,$app2='',$id2='',$hold_for_purge=false) { if (self::DEBUG) { @@ -282,12 +285,47 @@ class solink foreach(self::$db->select(self::TABLE,'*',$where,__LINE__,__FILE__) as $row) { $deleted[] = $row; - } - self::$db->delete(self::TABLE,$where,__LINE__,__FILE__); + } + if($hold_for_purge) + { + self::$db->update(self::TABLE,array('deleted'=> time()), $where, __LINE__,__FILE__); + } + else + { + self::$db->delete(self::TABLE,$where,__LINE__,__FILE__); + } return $deleted; } + /** + * Restore links being held as deleted waiting for purge of linked record (un-delete) + * + * @param string $app='' app-name of links to remove + * @param string $id='' id in $app or '' remove all links from $app + */ + static function restore($app, $id) + { + if (self::DEBUG) + { + echo "

solink.restore($app,$id)

\n"; + } + if ($app == '') + { + return 0; + } + + $check1 = array('link_app1' => $app); + $check2 = array('link_app2' => $app); + if ($id != '') + { + $check1['link_id1'] = $id; + $check2['link_id2'] = $id; + } + $where = self::$db->expression(self::TABLE,'((',$check1,') OR (',$check2,'))'); + self::$db->update(self::TABLE,array('deleted'=> null), $where, __LINE__,__FILE__); + } + /** * Changes ownership of all links from $owner to $new_owner * diff --git a/phpgwapi/setup/setup.inc.php b/phpgwapi/setup/setup.inc.php index 85d764cd97..78d222aa3b 100755 --- a/phpgwapi/setup/setup.inc.php +++ b/phpgwapi/setup/setup.inc.php @@ -12,7 +12,7 @@ /* Basic information about this app */ $setup_info['phpgwapi']['name'] = 'phpgwapi'; $setup_info['phpgwapi']['title'] = 'eGroupWare API'; -$setup_info['phpgwapi']['version'] = '1.9.002'; +$setup_info['phpgwapi']['version'] = '1.9.003'; $setup_info['phpgwapi']['versions']['current_header'] = '1.29'; $setup_info['phpgwapi']['enable'] = 3; $setup_info['phpgwapi']['app_order'] = 1; @@ -77,3 +77,4 @@ $setup_info['groupdav']['author'] = $setup_info['groupdav']['maintainer'] = arra $setup_info['groupdav']['license'] = 'GPL'; + diff --git a/phpgwapi/setup/tables_current.inc.php b/phpgwapi/setup/tables_current.inc.php index ff4e6f125a..0fbc2f42e1 100644 --- a/phpgwapi/setup/tables_current.inc.php +++ b/phpgwapi/setup/tables_current.inc.php @@ -318,11 +318,12 @@ $phpgw_baseline = array( 'link_id2' => array('type' => 'varchar','precision' => '50','nullable' => False), 'link_remark' => array('type' => 'varchar','precision' => '100'), 'link_lastmod' => array('type' => 'int','precision' => '8','nullable' => False), - 'link_owner' => array('type' => 'int','precision' => '4','nullable' => False) + 'link_owner' => array('type' => 'int','precision' => '4','nullable' => False), + 'deleted' => array('type' => 'timestamp') ), 'pk' => array('link_id'), 'fk' => array(), - 'ix' => array(array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')), + 'ix' => array('deleted',array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')), 'uc' => array() ), 'egw_addressbook' => array( diff --git a/phpgwapi/setup/tables_update.inc.php b/phpgwapi/setup/tables_update.inc.php index 61f74c53c5..ed72736c0d 100644 --- a/phpgwapi/setup/tables_update.inc.php +++ b/phpgwapi/setup/tables_update.inc.php @@ -41,3 +41,31 @@ function phpgwapi_upgrade1_9_001() return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.9.002'; } + +function phpgwapi_upgrade1_9_002() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_links','deleted',array( + 'type' => 'timestamp' + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_links',array( + 'fd' => array( + 'link_id' => array('type' => 'auto','nullable' => False), + 'link_app1' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'link_id1' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'link_app2' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'link_id2' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'link_remark' => array('type' => 'varchar','precision' => '100'), + 'link_lastmod' => array('type' => 'int','precision' => '8','nullable' => False), + 'link_owner' => array('type' => 'int','precision' => '4','nullable' => False), + 'deleted' => array('type' => 'timestamp') + ), + 'pk' => array('link_id'), + 'fk' => array(), + 'ix' => array('deleted',array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')), + 'uc' => array() + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.9.003'; +} + From 272d30c3a7a8e65000d4ba858fda3a401b875d7b Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 16:29:50 +0000 Subject: [PATCH 07/27] Add parameter 'show_deleted' to include 'deleted' links waiting for purge --- etemplate/inc/class.link_widget.inc.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/etemplate/inc/class.link_widget.inc.php b/etemplate/inc/class.link_widget.inc.php index 2e224843a7..b335789dd1 100644 --- a/etemplate/inc/class.link_widget.inc.php +++ b/etemplate/inc/class.link_widget.inc.php @@ -41,6 +41,7 @@ * 'to_id' => // IO int id of the entry to link to, for new entries 0, returns the array with new links * // the following params apply only for the link-to widget! * 'no_files' => // I boolean suppress attach-files, default no + * 'show_deleted' => // I Show links that are marked as deleted, being held for purge * 'search_label' => // I string label to use instead of search * 'link_label' => // I string label for the link button, default 'Link' * // optional only for the link-add widget and link-entry widget @@ -203,7 +204,7 @@ class link_widget } if ($value['to_id'] && $value['to_app']) { - $value = egw_link::get_links($value['to_app'],$value['to_id'],$only_app = $value['only_app'],'link_lastmod DESC',true); + $value = egw_link::get_links($value['to_app'],$value['to_id'],$only_app = $value['only_app'],'link_lastmod DESC',true, $value['show_deleted']); if ($only_app) { foreach($value as $key => $id) @@ -280,7 +281,7 @@ class link_widget { $value['title'] = egw_link::title($app,$id); } - $links = egw_link::get_links($app,$id,'','link_lastmod DESC',true); + $links = egw_link::get_links($app,$id,'','link_lastmod DESC',true, $value['show_deleted']); $value['anz_links'] = count($links); $extension_data = $value; From d7168805c92007bf33df8f49f1d02b14c0ce68a0 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 16:39:54 +0000 Subject: [PATCH 08/27] When deleting but keeping contacts, hold on to links as well so they can be restored if contact is restored. --- addressbook/inc/class.addressbook_bo.inc.php | 7 +++++++ addressbook/inc/class.addressbook_ui.inc.php | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/addressbook/inc/class.addressbook_bo.inc.php b/addressbook/inc/class.addressbook_bo.inc.php index b93309c649..8eec13613e 100755 --- a/addressbook/inc/class.addressbook_bo.inc.php +++ b/addressbook/inc/class.addressbook_bo.inc.php @@ -724,6 +724,7 @@ class addressbook_bo extends addressbook_so $delete = $old; $delete['tid'] = addressbook_so::DELETED_TYPE; $ok = $this->save($delete); + egw_link::unlink(0,'addressbook',$id,'','','',true); } elseif (($ok = parent::delete($id,$check_etag))) { @@ -848,6 +849,12 @@ class addressbook_bo extends addressbook_so // Notify linked apps about changes in the contact data egw_link::notify_update('addressbook', $contact['id'], $contact); + // Check for restore of deleted contact, restore held links + if($old['tid'] == addressbook_so::DELETED_TYPE && $contact['tid'] != addressbook_so::DELETED_TYPE) + { + egw_link::restore('addressbook', $contact['id']); + } + // Record change history for sql - doesn't work for LDAP accounts if(!$contact['account_id'] || $contact['account_id'] && $this->account_repository == 'sql') { $deleted = ($old['tid'] == addressbook_so::DELETED_TYPE || $contact['tid'] == addressbook_so::DELETED_TYPE); diff --git a/addressbook/inc/class.addressbook_ui.inc.php b/addressbook/inc/class.addressbook_ui.inc.php index 772e6b2d03..7c64a8825b 100644 --- a/addressbook/inc/class.addressbook_ui.inc.php +++ b/addressbook/inc/class.addressbook_ui.inc.php @@ -1516,6 +1516,12 @@ class addressbook_ui extends addressbook_bo 'to_id' => $content['link_to']['to_id'], ); + // Links for deleted entries + if($content['tid'] == addressbook_so::DELETED_TYPE) + { + $content['link_to']['show_deleted'] = true; + } + // Enable history $this->setup_history($content, $sel_options); @@ -1690,6 +1696,11 @@ class addressbook_ui extends addressbook_bo 'to_app' => 'addressbook', 'to_id' => $content['id'], ); + // Links for deleted entries + if($content['tid'] == addressbook_so::DELETED_TYPE) + { + $content['link_to']['show_deleted'] = true; + } $readonlys['link_to'] = $readonlys['customfields'] = $readonlys['fileas_type'] = true; $readonlys['button[save]'] = $readonlys['button[apply]'] = $readonlys['change_photo'] = true; $readonlys['button[delete]'] = !$content['owner'] || !$this->check_perms(EGW_ACL_DELETE,$content); From 2b13b73b60a34eb7f412e75aa0558f77fee8739e Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 18:03:46 +0000 Subject: [PATCH 09/27] When deleting but keeping events, hold on to links as well so they can be restored if event is restored --- calendar/inc/class.calendar_boupdate.inc.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/calendar/inc/class.calendar_boupdate.inc.php b/calendar/inc/class.calendar_boupdate.inc.php index ec67567ea4..9b4cc320c9 100644 --- a/calendar/inc/class.calendar_boupdate.inc.php +++ b/calendar/inc/class.calendar_boupdate.inc.php @@ -352,6 +352,11 @@ class calendar_boupdate extends calendar_bo $event = $this->read($cal_id); // we re-read the event, in case only partial information was update and we need the full info for the notifies //echo "new $cal_id="; _debug_array($event); + if($old_event['deleted'] && $event['deleted'] == null) + { + // Restored, bring back links + egw_link::restore('calendar', $cal_id); + } if ($this->log_file) { $this->log2file($event2save,$event,$old_event); @@ -1241,6 +1246,9 @@ class calendar_boupdate extends calendar_bo } elseif ($config['calendar_delete_history']) { + // mark all links to the event as deleted, but keep them + egw_link::unlink(0,'calendar',$cal_id,'','','',true); + $event['deleted'] = $this->now; $this->save($event, $ignore_acl); // Actually delete alarms From 8be41b79763273b6f164731c58bfd38801b28de1 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 19:18:21 +0000 Subject: [PATCH 10/27] When deleting but keeping infolog entries, hold on to links as well so they can be restored if contact is restored --- infolog/inc/class.infolog_bo.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/infolog/inc/class.infolog_bo.inc.php b/infolog/inc/class.infolog_bo.inc.php index fe40af292f..658757b30a 100644 --- a/infolog/inc/class.infolog_bo.inc.php +++ b/infolog/inc/class.infolog_bo.inc.php @@ -626,7 +626,7 @@ class infolog_bo $this->so->write($deleted); - egw_link::unlink(0,'infolog',$info_id,'','!file'); // keep the file attachments, only delete the rest + egw_link::unlink(0,'infolog',$info_id,'','!file','',true); // keep the file attachments, hide the rest } else { @@ -875,6 +875,12 @@ class infolog_bo // create (and remove) links in custom fields customfields_widget::update_customfield_links('infolog',$values,$old,'info_id'); + // Check for restore of deleted entry, restore held links + if($old['info_status'] == 'deleted' && $values['info_status'] != 'deleted') + { + egw_link::restore('infolog', $info_id); + } + // notify the link-class about the update, as other apps may be subscribt to it egw_link::notify_update('infolog',$info_id,$values); From 6029b5043f94eb401e4df5284bf22e1a70e86f0c Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 23:00:11 +0000 Subject: [PATCH 11/27] Add two extra columns to store the ISO country code for contacts --- phpgwapi/setup/setup.inc.php | 3 ++- phpgwapi/setup/tables_current.inc.php | 4 +++- phpgwapi/setup/tables_update.inc.php | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/phpgwapi/setup/setup.inc.php b/phpgwapi/setup/setup.inc.php index 78d222aa3b..3cc620cff7 100755 --- a/phpgwapi/setup/setup.inc.php +++ b/phpgwapi/setup/setup.inc.php @@ -12,7 +12,7 @@ /* Basic information about this app */ $setup_info['phpgwapi']['name'] = 'phpgwapi'; $setup_info['phpgwapi']['title'] = 'eGroupWare API'; -$setup_info['phpgwapi']['version'] = '1.9.003'; +$setup_info['phpgwapi']['version'] = '1.9.004'; $setup_info['phpgwapi']['versions']['current_header'] = '1.29'; $setup_info['phpgwapi']['enable'] = 3; $setup_info['phpgwapi']['app_order'] = 1; @@ -78,3 +78,4 @@ $setup_info['groupdav']['license'] = 'GPL'; + diff --git a/phpgwapi/setup/tables_current.inc.php b/phpgwapi/setup/tables_current.inc.php index 0fbc2f42e1..0769096ed5 100644 --- a/phpgwapi/setup/tables_current.inc.php +++ b/phpgwapi/setup/tables_current.inc.php @@ -388,7 +388,9 @@ $phpgw_baseline = array( 'contact_jpegphoto' => array('type' => 'blob'), 'account_id' => array('type' => 'int','precision' => '4'), 'contact_etag' => array('type' => 'int','precision' => '4','default' => '0'), - 'contact_uid' => array('type' => 'varchar','precision' => '255') + 'contact_uid' => array('type' => 'varchar','precision' => '255'), + 'adr_one_countrycode' => array('type' => 'varchar','precision' => '2'), + 'adr_two_countrycode' => array('type' => 'varchar','precision' => '2') ), 'pk' => array('contact_id'), 'fk' => array(), diff --git a/phpgwapi/setup/tables_update.inc.php b/phpgwapi/setup/tables_update.inc.php index ed72736c0d..3c89437b00 100644 --- a/phpgwapi/setup/tables_update.inc.php +++ b/phpgwapi/setup/tables_update.inc.php @@ -69,3 +69,18 @@ function phpgwapi_upgrade1_9_002() return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.9.003'; } + +function phpgwapi_upgrade1_9_003() +{ + $GLOBALS['egw_setup']->oProc->AddColumn('egw_addressbook','adr_one_countrycode',array( + 'type' => 'varchar', + 'precision' => '2' + )); + $GLOBALS['egw_setup']->oProc->AddColumn('egw_addressbook','adr_two_countrycode',array( + 'type' => 'varchar', + 'precision' => '2' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.9.004'; +} + From 5524c3573cfca9c71a749aef53ca53ea1b5a1cc1 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 27 Sep 2010 23:02:32 +0000 Subject: [PATCH 12/27] Use the two letter ISO country code, or allow user to use a free text country field (custom) to preserve syncing --- addressbook/inc/class.addressbook_sql.inc.php | 8 +++++ addressbook/inc/class.addressbook_ui.inc.php | 32 +++++++++++++++++++ addressbook/setup/etemplates.inc.php | 6 ++-- addressbook/templates/default/app.css | 1 + 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/addressbook/inc/class.addressbook_sql.inc.php b/addressbook/inc/class.addressbook_sql.inc.php index 9f96c36766..12315731f7 100644 --- a/addressbook/inc/class.addressbook_sql.inc.php +++ b/addressbook/inc/class.addressbook_sql.inc.php @@ -553,6 +553,14 @@ class addressbook_sql extends so_sql_cf } $contact = parent::read($keys,$extra_cols,$join); + // Translate country code + if($contact['adr_one_countrycode'] != null) { + $contact['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($contact['adr_one_countrycode'], true); + } + if($contact['adr_two_countrycode'] != null) { + $contact['adr_two_countryname'] = $GLOBALS['egw']->country->get_full_name($contact['adr_two_countrycode'], true); + } + // Change autoinc_id to match $this->db_cols $this->autoinc_id = $this->db_cols[$this->autoinc_id]; if(($id = (int)$this->data[$this->autoinc_id]) && $cfs = $this->read_customfields($keys)) { diff --git a/addressbook/inc/class.addressbook_ui.inc.php b/addressbook/inc/class.addressbook_ui.inc.php index 7c64a8825b..600a36d873 100644 --- a/addressbook/inc/class.addressbook_ui.inc.php +++ b/addressbook/inc/class.addressbook_ui.inc.php @@ -1271,6 +1271,14 @@ class addressbook_ui extends addressbook_bo { unset($content['n_fn']); } + // Country codes + foreach(array('adr_one', 'adr_two') as $c_prefix) + { + if ($content[$c_prefix.'_countrycode'] == '-custom-') + { + $content[$c_prefix.'_countrycode'] = null; + } + } if ($this->save($content)) { $content['msg'] = lang('Contact saved'); @@ -1458,6 +1466,8 @@ class addressbook_ui extends addressbook_bo // how to display addresses $content['addr_format'] = $this->addr_format_by_country($content['adr_one_countryname']); $content['addr_format2'] = $this->addr_format_by_country($content['adr_two_countryname']); + $GLOBALS['egw']->js->set_onload('show_custom_country(document.getElementById("exec[adr_one_countrycode]"));'); + $GLOBALS['egw']->js->set_onload('show_custom_country(document.getElementById("exec[adr_two_countrycode]"));'); $content['disable_change_org'] = $view || !$content['org_name']; //_debug_array($content); @@ -2049,6 +2059,28 @@ class addressbook_ui extends addressbook_bo } selbox.value = ""; } + + } + + function show_custom_country(selectbox) + { + custom_field_name = selectbox.name.replace("countrycode", "countryname"); + custom_field = document.getElementById(custom_field_name); + if(custom_field && selectbox.value == "-custom-") { + custom_field.style.display = "inline"; + } + else if (custom_field) + { + if(selectbox.value == "" || selectbox.value == null) + { + selectbox.value = "-custom-"; + custom_field.style.display = "inline"; + } + else + { + custom_field.style.display = "none"; + } + } } '; } diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index 0c26fc19a9..06684373d4 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() 2010-09-23 13:34 + * generated by soetemplate::dump4setup() 2010-09-27 17:00 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -38,11 +38,11 @@ $templ_data[] = array('name' => 'addressbook.edit.details','template' => '','lan $templ_data[] = array('name' => 'addressbook.edit.distribution_list','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:3:{i:0;a:1:{s:2:"c1";s:2:"th";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:18:"Distribution lists";}}i:2;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}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:4:"span";s:3:"all";s:4:"name";s:13:"distrib_lists";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:17:"100%,258,,,,,auto";}}','size' => '100%,258,,,,,auto','style' => '','modified' => '1200059576',); -$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.5.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:11:{i:0;a:7:{s:2:"c1";s:4:",top";s:3:"c10";s:7:",bottom";s:3:"h10";s:2:"25";s:2:"h9";s:34:",!@addr_format=city_state_postcode";s:2:"h8";s:34:",!@addr_format=city_state_postcode";s:2:"h6";s:33:",@addr_format=city_state_postcode";s:2:"h7";s:33:",@addr_format=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"image";s:4:"name";s:5:"photo";s:4:"span";s:6:",photo";s:7:"onclick";s:75:"set_style_by_class(\'table\',\'uploadphoto\',\'display\',\'inline\'); return false;";}i:2;a:2:{s:4:"type";s:8:"template";s:4:"name";s:23:"addressbook.edit.upload";}}s:1:"C";a:49:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";}s:1:"B";a:10:{s:4:"type";s:4:"text";s:4:"data";a:2:{i:0;a:2:{s:1:"A";s:11:",!@org_name";s:1:"B";s:11:",!@org_name";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1:":";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:7:"onclick";s:115:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\'); document.getElementById(form::name(\'n_prefix\')).focus();";s:4:"size";s:3:"-36";s:4:"span";s:12:"2,cursorHand";s:8:"readonly";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"addressbook.edit.name";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,title";s:5:"label";s:5:"Title";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"36,64";s:4:"name";s:5:"title";s:4:"span";s:1:"2";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,role";s:5:"label";s:4:"Role";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"20,64";s:4:"name";s:4:"role";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:4:"Room";s:4:"name";s:4:"room";}}}s:4:"rows";i:4;s:4:"cols";i:3;s:7:"no_lang";s:1:"1";i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}s:7:"options";a:0:{}}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"home";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Organisation";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:4:"size";s:6:"45,128";s:8:"onchange";s:14:"setName(this);";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"department";s:4:"size";s:11:",,,org_unit";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_unit";s:4:"size";s:5:"45,64";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_one_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_one_street";}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_one_street2";s:4:"help";s:14:"address line 2";}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_one_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:7;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-country";s:4:"size";s:12:"Select one,1";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:14:",countrySelect";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}}}i:8;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"City";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:9;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:3:{s:4:"type";s:14:"select-country";s:4:"size";s:12:"Select one,1";s:4:"name";s:19:"adr_one_countryname";}}i:10;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Addressbook";}s:1:"C";a:5:{s:4:"type";s:6:"select";s:4:"name";s:5:"owner";s:4:"help";s:42:"Addressbook the contact should be saved to";s:7:"no_lang";s:1:"1";s:4:"span";s:6:",owner";}}}s:4:"rows";i:10;s:4:"cols";i:3;s:4:"size";s:4:",286";s:7:"options";a:1:{i:1;s:3:"286";}}}','size' => ',286','style' => '','modified' => '1201776105',); +$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:11:{i:0;a:7:{s:2:"c1";s:4:",top";s:3:"c10";s:7:",bottom";s:3:"h10";s:2:"25";s:2:"h9";s:34:",!@addr_format=city_state_postcode";s:2:"h8";s:34:",!@addr_format=city_state_postcode";s:2:"h6";s:33:",@addr_format=city_state_postcode";s:2:"h7";s:33:",@addr_format=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"image";s:4:"name";s:5:"photo";s:4:"span";s:6:",photo";s:7:"onclick";s:75:"set_style_by_class(\'table\',\'uploadphoto\',\'display\',\'inline\'); return false;";}i:2;a:2:{s:4:"type";s:8:"template";s:4:"name";s:23:"addressbook.edit.upload";}}s:1:"C";a:49:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";}s:1:"B";a:10:{s:4:"type";s:4:"text";s:4:"data";a:2:{i:0;a:2:{s:1:"A";s:11:",!@org_name";s:1:"B";s:11:",!@org_name";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1:":";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:7:"onclick";s:115:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\'); document.getElementById(form::name(\'n_prefix\')).focus();";s:4:"size";s:3:"-36";s:4:"span";s:12:"2,cursorHand";s:8:"readonly";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"addressbook.edit.name";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,title";s:5:"label";s:5:"Title";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"36,64";s:4:"name";s:5:"title";s:4:"span";s:1:"2";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,role";s:5:"label";s:4:"Role";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"20,64";s:4:"name";s:4:"role";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:4:"Room";s:4:"name";s:4:"room";}}}s:4:"rows";i:4;s:4:"cols";i:3;s:7:"no_lang";s:1:"1";i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}s:7:"options";a:0:{}}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"home";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Organisation";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:4:"size";s:6:"45,128";s:8:"onchange";s:14:"setName(this);";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"department";s:4:"size";s:11:",,,org_unit";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_unit";s:4:"size";s:5:"45,64";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_one_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_one_street";}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_one_street2";s:4:"help";s:14:"address line 2";}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_one_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:7;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:4:"span";s:14:",countrySelect";s:8:"onchange";s:26:"show_custom_country(this);";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}}}i:8;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"City";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:9;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:8:"onchange";s:26:"show_custom_country(this);";s:4:"span";s:14:",countrySelect";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}}}i:10;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Addressbook";}s:1:"C";a:5:{s:4:"type";s:6:"select";s:4:"name";s:5:"owner";s:4:"help";s:42:"Addressbook the contact should be saved to";s:7:"no_lang";s:1:"1";s:4:"span";s:6:",owner";}}}s:4:"rows";i:10;s:4:"cols";i:3;s:4:"size";s:4:",286";s:7:"options";a:1:{i:1;s:3:"286";}}}','size' => ',286','style' => '','modified' => '1285616408',); $templ_data[] = array('name' => 'addressbook.edit.history','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:10:"historylog";s:4:"name";s:7:"history";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1265051832',); -$templ_data[] = array('name' => 'addressbook.edit.home','template' => '','lang' => '','group' => '0','version' => '1.3.003','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:6:{s:2:"h5";s:35:",!@addr_format2=city_state_postcode";s:2:"c8";s:4:",top";s:2:"h7";s:2:"30";s:2:"h6";s:35:",!@addr_format2=city_state_postcode";s:2:"h4";s:34:",@addr_format2=city_state_postcode";s:2:"h3";s:34:",@addr_format2=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_two_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_two_street";}}i:2;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"size";s:18:",,,adr_two_street2";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_two_street2";s:4:"help";s:14:"address line 2";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_two_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_two_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_two_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:4;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_two_countryname";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-country";s:4:"size";s:12:"Select one,1";s:4:"name";s:19:"adr_two_countryname";s:4:"span";s:14:",countrySelect";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_two_region";s:4:"help";s:5:"State";}}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_two_locality";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_two_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_two_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_two_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Country";}s:1:"C";a:3:{s:4:"type";s:14:"select-country";s:4:"size";s:12:"Select one,1";s:4:"name";s:19:"adr_two_countryname";}}i:7;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"gear";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,bday";s:5:"label";s:8:"Birthday";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";i:1;a:3:{s:4:"type";s:4:"date";s:4:"size";s:5:"Y-m-d";s:4:"name";s:4:"bday";}s:4:"size";s:6:"2,,0,0";i:2;a:5:{s:4:"type";s:6:"select";s:4:"name";s:2:"tz";s:7:"no_lang";s:1:"1";s:5:"label";s:8:"Timezone";s:5:"align";s:5:"right";}}}i:8;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"Public key";s:4:"size";s:9:",,,pubkey";}s:1:"C";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"4,40";s:4:"name";s:6:"pubkey";}}}s:4:"rows";i:8;s:4:"cols";i:3;s:4:"size";s:4:",258";s:7:"options";a:1:{i:1;s:3:"258";}}}','size' => ',258','style' => '','modified' => '1178179149',); +$templ_data[] = array('name' => 'addressbook.edit.home','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:6:{s:2:"h5";s:35:",!@addr_format2=city_state_postcode";s:2:"c8";s:4:",top";s:2:"h7";s:2:"30";s:2:"h6";s:35:",!@addr_format2=city_state_postcode";s:2:"h4";s:34:",@addr_format2=city_state_postcode";s:2:"h3";s:34:",@addr_format2=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_two_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_two_street";}}i:2;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"size";s:18:",,,adr_two_street2";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_two_street2";s:4:"help";s:14:"address line 2";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_two_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_two_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_two_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:4;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_two_countryname";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_two_countrycode";s:4:"span";s:14:",countrySelect";s:8:"onchange";s:26:"show_custom_country(this);";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_two_countryname";s:4:"span";s:15:",custom_country";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_two_region";s:4:"help";s:5:"State";}}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_two_locality";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_two_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_two_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_two_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Country";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_two_countrycode";s:8:"onchange";s:26:"show_custom_country(this);";s:4:"span";s:14:",countrySelect";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_two_countryname";s:4:"span";s:15:",custom_country";}}}i:7;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"gear";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,bday";s:5:"label";s:8:"Birthday";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";i:1;a:3:{s:4:"type";s:4:"date";s:4:"size";s:5:"Y-m-d";s:4:"name";s:4:"bday";}s:4:"size";s:6:"2,,0,0";i:2;a:5:{s:4:"type";s:6:"select";s:4:"name";s:2:"tz";s:7:"no_lang";s:1:"1";s:5:"label";s:8:"Timezone";s:5:"align";s:5:"right";}}}i:8;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"Public key";s:4:"size";s:9:",,,pubkey";}s:1:"C";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"4,40";s:4:"name";s:6:"pubkey";}}}s:4:"rows";i:8;s:4:"cols";i:3;s:4:"size";s:4:",258";s:7:"options";a:1:{i:1;s:3:"258";}}}','size' => ',258','style' => '','modified' => '1178179149',); $templ_data[] = array('name' => 'addressbook.edit.links','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:5:{i:0;a:3:{s:2:"c3";s:2:"th";s:2:"h1";s:6:",@view";s:2:"c1";s:2:"th";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:16:"Create new links";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:7:"link-to";s:4:"name";s:7:"link_to";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:14:"Existing links";}}i:4;a:1:{s:1:"A";a:2:{s:4:"type";s:9:"link-list";s:4:"name";s:7:"link_to";}}}s:4:"rows";i:4;s:4:"cols";i:1;s:4:"size";s:17:"100%,258,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"258";i:6;s:4:"auto";}}}','size' => '100%,258,,,,,auto','style' => '','modified' => '1131900825',); diff --git a/addressbook/templates/default/app.css b/addressbook/templates/default/app.css index ecef6a6959..e8a561a885 100644 --- a/addressbook/templates/default/app.css +++ b/addressbook/templates/default/app.css @@ -1,5 +1,6 @@ .cursorHand { cursor: hand; } .countrySelect select { width: 150px; } +.custom_country input {display: none; } .emailCol div { width: 100%; overflow: hidden; } .redItalic { color: red; font-style: italic; } .fixedHeight,.telNumbers { height: 12px; } From b052ffeb0a7d039a0b3d430b43c07497edd21213 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 28 Sep 2010 08:25:23 +0000 Subject: [PATCH 13/27] allow cats for planner to be an array --- calendar/inc/class.calendar_uiviews.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendar/inc/class.calendar_uiviews.inc.php b/calendar/inc/class.calendar_uiviews.inc.php index e6721ab775..92250c48f9 100644 --- a/calendar/inc/class.calendar_uiviews.inc.php +++ b/calendar/inc/class.calendar_uiviews.inc.php @@ -2124,7 +2124,7 @@ function open_edit(series) $cat2sort = array(); foreach((array)$this->categories->return_array('all',0,false,'','','',true) as $data) { - if ($data['parent'] == $this->cat_id || $data['id'] == $this->cat_id) // cat is a direct sub of $this->cat_id + if (in_array($data['parent'], (array)$this->cat_id) || in_array($data['id'], (array)$this->cat_id)) // cat is a direct sub of $this->cat_id { $cat2sort[$data['id']] = $data['id']; $sort2label[$data['id']] = stripslashes($data['name']); From 1237e5d754fa8a37b80232d79f8457412491a619 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Tue, 28 Sep 2010 08:32:11 +0000 Subject: [PATCH 14/27] adding EGroupware version to X-Dav-Powered-By header eg. "EGroupware 1.8.001 CalDAV/CardDAV/GroupDAV server" --- phpgwapi/inc/class.groupdav.inc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/phpgwapi/inc/class.groupdav.inc.php b/phpgwapi/inc/class.groupdav.inc.php index 21514eb018..047014a20c 100644 --- a/phpgwapi/inc/class.groupdav.inc.php +++ b/phpgwapi/inc/class.groupdav.inc.php @@ -7,7 +7,7 @@ * @package api * @subpackage groupdav * @author Ralf Becker - * @copyright (c) 2007-9 by Ralf Becker + * @copyright (c) 2007-10 by Ralf Becker * @version $Id$ */ @@ -59,7 +59,7 @@ class groupdav extends HTTP_WebDAV_Server /** * Apple iCal namespace (eg. for calendar color) */ - const ICAL = 'http://apple.com/ns/ical/'; + const ICAL = 'http://apple.com/ns/ical/'; /** * Realm and powered by string */ @@ -141,6 +141,10 @@ class groupdav extends HTTP_WebDAV_Server case 'neon': $this->cnrnd = true; // neon clients like cadaver } + // adding EGroupware version to X-Dav-Powered-By header eg. "EGroupware 1.8.001 CalDAV/CardDAV/GroupDAV server" + $this->dav_powered_by = str_replace('EGroupware','EGroupware '.$GLOBALS['egw_info']['server']['versions']['phpgwapi'], + $this->dav_powered_by); + parent::HTTP_WebDAV_Server(); $this->egw_charset = translation::charset(); From c4e46dc172726917d15b329013e693198edc2e6a Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Tue, 28 Sep 2010 14:58:30 +0000 Subject: [PATCH 15/27] typo in comment, while debugging ACLFilter --- infolog/inc/class.infolog_so.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infolog/inc/class.infolog_so.inc.php b/infolog/inc/class.infolog_so.inc.php index 32ba220e79..658e163790 100644 --- a/infolog/inc/class.infolog_so.inc.php +++ b/infolog/inc/class.infolog_so.inc.php @@ -255,7 +255,7 @@ class infolog_so )," AND info_responsible='0' OR ",$this->responsible_filter($f_user),')'); } } - //echo "

aclFilter(filter='$filter_was',user='$user') = '$filtermethod', privat_user_list=".print_r($privat_user_list,True).", public_user_list=".print_r($public_user_list,True)."

\n"; + //echo "

aclFilter(filter='$filter_was',user='$f_user') = '$filtermethod', privat_user_list=".print_r($privat_user_list,True).", public_user_list=".print_r($public_user_list,True)."

\n"; return $this->acl_filter[$filter.$f_user] = $filtermethod; // cache the filter } From b86490c0a71b829225d5796fbd803db44fa9e512 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 19:50:50 +0000 Subject: [PATCH 16/27] Better dealing with 2 letter country code: - Moved handling into BO layer, per Ralf - Clear country name if user saves with a code, and use the code - Updated search filter to use code, so filter works in any language --- addressbook/inc/class.addressbook_bo.inc.php | 26 +++++++++++++++++++ addressbook/inc/class.addressbook_so.inc.php | 6 ----- addressbook/inc/class.addressbook_sql.inc.php | 8 ------ addressbook/setup/etemplates.inc.php | 4 +-- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/addressbook/inc/class.addressbook_bo.inc.php b/addressbook/inc/class.addressbook_bo.inc.php index 8eec13613e..27d9241989 100755 --- a/addressbook/inc/class.addressbook_bo.inc.php +++ b/addressbook/inc/class.addressbook_bo.inc.php @@ -802,6 +802,24 @@ class addressbook_bo extends addressbook_so { $contact['cat_id'] = implode(',',$contact['cat_id']); } + + // Update country codes + if($contact['adr_one_countryname'] && $code = $GLOBALS['egw']->country->country_code($contact['adr_one_countryname'])) + { + if(strlen($code) == 2) + { + $contact['adr_one_countrycode'] = $code; + } + else + { + $contact['adr_one_countrycode'] = null; + } + } + if($contact['adr_one_countrycode'] != null) + { + $contact['adr_one_countryname'] = null; + } + // last modified $contact['modifier'] = $this->user; $contact['modified'] = $this->now_su; @@ -884,6 +902,14 @@ class addressbook_bo extends addressbook_so // determine the file-as type $data['fileas_type'] = $this->fileas_type($data); + // Update country name from code + if($data['adr_one_countrycode'] != null) { + $data['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($data['adr_one_countrycode'], true); + } + if($data['adr_two_countrycode'] != null) { + $data['adr_two_countryname'] = $GLOBALS['egw']->country->get_full_name($data['adr_two_countrycode'], true); + } + return $data; } diff --git a/addressbook/inc/class.addressbook_so.inc.php b/addressbook/inc/class.addressbook_so.inc.php index 60223ea617..b4396953bb 100755 --- a/addressbook/inc/class.addressbook_so.inc.php +++ b/addressbook/inc/class.addressbook_so.inc.php @@ -563,12 +563,6 @@ class addressbook_so //echo "

socontacts::search(".print_r($criteria,true).",'$only_keys','$order_by','$extra_cols','$wildcard','$empty','$op','$start',".print_r($filter,true).",'$join')

\n"; //error_log("socontacts::search(".print_r($criteria,true).",'$only_keys','$order_by','$extra_cols','$wildcard','$empty','$op','$start',".print_r($filter,true).",'$join')"); - // the nextmatch custom-filter-header country-select returns a 2 letter country-code - if (isset($filter['adr_one_countryname']) && strlen($filter['adr_one_countryname']) == 2) - { - $filter['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($filter['adr_one_countryname']); - } - // Hide deleted items unless type is specifically deleted if(!is_array($filter)) $filter = $filter ? (array) $filter : array(); if($filter['tid'] !== self::DELETED_TYPE) diff --git a/addressbook/inc/class.addressbook_sql.inc.php b/addressbook/inc/class.addressbook_sql.inc.php index 12315731f7..9f96c36766 100644 --- a/addressbook/inc/class.addressbook_sql.inc.php +++ b/addressbook/inc/class.addressbook_sql.inc.php @@ -553,14 +553,6 @@ class addressbook_sql extends so_sql_cf } $contact = parent::read($keys,$extra_cols,$join); - // Translate country code - if($contact['adr_one_countrycode'] != null) { - $contact['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($contact['adr_one_countrycode'], true); - } - if($contact['adr_two_countrycode'] != null) { - $contact['adr_two_countryname'] = $GLOBALS['egw']->country->get_full_name($contact['adr_two_countrycode'], true); - } - // Change autoinc_id to match $this->db_cols $this->autoinc_id = $this->db_cols[$this->autoinc_id]; if(($id = (int)$this->data[$this->autoinc_id]) && $cfs = $this->read_customfields($keys)) { diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index 06684373d4..398c01c58c 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() 2010-09-27 17:00 + * generated by soetemplate::dump4setup() 2010-09-28 13:41 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -84,7 +84,7 @@ $templ_data[] = array('name' => 'addressbook.index.right_add','template' => '',' $templ_data[] = array('name' => 'addressbook.index.right_addplus','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:6:{s:4:"type";s:6:"select";s:5:"label";s:4:"Type";s:4:"name";s:15:"col_filter[tid]";s:8:"onchange";i:1;s:4:"size";s:3:"All";s:5:"align";s:5:"right";}s:1:"B";a:5:{s:4:"type";s:10:"buttononly";s:4:"name";s:6:"search";s:5:"label";s:15:"Advanced search";s:7:"onclick";s:170:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.search\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:5:"right";}s:1:"C";a:7:{s:4:"type";s:10:"buttononly";s:4:"name";s:3:"add";s:5:"label";s:3:"Add";s:4:"help";s:17:"Add a new contact";s:7:"onclick";s:168:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"span";s:12:",rightPadAdd";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:5:"align";s:5:"right";s:7:"options";a:0:{}}}','size' => '','style' => '.rightPadAdd { width: 30px; }','modified' => '1257759662',); -$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.7.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"P";s:2:"75";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";}i:1;a:16:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";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:"O";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:"P";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:16:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";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:"H";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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";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:"O";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:"P";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:16;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1257753432',); +$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"P";s:2:"75";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";}i:1;a:16:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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_countrycode";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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";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:"O";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:"P";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:16:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";a:7:{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:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_one_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"H";a:7:{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:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_two_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";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:"O";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:"P";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:16;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1257753432',); $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',); From 22ed1ab41193fc465d91d2ef46a58a27bad831eb Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 19:55:55 +0000 Subject: [PATCH 17/27] Update private address country code also --- addressbook/inc/class.addressbook_bo.inc.php | 22 +++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/addressbook/inc/class.addressbook_bo.inc.php b/addressbook/inc/class.addressbook_bo.inc.php index 27d9241989..ab34f81bc3 100755 --- a/addressbook/inc/class.addressbook_bo.inc.php +++ b/addressbook/inc/class.addressbook_bo.inc.php @@ -804,21 +804,23 @@ class addressbook_bo extends addressbook_so } // Update country codes - if($contact['adr_one_countryname'] && $code = $GLOBALS['egw']->country->country_code($contact['adr_one_countryname'])) - { - if(strlen($code) == 2) + foreach(array('adr_one_', 'adr_two_') as $c_prefix) { + if($contact[$c_prefix.'countryname'] && $code = $GLOBALS['egw']->country->country_code($contact[$c_prefix.'countryname'])) { - $contact['adr_one_countrycode'] = $code; + if(strlen($code) == 2) + { + $contact[$c_prefix.'countrycode'] = $code; + } + else + { + $contact[$c_prefix.'countrycode'] = null; + } } - else + if($contact[$c_prefix.'countrycode'] != null) { - $contact['adr_one_countrycode'] = null; + $contact[$c_prefix.'countryname'] = null; } } - if($contact['adr_one_countrycode'] != null) - { - $contact['adr_one_countryname'] = null; - } // last modified $contact['modifier'] = $this->user; From 9f6c1c1994be543f75d28e963352b6142447c5b9 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 20:53:00 +0000 Subject: [PATCH 18/27] Add a parameter to allow an extra 'Custom' country option when using 2 letter codes --- etemplate/inc/class.select_widget.inc.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/etemplate/inc/class.select_widget.inc.php b/etemplate/inc/class.select_widget.inc.php index 693709714b..5169a85f59 100644 --- a/etemplate/inc/class.select_widget.inc.php +++ b/etemplate/inc/class.select_widget.inc.php @@ -139,15 +139,17 @@ class select_widget ); break; - case 'select-country': // #Row|Extralabel,1=use country name, 0=use 2 letter-code - $cell['sel_options'] = $GLOBALS['egw']->country->countries(); - + case 'select-country': // #Row|Extralabel,1=use country name, 0=use 2 letter-code,custom country field name + $cell['sel_options'] = ($type == 0 && $type2 ? array('-custom-' => lang('Custom')) : array()) + $GLOBALS['egw']->country->countries(); if (($extension_data['country_use_name'] = $type) && $value) { $value = $GLOBALS['egw']->country->country_code($value); if (!isset($cell['sel_options'][$value])) { - $cell['sel_options'][$value] = $value; + if($type2) + { + $cell['sel_options'][$value] = $value; + } } } $cell['no_lang'] = True; From 53401c63c0e3e00745fbd70e274b890e065fad46 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 21:07:20 +0000 Subject: [PATCH 19/27] Add a feature to try to auto-detect the field mapping --- ...portexport_wizard_basic_import_csv.inc.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php b/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php index 92150dcc39..1d245ebff3 100644 --- a/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php +++ b/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php @@ -127,6 +127,30 @@ class importexport_wizard_basic_import_csv if (($handle = fopen($GLOBALS['egw']->session->appsession('csvfile'), "rb")) !== FALSE) { $data = fgetcsv($handle, 8000, $content['fieldsep']); $content['csv_fields'] = translation::convert($data,$content['charset']); + + // Try to match automatically + $english = array(); + foreach($content['csv_fields'] as $index => $field) { + foreach($this->mapping_fields as $key => $field_name) { + if(strcasecmp($field, $field_name) == 0) { + $content['field_mapping'][$index] = $key; + continue; + } + // Check english also + if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) { + $msg_id = translation::get_message_id($field_name, $content['application']); + } + if($msg_id) { + $english[$field_name] = translation::read('en', $content['application'], $msg_id); + } else { + $english[$field_name] = false; + } + if($english[$field_name] && strcasecmp($field, $english[$field_name]) == 0) { + $content['field_mapping'][$index] = $key; + continue; + } + } + } } elseif($content['plugin_options']['csv_fields']) { $content['csv_fields'] = $content['plugin_options']['csv_fields']; } From b1a6dd973220a31d81b0c51b0435ff58c6f9bf08 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 22:45:57 +0000 Subject: [PATCH 20/27] Add basic support for importing users from CSV using admin_cmds --- .../inc/class.admin_import_users_csv.inc.php | 278 ++++++++++++++++++ ...lass.admin_wizard_import_users_csv.inc.php | 66 +++++ 2 files changed, 344 insertions(+) create mode 100644 admin/inc/class.admin_import_users_csv.inc.php create mode 100644 admin/inc/class.admin_wizard_import_users_csv.inc.php diff --git a/admin/inc/class.admin_import_users_csv.inc.php b/admin/inc/class.admin_import_users_csv.inc.php new file mode 100644 index 0000000000..fd08a9c7db --- /dev/null +++ b/admin/inc/class.admin_import_users_csv.inc.php @@ -0,0 +1,278 @@ + conversion) + 'field_mapping', // array( $csv_col_num => adb_filed) + 'conditions', /* => array containing condition arrays: + 'type' => exists, // exists + 'string' => '#kundennummer', + 'true' => array( + 'action' => update, + 'last' => true, + ), + 'false' => array( + 'action' => insert, + 'last' => true, + ),*/ + + ); + + /** + * actions which could be done to data entries + */ + protected static $actions = array( 'none', 'update', 'create', 'delete', 'disable', 'enable' ); + + /** + * conditions for actions + * + * @var array + */ + protected static $conditions = array( 'exists' ); + + /** + * @var definition + */ + private $definition; + + /** + * @var bool + */ + private $dry_run = false; + + /** + * @var bool is current user admin? + */ + private $is_admin = false; + + /** + * @var int + */ + private $user = null; + + /** + * List of import errors + */ + protected $errors = array(); + + /** + * List of actions, and how many times that action was taken + */ + protected $results = array(); + + /** + * imports entries according to given definition object. + * @param resource $_stream + * @param string $_charset + * @param definition $_definition + */ + public function import( $_stream, importexport_definition $_definition ) { + $import_csv = new importexport_import_csv( $_stream, array( + 'fieldsep' => $_definition->plugin_options['fieldsep'], + 'charset' => $_definition->plugin_options['charset'], + )); + + $this->definition = $_definition; + + // user, is admin ? + $this->is_admin = isset( $GLOBALS['egw_info']['user']['apps']['admin'] ) && $GLOBALS['egw_info']['user']['apps']['admin']; + $this->user = $GLOBALS['egw_info']['user']['account_id']; + + // dry run? + $this->dry_run = isset( $_definition->plugin_options['dry_run'] ) ? $_definition->plugin_options['dry_run'] : false; + + // set FieldMapping. + $import_csv->mapping = $_definition->plugin_options['field_mapping']; + + // set FieldConversion + $import_csv->conversion = $_definition->plugin_options['field_conversion']; + + //check if file has a header lines + if ( isset( $_definition->plugin_options['num_header_lines'] ) && $_definition->plugin_options['num_header_lines'] > 0) { + $import_csv->skip_records($_definition->plugin_options['num_header_lines']); + } elseif(isset($_definition->plugin_options['has_header_line']) && $_definition->plugin_options['has_header_line']) { + // First method is preferred + $import_csv->skip_records(1); + } + + // Start counting successes + $count = 0; + $this->results = array(); + + // Failures + $this->errors = array(); + + while ( $record = $import_csv->get_record() ) { + $success = false; + // don't import empty records + if( count( array_unique( $record ) ) < 2 ) continue; + + if ( $_definition->plugin_options['conditions'] ) { + foreach ( $_definition->plugin_options['conditions'] as $condition ) { + switch ( $condition['type'] ) { + // exists + case 'exists' : + $accounts = $GLOBALS['egw']->accounts->search(array( + 'type' => 'accounts', + 'query' => $record[$condition['string']], + 'query_type' => $condition['string'] + )); + if ( is_array( $accounts ) && count( $accounts ) >= 1 ) { + // apply action to all contacts matching this exists condition + $action = $condition['true']; + foreach ( (array)$accounts as $account ) { + $record['account_id'] = $account['account_id']; + $success = $this->action( $action['action'], $record, $import_csv->get_current_position() ); + } + } else { + $action = $condition['false']; + $success = ($this->action( $action['action'], $record, $import_csv->get_current_position() )); + } + break; + + // not supported action + default : + die('condition / action not supported!!!'); + break; + } + if ($action['last']) break; + } + } else { + // unconditional insert + $success = $this->action( 'insert', $record, $import_csv->get_current_position() ); + } + if($success) $count++; + } + return $count; + } + + /** + * perform the required action + * + * @param int $_action one of $this->actions + * @param array $_data contact data for the action + * @return bool success or not + */ + private function action ( $_action, $_data, $record_num = 0 ) { + switch ($_action) { + case 'none' : + return true; + case 'disable': + case 'enable': + $_data['account_expires'] = $_action == 'disable' ? 'already' : ''; + case 'update' : + case 'create' : + $command = new admin_cmd_edit_user($data['account_lid'], $_data); + if($this->dry_run) { + $this->results[$_action]++; + return true; + } + try { + $command->run(); + } catch (Exception $e) { + $this->errors[$record_num] = $e->getMessage(); + return false; + } + $this->results[$_action]++; + return true; + default: + throw new egw_exception('Unsupported action'); + + } + } + + /** + * returns translated name of plugin + * + * @return string name + */ + public static function get_name() { + return lang('User CSV import'); + } + + /** + * returns translated (user) description of plugin + * + * @return string descriprion + */ + public static function get_description() { + return lang("Creates / updates user accounts from CSV file"); + } + + /** + * retruns file suffix(s) plugin can handle (e.g. csv) + * + * @return string suffix (comma seperated) + */ + public static function get_filesuffix() { + return 'csv'; + } + + /** + * return etemplate components for options. + * @abstract We can't deal with etemplate objects here, as an uietemplate + * objects itself are scipt orientated and not "dialog objects" + * + * @return array ( + * name => string, + * content => array, + * sel_options => array, + * preserv => array, + * ) + */ + public function get_options_etpl() { + // lets do it! + } + + /** + * returns etemplate name for slectors of this plugin + * + * @return string etemplate name + */ + public function get_selectors_etpl() { + // lets do it! + } + + /** + * Returns errors that were encountered during importing + * Maximum of one error message per record, but you can append if you need to + * + * @return Array ( + * record_# => error message + * ) + */ + public function get_errors() { + return $this->errors; + } + + /** + * Returns a list of actions taken, and the number of records for that action. + * Actions are things like 'insert', 'update', 'delete', and may be different for each plugin. + * + * @return Array ( + * action => record count + * ) + */ + public function get_results() { + return $this->results; + } +} // end of iface_export_plugin +?> diff --git a/admin/inc/class.admin_wizard_import_users_csv.inc.php b/admin/inc/class.admin_wizard_import_users_csv.inc.php new file mode 100644 index 0000000000..fae4d4d3f2 --- /dev/null +++ b/admin/inc/class.admin_wizard_import_users_csv.inc.php @@ -0,0 +1,66 @@ + + * @version $Id: $ + */ + +class admin_wizard_import_users_csv extends importexport_wizard_basic_import_csv +{ + + /** + * constructor + */ + function __construct() + { + parent::__construct(); + + $this->steps += array( + 'wizard_step50' => lang('Manage mapping'), + ); + + // Field mapping + $this->mapping_fields = array( + 'account_lid' => lang('LoginID'), + 'account_firstname' => lang('First Name'), + 'account_lastname' => lang('Last Name'), + 'account_email' => lang('email'), + 'account_passwd' => lang('Password'), + 'account_passwd_2' => lang('Re-Enter Password'), + 'account_active' => lang('Account active'), + 'account_primary_group' => lang('primary Group'), + 'account_groups' => lang('Groups'), + 'account_expires' => lang('Expires'), + 'anonymous' => lang('Anonymous User (not shown in list sessions)'), + 'changepassword' => lang('Can change password'), + 'mustchangepassword' => lang('Must change password upon next login'), + ); + + // Actions + $this->actions = array( + 'none' => lang('none'), + 'update' => lang('update'), + 'create' => lang('create'), + 'delete' => lang('delete'), + 'disable' => lang('disable'), + 'enable' => lang('enable'), + ); + + // Conditions + $this->conditions = array( + 'exists' => lang('exists'), + ); + } + + function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv) + { + $result = parent::wizard_step50($content, $sel_options, $readonlys, $preserv); + $content['msg'] .= "\n*" ; + + return $result; + } +} From 79db13ec5ef125c1bba86f4b2a6248279d95a7e9 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Tue, 28 Sep 2010 22:54:35 +0000 Subject: [PATCH 21/27] Allow auto-map from file to update existing mapping --- .../inc/class.importexport_wizard_basic_import_csv.inc.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php b/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php index 1d245ebff3..79b9d263c3 100644 --- a/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php +++ b/importexport/inc/class.importexport_wizard_basic_import_csv.inc.php @@ -131,8 +131,13 @@ class importexport_wizard_basic_import_csv // Try to match automatically $english = array(); foreach($content['csv_fields'] as $index => $field) { + if($content['field_mapping'][$index]) continue; + if($content['plugin_options']['field_mapping'][$index]) { + # Copy already set, but allow new file to update + $content['field_mapping'][$index] = $content['plugin_options']['field_mapping'][$index]; + } foreach($this->mapping_fields as $key => $field_name) { - if(strcasecmp($field, $field_name) == 0) { + if(strcasecmp($field, $field_name) == 0 || strcasecmp($field,$key) == 0) { $content['field_mapping'][$index] = $key; continue; } From c4a31bae82c640ae09c84e462a75bee28e68e5b9 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 29 Sep 2010 08:41:53 +0000 Subject: [PATCH 22/27] removed not set author and maintainer, as it gives an notice in check_install --- preferences/setup/setup.inc.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/preferences/setup/setup.inc.php b/preferences/setup/setup.inc.php index 3226c46e32..4daf5d11b8 100755 --- a/preferences/setup/setup.inc.php +++ b/preferences/setup/setup.inc.php @@ -40,7 +40,5 @@ $setup_info['password']['app_order'] = 1; $setup_info['password']['tables'] = array(); $setup_info['password']['enable'] = 2; $setup_info['password']['index'] = '/preferences/password.php'; -$setup_info['password']['author'] = $setup_info['preferences']['author']; -$setup_info['password']['maintainer']= $setup_info['preferences']['maintainer']; $setup_info['password']['license'] = $setup_info['preferences']['license']; $setup_info['password']['depends'] = $setup_info['preferences']['depends']; From 8be6483a2a4a6fa26aa6013d47a2fe60153484d9 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 29 Sep 2010 09:15:29 +0000 Subject: [PATCH 23/27] * added valid timezone set in php.ini check --- setup/check_install.php | 22 ++++++++++++++++++++++ setup/lang/egw_de.lang | 2 ++ setup/lang/egw_en.lang | 2 ++ 3 files changed, 26 insertions(+) diff --git a/setup/check_install.php b/setup/check_install.php index 6765d1a6cb..d7d93ee945 100644 --- a/setup/check_install.php +++ b/setup/check_install.php @@ -122,6 +122,14 @@ $checks = array( 'check' => 'contain', 'error' => lang('include_path need to contain "." - the current directory'), ), + 'date.timezone' => array( + 'func' => 'php_ini_check', + 'value' => 'System/Localtime', + 'verbose_value' => '"System/Localtime"', + 'check' => '!=', + 'error' => lang('No VALID timezone set! ("%1" is NOT sufficient, you have to use a timezone identifer like "%2", see %3full list of valid identifers%4)', + 'System/Localtime','Europe/Berlin','',''), + ), 'pdo' => array( 'func' => 'extension_check', 'error' => lang('The PDO extension plus a database specific driver is needed by the VFS (virtual file system)!'), @@ -696,11 +704,25 @@ function php_ini_check($name,$args) $sep = $is_windows ? '/[; ]+/' : '/[: ]+/'; $result = in_array($args['value'],preg_split($sep,$ini_value)); break; + case '!=': + $check = lang('set and not'); + $result = !empty($ini_value) && $ini_value != $args['value']; + break; case '=': default: $result = $ini_value == $args['value']; break; } + if ($name == 'date.timezone') + { + try { + $tz = new DateTimeZone($ini_value); + unset($tz); + } + catch(Exception $e) { + $result = false; // no valid timezone + } + } $msg = ' '.lang('Checking php.ini').": $name $check $verbose_value: ini_get('$name')='$ini_value'$ini_value_verbose"; if ($result) diff --git a/setup/lang/egw_de.lang b/setup/lang/egw_de.lang index cad4d7f0f9..d794be451b 100644 --- a/setup/lang/egw_de.lang +++ b/setup/lang/egw_de.lang @@ -409,6 +409,7 @@ no egroupware domains / database instances exist! use --edit-header --domain to no header admin password set! use --edit-header [,] to set one (--usage gives more options). setup de Kein Passwort für die Headerverwaltung gesetzt! Benutzen Sie --edit-header Passwort[,Benutzer] um eines zu setzen (--usage gibt weitere Optionen). no modes available setup de kein Modus verfügbar no update necessary, domain %1(%2) is up to date. setup de Keine Aktualisierung notwendig, Domain %1(%2) ist aktuell. +no valid timezone set! ("%1" is not sufficient, you have to use a timezone identifer like "%2", see %3full list of valid identifers%4) setup de Keine gültige Zeitzone gesetzt! ("%1" ist nicht ausreichend, Sie müssen eine Zeitzone wie "%2" verwenden, siehe %3Liste der gültigen Zeitzonen%4) no xml support found. disabling setup de Keine Unterstützung für XML gefunden. Abgeschaltet not setup de nicht not all mcrypt algorithms and modes work with egroupware. if you experience problems try switching it off. setup de Nicht alle MCrypt-Algorithmen und -Modi funktionieren mit eGroupWare. Wenn Sie Probleme feststellen, versuchen Sie es abzuschalten. @@ -521,6 +522,7 @@ server root setup de Server-Root session handler class used. setup de Benutze Sitzunghandler Klasse. sessions handler setup de Sitzunghandler set setup de gesetzt +set and not setup de gesetzt und nicht setting the system-charset to utf-8 (unicode) allows the coexistens of data from languages of different charsets. setup de Den Systemzeichensatz auf UTF-8 (unicode) zu setzten, erlaubt die Koexistenz von Daten in Sprachen mit verschiedenen Zeichensätzen. settings setup de Einstellungen setup setup de Einrichtung diff --git a/setup/lang/egw_en.lang b/setup/lang/egw_en.lang index 67533b9bda..3be079637a 100644 --- a/setup/lang/egw_en.lang +++ b/setup/lang/egw_en.lang @@ -409,6 +409,7 @@ no egroupware domains / database instances exist! use --edit-header --domain to no header admin password set! use --edit-header [,] to set one (--usage gives more options). setup en No header admin password set! Use --edit-header [,] to set one (--usage gives more options). no modes available setup en no modes available no update necessary, domain %1(%2) is up to date. setup en No update necessary, domain %1(%2) is up to date. +no valid timezone set! ("%1" is not sufficient, you have to use a timezone identifer like "%2", see %3full list of valid identifers%4) setup en No VALID timezone set! ("%1" is NOT sufficient, you have to use a timezone identifer like "%2", see %3full list of valid identifers%4) no xml support found. disabling setup en No XML support found. Disabling not setup en not not all mcrypt algorithms and modes work with egroupware. if you experience problems try switching it off. setup en Not all mcrypt algorithms and modes work with eGroupWare. If you experience problems try switching it off. @@ -521,6 +522,7 @@ server root setup en Server Root session handler class used. setup en Session handler class used. sessions handler setup en Sessions Handler set setup en set +set and not setup en set and not setting the system-charset to utf-8 (unicode) allows the coexistens of data from languages of different charsets. setup en Setting the system-charset to UTF-8 (unicode) allows the coexistens of data from languages of different charsets. settings setup en Settings setup setup en Setup From e840850db201bf46174f5638bf895af0f1c1b394 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Wed, 29 Sep 2010 10:38:44 +0000 Subject: [PATCH 24/27] feature to show contact_id in list and editview; ability to sort by contact_id, ability to search for contact_id (or parts of it), so beware if you search for a contact by id, you may find more than one, since the number you search for may be part of the content of more than one field and contacts, as numbers can occur also in eg.: phonenumber, roomnumber, ZIP-Code, ... --- addressbook/inc/class.addressbook_so.inc.php | 3 ++- addressbook/inc/class.addressbook_ui.inc.php | 2 ++ addressbook/inc/hook_home.inc.php | 2 +- addressbook/setup/etemplates.inc.php | 6 +++--- addressbook/templates/default/app.css | 3 ++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/addressbook/inc/class.addressbook_so.inc.php b/addressbook/inc/class.addressbook_so.inc.php index b4396953bb..2c1f5bec78 100755 --- a/addressbook/inc/class.addressbook_so.inc.php +++ b/addressbook/inc/class.addressbook_so.inc.php @@ -128,7 +128,7 @@ class addressbook_so * In SQL we can search all columns, though a view make on real sense */ var $sql_cols_not_to_search = array( - 'jpegphoto','owner','tid','private','id','cat_id','etag', + 'jpegphoto','owner','tid','private','cat_id','etag', 'modified','modifier','creator','created','tz','account_id', 'uid', ); @@ -609,6 +609,7 @@ class addressbook_so unset($cols[$key]); } } + if ($col=='contact_id') $col='egw_addressbook.contact_id'; } $backend->columns_to_search = $cols; diff --git a/addressbook/inc/class.addressbook_ui.inc.php b/addressbook/inc/class.addressbook_ui.inc.php index 600a36d873..e50bff662e 100644 --- a/addressbook/inc/class.addressbook_ui.inc.php +++ b/addressbook/inc/class.addressbook_ui.inc.php @@ -972,6 +972,8 @@ class addressbook_ui extends addressbook_bo case 'contact_created': $order = "$query[order] IS NULL,$query[order] $sort,org_name $sort,n_family $sort,n_given $sort"; break; + case 'contact_id': + $order = "$query[order] $sort"; } if ($query['searchletter']) // only show contacts if the order-criteria starts with the given letter { diff --git a/addressbook/inc/hook_home.inc.php b/addressbook/inc/hook_home.inc.php index ed14121958..bacd2142ed 100644 --- a/addressbook/inc/hook_home.inc.php +++ b/addressbook/inc/hook_home.inc.php @@ -112,4 +112,4 @@ if ($GLOBALS['egw_info']['user']['apps']['addressbook'] && unset($contacts); unset($bdays); echo "\n\n"; -} \ No newline at end of file +} diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index 398c01c58c..61688bbe6e 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() 2010-09-28 13:41 + * generated by soetemplate::dump4setup() 2010-09-29 12:21 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -38,7 +38,7 @@ $templ_data[] = array('name' => 'addressbook.edit.details','template' => '','lan $templ_data[] = array('name' => 'addressbook.edit.distribution_list','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:3:{i:0;a:1:{s:2:"c1";s:2:"th";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:18:"Distribution lists";}}i:2;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}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:4:"span";s:3:"all";s:4:"name";s:13:"distrib_lists";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:17:"100%,258,,,,,auto";}}','size' => '100%,258,,,,,auto','style' => '','modified' => '1200059576',); -$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:11:{i:0;a:7:{s:2:"c1";s:4:",top";s:3:"c10";s:7:",bottom";s:3:"h10";s:2:"25";s:2:"h9";s:34:",!@addr_format=city_state_postcode";s:2:"h8";s:34:",!@addr_format=city_state_postcode";s:2:"h6";s:33:",@addr_format=city_state_postcode";s:2:"h7";s:33:",@addr_format=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"image";s:4:"name";s:5:"photo";s:4:"span";s:6:",photo";s:7:"onclick";s:75:"set_style_by_class(\'table\',\'uploadphoto\',\'display\',\'inline\'); return false;";}i:2;a:2:{s:4:"type";s:8:"template";s:4:"name";s:23:"addressbook.edit.upload";}}s:1:"C";a:49:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";}s:1:"B";a:10:{s:4:"type";s:4:"text";s:4:"data";a:2:{i:0;a:2:{s:1:"A";s:11:",!@org_name";s:1:"B";s:11:",!@org_name";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1:":";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:7:"onclick";s:115:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\'); document.getElementById(form::name(\'n_prefix\')).focus();";s:4:"size";s:3:"-36";s:4:"span";s:12:"2,cursorHand";s:8:"readonly";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"addressbook.edit.name";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,title";s:5:"label";s:5:"Title";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"36,64";s:4:"name";s:5:"title";s:4:"span";s:1:"2";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,role";s:5:"label";s:4:"Role";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"20,64";s:4:"name";s:4:"role";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:4:"Room";s:4:"name";s:4:"room";}}}s:4:"rows";i:4;s:4:"cols";i:3;s:7:"no_lang";s:1:"1";i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}s:7:"options";a:0:{}}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"home";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Organisation";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:4:"size";s:6:"45,128";s:8:"onchange";s:14:"setName(this);";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"department";s:4:"size";s:11:",,,org_unit";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_unit";s:4:"size";s:5:"45,64";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_one_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_one_street";}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_one_street2";s:4:"help";s:14:"address line 2";}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_one_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:7;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:4:"span";s:14:",countrySelect";s:8:"onchange";s:26:"show_custom_country(this);";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}}}i:8;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"City";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:9;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:8:"onchange";s:26:"show_custom_country(this);";s:4:"span";s:14:",countrySelect";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}}}i:10;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Addressbook";}s:1:"C";a:5:{s:4:"type";s:6:"select";s:4:"name";s:5:"owner";s:4:"help";s:42:"Addressbook the contact should be saved to";s:7:"no_lang";s:1:"1";s:4:"span";s:6:",owner";}}}s:4:"rows";i:10;s:4:"cols";i:3;s:4:"size";s:4:",286";s:7:"options";a:1:{i:1;s:3:"286";}}}','size' => ',286','style' => '','modified' => '1285616408',); +$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:11:{i:0;a:7:{s:2:"c1";s:4:",top";s:3:"c10";s:7:",bottom";s:3:"h10";s:2:"25";s:2:"h9";s:34:",!@addr_format=city_state_postcode";s:2:"h8";s:34:",!@addr_format=city_state_postcode";s:2:"h6";s:33:",@addr_format=city_state_postcode";s:2:"h7";s:33:",@addr_format=city_state_postcode";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:8:"accounts";}s:1:"B";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:5:"image";s:4:"name";s:5:"photo";s:4:"span";s:6:",photo";s:7:"onclick";s:75:"set_style_by_class(\'table\',\'uploadphoto\',\'display\',\'inline\'); return false;";}i:2;a:2:{s:4:"type";s:8:"template";s:4:"name";s:23:"addressbook.edit.upload";}}s:1:"C";a:49:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";}s:1:"B";a:10:{s:4:"type";s:4:"text";s:4:"data";a:2:{i:0;a:2:{s:1:"A";s:11:",!@org_name";s:1:"B";s:11:",!@org_name";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1:":";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:4:"name";s:4:"n_fn";s:7:"no_lang";s:1:"1";s:7:"onclick";s:115:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\'); document.getElementById(form::name(\'n_prefix\')).focus();";s:4:"size";s:3:"-36";s:4:"span";s:12:"2,cursorHand";s:8:"readonly";s:1:"1";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:3:{s:4:"type";s:5:"label";s:4:"span";s:10:",contactid";s:4:"name";s:2:"id";}}i:2;a:4:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"addressbook.edit.name";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:3;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,title";s:5:"label";s:5:"Title";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"36,64";s:4:"name";s:5:"title";s:4:"span";s:1:"2";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:4;a:4:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,role";s:5:"label";s:4:"Role";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"20,64";s:4:"name";s:4:"role";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:4:"Room";s:4:"name";s:4:"room";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:4;s:7:"no_lang";s:1:"1";i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}s:7:"options";a:0:{}}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"home";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Organisation";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_name";s:4:"size";s:6:"45,128";s:8:"onchange";s:14:"setName(this);";}}i:3;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"department";s:4:"size";s:11:",,,org_unit";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"org_unit";s:4:"size";s:5:"45,64";}}i:4;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"street";s:4:"size";s:17:",,,adr_one_street";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:14:"adr_one_street";}}i:5;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_one_street2";s:4:"help";s:14:"address line 2";}}i:6;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"city";s:4:"size";s:19:",,,adr_one_locality";}s:1:"C";a:47:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"35,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";s:4:"span";s:9:",leftPad5";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}i:5;a:1:{s:4:"type";s:5:"label";}i:6;a:1:{s:4:"type";s:5:"label";}i:7;a:1:{s:4:"type";s:5:"label";}i:8;a:1:{s:4:"type";s:5:"label";}i:9;a:1:{s:4:"type";s:5:"label";}i:10;a:1:{s:4:"type";s:5:"label";}i:11;a:1:{s:4:"type";s:5:"label";}i:12;a:1:{s:4:"type";s:5:"label";}i:13;a:1:{s:4:"type";s:5:"label";}i:14;a:1:{s:4:"type";s:5:"label";}i:15;a:1:{s:4:"type";s:5:"label";}i:16;a:1:{s:4:"type";s:5:"label";}i:17;a:1:{s:4:"type";s:5:"label";}i:18;a:1:{s:4:"type";s:5:"label";}i:19;a:1:{s:4:"type";s:5:"label";}i:20;a:1:{s:4:"type";s:5:"label";}i:21;a:1:{s:4:"type";s:5:"label";}i:22;a:1:{s:4:"type";s:5:"label";}i:23;a:1:{s:4:"type";s:5:"label";}i:24;a:1:{s:4:"type";s:5:"label";}i:25;a:1:{s:4:"type";s:5:"label";}i:26;a:1:{s:4:"type";s:5:"label";}i:27;a:1:{s:4:"type";s:5:"label";}i:28;a:1:{s:4:"type";s:5:"label";}i:29;a:1:{s:4:"type";s:5:"label";}i:30;a:1:{s:4:"type";s:5:"label";}i:31;a:1:{s:4:"type";s:5:"label";}i:32;a:1:{s:4:"type";s:5:"label";}i:33;a:1:{s:4:"type";s:5:"label";}i:34;a:1:{s:4:"type";s:5:"label";}i:35;a:1:{s:4:"type";s:5:"label";}i:36;a:1:{s:4:"type";s:5:"label";}i:37;a:1:{s:4:"type";s:5:"label";}i:38;a:1:{s:4:"type";s:5:"label";}i:39;a:1:{s:4:"type";s:5:"label";}i:40;a:1:{s:4:"type";s:5:"label";}i:41;a:1:{s:4:"type";s:5:"label";}i:42;a:1:{s:4:"type";s:5:"label";}i:43;a:1:{s:4:"type";s:5:"label";}i:44;a:1:{s:4:"type";s:5:"label";}i:45;a:1:{s:4:"type";s:5:"label";}}}i:7;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:4:"span";s:14:",countrySelect";s:8:"onchange";s:26:"show_custom_country(this);";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:5:"19,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}}}i:8;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"City";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"30,64";s:4:"name";s:16:"adr_one_locality";s:4:"help";s:4:"City";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"span";s:9:",leftPad5";s:4:"size";s:4:"3,64";s:4:"name";s:14:"adr_one_region";s:4:"help";s:5:"State";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,64";s:4:"name";s:18:"adr_one_postalcode";s:4:"help";s:8:"ZIP Code";s:4:"span";s:9:",leftPad5";}}}i:9;a:3:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"country";s:4:"size";s:22:",,,adr_one_countryname";}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:5:{s:4:"type";s:14:"select-country";s:4:"size";s:14:"Select one,0,1";s:4:"name";s:19:"adr_one_countrycode";s:8:"onchange";s:26:"show_custom_country(this);";s:4:"span";s:14:",countrySelect";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:19:"adr_one_countryname";s:4:"span";s:15:",custom_country";}}}i:10;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:11:"private.png";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Addressbook";}s:1:"C";a:5:{s:4:"type";s:6:"select";s:4:"name";s:5:"owner";s:4:"help";s:42:"Addressbook the contact should be saved to";s:7:"no_lang";s:1:"1";s:4:"span";s:6:",owner";}}}s:4:"rows";i:10;s:4:"cols";i:3;s:4:"size";s:4:",286";s:7:"options";a:1:{i:1;s:3:"286";}}}','size' => ',286','style' => '','modified' => '1285754805',); $templ_data[] = array('name' => 'addressbook.edit.history','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:10:"historylog";s:4:"name";s:7:"history";}}}s:4:"rows";i:1;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1265051832',); @@ -84,7 +84,7 @@ $templ_data[] = array('name' => 'addressbook.index.right_add','template' => '',' $templ_data[] = array('name' => 'addressbook.index.right_addplus','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:6:{s:4:"type";s:6:"select";s:5:"label";s:4:"Type";s:4:"name";s:15:"col_filter[tid]";s:8:"onchange";i:1;s:4:"size";s:3:"All";s:5:"align";s:5:"right";}s:1:"B";a:5:{s:4:"type";s:10:"buttononly";s:4:"name";s:6:"search";s:5:"label";s:15:"Advanced search";s:7:"onclick";s:170:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.search\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:5:"right";}s:1:"C";a:7:{s:4:"type";s:10:"buttononly";s:4:"name";s:3:"add";s:5:"label";s:3:"Add";s:4:"help";s:17:"Add a new contact";s:7:"onclick";s:168:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"span";s:12:",rightPadAdd";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:5:"align";s:5:"right";s:7:"options";a:0:{}}}','size' => '','style' => '.rightPadAdd { width: 30px; }','modified' => '1257759662',); -$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"P";s:2:"75";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";}i:1;a:16:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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_countrycode";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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";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:"O";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:"P";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:16:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";a:7:{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:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_one_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"H";a:7:{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:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_two_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";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:"O";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:"P";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:16;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1257753432',); +$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"P";s:2:"75";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";}i:1;a:16:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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_countrycode";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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";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:"O";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:10:"contact_id";s:5:"label";s:2:"ID";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:15:"contact_created";s:5:"label";s:7:"Created";}i:3;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:"P";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:16:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";a:7:{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:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_one_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"H";a:7:{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:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_two_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";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:"O";a:7:{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:10:"${row}[id]";s:4:"span";s:10:",contactid";}i:2;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:3;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:4;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:5;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[modifier]";s:8:"readonly";s:1:"1";}}s:1:"P";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:16;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1285755672',); $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',); diff --git a/addressbook/templates/default/app.css b/addressbook/templates/default/app.css index e8a561a885..8bef38c5d9 100644 --- a/addressbook/templates/default/app.css +++ b/addressbook/templates/default/app.css @@ -1,6 +1,7 @@ .cursorHand { cursor: hand; } .countrySelect select { width: 150px; } .custom_country input {display: none; } +.contactid:before { content:"#" } .emailCol div { width: 100%; overflow: hidden; } .redItalic { color: red; font-style: italic; } .fixedHeight,.telNumbers { height: 12px; } @@ -83,4 +84,4 @@ fieldset.emailGroup { } .image16 img { height: 16px; -} \ No newline at end of file +} From b06c9d2858cd3920b22f48a42a933eaeb7517c3c Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Wed, 29 Sep 2010 11:10:11 +0000 Subject: [PATCH 25/27] ralf requested the id to be located within an column of its own --- addressbook/setup/etemplates.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index 61688bbe6e..a15caf5b5f 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() 2010-09-29 12:21 + * generated by soetemplate::dump4setup() 2010-09-29 13:03 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -84,7 +84,7 @@ $templ_data[] = array('name' => 'addressbook.index.right_add','template' => '',' $templ_data[] = array('name' => 'addressbook.index.right_addplus','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:3:{s:1:"A";a:6:{s:4:"type";s:6:"select";s:5:"label";s:4:"Type";s:4:"name";s:15:"col_filter[tid]";s:8:"onchange";i:1;s:4:"size";s:3:"All";s:5:"align";s:5:"right";}s:1:"B";a:5:{s:4:"type";s:10:"buttononly";s:4:"name";s:6:"search";s:5:"label";s:15:"Advanced search";s:7:"onclick";s:170:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.search\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:5:"align";s:5:"right";}s:1:"C";a:7:{s:4:"type";s:10:"buttononly";s:4:"name";s:3:"add";s:5:"label";s:3:"Add";s:4:"help";s:17:"Add a new contact";s:7:"onclick";s:168:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"span";s:12:",rightPadAdd";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:5:"align";s:5:"right";s:7:"options";a:0:{}}}','size' => '','style' => '.rightPadAdd { width: 30px; }','modified' => '1257759662',); -$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"P";s:2:"75";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";}i:1;a:16:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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_countrycode";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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";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:"O";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:10:"contact_id";s:5:"label";s:2:"ID";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:15:"contact_created";s:5:"label";s:7:"Created";}i:3;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:"P";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:16:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";a:7:{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:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_one_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"H";a:7:{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:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_two_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";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:"O";a:7:{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:10:"${row}[id]";s:4:"span";s:10:",contactid";}i:2;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:3;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:15:"${row}[creator]";s:8:"readonly";s:1:"1";}i:4;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:5;a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:16:"${row}[modifier]";s:8:"readonly";s:1:"1";}}s:1:"P";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:16;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1285755672',); +$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:9:{s:2:"c1";s:2:"th";s:2:"c2";s:21:"$row_cont[cat_id],top";s:1:"K";s:17:",@no_customfields";s:1:"E";s:12:"60,@no_photo";s:1:"C";s:9:",@no_role";s:1:"H";s:9:",@no_home";s:1:"M";s:22:",@no_distribution_list";s:1:"L";s:9:",@no_note";s:1:"Q";s:2:"75";}i:1;a:17:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;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:85:",!@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:4:"role";s:4:"name";s:4:"role";}s:1:"D";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:8:"Category";s:4:"name";s:6:"cat_id";}s:1:"E";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:5:"Photo";s:4:"name";s:5:"photo";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:4:"name";s:4:"bday";s:5:"label";s:8:"Birthday";}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: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_countrycode";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:"H";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:12:"Home address";s:4:"name";s:4:"home";}s:1:"I";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,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";}i:4;a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Fax";}}s:1:"J";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:"K";a:4:{s:4:"type";s:22:"nextmatch-customfields";i:1;a:1:{s:4:"type";s:22:"nextmatch-customfields";}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:4:"name";s:12:"customfields";}s:1:"L";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:4:"Note";s:4:"name";s:4:"note";}s:1:"M";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:18:"Distribution lists";s:4:"name";s:17:"distribution_list";}s:1:"N";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:2:"ID";s:4:"name";s:10:"contact_id";}s:1:"O";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:"P";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:"Q";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:17:{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:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[role]";}s:1:"D";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:"E";a:3:{s:4:"type";s:5:"image";s:4:"name";s:13:"${row}[photo]";s:4:"span";s:7:",iphoto";}s:1:"F";a:4:{s:4:"type";s:4:"date";s:4:"name";s:12:"${row}[bday]";s:8:"readonly";s:1:"1";s:4:"size";s:5:"Y-m-d";}s:1:"G";a:7:{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:27:"${row}[adr_one_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_one_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"H";a:7:{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:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:14:"select-country";s:4:"name";s:27:"${row}[adr_two_countrycode]";s:8:"readonly";s:1:"1";}i:3;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:4;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:5;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:"I";a:7:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"5,,0,0";i:1;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_cell]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-phone";s:4:"name";s:16:"${row}[tel_home]";s:4:"span";s:11:",telNumbers";s:8:"readonly";s:1:"1";}i:4;a:3:{s:4:"type";s:9:"url-phone";s:4:"name";s:15:"${row}[tel_fax]";s:8:"readonly";s:1:"1";}i:5;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:"J";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:4:{s:4:"type";s:3:"url";s:4:"span";s:12:",fixedHeight";s:4:"name";s:11:"${row}[url]";s:8:"readonly";s:1:"1";}i:2;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:8:"readonly";s:1:"1";}i:3;a:4:{s:4:"type";s:9:"url-email";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:8:"readonly";s:1:"1";}}s:1:"K";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:"L";a:4:{s:4:"type";s:8:"textarea";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[note]";s:8:"readonly";s:1:"1";}s:1:"M";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[distrib_lists]";}s:1:"N";a:3:{s:4:"type";s:5:"label";s:4:"span";s:10:",contactid";s:4:"name";s:10:"${row}[id]";}s:1:"O";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:"P";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:"Q";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"2,,0,0";s:4:"span";s:8:",noPrint";i:1;a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"4,,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:56:"addressbook.addressbook_ui.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=870,height=460,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:3;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\');";}i:4;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";}}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:4:"2,,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:5:{s:4:"type";s:5:"image";s:4:"name";s:18:"filemanager/navbar";s:4:"size";s:91:"/index.php?menuaction=filemanager.filemanager_ui.index&path=/apps/addressbook/$row_cont[id]";s:4:"span";s:8:",image16";s:5:"label";s:11:"Filemanager";}}}}}s:4:"rows";i:2;s:4:"cols";i:17;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1285758207',); $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',); From 3fb29911b649cfa51544c84ee513729169fdd755 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 29 Sep 2010 11:21:12 +0000 Subject: [PATCH 26/27] * show package changelog inside EGroupware under about --- phpgwapi/inc/class.about.inc.php | 51 +++++++++++++++++++++---------- phpgwapi/setup/etemplates.inc.php | 32 ++++++++++--------- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/phpgwapi/inc/class.about.inc.php b/phpgwapi/inc/class.about.inc.php index 9f03ccd618..8cd3ba538b 100644 --- a/phpgwapi/inc/class.about.inc.php +++ b/phpgwapi/inc/class.about.inc.php @@ -94,6 +94,24 @@ class about */ function _listView() { + $text_content = str_replace('GPLLINK',self::$knownLicenses['GPL'],' +

EGroupware is a free +enterprise ready groupware software for your network. It enables you to manage contacts, appointments, todos +and many more for your whole business.

+

EGroupware is a groupware server. It comes with a native web-interface which allowes to access your data +from any platform all over the planet. Moreover you also have the choice to access the EGroupware server with +your favorite groupware client (Kontact, Evolution, Outlook, iCal, Lightning) and also with your mobile or PDA +via SyncML.

+

EGroupware is international. At the time, it supports more than +25 languages including rtl support.

+

EGroupware is platform independent. The server runs on Linux, Mac, Windows and many more other operating systems. +On the client side, all you need is a internet browser such as Firefox, Safari, Chrome, Konqueror or Internet Explorer +and many more.

+

EGroupware is developed by Stylite GmbH with contributions +from community developers.

+
+

For more information visit the EGroupware Website

'); + // get informations about the applications $apps = array(); $apps[] = ''; // first empty row for eTemplate @@ -109,7 +127,7 @@ class about 'appVersion' => $info['version'], 'appLicense' => $this->_linkLicense($info['license']), 'appDetails' => '' - ); + ); } // get informations about the templates @@ -125,7 +143,7 @@ class about 'templateVersion' => $info['version'], 'templateLicense' => $this->_linkLicense($info['license']), 'templateDetails' => '' - ); + ); } // get informations about installed languages @@ -135,17 +153,19 @@ class about foreach(translation::get_installed_langs() as $translation => $translationinfo) { $translations[] = array( 'langName' => $translationinfo.' ('.$translation.')' - ); + ); } - + $changelog = EGW_SERVER_ROOT.'/doc/rpm-build/debian.changes'; // fill content array for eTemplate $content = array( 'apiVersion' => '

'.lang('eGroupWare API version').' '.$GLOBALS['egw_info']['server']['versions']['phpgwapi'].'

', 'applications' => $apps, 'templates' => $templates, - 'translations' => $translations - ); + 'translations' => $translations, + 'text_content' => $text_content, + 'changelog' => file_exists($changelog) ? file_get_contents($changelog) : 'not available', + ); $tmpl = new etemplate('phpgwapi.about.index'); $tmpl->exec('phpgwapi.about.index', $content); @@ -351,7 +371,15 @@ class about return $s; } + static public $knownLicenses = array( + 'GPL' => 'http://opensource.org/licenses/gpl-2.0.php', + 'LGPL' => 'http://opensource.org/licenses/lgpl-2.1.php', + 'GPL3' => 'http://opensource.org/licenses/gpl-3.0.php', + 'LGPL3' => 'http://opensource.org/licenses/lgpl-3.0.php', + 'PHP' => 'http://opensource.org/licenses/php.php', + ); + /** * surround license string with link to license if it is known * @@ -363,19 +391,10 @@ class about */ function _linkLicense($license) { - // toupper known licenses - $knownLicenses = array( - 'GPL' => 'http://opensource.org/licenses/gpl-2.0.php', - 'LGPL' => 'http://opensource.org/licenses/lgpl-2.1.php', - 'GPL3' => 'http://opensource.org/licenses/gpl-3.0.php', - 'LGPL3' => 'http://opensource.org/licenses/lgpl-3.0.php', - 'PHP' => 'http://opensource.org/licenses/php.php', - ); - $name = is_array($license) ? $license['name'] : $license; $url = is_array($license) && isset($license['url']) ? $license['url'] : ''; - if (!$url && isset($knownLicenses[strtoupper($name)])) + if (!$url && isset(self::$knownLicenses[strtoupper($name)])) { $url = $knownLicenses[$name=strtoupper($name)]; } diff --git a/phpgwapi/setup/etemplates.inc.php b/phpgwapi/setup/etemplates.inc.php index 0375cdd89a..d6b4f4cda5 100644 --- a/phpgwapi/setup/etemplates.inc.php +++ b/phpgwapi/setup/etemplates.inc.php @@ -1,26 +1,28 @@ 'phpgwapi.about.detail','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:7:"no_lang";s:1:"1";s:4:"size";s:9:"70%,,,,,4";s:4:"data";a:5:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:5:"image";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"name";s:4:"name";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:6:",,,,,4";s:7:"options";a:1:{i:5;s:1:"4";}}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:11:"description";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:4:"note";s:7:"no_lang";s:1:"1";}}i:4;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:4:{s:2:"c1";s:7:"row,top";s:2:"c2";s:7:"row,top";s:2:"c3";s:7:"row,top";s:2:"c4";s:7:"row,top";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";s:4:"span";s:2:"th";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:4:"name";s:6:"author";s:7:"no_lang";s:1:"1";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";s:4:"span";s:2:"th";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:10:"maintainer";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:7:"version";s:7:"no_lang";s:1:"1";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:7:"license";}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:6:",,,,,3";s:7:"options";a:1:{i:5;s:1:"3";}}}}s:4:"rows";i:4;s:4:"cols";i:1;s:7:"options";a:2:{i:0;s:3:"70%";i:5;s:1:"4";}}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950403',); -$templ_data[] = array('name' => 'phpgwapi.about.index','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:2:{i:0;a:3:{s:4:"type";s:3:"tab";s:4:"name";s:40:"general|applications|templates|languages";s:5:"label";s:40:"general|applications|templates|languages";}i:1;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:16:"${row}[appImage]";s:7:"no_lang";s:1:"1";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[appName]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:4:"name";s:17:"${row}[appAuthor]";s:7:"no_lang";s:1:"1";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:4:"name";s:21:"${row}[appMaintainer]";s:7:"no_lang";s:1:"1";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:4:"name";s:18:"${row}[appVersion]";s:7:"no_lang";s:1:"1";}s:1:"F";a:3:{s:4:"type";s:4:"text";s:4:"name";s:18:"${row}[appLicense]";s:7:"no_lang";s:1:"1";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:5:"align";s:6:"center";s:4:"name";s:17:"${row}[appDetail]";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:4:"rows";s:8:"disabled";s:1:"1";s:7:"options";a:0:{}}}','size' => '','style' => '','modified' => '1175950383',); +$templ_data[] = array('name' => 'phpgwapi.about.index','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:2:{i:0;a:3:{s:4:"type";s:3:"tab";s:4:"name";s:50:"general|applications|templates|languages|changelog";s:5:"label";s:50:"General|Applications|Templates|Languages|Changelog";}i:1;a:7:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:16:"${row}[appImage]";s:7:"no_lang";s:1:"1";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[appName]";s:7:"no_lang";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:4:"name";s:17:"${row}[appAuthor]";s:7:"no_lang";s:1:"1";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:4:"name";s:21:"${row}[appMaintainer]";s:7:"no_lang";s:1:"1";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:4:"name";s:18:"${row}[appVersion]";s:7:"no_lang";s:1:"1";}s:1:"F";a:3:{s:4:"type";s:4:"text";s:4:"name";s:18:"${row}[appLicense]";s:7:"no_lang";s:1:"1";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:5:"align";s:6:"center";s:4:"name";s:17:"${row}[appDetail]";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:4:"rows";s:8:"disabled";s:1:"1";s:7:"options";a:0:{}}}','size' => '','style' => '','modified' => '1285755915',); -$templ_data[] = array('name' => 'phpgwapi.about.index.applications','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:236:"This is a list of your available applications.
For a complete list of applications available for eGroupWare visit www.egroupware.org/applications";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,1";s:4:"name";s:12:"applications";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:7:"options";a:1:{i:2;s:1:"1";}}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"name";s:12:"applications";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[appImage]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:15:"${row}[appName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:17:"${row}[appAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[appMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appLicense]";s:5:"align";s:6:"center";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:18:"${row}[appDetails]";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:12:"applications";s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:6:",,0,,5";s:7:"options";a:2:{i:4;s:1:"5";i:2;s:1:"0";}}}','size' => ',,0,,5','style' => '','modified' => '1175950363',); +$templ_data[] = array('name' => 'phpgwapi.about.index.applications','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:236:"This is a list of your available applications.
For a complete list of applications available for eGroupWare visit www.egroupware.org/applications";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,1";s:4:"name";s:12:"applications";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:7:"options";a:1:{i:2;s:1:"1";}}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"name";s:12:"applications";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[appImage]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:15:"${row}[appName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:17:"${row}[appAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[appMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:18:"${row}[appLicense]";s:5:"align";s:6:"center";}s:1:"G";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:18:"${row}[appDetails]";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:4:"name";s:12:"applications";s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:19:"100%,500,0,,5,,auto";s:7:"options";a:5:{i:0;s:4:"100%";i:1;s:3:"500";i:6;s:4:"auto";i:4;s:1:"5";i:2;s:1:"0";}}}','size' => '100%,600,0,,5,,auto','style' => '','modified' => '1175950363',); -$templ_data[] = array('name' => 'phpgwapi.about.index.general','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"logo";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:10:"apiVersion";}}i:3;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"hrule";}}i:4;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:1208:"

eGroupWare is a free enterprise ready groupware software for your network. It enables you to manage contacts, appointments, todos and many more for your whole business.

eGroupWare is a groupware server. It comes with a native web-interface which allowes to access your data from any platform all over the planet. Moreover you also have the choice to access the eGroupWare server with your favorite groupware client (Kontact, Evolution, Outlook) and also with your mobile or PDA via SyncML.

eGroupWare is international. At the time, it supports more than 25 languages including rtl support.

eGroupWare is platform independent. The server runs on Linux, Mac, Windows and many more other operating systems. On the client side, all you need is a internetbrowser such as Firefox, Konqueror, Internet Explorer and many more.


For more informations visit the eGroupWare Website

";}}}s:4:"rows";i:4;s:4:"cols";i:1;s:4:"size";s:8:"600,,,,5";s:7:"options";a:2:{i:0;s:3:"600";i:4;s:1:"5";}}}','size' => '600,,,,5','style' => '','modified' => '1175950348',); +$templ_data[] = array('name' => 'phpgwapi.about.index.changelog','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:1:{i:0;a:6:{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:8:"textarea";s:4:"name";s:9:"changelog";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:17:"100%,500,,,,,auto";s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"500";i:6;s:4:"auto";}}}','size' => '100%,600,,,,,auto','style' => '','modified' => '1285756882',); -$templ_data[] = array('name' => 'phpgwapi.about.index.languages','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:213:"This is a list of your available languages
For a complete list of languages available for eGroupWare visit www.egroupware.org/languages";}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,0";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"language";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[langName]";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:12:"translations";s:7:"options";a:1:{i:2;s:1:"0";}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950333',); +$templ_data[] = array('name' => 'phpgwapi.about.index.general','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"logo";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:10:"apiVersion";}}i:3;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"hrule";}}i:4;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"html";s:4:"name";s:12:"text_content";}}}s:4:"rows";i:4;s:4:"cols";i:1;s:4:"size";s:17:"600,500,,,5,,auto";s:7:"options";a:4:{i:0;s:3:"600";i:1;s:3:"500";i:6;s:4:"auto";i:4;s:1:"5";}}}','size' => '600,600,,,5,,auto','style' => '','modified' => '1175950348',); -$templ_data[] = array('name' => 'phpgwapi.about.index.templates','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:223:"This is a list of your available templates
For a complete list of templates available for eGroupWare visit www.egroupware.org/templates";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"name";s:9:"templates";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[templateImage]";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[templateName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[templateAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:26:"${row}[templateMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateLicense]";s:5:"align";s:6:"center";}s:1:"G";a:3:{s:4:"type";s:4:"html";s:4:"name";s:23:"${row}[templateDetails]";s:5:"align";s:6:"center";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:5:",,,,5";s:7:"options";a:1:{i:4;s:1:"5";}}}','size' => ',,,,5','style' => '','modified' => '1175950302',); +$templ_data[] = array('name' => 'phpgwapi.about.index.languages','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:213:"This is a list of your available languages
For a complete list of languages available for eGroupWare visit www.egroupware.org/languages";}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:3:",,0";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"language";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[langName]";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:12:"translations";s:7:"options";a:1:{i:2;s:1:"0";}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:18:"100%,500,,,5,,auto";s:7:"options";a:4:{i:0;s:4:"100%";i:1;s:3:"500";i:6;s:4:"auto";i:4;s:1:"5";}}}','size' => '100%,600,,,5,,auto','style' => '','modified' => '1175950333',); + +$templ_data[] = array('name' => 'phpgwapi.about.index.templates','template' => '','lang' => '','group' => '0','version' => '1.8.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:223:"This is a list of your available templates
For a complete list of templates available for eGroupWare visit www.egroupware.org/templates";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"grid";s:4:"name";s:9:"templates";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"author";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"maintainer";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"version";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"license";}s:1:"G";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"details";}}i:2;a:7:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:21:"${row}[templateImage]";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:20:"${row}[templateName]";}s:1:"C";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:22:"${row}[templateAuthor]";}s:1:"D";a:3:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:26:"${row}[templateMaintainer]";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateVersion]";}s:1:"F";a:4:{s:4:"type";s:4:"html";s:7:"no_lang";s:1:"1";s:4:"name";s:23:"${row}[templateLicense]";s:5:"align";s:6:"center";}s:1:"G";a:3:{s:4:"type";s:4:"html";s:4:"name";s:23:"${row}[templateDetails]";s:5:"align";s:6:"center";}}}s:4:"rows";i:2;s:4:"cols";i:7;s:7:"options";a:0:{}}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:18:"100%,500,,,5,,auto";s:7:"options";a:4:{i:0;s:4:"100%";i:1;s:3:"500";i:6;s:4:"auto";i:4;s:1:"5";}}}','size' => '100%,600,,,5,,auto','style' => '','modified' => '1175950302',); From bddb577d9587814f95da4c52c38d75e08348530a Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 29 Sep 2010 11:22:46 +0000 Subject: [PATCH 27/27] * show package changelog inside EGroupware under about --- phpgwapi/templates/default/about.index.xet | 203 +++++++++++++++++++ phpgwapi/templates/default/about.tpl | 57 ------ phpgwapi/templates/default/about_unknown.tpl | 12 -- 3 files changed, 203 insertions(+), 69 deletions(-) create mode 100644 phpgwapi/templates/default/about.index.xet delete mode 100644 phpgwapi/templates/default/about.tpl delete mode 100644 phpgwapi/templates/default/about_unknown.tpl diff --git a/phpgwapi/templates/default/about.index.xet b/phpgwapi/templates/default/about.index.xet new file mode 100644 index 0000000000..80e2cd6e9f --- /dev/null +++ b/phpgwapi/templates/default/about.index.xet @@ -0,0 +1,203 @@ + + + + + + + + +