/** */ public function update(Horde_Core_Prefs_Ui $ui) { $data = Horde_Core_Prefs_Ui_Widgets::alarmUpdate($ui, array('pref' => 'task_alarms')); if (is_null($data)) { return false; } $GLOBALS['prefs']->setValue('task_alarms', serialize($data)); return true; }
/** */ public function update(Horde_Core_Prefs_Ui $ui) { global $prefs; $data = Horde_Core_Prefs_Ui_Widgets::addressbooksUpdate($ui); $updated = false; if (isset($data['sources'])) { $prefs->setValue('search_sources', $data['sources']); $updated = true; } if (isset($data['fields'])) { $prefs->setValue('search_fields', $data['fields']); $updated = true; } return $updated; }
/** */ public function display(Horde_Core_Prefs_Ui $ui) { $sources = array(); foreach (Gollem_Auth::getBackend() as $source => $info) { $selected = $unselected = array(); $selected_list = array_flip(Gollem::getColumns($source)); foreach ($info['attributes'] as $column) { if (isset($selected_list[$column])) { $selected[$column] = $column; } else { $unselected[$column] = $column; } } $sources[$source] = array('label' => $info['name'], 'selected' => $selected, 'unselected' => $unselected); } return Horde_Core_Prefs_Ui_Widgets::source(array('mainlabel' => _("Choose which columns to display, and in what order:"), 'selectlabel' => _("These columns will display in this order:"), 'sourcelabel' => _("Select a backend:"), 'sources' => $sources, 'unselectlabel' => _("Columns that will not be displayed:"))); }
/** */ public function update(Horde_Core_Prefs_Ui $ui) { global $prefs; $data = Horde_Core_Prefs_Ui_Widgets::addressbooksUpdate($ui); $updated = false; if (isset($data['sources'])) { $prefs->setValue('search_sources', $data['sources']); $updated = true; } if (isset($data['fields'])) { $prefs->setValue('search_fields', $data['fields']); $updated = true; } if ($updated) { $GLOBALS['injector']->getInstance('IMP_Contacts')->clearCache(); } return $updated; }
/** */ public function update(Horde_Core_Prefs_Ui $ui) { global $injector, $prefs, $registry; $data = Horde_Core_Prefs_Ui_Widgets::alarmUpdate($ui, array('pref' => 'event_alarms')); if (is_null($data)) { return false; } $prefs->setValue('event_alarms', serialize($data)); try { $alarms = $registry->callAppMethod('kronolith', 'listAlarms', array('args' => array($_SERVER['REQUEST_TIME']))); if (!empty($alarms)) { $horde_alarm = $injector->getInstance('Horde_Alarm'); foreach ($alarms as $alarm) { $alarm['start'] = new Horde_Date($alarm['start']); $alarm['end'] = new Horde_Date($alarm['end']); $horde_alarm->set($alarm); } } } catch (Exception $e) { } return true; }
/** * Create code needed for addressbook selection. * * @param array $data Data items: * <pre> * 'fields' - (array) Hash containing addressbook sources as keys and an * array of search fields as values. * 'sources' - (array) List of selected addressbooks. * </pre> * * @return string HTML UI code. */ public static function addressbooks($data) { global $registry; $selected = $unselected = array(); $out = ''; if (!$registry->hasMethod('contacts/sources')) { return; } $t = $GLOBALS['injector']->createInstance('Horde_Template'); $t->setOption('gettext', true); try { $readable = $registry->call('contacts/sources'); } catch (Horde_Exception $e) { $readable = array(); } try { $writeable = $registry->call('contacts/sources', array(true)); } catch (Horde_Exception $e) { $writeable = array(); } if (count($readable) == 1) { // Only one source, no need to display the selection widget $data['sources'] = array_keys($readable); } foreach ($data['sources'] as $source) { if (!empty($readable[$source])) { $selected[$source] = $readable[$source]; } } foreach (array_diff(array_keys($readable), $data['sources']) as $val) { $unselected[$val] = $readable[$val]; } if (!empty($selected) || !empty($unselected)) { $out = Horde_Core_Prefs_Ui_Widgets::source(array('mainlabel' => Horde_Core_Translation::t("Choose the order of address books to search when expanding addresses."), 'selectlabel' => Horde_Core_Translation::t("Selected address books:"), 'sources' => array(array('selected' => $selected, 'unselected' => $unselected)), 'unselectlabel' => Horde_Core_Translation::t("Available address books:"))); $t->set('selected', count($unselected) > 1); $js = array(); foreach (array_keys($readable) as $source) { $tmp = $tmpsel = array(); try { foreach ($registry->call('contacts/fields', array($source)) as $field) { if ($field['search']) { $tmp[] = array('name' => $field['name'], 'label' => $field['label']); if (isset($data['fields'][$source]) && in_array($field['name'], $data['fields'][$source])) { $tmpsel[] = $field['name']; } } } } catch (Horde_Exception $e) { } $js[$source] = array('entries' => $tmp, 'selected' => $tmpsel); } $GLOBALS['injector']->getInstance('Horde_PageOutput')->addInlineJsVars(array('HordeAddressbooksPrefs.fields' => $js, 'HordeAddressbooksPrefs.nonetext' => Horde_Core_Translation::t("No address book selected."))); } return $out . $t->fetch($GLOBALS['registry']->get('templates', 'horde') . '/prefs/addressbooks.html'); }
protected function _renderVarInput_NagMethod($form, $var, $vars) { $varname = htmlspecialchars($var->getVarName()); $varvalue = $var->getValue($vars); $on = !empty($varvalue) && (!isset($varvalue['on']) || !empty($varvalue['on'])); $html = sprintf('<input id="%soff" type="radio" class="radio" name="%s[on]" value="0"%s %s/><label for="%soff"> %s</label><br />', $varname, $varname, $on ? '' : ' checked="checked"', $this->_getActionScripts($form, $var), $varname, _("Use default notification method")) . sprintf('<input type="radio" class="radio" name="%s[on]" value="1"%s %s/><label for="%soff"> %s</label>', $varname, $on ? ' checked="checked"' : '', $this->_getActionScripts($form, $var), $varname, _("Use custom notification method")); if ($on) { Horde_Core_Prefs_Ui_Widgets::alarmInit(); $html .= '<br />'; $params = array('pref' => 'task_alarms', 'label' => ''); if (!empty($varvalue) && !isset($varvalue['on']) || $form->isSubmitted()) { $params['value'] = $varvalue; } $html .= Horde_Core_Prefs_Ui_Widgets::alarm($params); } return $html; }
}); $_prefs['purge_sentmail_interval'] = array('value' => 0, 'type' => 'enum', 'enum' => array_merge(array(0 => _("Never")), Horde_LoginTasks::getLabels()), 'desc' => _("Purge sent mail how often:"), 'help' => 'prefs-purge_sentmail_interval', 'suppress' => function () { return !$GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_FOLDERS); }); $_prefs['purge_sentmail_keep'] = array('value' => 30, 'type' => 'number', 'desc' => _("Purge messages in sent mail mailbox(es) older than this amount of days."), 'help' => 'prefs-purge_sentmail_keep', 'requires' => array('purge_sentmail_interval'), 'suppress' => function () { return !$GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->access(IMP_Imap::ACCESS_FOLDERS); }); // *** Addressbook Preferences *** $prefGroups['addressbooks'] = array('column' => _("Compose"), 'label' => _("Address Books"), 'desc' => _("Select address book sources for adding/searching."), 'members' => array('save_recipients', 'sourceselect', 'add_source'), 'suppress' => function () { $contacts_app = $GLOBALS['registry']->hasInterface('contacts'); return !$contacts_app || !$GLOBALS['registry']->hasPermission($contacts_app); }); $_prefs['save_recipients'] = array('value' => 0, 'type' => 'checkbox', 'desc' => _("Save recipients automatically to the default address book?")); // address book selection widget $_prefs['sourceselect'] = array('type' => 'special', 'handler' => 'IMP_Prefs_Special_Sourceselect', 'requires_nolock' => array('search_sources'), 'on_init' => function ($ui) { Horde_Core_Prefs_Ui_Widgets::addressbooksInit(); }); // Address book(s) to use when expanding addresses // Refer to Turba's config/backends.php for possible source values // // You can provide default values this way: // 'value' => json_encode(array('source_one', 'source_two')) $_prefs['search_sources'] = array('value' => '', 'on_change' => function () { $GLOBALS['injector']->getInstance('IMP_Contacts')->clearCache(); }); // Field(s) to use when expanding addresses // Refer to Turba's config/backends.php for possible source and field values // // If you want to provide a default value, this field depends on the // search_sources preference. For example: // 'value' => json_encode(array(