egroupware_official/addressbook/inc/class.contacts_admin_prefs.inc.php
Ralf Becker 9f59a77b85 moved contact-data (firstname, lastname and email) from the account-table to the contact table:
- all (sql) accounts have now allways a contact associated with them (account_id is added as new column to the contacts table)
- contacts queries are simplefied a lot now, as no more join with the accouns-table, union and case when statesments are necessary
- lot of the special handling for accounts in the contacts class is no longer needed
- new contact-repository mode "sql-ldap" which additional writes all changes to the ldap repository, to allow to use it read-only from eg. thunderbird and still have the full sql speed and features within eGW (not yet fully working!)
==> requites update of API and addressbook to work (setup!)
2006-06-17 18:50:07 +00:00

212 lines
7.2 KiB
PHP

<?php
/**
* Addressbook - admin, preferences and sidebox-menus
*
* @link http://www.egroupware.org
* @package addressbook
* @author Ralf Becker <RalfBecker@outdoor-training.de>
* @copyright (c) 2006 by Ralf Becker <RalfBecker@outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Class containing admin, preferences and sidebox-menus (used as hooks)
*
* @package addressbook
* @author Ralf Becker <RalfBecker@outdoor-training.de>
* @copyright (c) 2006 by Ralf Becker <RalfBecker@outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
*/
class contacts_admin_prefs
{
var $contact_repository = 'sql';
/**
* constructor
*/
function contacts_admin_prefs()
{
if($GLOBALS['egw_info']['server']['contact_repository'] == 'ldap') $this->contact_repository = 'ldap';
}
/**
* hooks to build projectmanager's sidebox-menu plus the admin and preferences sections
*
* @param string/array $args hook args
*/
function all_hooks($args)
{
$appname = 'addressbook';
$location = is_array($args) ? $args['location'] : $args;
//echo "<p>contacts_admin_prefs::all_hooks(".print_r($args,True).") appname='$appname', location='$location'</p>\n";
if ($location == 'sidebox_menu')
{
$file = array(
array(
'text' => '<a class="textSidebox" href="'.$GLOBALS['egw']->link('/index.php',array('menuaction' => 'addressbook.uicontacts.edit')).
'" onclick="window.open(this.href,\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\');
return false;">'.lang('Add').'</a>',
'no_lang' => true,
'link' => false
),
// Disabled til they are working again
// 'Advanced search'=>$GLOBALS['egw']->link('/index.php','menuaction=addressbook.uicontacts.search'),
// 'import contacts' => $GLOBALS['egw']->link('/index.php','menuaction=addressbook.uiXport.import'),
// 'export contacts' => $GLOBALS['egw']->link('/index.php','menuaction=addressbook.uiXport.export'),
'CSV-Import' => $GLOBALS['egw']->link('/addressbook/csv_import.php')
);
display_sidebox($appname,lang('Addressbook menu'),$file);
}
if ($GLOBALS['egw_info']['user']['apps']['preferences'] && $location != 'admin')
{
$file = array(
'Preferences' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname='.$appname),
'Grant Access' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$appname),
'Edit Categories' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uicategories.index&cats_app=' . $appname . '&cats_level=True&global_cats=True')
);
if ($this->contact_repository == 'ldap' || $GLOBALS['egw_info']['server']['deny_user_grants_access'])
{
unset($file['Grant Access']);
}
if ($location == 'preferences')
{
display_section($appname,$file);
}
else
{
display_sidebox($appname,lang('Preferences'),$file);
}
}
if ($GLOBALS['egw_info']['user']['apps']['admin'] && $location != 'preferences')
{
$file = Array(
'Site configuration' => $GLOBALS['egw']->link('/index.php',array(
'menuaction' => 'admin.uiconfig.index',
'appname' => $appname,
)),
'Global Categories' => $GLOBALS['egw']->link('/index.php',array(
'menuaction' => 'admin.uicategories.index',
'appname' => $appname,
'global_cats'=> True,
)),
);
// custom fields are not availible in LDAP
if ($GLOBALS['egw_info']['server']['contact_repository'] != 'ldap')
{
$file['Custom fields'] = $GLOBALS['egw']->link('/index.php',array(
'menuaction' => 'admin.customfields.edit',
'appname' => $appname,
));
}
if ($location == 'admin')
{
display_section($appname,$file);
}
else
{
display_sidebox($appname,lang('Admin'),$file);
}
}
}
/**
* populates $GLOBALS['settings'] for the preferences
*/
function settings()
{
$GLOBALS['settings']['mainscreen_showbirthdays'] = array(
'type' => 'select',
'label' => 'Show birthday reminders on main screen',
'name' => 'mainscreen_showbirthdays',
'help' => 'Displays a remider for birthdays on the startpage (page you get when you enter eGroupWare or click on the homepage icon).',
'values' => array(
0 => lang('No'),
1 => lang('Yes, for today and tomorrow'),
3 => lang('Yes, for the next three days'),
7 => lang('Yes, for the next week'),
14=> lang('Yes, for the next two weeks'),
),
'xmlrpc' => True,
'admin' => False,
);
$column_display_options = array(
'' => lang('only if there is content'),
'always' => lang('always'),
'never' => lang('never'),
);
foreach(array(
'photo_column' => lang('Photo'),
'home_column' => lang('Home address'),
'custom_colum' => lang('custom fields'),
) as $name => $label)
{
$GLOBALS['settings'][$name] = array(
'type' => 'select',
'label' => lang('Show a column for %1',$label),
'run_lang' => -1,
'name' => $name,
'values' => $column_display_options,
'help' => 'When should the contacts list display that colum. "Only if there is content" hides the column, unless there is some content in the view.',
'xmlrpc' => True,
'admin' => false,
);
}
// CSV Export
$GLOBALS['settings']['csv_fields'] = array(
'type' => 'select',
'label' => 'Fields for the CSV export',
'name' => 'csv_fields',
'values' => array(
'' => lang('All'),
'business' => lang('Business address'),
'home' => lang('Home address'),
),
'help' => 'Which fields should be exported. All means every field stored in the addressbook incl. the custom fields. The business or home address only contains name, company and the selected address.',
'xmlrpc' => True,
'admin' => false,
);
$GLOBALS['settings']['csv_charset'] = array(
'type' => 'select',
'label' => 'Charset for the CSV export',
'name' => 'csv_charset',
'values' => $GLOBALS['egw']->translation->get_installed_charsets()+array('utf-8' => 'utf-8 (Unicode)'),
'help' => 'Which charset should be used for the CSV export. The system default is the charset of this eGroupWare installation.',
'xmlrpc' => True,
'admin' => false,
);
if ($this->contact_repository == 'sql')
{
$GLOBALS['settings']['private_addressbook'] = array(
'type' => 'check',
'label' => 'Enable an extra private addressbook',
'name' => 'private_addressbook',
'help' => 'Do you want a private addressbook, which can not be viewed by users, you grant access to your personal addressbook?',
'xmlrpc' => True,
'admin' => False,
);
}
return true; // otherwise prefs say it cant find the file ;-)
}
/**
* add an Addressbook tab to Admin >> Edit user
*/
function edit_user()
{
global $menuData;
$menuData[] = array(
'description' => 'Addressbook',
'url' => '/index.php',
'extradata' => 'menuaction=addressbook.uicontacts.edit',
'options' => "onclick=\"window.open(this,'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;\"".
' title="'.htmlspecialchars(lang('Edit extra account-data in the addressbook')).'"',
);
}
}