$temp = new admin_settingpage('langsettings', get_string('languagesettings', 'admin'));
$temp->add(new admin_setting_configselect('lang', get_string('lang', 'admin'), get_string('configlang', 'admin'), current_language(), get_list_of_languages())); // $CFG->lang might be set in installer already, default en or en_utf8 is in setup.php
$temp->add(new admin_setting_configcheckbox('langmenu', get_string('langmenu', 'admin'), get_string('configlangmenu', 'admin'), 1));
-$temp->add(new admin_setting_configtext('langlist', get_string('langlist', 'admin'), get_string('configlanglist', 'admin'), '', PARAM_NOTAGS));
+$temp->add(new admin_setting_langlist());
$temp->add(new admin_setting_configcheckbox('langcache', get_string('langcache', 'admin'), get_string('configlangcache', 'admin'), 1));
$temp->add(new admin_setting_configtext('locale', get_string('localetext', 'admin'), get_string('configlocale', 'admin'), '', PARAM_FILE));
$ADMIN->add('language', new admin_externalpage('langedit', get_string('langedit', 'admin'), "$CFG->wwwroot/$CFG->admin/lang.php"));
$ADMIN->add('language', new admin_externalpage('langimport', get_string('langpacks', 'admin'), "$CFG->wwwroot/$CFG->admin/langimport.php"));
-
-
-
?>
}
+class admin_setting_langlist extends admin_setting_configtext {
+ function admin_setting_langlist() {
+ parent::admin_setting_configtext('langlist', get_string('langlist', 'admin'), get_string('configlanglist', 'admin'), '', PARAM_NOTAGS);
+ }
+
+ function write_setting($data) {
+ $return = parent::write_setting($data);
+ get_list_of_languages(true);//refresh the list
+ return $return;
+ }
+}
+
class admin_setting_backupselect extends admin_setting_configselect {
function admin_setting_backupselect($name, $visiblename, $description, $default, $choices) {
* Returns a list of language codes and their full names
* hides the _local files from everyone.
* @param bool refreshcache force refreshing of lang cache
+ * @param bool returnall ignore langlist, return all languages available
* @return array An associative array with contents in the form of LanguageCode => LanguageName
*/
-function get_list_of_languages($refreshcache=false, $forceall=false) {
+function get_list_of_languages($refreshcache=false, $returnall=false) {
global $CFG;
$filetocheck = 'langconfig.php';
- if (!$refreshcache && !$forceall && !empty($CFG->langcache) && file_exists($CFG->dataroot .'/cache/languages')) {
+ if (!$refreshcache && !$returnall && !empty($CFG->langcache) && file_exists($CFG->dataroot .'/cache/languages')) {
/// read available langs from cache
$lines = file($CFG->dataroot .'/cache/languages');
return $languages;
}
- if (!$forceall && !empty($CFG->langlist)) {
+ if (!$returnall && !empty($CFG->langlist)) {
/// return only languages allowed in langlist admin setting
$langlist = explode(',', $CFG->langlist);
}
if ($refreshcache && !empty($CFG->langcache)) {
- if ($forceall) {
+ if ($returnall) {
// we have a list of all langs only, just delete old cache
@unlink($CFG->dataroot.'/cache/languages');