diff --git a/addressbook/inc/class.bocontacts.inc.php b/addressbook/inc/class.bocontacts.inc.php index 5a5de47fd6..7f71b74546 100755 --- a/addressbook/inc/class.bocontacts.inc.php +++ b/addressbook/inc/class.bocontacts.inc.php @@ -403,12 +403,18 @@ class bocontacts extends socontacts { $contact = array($contact); } + if (!is_object($GLOBALS['egw']->link)) + { + require_once(EGW_API_INC.'/class.bolink.inc.php'); + $GLOBALS['egw']->link =& new bolink(); + } foreach($contact as $c) { $id = is_array($c) ? $c['id'] : $c; if ($this->check_perms(EGW_ACL_DELETE,$c) && parent::delete($id)) { + $GLOBALS['egw']->link->unlink(0,'addressbook',$id); $GLOBALS['egw']->contenthistory->updateTimeStamp('contacts', $id, 'delete', time()); } else @@ -813,4 +819,94 @@ class bocontacts extends socontacts include(EGW_INCLUDE_ROOT.'/addressbook/setup/setup.inc.php'); $GLOBALS['egw']->hooks->register_hooks('addressbook',$setup_info['addressbook']['hooks']); } + + /** + * Merges some given addresses into the first one and delete the others + * + * If one of the other addresses is an account, everything is merged into the account. + * If two accounts are in $ids, the function fails (returns false). + * + * @param array $ids contact-id's to merge + * @return int number of successful merged contacts, false on a fatal error (eg. cant merge two accounts) + */ + function merge($ids) + { + $this->error = false; + foreach(self::search(array('id'=>$ids),false) as $contact) // $this->search calls the extended search from ui! + { + if ($contact['account_id']) + { + if (!is_null($account)) + { + echo $this->error = 'Can not merge more then one account!'; + return false; // we dont deal with two accounts! + } + $account = $contact; + continue; + } + $pos = array_search($contact['id'],$ids); + $contacts[$pos] = $contact; + } + if (!is_null($account)) // we found an account, so we merge the contacts into it + { + $target = $account; + unset($account); + } + else // we found no account, so we merge all but the first into the first + { + $target = $contacts[0]; + unset($contacts[0]); + } + if (!$this->check_perms(EGW_ACL_EDIT,$target)) + { + echo $this->error = 'No edit permission for the target contact!'; + return 0; + } + foreach($contacts as $contact) + { + foreach($contact as $name => $value) + { + if (!$value) continue; + + switch($name) + { + case 'id': + case 'tid': + case 'owner': + case 'private': + break; // ignored + + case 'cat_id': // cats are all merged together + if (!is_array($target['cat_id'])) $target['cat_id'] = $target['cat_id'] ? explode(',',$target['cat_id']) : array(); + $target['cat_id'] = array_unique(array_merge($target['cat_id'],is_array($value)?$value:explode(',',$value))); + break; + + default: + if (!$target[$name]) $target[$name] = $value; + break; + } + } + } + if (!$this->save($target)) return 0; + + if (!is_object($GLOBALS['egw']->link)) + { + require_once(EGW_API_INC.'/class.bolink.inc.php'); + $GLOBALS['egw']->link =& new bolink(); + } + $success = 1; + foreach($contacts as $contact) + { + if (!$this->check_perms(EGW_ACL_DELETE,$contact)) + { + continue; + } + foreach($GLOBALS['egw']->link->get_links('addressbook',$contact['id']) as $data) + { + $GLOBALS['egw']->link->link('addressbook',$target['id'],$data['app'],$data['id'],$data['remark'],$target['owner']); + } + if ($this->delete($contact['id'])) $success++; + } + return $success; + } } diff --git a/addressbook/inc/class.uicontacts.inc.php b/addressbook/inc/class.uicontacts.inc.php index 43f45dd0cf..f0e0a26609 100644 --- a/addressbook/inc/class.uicontacts.inc.php +++ b/addressbook/inc/class.uicontacts.inc.php @@ -202,6 +202,7 @@ class uicontacts extends bocontacts 'delete' => lang('Delete'), 'csv' => lang('Export as CSV'), 'vcard' => lang('Export as VCard'), // ToDo: move this to importexport framework + 'merge' => lang('Merge into first or account, deletes all other!'), ); if ($GLOBALS['egw_info']['user']['apps']['infolog']) { @@ -341,7 +342,7 @@ class uicontacts extends bocontacts */ function action($action,$checked,$use_all,&$success,&$failed,&$action_msg,$session_name) { - //echo "
uicontacts::action('$action',".print_r($checked,true).','.(int)$use_all.",...)
\n"; +echo "uicontacts::action('$action',".print_r($checked,true).','.(int)$use_all.",...)
\n"; $success = $failed = 0; if ($use_all) @@ -413,6 +414,13 @@ class uicontacts extends bocontacts 'action_title' => count($checked) > 1 ? lang('selected contacts') : '', )); break; + + case 'merge': + $success = $this->merge($checked,$error_msg); + $failed = count($checked) - (int)$success; + $action_msg = lang('merged'); + $checked = array(); // to not start the single actions + break; } foreach($checked as $id) { @@ -1019,7 +1027,7 @@ class uicontacts extends bocontacts require_once(EGW_API_INC.'/class.country.inc.php'); $GLOBALS['egw']->country =& new country; } - $content['adr_one_countryname'] = $content['adr_two_countryname'] = + $content['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($GLOBALS['egw_info']['user']['preferences']['common']['country']); } if (isset($_GET['owner']) && $_GET['owner'] !== '') @@ -1339,6 +1347,12 @@ $readonlys['button[vcard]'] = true; return 'mailto:' . $email; } + /** + * Extended search + * + * @param array $_content + * @return string + */ function search($_content=array()) { if(!empty($_content)) { diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index e2f256cae4..b47c73995b 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() 2006-12-11 08:31 + * generated by soetemplate::dump4setup() 2006-12-19 11:05 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -28,9 +28,9 @@ $templ_data[] = array('name' => 'addressbook.edit.custom','template' => '','lang $templ_data[] = array('name' => 'addressbook.edit.details','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:2:{s:2:"c2";s:4:",top";s:2:"c3";s:2:"th";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,note";s:5:"label";s:5:"Notes";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"4,50";s:4:"name";s:4:"note";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Custom fields";}}i:4;a:1:{s:1:"A";a:3:{s:4:"type";s:12:"customfields";s:4:"name";s:12:"customfields";s:4:"span";s:1:"4";}}}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' => '1130410016',); -$templ_data[] = array('name' => 'addressbook.edit.details','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:4:{s:2:"c1";s:4:",top";s:2:"c2";s:4:",top";s:2:"h1";s:9:",@cat_tab";s:2:"c3";s:4:",top";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"folder";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"Categories";}s:1:"C";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:6:"cat_id";s:4:"size";s:12:"3,,width:99%";}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"edit";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Notes";}s:1:"C";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"6,50";s:4:"name";s:4:"note";}}i:3;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:14:"select-account";s:8:"readonly";s:1:"1";s:5:"label";s:7:"Created";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:8:"readonly";s:1:"1";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";s:4:"span";s:9:",leftPad5";}}i:2;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:7:"created";s:4:"span";s:9:",leftPad5";s:8:"readonly";s:1:"1";}}}i:4;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:13:"Last modified";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:8:"readonly";s:1:"1";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";s:4:"span";s:9:",leftPad5";}}i:2;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:8:"modified";s:4:"span";s:9:",leftPad5";s:8:"readonly";s:1:"1";}}}}s:4:"rows";i:4;s:4:"cols";i:3;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' => '1165511695',); +$templ_data[] = array('name' => 'addressbook.edit.details','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:7:{s:2:"c1";s:4:",top";s:2:"c2";s:11:"row_off,top";s:2:"h1";s:9:",@cat_tab";s:2:"c4";s:11:"row_off,top";s:2:"h3";s:20:",@disable_change_org";s:2:"c3";s:6:"row_on";s:2:"c5";s:6:"row_on";}i:1;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"folder";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:10:"Categories";}s:1:"C";a:3:{s:4:"type";s:10:"select-cat";s:4:"name";s:6:"cat_id";s:4:"size";s:12:"3,,width:99%";}}i:2;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:4:"edit";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Notes";}s:1:"C";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"6,50";s:4:"name";s:4:"note";}}i:3;a:3:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:5:"check";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:31:"change all organisation members";s:4:"name";s:10:"change_org";s:4:"span";s:3:"all";s:4:"help";s:73:"Apply changes to all members, whose fields have the same previous content";}}i:4;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:14:"select-account";s:8:"readonly";s:1:"1";s:5:"label";s:7:"Created";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:8:"readonly";s:1:"1";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";s:4:"span";s:9:",leftPad5";}}i:2;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:7:"created";s:4:"span";s:9:",leftPad5";s:8:"readonly";s:1:"1";}}}i:5;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:13:"Last modified";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:8:"readonly";s:1:"1";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:14:"select-account";s:4:"name";s:8:"modifier";s:8:"readonly";s:1:"1";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"name";s:7:"creator";s:8:"readonly";s:1:"1";s:4:"span";s:9:",leftPad5";}}i:2;a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:8:"modified";s:4:"span";s:9:",leftPad5";s:8:"readonly";s:1:"1";}}}}s:4:"rows";i:5;s:4:"cols";i:3;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' => '1165511695',); -$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:3:{s:2:"c1";s:4:",top";s:2:"h8";s:2:"25";s:2:"c8";s:7:",bottom";}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:9:{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:58:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\');";s:4:"size";s:2:"36";s:4:"span";s:12:"2,cursorHand";}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:5:"45,64";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: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: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' => '1165508138',); +$templ_data[] = array('name' => 'addressbook.edit.general','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:3:{s:2:"c1";s:4:",top";s:2:"h8";s:2:"25";s:2:"c8";s:7:",bottom";}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:58:"set_style_by_class(\'table\',\'editname\',\'display\',\'inline\');";s:4:"size";s:2:"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:5:"45,64";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: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: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' => '1165508138',); $templ_data[] = array('name' => 'addressbook.edit.home','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:9:{i:0;a:1:{s:2:"h7";s:2:"30";}i:1;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_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:3:{s:4:"type";s:5:"label";s:4:"size";s:18:",,,adr_two_street2";s:5:"label";s:14:"address line 2";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:15:"adr_two_street2";}}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:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:16:"adr_two_locality";}}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:8:"zip code";s:4:"size";s:21:",,,adr_two_postalcode";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:18:"adr_two_postalcode";}}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:5:"state";s:4:"size";s:17:",,,adr_two_region";}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_region";}}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:7:"country";s:4:"size";s:22:",,,adr_two_countryname";}s:1:"C";a:3:{s:4:"type";s:4:"text";s:4:"size";s:5:"45,64";s:4:"name";s:19:"adr_two_countryname";}}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:4:"size";s:7:",,,bday";s:5:"label";s:8:"Birthday";}s:1:"C";a:5:{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:"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:7:"private";}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:"2,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' => '1130409535',); diff --git a/addressbook/setup/phpgw_de.lang b/addressbook/setup/phpgw_de.lang index f52c901a51..fc62c07eb7 100644 --- a/addressbook/setup/phpgw_de.lang +++ b/addressbook/setup/phpgw_de.lang @@ -184,6 +184,8 @@ list all customfields addressbook de Liste alle benutzerdefinierten Felder load vcard addressbook de VCard laden locations addressbook de Standorte mark records as private addressbook de Eintrag als Privat kennzeichnen +merged addressbook en vereinigt +merge into first or account, deletes all other! addressbook en Vereinige im ersten oder Benutzerkonto, löscht alle anderen! message phone addressbook de Anrufbeantworter middle name addressbook de Zweiter Vorname migration finished addressbook de Migration beendet diff --git a/addressbook/setup/phpgw_en.lang b/addressbook/setup/phpgw_en.lang index 6d9452b48a..9f56fcb848 100644 --- a/addressbook/setup/phpgw_en.lang +++ b/addressbook/setup/phpgw_en.lang @@ -184,6 +184,8 @@ list all customfields addressbook en List all customfields load vcard addressbook en Load VCard locations addressbook en locations mark records as private addressbook en Mark records as private +merged addressbook en merged +merge into first or account, deletes all other! addressbook en Merge into first or account, deletes all other! message phone addressbook en Message Phone middle name addressbook en Middle Name migration finished addressbook en Migration finished diff --git a/addressbook/templates/default/edit.xet b/addressbook/templates/default/edit.xet index 58b0e2a71b..29a88e8afc 100644 --- a/addressbook/templates/default/edit.xet +++ b/addressbook/templates/default/edit.xet @@ -76,7 +76,7 @@