Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file defines settingpages and externalpages under the "appearance" category$capabilities = array('moodle/my:configsyspages','moodle/tag:manage');if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) { // speedup for non-admins, add all caps used on this page// Logos section.$temp = new admin_settingpage('logos', new lang_string('logossettings', 'admin'));// Logo file setting.$title = get_string('logo', 'admin');$description = get_string('logo_desc', 'admin');$setting = new admin_setting_configstoredfile('core_admin/logo', $title, $description, 'logo', 0,['maxfiles' => 1, 'accepted_types' => ['.jpg', '.png']]);$setting->set_updatedcallback('theme_reset_all_caches');$temp->add($setting);// Small logo file setting.$title = get_string('logocompact', 'admin');$description = get_string('logocompact_desc', 'admin');$setting = new admin_setting_configstoredfile('core_admin/logocompact', $title, $description, 'logocompact', 0,['maxfiles' => 1, 'accepted_types' => ['.jpg', '.png']]);$setting->set_updatedcallback('theme_reset_all_caches');$temp->add($setting);// Favicon file setting.$title = get_string('favicon', 'admin');$description = get_string('favicon_desc', 'admin');$setting = new admin_setting_configstoredfile('core_admin/favicon', $title, $description, 'favicon', 0,['maxfiles' => 1, 'accepted_types' => ['image']]);$setting->set_updatedcallback('theme_reset_all_caches');$temp->add($setting);$ADMIN->add('appearance', $temp);// Course colours section.$temp = new admin_settingpage('coursecolors', new lang_string('coursecolorsettings', 'admin'));$temp->add(new admin_setting_heading('coursecolorheading', '',new lang_string('coursecolorheading_desc', 'admin')));$basecolors = ['#81ecec', '#74b9ff', '#a29bfe', '#dfe6e9', '#00b894','#0984e3', '#b2bec3', '#fdcb6e', '#fd79a8', '#6c5ce7'];foreach ($basecolors as $key => $color) {$number = $key + 1;$name = 'core_admin/coursecolor' . $number;$title = get_string('coursecolor', 'admin', $number);$setting = new admin_setting_configcolourpicker($name, $title, '', $color);$temp->add($setting);}$ADMIN->add('appearance', $temp);// Calendar settings.$temp = new admin_settingpage('calendar', new lang_string('calendarsettings','admin'));$temp->add(new admin_setting_configselect('calendartype', new lang_string('calendartype', 'admin'),new lang_string('calendartype_desc', 'admin'), 'gregorian', \core_calendar\type_factory::get_list_of_calendar_types()));$temp->add(new admin_setting_special_adminseesall());//this is hacky because we do not want to include the stuff from calendar/lib.php$temp->add(new admin_setting_configselect('calendar_site_timeformat', new lang_string('pref_timeformat', 'calendar'),new lang_string('explain_site_timeformat', 'calendar'), '0',array('0' => new lang_string('default', 'calendar'),'%I:%M %p' => new lang_string('timeformat_12', 'calendar'),'%H:%M' => new lang_string('timeformat_24', 'calendar'))));$temp->add(new admin_setting_configselect('calendar_startwday', new lang_string('configstartwday', 'admin'),new lang_string('helpstartofweek', 'admin'), get_string('firstdayofweek', 'langconfig'),array(0 => new lang_string('sunday', 'calendar'),1 => new lang_string('monday', 'calendar'),2 => new lang_string('tuesday', 'calendar'),3 => new lang_string('wednesday', 'calendar'),4 => new lang_string('thursday', 'calendar'),5 => new lang_string('friday', 'calendar'),6 => new lang_string('saturday', 'calendar'))));$temp->add(new admin_setting_special_calendar_weekend());$options = array(365 => new lang_string('numyear', '', 1),270 => new lang_string('nummonths', '', 9),180 => new lang_string('nummonths', '', 6),150 => new lang_string('nummonths', '', 5),120 => new lang_string('nummonths', '', 4),90 => new lang_string('nummonths', '', 3),60 => new lang_string('nummonths', '', 2),30 => new lang_string('nummonth', '', 1),21 => new lang_string('numweeks', '', 3),14 => new lang_string('numweeks', '', 2),7 => new lang_string('numweek', '', 1),6 => new lang_string('numdays', '', 6),5 => new lang_string('numdays', '', 5),4 => new lang_string('numdays', '', 4),3 => new lang_string('numdays', '', 3),2 => new lang_string('numdays', '', 2),1 => new lang_string('numday', '', 1));$temp->add(new admin_setting_configselect('calendar_lookahead', new lang_string('configlookahead', 'admin'), new lang_string('helpupcominglookahead', 'admin'), 21, $options));$options = array();for ($i=1; $i<=20; $i++) {$options[$i] = $i;}$temp->add(new admin_setting_configselect('calendar_maxevents',new lang_string('configmaxevents','admin'),new lang_string('helpupcomingmaxevents', 'admin'),10,$options));$temp->add(new admin_setting_configcheckbox('enablecalendarexport', new lang_string('enablecalendarexport', 'admin'), new lang_string('configenablecalendarexport','admin'), 1));// Calendar custom export settings.$days = array(365 => new lang_string('numdays', '', 365),180 => new lang_string('numdays', '', 180),150 => new lang_string('numdays', '', 150),120 => new lang_string('numdays', '', 120),90 => new lang_string('numdays', '', 90),60 => new lang_string('numdays', '', 60),30 => new lang_string('numdays', '', 30),5 => new lang_string('numdays', '', 5));$temp->add(new admin_setting_configcheckbox('calendar_customexport', new lang_string('configcalendarcustomexport', 'admin'), new lang_string('helpcalendarcustomexport','admin'), 1));$temp->add(new admin_setting_configselect('calendar_exportlookahead', new lang_string('configexportlookahead','admin'), new lang_string('helpexportlookahead', 'admin'), 365, $days));$temp->add(new admin_setting_configselect('calendar_exportlookback', new lang_string('configexportlookback','admin'), new lang_string('helpexportlookback', 'admin'), 5, $days));$temp->add(new admin_setting_configtext('calendar_exportsalt', new lang_string('calendarexportsalt','admin'), new lang_string('configcalendarexportsalt', 'admin'), random_string(60)));$temp->add(new admin_setting_configcheckbox('calendar_showicalsource', new lang_string('configshowicalsource', 'admin'), new lang_string('helpshowicalsource','admin'), 1));$ADMIN->add('appearance', $temp);// blog$temp = new admin_settingpage('blog', new lang_string('blog','blog'), 'moodle/site:config', empty($CFG->enableblogs));$temp->add(new admin_setting_configcheckbox('useblogassociations', new lang_string('useblogassociations', 'blog'), new lang_string('configuseblogassociations','blog'), 1));$temp->add(new admin_setting_bloglevel('bloglevel', new lang_string('bloglevel', 'admin'), new lang_string('configbloglevel', 'admin'), 4, array(BLOG_GLOBAL_LEVEL => new lang_string('worldblogs','blog'),BLOG_SITE_LEVEL => new lang_string('siteblogs','blog'),BLOG_USER_LEVEL => new lang_string('personalblogs','blog'))));$temp->add(new admin_setting_configcheckbox('useexternalblogs', new lang_string('useexternalblogs', 'blog'), new lang_string('configuseexternalblogs','blog'), 1));$temp->add(new admin_setting_configselect('externalblogcrontime', new lang_string('externalblogcrontime', 'blog'), new lang_string('configexternalblogcrontime', 'blog'), 86400,array(43200 => new lang_string('numhours', '', 12),86400 => new lang_string('numhours', '', 24),172800 => new lang_string('numdays', '', 2),604800 => new lang_string('numdays', '', 7))));$temp->add(new admin_setting_configtext('maxexternalblogsperuser', new lang_string('maxexternalblogsperuser','blog'), new lang_string('configmaxexternalblogsperuser', 'blog'), 1));$temp->add(new admin_setting_configcheckbox('blogusecomments', new lang_string('enablecomments', 'admin'), new lang_string('configenablecomments', 'admin'), 1));$temp->add(new admin_setting_configcheckbox('blogshowcommentscount', new lang_string('showcommentscount', 'admin'), new lang_string('configshowcommentscount', 'admin'), 1));$ADMIN->add('appearance', $temp);// Navigation settings$temp = new admin_settingpage('navigation', new lang_string('navigation'));$temp->add(new admin_setting_configcheckbox('enabledashboard',new lang_string('enabledashboard', 'admin'),new lang_string('enabledashboard_help', 'admin'),1));$choices = [HOMEPAGE_SITE => new lang_string('home')];if (!isset($CFG->enabledashboard) || $CFG->enabledashboard) {$choices[HOMEPAGE_MY] = new lang_string('mymoodle', 'admin');}$choices[HOMEPAGE_MYCOURSES] = new lang_string('mycourses', 'admin');$choices[HOMEPAGE_USER] = new lang_string('userpreference', 'admin');$temp->add(new admin_setting_configselect('defaulthomepage', new lang_string('defaulthomepage', 'admin'),new lang_string('configdefaulthomepage', 'admin'), get_default_home_page(), $choices));if (!isset($CFG->enabledashboard) || $CFG->enabledashboard) {$temp->add(new admin_setting_configcheckbox('allowguestmymoodle',new lang_string('allowguestmymoodle', 'admin'),new lang_string('configallowguestmymoodle', 'admin'),1));}$temp->add(new admin_setting_configcheckbox('navshowfullcoursenames', new lang_string('navshowfullcoursenames', 'admin'), new lang_string('navshowfullcoursenames_help', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('navshowcategories', new lang_string('navshowcategories', 'admin'), new lang_string('confignavshowcategories', 'admin'), 1));$temp->add(new admin_setting_configcheckbox('navshowmycoursecategories', new lang_string('navshowmycoursecategories', 'admin'), new lang_string('navshowmycoursecategories_help', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('navshowallcourses', new lang_string('navshowallcourses', 'admin'), new lang_string('confignavshowallcourses', 'admin'), 0));$sortoptions = array('sortorder' => new lang_string('sort_sortorder', 'admin'),'fullname' => new lang_string('sort_fullname', 'admin'),'shortname' => new lang_string('sort_shortname', 'admin'),'idnumber' => new lang_string('sort_idnumber', 'admin'),);$temp->add(new admin_setting_configselect('navsortmycoursessort', new lang_string('navsortmycoursessort', 'admin'), new lang_string('navsortmycoursessort_help', 'admin'), 'sortorder', $sortoptions));$temp->add(new admin_setting_configcheckbox('navsortmycourseshiddenlast',new lang_string('navsortmycourseshiddenlast', 'admin'),new lang_string('navsortmycourseshiddenlast_help', 'admin'),1));$temp->add(new admin_setting_configtext('navcourselimit', new lang_string('navcourselimit', 'admin'),new lang_string('confignavcourselimit', 'admin'), 10, PARAM_INT));$temp->add(new admin_setting_configcheckbox('usesitenameforsitepages', new lang_string('usesitenameforsitepages', 'admin'), new lang_string('configusesitenameforsitepages', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('linkadmincategories', new lang_string('linkadmincategories', 'admin'), new lang_string('linkadmincategories_help', 'admin'), 1));$temp->add(new admin_setting_configcheckbox('navshowfrontpagemods', new lang_string('navshowfrontpagemods', 'admin'), new lang_string('navshowfrontpagemods_help', 'admin'), 1));$temp->add(new admin_setting_configcheckbox('navadduserpostslinks', new lang_string('navadduserpostslinks', 'admin'), new lang_string('navadduserpostslinks_help', 'admin'), 1));$ADMIN->add('appearance', $temp);// "htmlsettings" settingpage$temp = new admin_settingpage('htmlsettings', new lang_string('htmlsettings', 'admin'));$sitenameintitleoptions = ['shortname' => new lang_string('shortname'),'fullname' => new lang_string('fullname'),];$sitenameintitleconfig = new admin_setting_configselect('sitenameintitle',new lang_string('sitenameintitle', 'admin'),new lang_string('sitenameintitle_help', 'admin'),'shortname',$sitenameintitleoptions);$temp->add($sitenameintitleconfig);$temp->add(new admin_setting_configcheckbox('formatstringstriptags', new lang_string('stripalltitletags', 'admin'), new lang_string('configstripalltitletags', 'admin'), 1));$temp->add(new admin_setting_emoticons());$ADMIN->add('appearance', $temp);$ADMIN->add('appearance', new admin_externalpage('resetemoticons', new lang_string('emoticonsreset', 'admin'),new moodle_url('/admin/resetemoticons.php'), 'moodle/site:config', true));// "documentation" settingpage$temp = new admin_settingpage('documentation', new lang_string('moodledocs'));$temp->add(new admin_setting_configtext('docroot', new lang_string('docroot', 'admin'), new lang_string('configdocroot', 'admin'), 'https://docs.moodle.org', PARAM_URL));$ltemp = array('' => get_string('forceno'));$ltemp += get_string_manager()->get_list_of_translations(true);$temp->add(new admin_setting_configselect('doclang', get_string('doclang', 'admin'), get_string('configdoclang', 'admin'), '', $ltemp));$temp->add(new admin_setting_configcheckbox('doctonewwindow', new lang_string('doctonewwindow', 'admin'), new lang_string('configdoctonewwindow', 'admin'), 0));$temp->add(new admin_setting_configtext('coursecreationguide',new lang_string('coursecreationguide', 'admin'),new lang_string('coursecreationguide_help', 'admin'),'https://moodle.academy/coursequickstart',PARAM_URL));$ADMIN->add('appearance', $temp);if (!empty($CFG->enabledashboard)) {$temp = new admin_externalpage('mypage', new lang_string('mypage', 'admin'), $CFG->wwwroot . '/my/indexsys.php','moodle/my:configsyspages');$ADMIN->add('appearance', $temp);}$temp = new admin_externalpage('profilepage', new lang_string('myprofile', 'admin'), $CFG->wwwroot . '/user/profilesys.php','moodle/my:configsyspages');$ADMIN->add('appearance', $temp);// coursecontact is the person responsible for course - usually manages enrolments, receives notification, etc.$temp = new admin_settingpage('coursecontact', new lang_string('courses'));$temp->add(new admin_setting_special_coursecontact());$temp->add(new admin_setting_configcheckbox('coursecontactduplicates',new lang_string('coursecontactduplicates', 'admin'),new lang_string('coursecontactduplicates_desc', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('courselistshortnames',new lang_string('courselistshortnames', 'admin'),new lang_string('courselistshortnames_desc', 'admin'), 0));$temp->add(new admin_setting_configtext('coursesperpage', new lang_string('coursesperpage', 'admin'), new lang_string('configcoursesperpage', 'admin'), 20, PARAM_INT));$temp->add(new admin_setting_configtext('courseswithsummarieslimit', new lang_string('courseswithsummarieslimit', 'admin'), new lang_string('configcourseswithsummarieslimit', 'admin'), 10, PARAM_INT));$temp->add(new admin_setting_configtext('courseoverviewfileslimit', new lang_string('courseoverviewfileslimit'),new lang_string('configcourseoverviewfileslimit', 'admin'), 1, PARAM_INT));$temp->add(new admin_setting_filetypes('courseoverviewfilesext', new lang_string('courseoverviewfilesext'),new lang_string('configcourseoverviewfilesext', 'admin'), 'web_image'));$temp->add(new admin_setting_configtext('coursegraceperiodbefore', new lang_string('coursegraceperiodbefore', 'admin'),new lang_string('configcoursegraceperiodbefore', 'admin'), 0, PARAM_INT));$temp->add(new admin_setting_configtext('coursegraceperiodafter', new lang_string('coursegraceperiodafter', 'admin'),new lang_string('configcoursegraceperiodafter', 'admin'), 0, PARAM_INT));$ADMIN->add('appearance', $temp);$temp = new admin_settingpage('ajax', new lang_string('ajaxuse'));$temp->add(new admin_setting_configcheckbox('yuicomboloading', new lang_string('yuicomboloading', 'admin'), new lang_string('configyuicomboloading', 'admin'), 1));$setting = new admin_setting_configcheckbox('cachejs', new lang_string('cachejs', 'admin'), new lang_string('cachejs_help', 'admin'), 1);$setting->set_updatedcallback('js_reset_all_caches');$temp->add($setting);$ADMIN->add('appearance', $temp);// Link to tag management interface.$url = new moodle_url('/tag/manage.php');$hidden = empty($CFG->usetags);$page = new admin_externalpage('managetags', new lang_string('managetags', 'tag'), $url, 'moodle/tag:manage', $hidden);$ADMIN->add('appearance', $page);$temp = new admin_settingpage('additionalhtml', new lang_string('additionalhtml', 'admin'));$temp->add(new admin_setting_heading('additionalhtml_heading', new lang_string('additionalhtml_heading', 'admin'), new lang_string('additionalhtml_desc', 'admin')));$temp->add(new admin_setting_configtextarea('additionalhtmlhead', new lang_string('additionalhtmlhead', 'admin'), new lang_string('additionalhtmlhead_desc', 'admin'), '', PARAM_RAW));$temp->add(new admin_setting_configtextarea('additionalhtmltopofbody', new lang_string('additionalhtmltopofbody', 'admin'), new lang_string('additionalhtmltopofbody_desc', 'admin'), '', PARAM_RAW));$temp->add(new admin_setting_configtextarea('additionalhtmlfooter', new lang_string('additionalhtmlfooter', 'admin'), new lang_string('additionalhtmlfooter_desc', 'admin'), '', PARAM_RAW));$ADMIN->add('appearance', $temp);$setting = new admin_setting_configcheckbox('cachetemplates', new lang_string('cachetemplates', 'admin'),new lang_string('cachetemplates_help', 'admin'), 1);$setting->set_updatedcallback('template_reset_all_caches');$temp = new admin_settingpage('templates', new lang_string('templates', 'admin'));$temp->add($setting);$ADMIN->add('appearance', $temp);// Advanced theme settings page.$temp = new admin_settingpage('themesettingsadvanced', new lang_string('themesettingsadvanced', 'admin'));$setting = new admin_setting_configtext('themelist', new lang_string('themelist', 'admin'),new lang_string('configthemelist', 'admin'), '', PARAM_NOTAGS);$setting->set_force_ltr(true);$temp->add($setting);$setting = new admin_setting_configcheckbox('themedesignermode', new lang_string('themedesignermode', 'admin'),new lang_string('configthemedesignermode', 'admin'), 0);$setting->set_updatedcallback('theme_reset_all_caches');$temp->add($setting);$setting = new admin_setting_configcheckbox('allowuserthemes', new lang_string('allowuserthemes', 'admin'),new lang_string('configallowuserthemes', 'admin'), 0);$setting->set_updatedcallback('theme_purge_used_in_context_caches');$temp->add($setting);$setting = new admin_setting_configcheckbox('allowcoursethemes', new lang_string('allowcoursethemes', 'admin'),new lang_string('configallowcoursethemes', 'admin'), 0);$setting->set_updatedcallback('theme_purge_used_in_context_caches');$temp->add($setting);$setting = new admin_setting_configcheckbox('allowcategorythemes', new lang_string('allowcategorythemes', 'admin'),new lang_string('configallowcategorythemes', 'admin'), 0);$setting->set_updatedcallback('theme_purge_used_in_context_caches');$temp->add($setting);$setting = new admin_setting_configcheckbox('allowcohortthemes', new lang_string('allowcohortthemes', 'admin'),new lang_string('configallowcohortthemes', 'admin'), 0);$setting->set_updatedcallback('theme_purge_used_in_context_caches');$temp->add($setting);$temp->add(new admin_setting_configcheckbox('allowthemechangeonurl', new lang_string('allowthemechangeonurl', 'admin'),new lang_string('configallowthemechangeonurl', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('allowuserblockhiding', new lang_string('allowuserblockhiding', 'admin'),new lang_string('configallowuserblockhiding', 'admin'), 1));$temp->add(new admin_setting_configcheckbox('langmenuinsecurelayout',new lang_string('langmenuinsecurelayout', 'admin'),new lang_string('langmenuinsecurelayout_desc', 'admin'), 0));$temp->add(new admin_setting_configcheckbox('logininfoinsecurelayout',new lang_string('logininfoinsecurelayout', 'admin'),new lang_string('logininfoinsecurelayout_desc', 'admin'), 0));$temp->add(new admin_setting_configtextarea('custommenuitems', new lang_string('custommenuitems', 'admin'),new lang_string('configcustommenuitems', 'admin'), '', PARAM_RAW, '50', '10'));$defaultsettingcustomusermenuitems = ['profile,moodle|/user/profile.php','grades,grades|/grade/report/mygrades.php','calendar,core_calendar|/calendar/view.php?view=month','privatefiles,moodle|/user/files.php','reports,core_reportbuilder|/reportbuilder/index.php',];$temp->add(new admin_setting_configtextarea('customusermenuitems',new lang_string('customusermenuitems', 'admin'),new lang_string('configcustomusermenuitems', 'admin'),implode("\n", $defaultsettingcustomusermenuitems),PARAM_RAW,'50','10'));$ADMIN->add('appearance', $temp);// Theme selector page.$ADMIN->add('appearance', new admin_externalpage('themeselector',new lang_string('themeselector', 'admin'), $CFG->wwwroot . '/admin/themeselector.php'));// Settings page for each theme.$ADMIN->add('appearance', new admin_category('themes', new lang_string('themesettingscustom', 'admin')));foreach (core_component::get_plugin_list('theme') as $theme => $themedir) {$settingspath = "$themedir/settings.php";if (file_exists($settingspath)) {$settings = new admin_settingpage("themesetting$theme", new lang_string('pluginname', "theme_$theme"),'moodle/site:config', true);include($settingspath);// Add settings if not hidden (to avoid displaying the section if it appears empty in the UI).if ($settings && !$settings->hidden) {$ADMIN->add('themes', $settings);}}}} // end of speedup