*/
public function prefsInit($ui)
{
- switch ($ui->group) {
- case 'display_avatar':
- $vfs = Agora::getVFS();
- if (!($vfs instanceof PEAR_Error) &&
- $GLOBALS['conf']['avatar']['enable_gallery'] &&
- $vfs->isFolder(Agora::AVATAR_PATH, 'gallery')) {
- Horde::addScriptFile('popup.js', 'horde', true);
- }
- break;
- }
-
- /* Hide appropriate prefGroups. */
+ /* Hide prefGroups. */
if (!$GLOBALS['conf']['avatar']['allow_avatars']) {
$ui->suppressGroups[] = 'display_avatar';
}
*/
public function prefsGroup($ui)
{
- switch ($ui->group) {
- case 'display_avatar':
- $vfs = Agora::getVFS();
- if (($vfs instanceof PEAR_Error) ||
- !$GLOBALS['conf']['avatar']['enable_gallery'] ||
- !$vfs->isFolder(Agora::AVATAR_PATH, 'gallery')) {
- $suppress[] = 'avatar_link';
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'avatar_link':
+ $vfs = Agora::getVFS();
+ if (($vfs instanceof PEAR_Error) ||
+ !$GLOBALS['conf']['avatar']['enable_gallery'] ||
+ !$vfs->isFolder(Agora::AVATAR_PATH, 'gallery')) {
+ $ui->suppress[] = 'avatar_link';
+ } else {
+ Horde::addScriptFile('popup.js', 'horde', true);
+ }
+ break;
}
- break;
}
}
*/
public function prefsGroup($ui)
{
- global $conf, $prefs;
+ global $conf;
- switch ($ui->group) {
- case 'metadata':
- if (!$prefs->isLocked('exif_tags')) {
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'exif_tags':
$fields = Horde_Image_Exif::getFields(array($conf['exif']['driver'], !empty($conf['exif']['params']) ? $conf['exif']['params'] : array()), true);
$ui->override['exif_tags'] = $fields;
$ui->override['exif_title'] = array_merge(array(
'none' => _("None")
), $fields);
+ break;
}
- break;
}
}
}
/**
- * Code to run on init when viewing prefs for this application.
+ * Determine active prefs when displaying a group.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.
*/
- public function prefsInit($ui)
+ public function prefsGroup($ui)
{
- global $prefs;
-
- switch ($ui->group) {
- case 'display':
- if (!$prefs->isLocked('columns')) {
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'columns':
Horde_Core_Prefs_Ui_Widgets::sourceInit();
+ break;
}
- break;
}
}
*/
public function prefsInit($ui)
{
- global $conf, $injector, $prefs, $registry;
+ global $conf, $injector;
- switch ($ui->group) {
- case 'display':
- if (!$prefs->isLocked('initial_application')) {
- $out = array();
- $apps = $registry->listApps(array('active'));
- foreach ($apps as $a) {
- $perms = $injector->getInstance('Horde_Perms');
- if (file_exists($registry->get('fileroot', $a)) &&
- (($perms->exists($a) && ($perms->hasPermission($a, $registry->getAuth(), Horde_Perms::READ) || $registry->isAdmin())) ||
- !$perms->exists($a))) {
- $out[$a] = $registry->get('name', $a);
- }
- }
- asort($out);
- $ui->override['initial_application'] = $out;
- }
-
- if (!$prefs->isLocked('theme')) {
- $ui->override['theme'] = Horde_Themes::themeList();
- }
- break;
-
- case 'language':
- if (!$prefs->isLocked('language')) {
- $ui->override['language'] = $registry->nlsconfig->languages;
- array_unshift($ui->override['language'], _("Default"));
- }
-
- if (!$prefs->isLocked('timezone')) {
- $ui->override['timezone'] = Horde_Nls::getTimezones();
- array_unshift($ui->override['timezone'], _("Default"));
- }
- break;
-
- case 'remote':
- Horde::addScriptFile('rpcprefs.js', 'horde');
- $ui->nobuttons = true;
- break;
- }
-
- /* Hide appropriate prefGroups. */
+ /* Hide prefGroups. */
try {
$injector->getInstance('Horde_Core_Factory_Auth')->create()->hasCapability('update');
} catch (Horde_Exception $e) {
}
/**
+ * Determine active prefs when displaying a group.
+ *
+ * @param Horde_Core_Prefs_Ui $ui The UI object.
+ */
+ public function prefsGroup($ui)
+ {
+ global $injector, $registry;
+
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'initial_application':
+ $out = array();
+ $apps = $registry->listApps(array('active'));
+ foreach ($apps as $a) {
+ $perms = $injector->getInstance('Horde_Perms');
+ if (file_exists($registry->get('fileroot', $a)) &&
+ (($perms->exists($a) && ($perms->hasPermission($a, $registry->getAuth(), Horde_Perms::READ) || $registry->isAdmin())) ||
+ !$perms->exists($a))) {
+ $out[$a] = $registry->get('name', $a);
+ }
+ }
+ asort($out);
+ $ui->override['initial_application'] = $out;
+ break;
+
+ case 'language':
+ $ui->override['language'] = $registry->nlsconfig->languages;
+ array_unshift($ui->override['language'], _("Default"));
+ break;
+
+ case 'remotemanagement':
+ Horde::addScriptFile('rpcprefs.js', 'horde');
+ $ui->nobuttons = true;
+ break;
+
+ case 'theme':
+ $ui->override['theme'] = Horde_Themes::themeList();
+ break;
+
+ case 'timezone':
+ $ui->override['timezone'] = Horde_Nls::getTimezones();
+ array_unshift($ui->override['timezone'], _("Default"));
+ break;
+ }
+ }
+ }
+
+ /**
* Generate code used to display a special preference.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.
'label' => _("PGP Preferences"),
'desc' => sprintf(_("Control PGP support for %s."), $GLOBALS['registry']->get('name')),
'members' => array(
+ 'pgpmanagement'
+ )
+);
+
+// These preferences MUST appear on the same page.
+$_prefs['pgpmanagement'] = array(
+ 'value' => array(
'use_pgp', 'use_pgp_text', 'pgp_attach_pubkey', 'pgp_scan_body',
'pgp_verify', 'pgp_reply_pubkey', 'pgppublickey', 'pgpprivatekey'
- )
+ ),
+ 'type' => 'container'
);
// Activate PGP support?
'label' => _("S/MIME Preferences"),
'desc' => sprintf(_("Control S/MIME support for %s."), $GLOBALS['registry']->get('name')),
'members' => array(
+ 'smimemanagement'
+ )
+);
+
+// These preferences MUST appear on the same page.
+$_prefs['smimemanagement'] = array(
+ 'value' => array(
'use_smime', 'use_smime_text', 'smime_verify', 'smimepublickey',
'smimeprivatekey'
- )
+ ),
+ 'type' => 'container'
);
// Activate S/MIME support?
*/
public function prefsInit($ui)
{
- global $conf, $injector, $prefs, $registry, $session;
-
- switch ($ui->group) {
- case 'accounts':
- if (!empty($conf['user']['allow_accounts'])) {
- Horde::addScriptFile('accountsprefs.js', 'imp');
- }
- break;
-
- case 'acl':
- Horde::addScriptFile('acl.js', 'imp');
- break;
-
- case 'addressbooks':
- if (!$prefs->isLocked('sourceselect')) {
- Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
- }
- break;
-
- case 'delmove':
- if ($session->get('imp', 'protocol') == 'pop') {
- $tmp = $ui->prefs['delete_spam_after_report']['enum'];
- unset($tmp[2]);
- $ui->override['delete_spam_after_report'] = $tmp;
- }
- break;
-
- case 'display':
- /* Set the timezone on this page so the 'time_format' output uses
- * the configured time zone's time, not the system's time zone. */
- $registry->setTimeZone();
- break;
-
- case 'flags':
- if ($prefs->isLocked('msgflags') &&
- $prefs->isLocked('msgflags_user')) {
- $ui->nobuttons = true;
- } else {
- Horde::addScriptFile('colorpicker.js', 'horde');
- Horde::addScriptFile('flagprefs.js', 'imp');
- }
- break;
-
- case 'identities':
- if (!$prefs->isLocked('sent_mail_folder')) {
- Horde::addScriptFile('folderprefs.js', 'imp');
- }
-
- if (!$prefs->isLocked('signature_html') &&
- $session->get('imp', 'rteavail')) {
- Horde::addScriptFile('signaturehtml.js', 'imp');
- IMP_Ui_Editor::init(false, 'signature_html');
- }
- break;
-
- case 'pgp':
- Horde::addScriptFile('imp.js', 'imp');
- break;
-
- case 'searches':
- Horde::addScriptFile('searchesprefs.js', 'imp');
- break;
-
- case 'server':
- $code = array();
-
- if (!$prefs->isLocked('drafts_folder')) {
- $code['drafts'] = _("Enter the name for your new drafts folder.");
- }
-
- if (!$prefs->isLocked('spam_folder')) {
- $code['spam'] = _("Enter the name for your new spam folder.");
- }
-
- if (!$prefs->isLocked('trash_folder')) {
- $code['trash'] = _("Enter the name for your new trash folder.");
- }
-
- if (!empty($code)) {
- Horde::addScriptFile('folderprefs.js', 'imp');
- Horde::addInlineJsVars(array(
- 'ImpFolderPrefs.folders' => $code
- ));
- }
- break;
-
- case 'smime':
- Horde::addScriptFile('imp.js', 'imp');
- break;
-
- case 'stationery':
- if (!$prefs->isLocked('stationery')) {
- $ui->nobuttons = true;
- }
- break;
- }
+ global $conf, $injector, $registry, $session;
/* Hide appropriate prefGroups. */
if ($session->get('imp', 'protocol') == 'pop') {
global $conf, $injector, $prefs, $registry, $session;
switch ($ui->group) {
- case 'accounts':
- if (empty($conf['user']['allow_accounts'])) {
- $ui->suppress[] = 'accountsmanagement';
+ case 'identities':
+ if ($prefs->isLocked('sent_mail_folder')) {
+ $ui->suppress[] = 'sentmailselect';
+ } else {
+ Horde::addScriptFile('folderprefs.js', 'imp');
+ }
+
+ if ($prefs->isLocked('signature_html') ||
+ !$session->get('imp', 'rteavail')) {
+ $ui->suppress[] = 'signature_html_select';
+ } else {
+ Horde::addScriptFile('signaturehtml.js', 'imp');
+ IMP_Ui_Editor::init(false, 'signature_html');
}
break;
+ }
- case 'addressbooks':
- if (!$prefs->isLocked('add_source')) {
+ $folder_code = array();
+
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'accountsmanagement':
+ if (empty($conf['user']['allow_accounts'])) {
+ $ui->suppress[] = 'accountsmanagement';
+ } else {
+ Horde::addScriptFile('accountsprefs.js', 'imp');
+ }
+ break;
+
+ case 'aclmanagement':
+ Horde::addScriptFile('acl.js', 'imp');
+ break;
+
+ case 'add_source':
try {
$ui->override['add_source'] = $registry->call('contacts/sources', array(true));
} catch (Horde_Exception $e) {
$ui->suppress[] = 'add_source';
}
- }
- break;
+ break;
- case 'compose':
- if ($prefs->isLocked('default_encrypt')) {
- $ui->suppress[] = 'encryptselect';
- }
+ case 'alternative_display':
+ $mock_part = new Horde_Mime_Part();
+ $mock_part->setType('text/html');
+ $v = $injector->getInstance('IMP_Injector_Factory_MimeViewer')->create($mock_part);
- if (!$prefs->getValue('compose_html')) {
- $ui->suppress[] = 'compose_html_font_family';
- $ui->suppress[] = 'compose_html_font_size';
- }
- break;
+ if (!$v->canRender('inline')) {
+ $ui->suppress[] = 'alternative_display';
+ }
+ break;
- case 'delmove':
- if ($session->get('imp', 'protocol') == 'pop') {
- $ui->suppress[] = 'move_ham_after_report';
- $ui->suppress[] = 'empty_spam_menu';
- $ui->suppress[] = 'use_trash';
- $ui->suppress[] = 'trashselect';
- $ui->suppress[] = 'empty_trash_menu';
- } elseif ($prefs->isLocked('use_trash') ||
- !$prefs->getValue('use_trash')) {
- $ui->suppress[] = 'trashselect';
- $ui->suppress[] = 'empty_trash_menu';
- }
- break;
+ case 'compose_html_font_family':
+ case 'compose_html_font_size':
+ if (!$prefs->getValue('compose_html')) {
+ $ui->suppress[] = $val;
+ }
+ break;
- case 'dimp':
- if (!empty($conf['user']['force_view'])) {
- $ui->suppress[] = 'dynamic_view';
- }
- break;
+ case 'delete_sentmail_monthly':
+ case 'delete_sentmail_monthly_keep':
+ case 'empty_spam_menu':
+ case 'initialpageselect':
+ case 'move_ham_after_report':
+ case 'nav_expanded':
+ case 'nav_poll_all':
+ case 'purge_sentmail':
+ case 'purge_sentmail_interval':
+ case 'purge_sentmail_keep':
+ case 'purge_spam':
+ case 'purge_spam_interval':
+ case 'purge_spam_keep':
+ case 'purge_trash':
+ case 'purge_trash_interval':
+ case 'purge_trash_keep':
+ case 'rename_sentmail_monthly':
+ case 'tree_view':
+ case 'use_trash':
+ if ($session->get('imp', 'protocol') == 'pop') {
+ $ui->suppress[] = $val;
+ }
+ break;
- case 'display':
- if ($session->get('imp', 'protocol') == 'pop') {
- $ui->suppress[] = 'nav_expanded';
- $ui->suppress[] = 'tree_view';
- }
- break;
+ case 'delete_spam_after_report':
+ if ($session->get('imp', 'protocol') == 'pop') {
+ $tmp = $ui->prefs['delete_spam_after_report']['enum'];
+ unset($tmp[2]);
+ $ui->override['delete_spam_after_report'] = $tmp;
+ }
+ break;
- case 'filters':
- if (!$session->get('imp', 'filteravail')) {
- $ui->suppress[] = 'filter_on_login';
- $ui->suppress[] = 'filter_on_display';
- $ui->suppress[] = 'filter_any_mailbox';
- }
- if (!$registry->hasMethod('mail/showFilters')) {
- $ui->suppress[] = 'filters_link';
- }
- if (!$registry->hasMethod('mail/showBlacklist')) {
- $ui->suppress[] = 'filters_blacklist_link';
- }
- if (!$registry->hasMethod('mail/showWhitelist')) {
- $ui->suppress[] = 'filters_whitelist_link';
- }
- break;
+ case 'drafts_folder':
+ $folder_code['drafts'] = _("Enter the name for your new drafts folder.");
+ break;
- case 'identities':
- if ($prefs->isLocked('sent_mail_folder')) {
- $ui->suppress[] = 'sentmailselect';
- }
+ case 'draftsselect':
+ if ($prefs->isLocked('drafts_folder')) {
+ $ui->suppress[] = 'draftsselect';
+ }
+ break;
- if ($prefs->isLocked('signature_html') ||
- !$session->get('imp', 'rteavail')) {
- $ui->suppress[] = 'signature_html_select';
- }
- break;
+ case 'dynamic_view':
+ if (!empty($conf['user']['force_view'])) {
+ $ui->suppress[] = 'dynamic_view';
+ }
+ break;
- case 'logintasks':
- if ($prefs->isLocked('initial_page')) {
- $ui->suppress[] = 'initialpageselect';
- }
- if ($session->get('imp', 'protocol') == 'pop') {
- $ui->suppress[] = 'initialpageselect';
- $ui->suppress[] = 'rename_sentmail_monthly';
- $ui->suppress[] = 'delete_sentmail_monthly';
- $ui->suppress[] = 'delete_sentmail_monthly_keep';
- $ui->suppress[] = 'purge_sentmail';
- $ui->suppress[] = 'purge_sentmail_interval';
- $ui->suppress[] = 'purge_sentmail_keep';
- $ui->suppress[] = 'purge_trash';
- $ui->suppress[] = 'purge_trash_interval';
- $ui->suppress[] = 'purge_trash_keep';
- $ui->suppress[] = 'purge_spam';
- $ui->suppress[] = 'purge_spam_interval';
- $ui->suppress[] = 'purge_spam_keep';
- }
- break;
+ case 'empty_trash_menu':
+ case 'trashselect':
+ if (($session->get('imp', 'protocol') == 'pop') ||
+ $prefs->isLocked('use_trash') ||
+ !$prefs->getValue('use_trash')) {
+ $ui->suppress[] = $val;
+ }
+ break;
- case 'newmail':
- if ($prefs->isLocked('nav_audio')) {
- $ui->suppress[] = 'soundselect';
- }
- if ($session->get('imp', 'protocol') == 'pop') {
- $ui->suppress[] = 'nav_poll_all';
- }
- break;
+ case 'encryptselect':
+ if ($prefs->isLocked('default_encrypt')) {
+ $ui->suppress[] = 'encryptselect';
+ }
+ break;
- case 'pgp':
- if (!$prefs->getValue('use_pgp')) {
- $ui->suppress[] = 'use_pgp_text';
- $ui->suppress[] = 'pgp_attach_pubkey';
- $ui->suppress[] = 'pgp_scan_body';
- $ui->suppress[] = 'pgp_verify';
- $ui->suppress[] = 'pgp_reply_pubkey';
- $ui->suppress[] = 'pgppublickey';
- $ui->suppress[] = 'pgpprivatekey';
- }
- break;
+ case 'filter_any_mailbox':
+ case 'filter_on_display':
+ case 'filter_on_login':
+ if (!$session->get('imp', 'filteravail')) {
+ $ui->suppress[] = $val;
+ }
+ break;
- case 'server':
- if ($prefs->isLocked('drafts_folder')) {
- $ui->suppress[] = 'draftsselect';
- }
- if ($prefs->isLocked('spam_folder')) {
- $ui->suppress[] = 'spamselect';
- }
+ case 'filters_blacklist_link':
+ if (!$registry->hasMethod('mail/showBlacklist')) {
+ $ui->suppress[] = 'filters_blacklist_link';
+ }
+ break;
- if ($prefs->isLocked('trash_folder')) {
- $ui->suppress[] = 'trashselect';
- }
- break;
+ case 'filters_link':
+ if (!$registry->hasMethod('mail/showFilters')) {
+ $ui->suppress[] = 'filters_link';
+ }
+ break;
- case 'smime':
- if (!$prefs->getValue('use_smime')) {
- $ui->suppress[] = 'use_smime_text';
- $ui->suppress[] = 'smime_verify';
- $ui->suppress[] = 'smimepublickey';
- $ui->suppress[] = 'smimeprivatekey';
- }
- break;
+ case 'filters_whitelist_link':
+ if (!$registry->hasMethod('mail/showWhitelist')) {
+ $ui->suppress[] = 'filters_whitelist_link';
+ }
+ break;
- case 'stationery':
- if ($prefs->isLocked('stationery')) {
- $ui->suppress[] = 'stationerymanagement';
- }
- break;
+ case 'flagmanagement':
+ if ($prefs->isLocked('msgflags') &&
+ $prefs->isLocked('msgflags_user')) {
+ $ui->nobuttons = true;
+ } else {
+ Horde::addScriptFile('colorpicker.js', 'horde');
+ Horde::addScriptFile('flagprefs.js', 'imp');
+ }
+ break;
- case 'standard':
- if (!$prefs->getValue('preview_enabled')) {
- $ui->suppress[] = 'preview_maxlen';
- $ui->suppress[] = 'preview_strip_nl';
- $ui->suppress[] = 'preview_show_unread';
- $ui->suppress[] = 'preview_show_tooltip';
- }
- break;
+ case 'initialpageselect':
+ if ($prefs->isLocked('initial_page')) {
+ $ui->suppress[] = 'initialpageselect';
+ }
+ break;
- case 'viewing':
- if (empty($conf['maillog']['use_maillog'])) {
- $ui->suppress[] = 'send_mdn';
- }
+ case 'pgp_attach_pubkey':
+ case 'use_pgp_text':
+ case 'pgp_reply_pubkey':
+ case 'pgp_scan_body':
+ case 'pgp_verify':
+ case 'pgpprivatekey':
+ case 'pgppublickey':
+ if (!$prefs->getValue('use_pgp')) {
+ $ui->suppress[] = $val;
+ }
+ break;
+
+ case 'pgpmanagement':
+ case 'smimemanagement':
+ Horde::addScriptFile('imp.js', 'imp');
+ break;
- $mock_part = new Horde_Mime_Part();
- $mock_part->setType('text/html');
- $v = $injector->getInstance('IMP_Injector_Factory_MimeViewer')->create($mock_part);
+ case 'preview_maxlen':
+ case 'preview_show_unread':
+ case 'preview_show_tooltip':
+ case 'preview_strip_nl':
+ if (!$prefs->getValue('preview_enabled')) {
+ $ui->suppress[] = $val;
+ }
+ break;
- if (!$v->canRender('inline')) {
- $ui->suppress[] = 'alternative_display';
+ case 'searchesmanagement':
+ Horde::addScriptFile('searchesprefs.js', 'imp');
+ break;
+
+ case 'send_mdn':
+ if (empty($conf['maillog']['use_maillog'])) {
+ $ui->suppress[] = 'send_mdn';
+ }
+ break;
+
+ case 'smime_verify':
+ case 'smimeprivatekey':
+ case 'smimepublickey':
+ case 'use_smime_text':
+ if (!$prefs->getValue('use_smime')) {
+ $ui->suppress[] = $val;
+ }
+ break;
+
+ case 'soundselect':
+ if ($prefs->isLocked('nav_audio')) {
+ $ui->suppress[] = 'soundselect';
+ }
+ break;
+
+ case 'sourceselect':
+ Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
+ break;
+
+ case 'spam_folder':
+ $folder_code['spam'] = _("Enter the name for your new spam folder.");
+ break;
+
+ case 'spamselect':
+ if ($prefs->isLocked('spam_folder')) {
+ $ui->suppress[] = 'spamselect';
+ }
+ break;
+
+ case 'stationery':
+ $ui->nobuttons = true;
+ break;
+
+ case 'stationerymanagement':
+ if ($prefs->isLocked('stationery')) {
+ $ui->suppress[] = 'stationerymanagement';
+ }
+ break;
+
+ case 'time_format':
+ /* Set the timezone on this page so the output uses the
+ * configured time zone's time, not the system's time zone. */
+ $registry->setTimeZone();
+ break;
+
+ case 'trash_folder':
+ $folder_code['trash'] = _("Enter the name for your new trash folder.");
+ break;
+
+ case 'trashselect':
+ if ($prefs->isLocked('trash_folder')) {
+ $ui->suppress[] = 'trashselect';
+ }
+ break;
}
- break;
+ }
+
+ if (!empty($folder_code)) {
+ Horde::addScriptFile('folderprefs.js', 'imp');
+ Horde::addInlineJsVars(array(
+ 'ImpFolderPrefs.folders' => $folder_code
+ ));
}
}
*/
public function prefsInit($ui)
{
- global $conf, $prefs, $registry;
-
- switch ($ui->group) {
- case 'addressbooks':
- if (!$prefs->isLocked('sourceselect')) {
- Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
- }
- break;
-
- case 'freebusy':
- if (!$prefs->isLocked('fb_cals')) {
- $fb_list = array();
- foreach (Kronolith::listCalendars() as $fb_cal => $cal) {
- if ($cal->display()) {
- $fb_list[htmlspecialchars($fb_cal)] = htmlspecialchars($cal->name());
- }
- }
- $ui->override['fb_cals'] = $fb_list;
- }
- break;
-
- case 'notification':
- if (!empty($conf['alarms']['driver']) &&
- !$prefs->isLocked('event_alarms') &&
- !$prefs->isLocked('event_alarms_select')) {
- Horde_Core_Prefs_Ui_Widgets::alarmInit();
- }
- break;
-
- case 'share':
- foreach (Kronolith::listInternalCalendars(false, Horde_Perms::EDIT) as $id => $calendar) {
- $ui->override['default_share'][$id] = $calendar->get('name');
- }
- break;
-
- case 'view':
- $hour = array();
- for ($i = 0; $i <= 48; ++$i) {
- $hour[$i] = date(($prefs->getValue('twentyFour')) ? 'G:i' : 'g:ia', mktime(0, $i * 30, 0));
- }
- if (!$prefs->isLocked('day_hour_start')) {
- $ui->override['day_hour_start'] = $hour;
- }
- if (!$prefs->isLocked('day_hour_end')) {
- $ui->override['day_hour_end'] = $hour;
- }
- break;
- }
+ global $prefs, $registry;
/* Suppress prefGroups display. */
if (!$registry->hasMethod('contacts/sources')) {
{
global $conf, $prefs;
- switch ($ui->group) {
- case 'notification':
- if (empty($conf['alarms']['driver']) ||
- $prefs->isLocked('event_alarms') ||
- $prefs->isLocked('event_alarms_select')) {
- $ui->suppress[] = 'event_alarms';
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'day_hour_end':
+ case 'day_hour_start':
+ $hour = array();
+ for ($i = 0; $i <= 48; ++$i) {
+ $hour[$i] = date(($prefs->getValue('twentyFour')) ? 'G:i' : 'g:ia', mktime(0, $i * 30, 0));
+ }
+ $ui->override[$val] = $hour;
+ break;
+
+ case 'default_share':
+ foreach (Kronolith::listInternalCalendars(false, Horde_Perms::EDIT) as $id => $calendar) {
+ $ui->override['default_share'][$id] = $calendar->get('name');
+ }
+ break;
+
+ case 'event_alarms':
+ if (empty($conf['alarms']['driver']) ||
+ $prefs->isLocked('event_alarms_select')) {
+ $ui->suppress[] = 'event_alarms';
+ } else {
+ Horde_Core_Prefs_Ui_Widgets::alarmInit();
+ }
+ break;
+
+ case 'fb_cals':
+ $fb_list = array();
+ foreach (Kronolith::listCalendars() as $fb_cal => $cal) {
+ if ($cal->display()) {
+ $fb_list[htmlspecialchars($fb_cal)] = htmlspecialchars($cal->name());
+ }
+ }
+ $ui->override['fb_cals'] = $fb_list;
+ break;
+
+ case 'sourceselect':
+ Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
+ break;
}
- break;
}
}
}
/**
- * Run once on init when viewing prefs for an application.
+ * Determine active prefs when displaying a group.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.
*/
- public function prefsInit($ui)
+ public function prefsGroup($ui)
{
- switch ($ui->group) {
- case 'share':
- if (!$GLOBALS['prefs']->isLocked('default_notepad')) {
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'default_notepad':
$notepads = array();
foreach (Mnemo::listNotepads() as $key => $val) {
$notepads[htmlspecialchars($key)] = htmlspecialchars($val->get('name'));
}
$ui->override['default_notepad'] = $notepads;
+ break;
}
- break;
}
}
}
/**
- * Code to run on init when viewing prefs for this application.
+ * Determine active prefs when displaying a group.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.
*/
- public function prefsInit($ui)
+ public function prefsGroup($ui)
{
global $conf, $prefs, $registry;
- switch ($ui->group) {
- case 'share':
- if (!$prefs->isLocked('default_tasklist')) {
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'default_due_time':
+ $twentyfour = $prefs->getValue('twentyFour');
+
+ $vals = array('now' => _("The current hour"));
+ for ($i = 0; $i < 24; ++$i) {
+ $value = sprintf('%02d:00', $i);
+ $vals[$value] = ($twentyfour)
+ ? $value
+ : sprintf('%02d:00 ' . ($i >= 12 ? _("pm") : _("am")), ($i % 12 ? $i % 12 : 12));
+ }
+ $ui->override['default_due_time'] = $vals;
+ break;
+
+ case 'default_tasklist':
$all_tasklists = Nag::listTasklists();
$tasklists = array();
$vals[htmlspecialchars($id)] = htmlspecialchars($tasklist->get('name'));
}
$ui->override['default_tasklist'] = $vals;
- }
- break;
-
- case 'notification':
- if (!empty($conf['alarms']['driver']) &&
- !$prefs->isLocked('task_alarms') &&
- !$prefs->isLocked('task_alarms_select')) {
- Horde_Core_Prefs_Ui_Widgets::alarmInit();
- }
- break;
-
- case 'tasks':
- if (!$prefs->isLocked('default_due_time')) {
- $twentyfour = $prefs->getValue('twentyFour');
-
- $vals = array('now' => _("The current hour"));
- for ($i = 0; $i < 24; ++$i) {
- $value = sprintf('%02d:00', $i);
- $vals[$value] = ($twentyfour)
- ? $value
- : sprintf('%02d:00 ' . ($i >= 12 ? _("pm") : _("am")), ($i % 12 ? $i % 12 : 12));
+ break;
+
+ case 'show_external':
+ if ($registry->hasMethod('getListTypes', 'whups')) {
+ $ui->override['show_external'] = array(
+ 'whups' => $registry->get('name', 'whups')
+ );
+ } else {
+ $ui->suppress[] = 'show_external';
}
- $ui->override['default_due_time'] = $vals;
- }
- break;
- }
-
- if ($registry->hasMethod('getListTypes', 'whups')) {
- $ui->override['show_external'] = array(
- 'whups' => $registry->get('name', 'whups')
- );
- }
- }
-
- /**
- * Determine active prefs when displaying a group.
- *
- * @param Horde_Core_Prefs_Ui $ui The UI object.
- */
- public function prefsGroup($ui)
- {
- global $conf, $prefs, $registry;
-
- switch ($ui->group) {
- case 'notification':
- if (empty($conf['alarms']['driver']) ||
- $prefs->isLocked('task_alarms') ||
- $prefs->isLocked('task_alarms_select')) {
- $ui->suppress[] = 'task_alarms';
+ break;
+
+ case 'task_alarms':
+ if (empty($conf['alarms']['driver']) ||
+ $prefs->isLocked('task_alarms_select')) {
+ $ui->suppress[] = 'task_alarms';
+ } else {
+ Horde_Core_Prefs_Ui_Widgets::alarmInit();
+ }
+ break;
}
- break;
- }
-
- if (!$registry->hasMethod('getListTypes', 'whups')) {
- $ui->suppress[] = 'show_external';
}
}
}
/**
- * Code to run on init when viewing prefs for this application.
+ * Determine active prefs when displaying a group.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.
*/
- public function prefsInit($ui)
+ public function prefsGroup($ui)
{
global $prefs;
- switch ($ui->group) {
- case 'addressbooks':
- if (!$prefs->isLocked('default_dir')) {
+ $source_init = false;
+
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val->group) {
+ case 'columnselect':
+ Horde::addScriptFile('effects.js', 'horde');
+ Horde::addScriptFile('dragdrop.js', 'horde');
+ Horde::addScriptFile('columnprefs.js', 'turba');
+ break;
+
+ case 'default_dir':
$out = array();
foreach ($GLOBALS['cfgSources'] as $key => $info) {
$out[$key] = $info['title'];
}
$ui->override['default_dir'] = $out;
- }
- $out = array();
- foreach (Turba::getAddressBooks() as $key => $curSource) {
- if (empty($curSource['map']['__uid'])) {
- continue;
- }
- if (!empty($curSource['browse'])) {
- $out[$key] = $curSource['title'];
- }
- $sync_books = @unserialize($prefs->getValue('sync_books'));
- if (empty($sync_books)) {
- $prefs->setValue('sync_books', serialize(array(Turba::getDefaultAddressbook())));
+ $source_init = true;
+ break;
+
+ case 'sync_books':
+ $out = array();
+ foreach (Turba::getAddressBooks() as $key => $curSource) {
+ if (empty($curSource['map']['__uid'])) {
+ continue;
+ }
+ if (!empty($curSource['browse'])) {
+ $out[$key] = $curSource['title'];
+ }
+ $sync_books = @unserialize($prefs->getValue('sync_books'));
+ if (empty($sync_books)) {
+ $prefs->setValue('sync_books', serialize(array(Turba::getDefaultAddressbook())));
+ }
}
+ $ui->override['sync_books'] = $out;
+
+ $source_init = true;
+ break;
}
- $ui->override['sync_books'] = $out;
+ }
+ if ($source_init) {
Horde_Core_Prefs_Ui_Widgets::sourceInit();
- break;
-
- case 'columns':
- Horde::addScriptFile('effects.js', 'horde');
- Horde::addScriptFile('dragdrop.js', 'horde');
- Horde::addScriptFile('columnprefs.js', 'turba');
- break;
}
}
*/
public function prefsInit($ui)
{
- switch ($ui->group) {
- case 'addressbooks':
- Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
- break;
- }
-
if (!$GLOBALS['registry']->hasMethod('contacts/sources')) {
$ui->suppressGroups[] = 'addressbooks';
}
}
/**
+ * Determine active prefs when displaying a group.
+ *
+ * @param Horde_Core_Prefs_Ui $ui The UI object.
+ */
+ public function prefsGroup($ui)
+ {
+ foreach ($ui->getChangeablePrefs() as $val) {
+ switch ($val) {
+ case 'sourceselect':
+ Horde_Core_Prefs_Ui_Widgets::addressbooksInit();
+ break;
+ }
+ }
+ }
+
+ /**
* Generate code used to display a special preference.
*
* @param Horde_Core_Prefs_Ui $ui The UI object.