function tbg_get_timezones() { return \thebuggenie\core\framework\I18n::getTimezones(); }
/** * Return associated configuration sections * * @param I18n $i18n The translation object * * @return array */ public static function getConfigSections($i18n) { $config_sections = array('general' => array(), self::CONFIGURATION_SECTION_MODULES => array()); if (Context::getScope()->getID() == 1) { $config_sections['general'][self::CONFIGURATION_SECTION_SCOPES] = array('route' => 'configure_scopes', 'description' => $i18n->__('Scopes'), 'icon' => 'scopes', 'details' => $i18n->__('Scopes are self-contained Bug Genie environments. Configure them here.')); } $config_sections['general'][self::CONFIGURATION_SECTION_SETTINGS] = array('route' => 'configure_settings', 'description' => $i18n->__('Settings'), 'icon' => 'general_small', 'details' => $i18n->__('Every setting in the bug genie can be adjusted in this section.')); $config_sections['general'][self::CONFIGURATION_SECTION_THEMES] = array('route' => 'configuration_themes', 'description' => $i18n->__('Theme'), 'icon' => 'themes', 'details' => $i18n->__('Configure the selected theme from this section')); $config_sections['general'][self::CONFIGURATION_SECTION_ROLES] = array('route' => 'configure_roles', 'description' => $i18n->__('Roles'), 'icon' => 'roles', 'details' => $i18n->__('Configure roles in this section')); $config_sections['general'][self::CONFIGURATION_SECTION_AUTHENTICATION] = array('route' => 'configure_authentication', 'description' => $i18n->__('Authentication'), 'icon' => 'authentication', 'details' => $i18n->__('Configure the authentication method in this section')); if (Context::getScope()->isUploadsEnabled()) { $config_sections['general'][self::CONFIGURATION_SECTION_UPLOADS] = array('route' => 'configure_files', 'description' => $i18n->__('Uploads and attachments'), 'icon' => 'files', 'details' => $i18n->__('All settings related to file uploads are controlled from this section.')); } $config_sections['general'][self::CONFIGURATION_SECTION_IMPORT] = array('route' => 'import_home', 'description' => $i18n->__('Import data'), 'icon' => 'import_small', 'details' => $i18n->__('Import data from CSV files and other sources.')); $config_sections['general'][self::CONFIGURATION_SECTION_PROJECTS] = array('route' => 'configure_projects', 'description' => $i18n->__('Projects'), 'icon' => 'projects', 'details' => $i18n->__('Set up all projects in this configuration section.')); $config_sections['general'][self::CONFIGURATION_SECTION_ISSUETYPES] = array('route' => 'configure_issuetypes', 'icon' => 'issuetypes', 'description' => $i18n->__('Issue types'), 'details' => $i18n->__('Manage issue types and configure issue fields for each issue type here')); $config_sections['general'][self::CONFIGURATION_SECTION_ISSUEFIELDS] = array('route' => 'configure_issuefields', 'icon' => 'resolutiontypes', 'description' => $i18n->__('Issue fields'), 'details' => $i18n->__('Status types, resolution types, categories, custom fields, etc. are configurable from this section.')); $config_sections['general'][self::CONFIGURATION_SECTION_WORKFLOW] = array('route' => 'configure_workflow', 'icon' => 'workflow', 'description' => $i18n->__('Workflow'), 'details' => $i18n->__('Set up and edit workflow configuration from this section')); $config_sections['general'][self::CONFIGURATION_SECTION_USERS] = array('route' => 'configure_users', 'description' => $i18n->__('Users, teams and clients'), 'icon' => 'users', 'details' => $i18n->__('Manage users, user teams and clients from this section.')); $config_sections['general'][self::CONFIGURATION_SECTION_MODULES] = array('route' => 'configure_modules', 'description' => $i18n->__('Manage modules'), 'icon' => 'modules', 'details' => $i18n->__('Manage Bug Genie extensions from this section. New modules are installed from here.'), 'module' => 'core'); foreach (Context::getModules() as $module) { if ($module->hasConfigSettings() && $module->isEnabled()) { $config_sections[self::CONFIGURATION_SECTION_MODULES][] = array('route' => array('configure_module', array('config_module' => $module->getName())), 'description' => Context::geti18n()->__($module->getConfigTitle()), 'icon' => $module->getName(), 'details' => Context::geti18n()->__($module->getConfigDescription()), 'module' => $module->getName()); } } return $config_sections; }
/** * Reinitialize the i18n object, used only when changing the language in the middle of something * * @param string $language The language code to change to */ public static function reinitializeI18n($language = null) { if (!$language) { self::$_i18n = new I18n(Settings::get('language')); } else { Logging::log('Changing language to ' . $language); self::$_i18n = new I18n($language); self::$_i18n->initialize(); } }
/** * "My account" page * * @param \thebuggenie\core\framework\Request $request */ public function runMyAccount(framework\Request $request) { $this->forward403unless($this->getUser()->hasPageAccess('account')); $categories = \thebuggenie\core\entities\Category::getAll(); $projects = []; $project_subscription_key = \thebuggenie\core\framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ISSUES_MY_PROJECTS; $category_subscription_key = \thebuggenie\core\framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ISSUES_MY_PROJECTS_CATEGORY; $category_notification_key = \thebuggenie\core\framework\Settings::SETTINGS_USER_NOTIFY_NEW_ISSUES_MY_PROJECTS_CATEGORY; $subscriptionssettings = framework\Settings::getSubscriptionsSettings(); $notificationsettings = framework\Settings::getNotificationSettings(); $selected_project_subscriptions = []; $selected_category_subscriptions = []; $selected_category_notifications = []; $this->all_projects_subscription = $this->getUser()->getNotificationSetting($project_subscription_key, false)->isOn(); foreach (\thebuggenie\core\entities\Project::getAll() as $project_id => $project) { if ($project->hasAccess()) { $projects[$project_id] = $project; if ($this->getUser()->getNotificationSetting($project_subscription_key . '_' . $project_id, false)->isOn()) { $selected_project_subscriptions[] = $project_id; } } } foreach ($categories as $category_id => $category) { if ($this->getUser()->getNotificationSetting($category_subscription_key . '_' . $category_id, false)->isOn()) { $selected_category_subscriptions[] = $category_id; } if ($this->getUser()->getNotificationSetting($category_notification_key . '_' . $category_id, false)->isOn()) { $selected_category_notifications[] = $category_id; } } $this->selected_project_subscriptions = $this->all_projects_subscription ? [] : $selected_project_subscriptions; $this->projects = $projects; $this->selected_category_subscriptions = $selected_category_subscriptions; $this->selected_category_notifications = $selected_category_notifications; $this->categories = $categories; $this->subscriptionssettings = $subscriptionssettings; $this->notificationsettings = $notificationsettings; $this->has_autopassword = framework\Context::hasMessage('auto_password'); if ($this->has_autopassword) { $this->autopassword = framework\Context::getMessage('auto_password'); } if ($request->isPost() && $request->hasParameter('mode')) { switch ($request['mode']) { case 'information': if (!$request['buddyname'] || !$request['email']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please fill out all the required fields'))); } $this->getUser()->setBuddyname($request['buddyname']); $this->getUser()->setRealname($request['realname']); $this->getUser()->setHomepage($request['homepage']); $this->getUser()->setEmailPrivate((bool) $request['email_private']); $this->getUser()->setUsesGravatar((bool) $request['use_gravatar']); $this->getUser()->setTimezone($request->getRawParameter('timezone')); $this->getUser()->setLanguage($request['profile_language']); if ($this->getUser()->getEmail() != $request['email']) { if (\thebuggenie\core\framework\Event::createNew('core', 'changeEmail', $this->getUser(), array('email' => $request['email']))->triggerUntilProcessed()->isProcessed() == false) { $this->getUser()->setEmail($request['email']); } } $this->getUser()->save(); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Profile information saved'))); break; case 'settings': $this->getUser()->setPreferredWikiSyntax($request['syntax_articles']); $this->getUser()->setPreferredIssuesSyntax($request['syntax_issues']); $this->getUser()->setPreferredCommentsSyntax($request['syntax_comments']); $this->getUser()->setKeyboardNavigationEnabled($request['enable_keyboard_navigation']); $this->getUser()->save(); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Profile settings saved'))); break; case 'notificationsettings': $this->getUser()->setDesktopNotificationsNewTabEnabled($request['enable_desktop_notifications_new_tab']); foreach ($subscriptionssettings as $setting => $description) { if ($setting == framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ISSUES_MY_PROJECTS_CATEGORY) { foreach ($categories as $category_id => $category) { if ($request->hasParameter('core_' . $setting . '_' . $category_id)) { $this->getUser()->setNotificationSetting($setting . '_' . $category_id, true)->save(); } else { $this->getUser()->setNotificationSetting($setting . '_' . $category_id, false)->save(); } } } elseif ($setting == framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ISSUES_MY_PROJECTS) { if ($request->hasParameter('core_' . $setting . '_all')) { $this->getUser()->setNotificationSetting($setting, true)->save(); foreach (\thebuggenie\core\entities\Project::getAll() as $project_id => $project) { $this->getUser()->setNotificationSetting($setting . '_' . $project_id, false)->save(); } } else { $this->getUser()->setNotificationSetting($setting, false)->save(); foreach (\thebuggenie\core\entities\Project::getAll() as $project_id => $project) { if ($request->hasParameter('core_' . $setting . '_' . $project_id)) { $this->getUser()->setNotificationSetting($setting . '_' . $project_id, true)->save(); } else { $this->getUser()->setNotificationSetting($setting . '_' . $project_id, false)->save(); } } } } else { if ($request->hasParameter('core_' . $setting)) { $this->getUser()->setNotificationSetting($setting, true)->save(); } else { $this->getUser()->setNotificationSetting($setting, false)->save(); } } } foreach ($notificationsettings as $setting => $description) { if ($setting == framework\Settings::SETTINGS_USER_NOTIFY_NEW_ISSUES_MY_PROJECTS_CATEGORY) { foreach ($categories as $category_id => $category) { if ($request->hasParameter('core_' . $setting . '_' . $category_id)) { $this->getUser()->setNotificationSetting($setting . '_' . $category_id, true)->save(); } else { $this->getUser()->setNotificationSetting($setting . '_' . $category_id, false)->save(); } } } else { if ($request->hasParameter('core_' . $setting)) { if ($setting == framework\Settings::SETTINGS_USER_NOTIFY_GROUPED_NOTIFICATIONS) { $this->getUser()->setNotificationSetting($setting, $request->getParameter('core_' . $setting))->save(); } else { $this->getUser()->setNotificationSetting($setting, true)->save(); } } else { $this->getUser()->setNotificationSetting($setting, false)->save(); } } } \thebuggenie\core\framework\Event::createNew('core', 'mainActions::myAccount::saveNotificationSettings')->trigger(compact('request', 'categories')); $this->getUser()->save(); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Notification settings saved'))); break; case 'module': foreach (framework\Context::getModules() as $module_name => $module) { if ($request['target_module'] == $module_name && $module->hasAccountSettings()) { if ($module->postAccountSettings($request)) { return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Settings saved'))); } else { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('An error occured'))); } } } break; } } $this->rnd_no = rand(); $this->languages = framework\I18n::getLanguages(); $this->timezones = framework\I18n::getTimezones(); $this->error = framework\Context::getMessageAndClear('error'); $this->username_chosen = framework\Context::getMessageAndClear('username_chosen'); $this->openid_used = framework\Context::getMessageAndClear('openid_used'); $this->rsskey_generated = framework\Context::getMessageAndClear('rsskey_generated'); $this->selected_tab = 'profile'; if ($this->rsskey_generated) { $this->selected_tab = 'security'; } }
<?php $themes = \thebuggenie\core\framework\Context::getThemes(); $languages = \thebuggenie\core\framework\I18n::getLanguages(); ?> <table style="clear: both; width: 700px; margin-top: 5px;" class="padded_table" cellpadding=0 cellspacing=0> <tr> <td><label for="disableelevatedlogin"><?php echo __('Require re-authentication'); ?> </label></td> <td> <select name="<?php echo \thebuggenie\core\framework\Settings::SETTING_ELEVATED_LOGIN_DISABLED; ?> " id="disableelevatedlogin" style="width: 400px;"<?php if ($access_level != \thebuggenie\core\framework\Settings::ACCESS_FULL) { ?> disabled<?php } ?> > <option value=0<?php if (\thebuggenie\core\framework\Settings::isElevatedLoginRequired()) { ?> selected<?php } ?> ><?php echo __('You need to re-enter your password to access the configuration section'); ?>
/** * "My account" page * * @param \thebuggenie\core\framework\Request $request */ public function runMyAccount(framework\Request $request) { $this->forward403unless($this->getUser()->hasPageAccess('account')); $notificationsettings = array(); $i18n = $this->getI18n(); $notificationsettings[framework\Settings::SETTINGS_USER_SUBSCRIBE_CREATED_UPDATED_COMMENTED_ISSUES] = $i18n->__('Automatically subscribe to issues I get involved in'); $notificationsettings[framework\Settings::SETTINGS_USER_SUBSCRIBE_CREATED_UPDATED_COMMENTED_ARTICLES] = $i18n->__('Automatically subscribe to article I get involved in'); $notificationsettings[framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ISSUES_MY_PROJECTS] = $i18n->__('Automatically subscribe to new issues that are created in my project(s)'); $notificationsettings[framework\Settings::SETTINGS_USER_SUBSCRIBE_NEW_ARTICLES_MY_PROJECTS] = $i18n->__('Automatically subscribe to new articles that are created in my project(s)'); $this->notificationsettings = $notificationsettings; $this->has_autopassword = framework\Context::hasMessage('auto_password'); if ($this->has_autopassword) { $this->autopassword = framework\Context::getMessage('auto_password'); } if ($request->isPost() && $request->hasParameter('mode')) { switch ($request['mode']) { case 'information': if (!$request['buddyname'] || !$request['email']) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('Please fill out all the required fields'))); } $this->getUser()->setBuddyname($request['buddyname']); $this->getUser()->setRealname($request['realname']); $this->getUser()->setHomepage($request['homepage']); $this->getUser()->setEmailPrivate((bool) $request['email_private']); $this->getUser()->setUsesGravatar((bool) $request['use_gravatar']); $this->getUser()->setTimezone($request->getRawParameter('timezone')); $this->getUser()->setLanguage($request['profile_language']); if ($this->getUser()->getEmail() != $request['email']) { if (\thebuggenie\core\framework\Event::createNew('core', 'changeEmail', $this->getUser(), array('email' => $request['email']))->triggerUntilProcessed()->isProcessed() == false) { $this->getUser()->setEmail($request['email']); } } $this->getUser()->save(); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Profile information saved'))); break; case 'settings': $this->getUser()->setPreferredWikiSyntax($request['syntax_articles']); $this->getUser()->setPreferredIssuesSyntax($request['syntax_issues']); $this->getUser()->setPreferredCommentsSyntax($request['syntax_comments']); $this->getUser()->setKeyboardNavigationEnabled($request['enable_keyboard_navigation']); foreach ($notificationsettings as $setting => $description) { if ($request->hasParameter('core_' . $setting)) { $this->getUser()->setNotificationSetting($setting, true)->save(); } else { $this->getUser()->setNotificationSetting($setting, false)->save(); } } \thebuggenie\core\framework\Event::createNew('core', 'mainActions::myAccount::saveNotificationSettings')->trigger(compact('request')); $this->getUser()->save(); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Profile settings saved'))); break; case 'module': foreach (framework\Context::getModules() as $module_name => $module) { if ($request['target_module'] == $module_name && $module->hasAccountSettings()) { if ($module->postAccountSettings($request)) { return $this->renderJSON(array('title' => framework\Context::getI18n()->__('Settings saved'))); } else { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__('An error occured'))); } } } break; } } $this->rnd_no = rand(); $this->languages = framework\I18n::getLanguages(); $this->timezones = framework\I18n::getTimezones(); $this->error = framework\Context::getMessageAndClear('error'); $this->username_chosen = framework\Context::getMessageAndClear('username_chosen'); $this->openid_used = framework\Context::getMessageAndClear('openid_used'); $this->rsskey_generated = framework\Context::getMessageAndClear('rsskey_generated'); $this->selected_tab = 'profile'; if ($this->rsskey_generated) { $this->selected_tab = 'security'; } }
public function componentReglang() { $this->languages = framework\I18n::getLanguages(); $this->timezones = tbg_get_timezones(); }