diff --git a/addressbook/inc/class.bocontacts.inc.php b/addressbook/inc/class.bocontacts.inc.php index 74187b4677..5a5de47fd6 100755 --- a/addressbook/inc/class.bocontacts.inc.php +++ b/addressbook/inc/class.bocontacts.inc.php @@ -766,6 +766,25 @@ class bocontacts extends socontacts 'menuaction' => 'addressbook.uicontacts.view' ), 'view_id' => 'contact_id', + 'add' => array( + 'menuaction' => 'addressbook.uicontacts.edit' + ), + 'add_app' => 'link_app', + 'add_id' => 'link_id', + 'add_popup' => '850x440', + ); + } + + /** + * Register contacts as calendar resources (items which can be sheduled by the calendar) + * + * @param array $args hook-params (not used) + * @return array + */ + function calendar_resources($args) + { + return array( + 'type' => 'c',// one char type-identifiy for this resources ); } diff --git a/addressbook/inc/class.so_ldap.inc.php b/addressbook/inc/class.so_ldap.inc.php index 97dbe62d9d..b1d8529252 100644 --- a/addressbook/inc/class.so_ldap.inc.php +++ b/addressbook/inc/class.so_ldap.inc.php @@ -1137,4 +1137,15 @@ class so_ldap $ldapContact['c'] = array(); } } + + /** + * Change the ownership of contacts owned by a given account + * + * @param int $account_id account-id of the old owner + * @param int $new_owner account-id of the new owner + */ + function change_owner($account_id,$new_owner) + { + error_log("so_ldap::change_owner($account_id,$new_owner) not yet implemented"); + } } diff --git a/addressbook/inc/class.socontacts.inc.php b/addressbook/inc/class.socontacts.inc.php index 8239da9ef9..688940b079 100755 --- a/addressbook/inc/class.socontacts.inc.php +++ b/addressbook/inc/class.socontacts.inc.php @@ -488,7 +488,16 @@ class socontacts { //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) + { + if (!is_object($GLOBALS['egw']->country)) + { + $GLOBALS['egw']->country =& CreateObject('phpgwapi.country'); + } + $filter['adr_one_countryname'] = $GLOBALS['egw']->country->get_full_name($filter['adr_one_countryname']); + } $backend =& $this->get_backend(null,$filter['owner']); // single string to search for --> create so_sql conformant search criterial for the standard search columns if ($criteria && !is_array($criteria)) diff --git a/addressbook/inc/class.socontacts_sql.inc.php b/addressbook/inc/class.socontacts_sql.inc.php index 5c78c67495..67de726755 100644 --- a/addressbook/inc/class.socontacts_sql.inc.php +++ b/addressbook/inc/class.socontacts_sql.inc.php @@ -268,13 +268,32 @@ class socontacts_sql extends so_sql if ($search_customfields) // search the custom-fields { $join .= $this->extra_join; - if (is_string($only_keys)) $only_keys = 'DISTINCT '.str_replace(array('contact_id','contact_owner'), - array($this->table_name.'.contact_id',$this->table_name.'.contact_owner'),$only_keys); - // only return the egw_addressbook columns, to not generate dublicates by the left join - // and to not return the NULL for contact_{id|owner} of not found custom fields! - if (is_bool($only_keys)) $only_keys = 'DISTINCT '.$this->table_name.'.*'; - + switch(gettype($only_keys)) + { + case 'boolean': + // only return the egw_addressbook columns, to not generate dublicates by the left join + // and to not return the NULL for contact_{id|owner} of not found custom fields! + $only_keys = 'DISTINCT '.$this->table_name.'.'.($only_keys ? 'contact_id' : '*'); + break; + case 'string': + $only_keys = explode(',',$only_keys); + // fall through + case 'array': + foreach($only_keys as $key => $val) + { + switch($key) + { + case 'id': case 'contact_id': + $only_keys[$key] = $this->table_name.'.contact_id'; + break; + case 'owner': case 'contact_owner': + $only_keys[$key] = $this->table_name.'.contact_owner'; + break; + } + } + break; + } if (isset($filter['owner'])) { $filter[] = $this->table_name.'.contact_owner='.(int)$filter['owner']; @@ -303,4 +322,23 @@ class socontacts_sql extends so_sql } return '('.implode(' OR ',$cat_filter).')'; } + + /** + * Change the ownership of contacts owned by a given account + * + * @param int $account_id account-id of the old owner + * @param int $new_owner account-id of the new owner + */ + function change_owner($account_id,$new_owner) + { + if (!$new_owner) // otherwise we would create an account (contact_owner==0) + { + die("socontacts_sql::change_owner($account_id,$new_owner) new owner must not be 0"); + } + $this->db->update($this->table_name,array( + 'contact_owner' => $new_owner, + ),array( + 'contact_owner' => $account_id, + ),__LINE__,__FILE__); + } } \ No newline at end of file diff --git a/addressbook/inc/class.uicontacts.inc.php b/addressbook/inc/class.uicontacts.inc.php index 3cee1250aa..5c961e42e0 100644 --- a/addressbook/inc/class.uicontacts.inc.php +++ b/addressbook/inc/class.uicontacts.inc.php @@ -616,10 +616,14 @@ class uicontacts extends bocontacts case 'n_fileas': $order = "n_fileas!='' DESC,n_fileas $sort"; break; + case 'adr_one_postalcode': + $order = "adr_one_postalcode!='' DESC,adr_one_postalcode $sort,org_name $sort,n_family $sort,n_given $sort"; + break; } if ($query['searchletter']) // only show contacts if the order-criteria starts with the given letter { - $query['col_filter'][] = $query['order'].' LIKE '.$GLOBALS['egw']->db->quote($query['searchletter'].'%'); + $query['col_filter'][] = ($query['order']=='adr_one_postalcode' ? 'org_name' : $query['order']). + ' LIKE '.$GLOBALS['egw']->db->quote($query['searchletter'].'%'); } $wildcard = '%'; $op = 'OR'; @@ -665,6 +669,7 @@ class uicontacts extends bocontacts switch($order) { + case 'adr_one_postalcode': case 'org_name': $row['line1'] = $row['org_name']; $row['line2'] = $row['n_family'].($given ? ', '.$given : ''); @@ -781,7 +786,7 @@ class uicontacts extends bocontacts } if ($query['searchletter']) { - $order = $order == 'org_name' ? lang('company name') : ($order == 'n_given' ? lang('first name') : lang('last name')); + $order = $order == 'n_given' ? lang('first name') : ($order == 'n_family' ? lang('last name') : lang('Organisation')); $GLOBALS['egw_info']['flags']['app_header'] .= ' - '.lang("%1 starts with '%2'",$order,$query['searchletter']); } if ($query['search']) @@ -1061,6 +1066,19 @@ class uicontacts extends bocontacts { $content['link_to']['to_id'] = $contact_id; } + // automatic link new entries to entries specified in the url + if (!$contact_id && isset($_REQUEST['link_app']) && isset($_REQUEST['link_id']) && !is_array($content['link_to']['to_id'])) + { + $link_ids = is_array($_REQUEST['link_id']) ? $_REQUEST['link_id'] : array($_REQUEST['link_id']); + foreach(is_array($_REQUEST['link_app']) ? $_REQUEST['link_app'] : array($_REQUEST['link_app']) as $n => $link_app) + { + $link_id = $link_ids[$n]; + if (preg_match('/^[a-z_0-9-]+:[:a-z_0-9-]+$/i',$link_app.':'.$link_id)) // gard against XSS + { + $this->link->link('addressbook',$content['link_to']['to_id'],$link_app,$link_id); + } + } + } } $content['disable_change_org'] = $view || !$content['org_name']; //_debug_array($content); @@ -1115,7 +1133,7 @@ class uicontacts extends bocontacts 'to_app' => 'addressbook', 'to_id' => $content['link_to']['to_id'], ); - $content['photo'] = $this->photo_src($content['id'],$content['jpegphoto'],'template'); + $content['photo'] = $this->photo_src($content['id'],$content['jpegphoto'],'photo'); if ($content['private']) $content['owner'] .= 'p'; @@ -1279,6 +1297,9 @@ $readonlys['button[vcard]'] = true; $this->tmpl->set_cell_attribute($name,'no_lang',true); } } + // set id for automatic linking via quick add + $GLOBALS['egw_info']['flags']['currentid'] = $content['id']; + $this->tmpl->exec('addressbook.uicontacts.view',$content,$sel_options,$readonlys,array('id' => $content['id'])); $GLOBALS['egw']->hooks->process(array( diff --git a/addressbook/setup/etemplates.inc.php b/addressbook/setup/etemplates.inc.php index ea7b7a4a5a..e2f256cae4 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-07 19:37 + * generated by soetemplate::dump4setup() 2006-12-11 08:31 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package addressbook @@ -74,9 +74,9 @@ $templ_data[] = array('name' => 'addressbook.index.org_rows','template' => '','l $templ_data[] = array('name' => 'addressbook.index.right','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:6:"select";s:5:"label";s:4:"Type";s:4:"name";s:15:"col_filter[tid]";s:4:"help";s:23:"Select addressbook type";s:8:"onchange";i:1;}}','size' => '','style' => '','modified' => '1145286218',); -$templ_data[] = array('name' => 'addressbook.index.right_add','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:5:{s:4:"type";s:6:"button";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:164:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";}}','size' => '','style' => '','modified' => '1165516543',); +$templ_data[] = array('name' => 'addressbook.index.right_add','template' => '','lang' => '','group' => '0','version' => '1.3.004','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:6:"search";s:5:"label";s:15:"Advanced search";s:7:"onclick";s:166:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.search\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";}i:2;a:5:{s:4:"type";s:6:"button";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:164:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";}}}','size' => '','style' => '','modified' => '1165516543',); -$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:6:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";s:1:"E";s:12:",!@show_home";s:1:"C";s:12:"60,@no_photo";s:1:"I";s:2:"90";s:1:"H";s:17:",@no_customfields";}i:1;a:9:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:5:{s:2:"h2";s:16:",!@order=n_given";s:2:"h5";s:32:",!@order=/^(org_name|n_fileas)$/";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:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Photo";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:16:"Business address";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Home address";}s:1:"F";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:8:"tel_work";s:5:"label";s:14:"Business phone";}i:2;a:3:{s:4:"type";s:5:"label";s:5:"label";s:12:"Mobile phone";s:4:"name";s:8:"tel_cell";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:8:"tel_home";s:5:"label";s:10:"Home phone";}}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:5:"label";s:4:"name";s:3:"url";s:5:"label";s:3:"Url";}i:2;a:3:{s:4:"type";s:5:"label";s:5:"label";s:14:"Business email";s:4:"name";s:5:"email";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:10:"email_home";s:5:"label";s:10:"Home email";}}s:1:"H";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: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:7:"options";a:2:{i:4;s:1:"0";i:5;s:1:"0";}}s:1:"I";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:9:{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:"image";s:4:"name";s:13:"${row}[photo]";}s:1:"D";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:4:{s:4:"type";s:4:"hbox";s:4:"size";s:7:"2,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: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:"E";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,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: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:"F";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_work_link],,,calling,$cont[call_popup]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_cell]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_cell_link],,,calling,$cont[call_popup]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_home]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_home_link],,,calling,$cont[call_popup]";}i:4;a:4:{s:4:"type";s:5:"label";s:4:"name";s:20:"${row}[tel_prefered]";s:7:"no_lang";s:1:"1";s:4:"size";s:57:",$row_cont[tel_prefered_link],,,calling,$cont[call_popup]";}}s:1:"G";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:4:"size";s:3:",,1";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:11:"${row}[url]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"size";s:52:",@${row}[email_link],,,_blank,$row_cont[email_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:7:"no_lang";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"size";s:62:",@${row}[email_home_link],,,_blank,$row_cont[email_home_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:7:"no_lang";s:1:"1";}}s:1:"H";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:15:",48,0,,0,0,auto";s:4:"name";s:20:"${row}[customfields]";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:4:"name";s:4:"$row";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:7:"options";a:5:{i:1;s:2:"48";i:6;s:4:"auto";i:4;s:1:"0";i:5;s:1:"0";i:2;s:1:"0";}}s:1:"I";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"4,0,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:52:"addressbook.uicontacts.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i: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:189:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i: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";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:9;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1145192391',); +$templ_data[] = array('name' => 'addressbook.index.rows','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:6:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";s:1:"E";s:12:",!@show_home";s:1:"C";s:12:"60,@no_photo";s:1:"I";s:2:"90";s:1:"H";s:17:",@no_customfields";}i:1;a:9:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:5:{s:2:"h2";s:16:",!@order=n_given";s:2:"h5";s:51:",!@order=/^(org_name|n_fileas|adr_one_postalcode)$/";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:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Photo";}s:1:"D";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:16:"Business address";}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:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:12:"Home address";}s:1:"F";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:8:"tel_work";s:5:"label";s:14:"Business phone";}i:2;a:3:{s:4:"type";s:5:"label";s:5:"label";s:12:"Mobile phone";s:4:"name";s:8:"tel_cell";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:8:"tel_home";s:5:"label";s:10:"Home phone";}}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:5:"label";s:4:"name";s:3:"url";s:5:"label";s:3:"Url";}i:2;a:3:{s:4:"type";s:5:"label";s:5:"label";s:14:"Business email";s:4:"name";s:5:"email";}i:3;a:3:{s:4:"type";s:5:"label";s:4:"name";s:10:"email_home";s:5:"label";s:10:"Home email";}}s:1:"H";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: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:7:"options";a:2:{i:4;s:1:"0";i:5;s:1:"0";}}s:1:"I";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:9:{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:"image";s:4:"name";s:13:"${row}[photo]";}s:1:"D";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:4:{s:4:"type";s:4:"hbox";s:4:"size";s:7:"2,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: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:"E";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:4:"name";s:27:"${row}[adr_two_countryname]";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,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: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:"F";a:6:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"4,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[tel_work]";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_work_link],,,calling,$cont[call_popup]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_cell]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_cell_link],,,calling,$cont[call_popup]";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[tel_home]";s:7:"no_lang";s:1:"1";s:4:"span";s:11:",telNumbers";s:4:"size";s:53:",$row_cont[tel_home_link],,,calling,$cont[call_popup]";}i:4;a:4:{s:4:"type";s:5:"label";s:4:"name";s:20:"${row}[tel_prefered]";s:7:"no_lang";s:1:"1";s:4:"size";s:57:",$row_cont[tel_prefered_link],,,calling,$cont[call_popup]";}}s:1:"G";a:5:{s:4:"type";s:4:"vbox";s:4:"size";s:6:"3,,0,0";i:1;a:5:{s:4:"type";s:5:"label";s:4:"size";s:3:",,1";s:4:"span";s:12:",fixedHeight";s:7:"no_lang";s:1:"1";s:4:"name";s:11:"${row}[url]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"size";s:52:",@${row}[email_link],,,_blank,$row_cont[email_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:13:"${row}[email]";s:7:"no_lang";s:1:"1";}i:3;a:5:{s:4:"type";s:5:"label";s:4:"size";s:62:",@${row}[email_home_link],,,_blank,$row_cont[email_home_popup]";s:4:"span";s:12:",fixedHeight";s:4:"name";s:18:"${row}[email_home]";s:7:"no_lang";s:1:"1";}}s:1:"H";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:15:",48,0,,0,0,auto";s:4:"name";s:20:"${row}[customfields]";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:4:"name";s:4:"$row";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:7:"options";a:5:{i:1;s:2:"48";i:6;s:4:"auto";i:4;s:1:"0";i:5;s:1:"0";i:2;s:1:"0";}}s:1:"I";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"4,0,0";i:1;a:4:{s:4:"type";s:5:"image";s:4:"size";s:52:"addressbook.uicontacts.view&contact_id=$row_cont[id]";s:5:"label";s:4:"View";s:4:"name";s:4:"view";}i: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:189:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.uicontacts.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i: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";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:9;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1145192391',); $templ_data[] = array('name' => 'addressbook.search','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"name";s:16:"addressbook.edit";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:6:"select";s:5:"label";s:8:"Operator";s:4:"name";s:8:"operator";s:7:"no_lang";s:1:"1";}i:2;a:3:{s:4:"type";s:6:"select";s:4:"name";s:11:"meth_select";s:7:"no_lang";s:1:"1";}s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Search";s:4:"name";s:14:"button[search]";s:7:"onclick";s:37:"xajax_eT_wrapper(this); return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:7:"onclick";s:29:"window.close(); return false;";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:3;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1161707411',); diff --git a/addressbook/setup/setup.inc.php b/addressbook/setup/setup.inc.php index 4832177409..9b084b3b34 100755 --- a/addressbook/setup/setup.inc.php +++ b/addressbook/setup/setup.inc.php @@ -37,6 +37,7 @@ $setup_info['addressbook']['hooks']['settings'] = 'addressbook.contacts_admin_pr $setup_info['addressbook']['hooks'][] = 'home'; $setup_info['addressbook']['hooks']['deleteaccount'] = 'addressbook.bocontacts.deleteaccount'; $setup_info['addressbook']['hooks']['search_link'] = 'addressbook.bocontacts.search_link'; +$setup_info['addressbook']['hooks']['calendar_resources'] = 'addressbook.bocontacts.calendar_resources'; $setup_info['addressbook']['hooks']['edit_user'] = 'addressbook.contacts_admin_prefs.edit_user'; $setup_info['addressbook']['hooks'][] = 'config'; diff --git a/addressbook/templates/default/images/template.png b/addressbook/templates/default/images/photo.png similarity index 100% rename from addressbook/templates/default/images/template.png rename to addressbook/templates/default/images/photo.png diff --git a/addressbook/templates/default/index.xet b/addressbook/templates/default/index.xet index 3c00b1b45b..a2dc65541c 100644 --- a/addressbook/templates/default/index.xet +++ b/addressbook/templates/default/index.xet @@ -3,7 +3,7 @@