Differences Between: [Versions 310 and 403] [Versions 311 and 403] [Versions 39 and 403] [Versions 400 and 403] [Versions 401 and 403] [Versions 402 and 403]
1 <?php 2 3 // This file defines settingpages and externalpages under the "appearance" category 4 5 $capabilities = array( 6 'moodle/my:configsyspages', 7 'moodle/tag:manage' 8 ); 9 10 if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) { // speedup for non-admins, add all caps used on this page 11 12 $ADMIN->add('appearance', new admin_category('themes', new lang_string('themes'))); 13 // "themesettings" settingpage 14 $temp = new admin_settingpage('themesettings', new lang_string('themesettings', 'admin')); 15 $setting = new admin_setting_configtext('themelist', new lang_string('themelist', 'admin'), 16 new lang_string('configthemelist', 'admin'), '', PARAM_NOTAGS); 17 $setting->set_force_ltr(true); 18 $temp->add($setting); 19 $setting = new admin_setting_configcheckbox('themedesignermode', new lang_string('themedesignermode', 'admin'), new lang_string('configthemedesignermode', 'admin'), 0); 20 $setting->set_updatedcallback('theme_reset_all_caches'); 21 $temp->add($setting); 22 $temp->add(new admin_setting_configcheckbox('allowuserthemes', new lang_string('allowuserthemes', 'admin'), new lang_string('configallowuserthemes', 'admin'), 0)); 23 $temp->add(new admin_setting_configcheckbox('allowcoursethemes', new lang_string('allowcoursethemes', 'admin'), new lang_string('configallowcoursethemes', 'admin'), 0)); 24 $temp->add(new admin_setting_configcheckbox('allowcategorythemes', new lang_string('allowcategorythemes', 'admin'), new lang_string('configallowcategorythemes', 'admin'), 0)); 25 $temp->add(new admin_setting_configcheckbox('allowcohortthemes', new lang_string('allowcohortthemes', 'admin'), new lang_string('configallowcohortthemes', 'admin'), 0)); 26 $temp->add(new admin_setting_configcheckbox('allowthemechangeonurl', new lang_string('allowthemechangeonurl', 'admin'), new lang_string('configallowthemechangeonurl', 'admin'), 0)); 27 $temp->add(new admin_setting_configcheckbox('allowuserblockhiding', new lang_string('allowuserblockhiding', 'admin'), new lang_string('configallowuserblockhiding', 'admin'), 1)); 28 $temp->add(new admin_setting_configcheckbox('langmenuinsecurelayout', 29 new lang_string('langmenuinsecurelayout', 'admin'), 30 new lang_string('langmenuinsecurelayout_desc', 'admin'), 0)); 31 $temp->add(new admin_setting_configcheckbox('logininfoinsecurelayout', 32 new lang_string('logininfoinsecurelayout', 'admin'), 33 new lang_string('logininfoinsecurelayout_desc', 'admin'), 0)); 34 $temp->add(new admin_setting_configtextarea('custommenuitems', new lang_string('custommenuitems', 'admin'), 35 new lang_string('configcustommenuitems', 'admin'), '', PARAM_RAW, '50', '10')); 36 $temp->add(new admin_setting_configtextarea( 37 'customusermenuitems', 38 new lang_string('customusermenuitems', 'admin'), 39 new lang_string('configcustomusermenuitems', 'admin'), 40 'profile,moodle|/user/profile.php 41 grades,grades|/grade/report/mygrades.php 42 calendar,core_calendar|/calendar/view.php?view=month 43 privatefiles,moodle|/user/files.php 44 reports,core_reportbuilder|/reportbuilder/index.php', 45 PARAM_RAW, 46 '50', 47 '10' 48 )); 49 $ADMIN->add('themes', $temp); 50 $ADMIN->add('themes', new admin_externalpage('themeselector', new lang_string('themeselector','admin'), $CFG->wwwroot . '/theme/index.php')); 51 52 // settings for each theme 53 foreach (core_component::get_plugin_list('theme') as $theme => $themedir) { 54 $settings_path = "$themedir/settings.php"; 55 if (file_exists($settings_path)) { 56 $settings = new admin_settingpage('themesetting'.$theme, new lang_string('pluginname', 'theme_'.$theme)); 57 include($settings_path); 58 if ($settings) { 59 $ADMIN->add('themes', $settings); 60 } 61 } 62 } 63 64 // Logos section. 65 $temp = new admin_settingpage('logos', new lang_string('logossettings', 'admin')); 66 67 // Logo file setting. 68 $title = get_string('logo', 'admin'); 69 $description = get_string('logo_desc', 'admin'); 70 $setting = new admin_setting_configstoredfile('core_admin/logo', $title, $description, 'logo', 0, 71 ['maxfiles' => 1, 'accepted_types' => ['.jpg', '.png']]); 72 $setting->set_updatedcallback('theme_reset_all_caches'); 73 $temp->add($setting); 74 75 // Small logo file setting. 76 $title = get_string('logocompact', 'admin'); 77 $description = get_string('logocompact_desc', 'admin'); 78 $setting = new admin_setting_configstoredfile('core_admin/logocompact', $title, $description, 'logocompact', 0, 79 ['maxfiles' => 1, 'accepted_types' => ['.jpg', '.png']]); 80 $setting->set_updatedcallback('theme_reset_all_caches'); 81 $temp->add($setting); 82 83 // Favicon file setting. 84 $title = get_string('favicon', 'admin'); 85 $description = get_string('favicon_desc', 'admin'); 86 $setting = new admin_setting_configstoredfile('core_admin/favicon', $title, $description, 'favicon', 0, 87 ['maxfiles' => 1, 'accepted_types' => ['image']]); 88 $setting->set_updatedcallback('theme_reset_all_caches'); 89 $temp->add($setting); 90 91 $ADMIN->add('appearance', $temp); 92 93 // Course colours section. 94 $temp = new admin_settingpage('coursecolors', new lang_string('coursecolorsettings', 'admin')); 95 $temp->add(new admin_setting_heading('coursecolorheading', '', 96 new lang_string('coursecolorheading_desc', 'admin'))); 97 98 $basecolors = ['#81ecec', '#74b9ff', '#a29bfe', '#dfe6e9', '#00b894', 99 '#0984e3', '#b2bec3', '#fdcb6e', '#fd79a8', '#6c5ce7']; 100 101 foreach ($basecolors as $key => $color) { 102 $number = $key + 1; 103 $name = 'core_admin/coursecolor' . $number; 104 $title = get_string('coursecolor', 'admin', $number); 105 $setting = new admin_setting_configcolourpicker($name, $title, '', $color); 106 $temp->add($setting); 107 } 108 109 $ADMIN->add('appearance', $temp); 110 111 // Calendar settings. 112 $temp = new admin_settingpage('calendar', new lang_string('calendarsettings','admin')); 113 114 $temp->add(new admin_setting_configselect('calendartype', new lang_string('calendartype', 'admin'), 115 new lang_string('calendartype_desc', 'admin'), 'gregorian', \core_calendar\type_factory::get_list_of_calendar_types())); 116 $temp->add(new admin_setting_special_adminseesall()); 117 //this is hacky because we do not want to include the stuff from calendar/lib.php 118 $temp->add(new admin_setting_configselect('calendar_site_timeformat', new lang_string('pref_timeformat', 'calendar'), 119 new lang_string('explain_site_timeformat', 'calendar'), '0', 120 array('0' => new lang_string('default', 'calendar'), 121 '%I:%M %p' => new lang_string('timeformat_12', 'calendar'), 122 '%H:%M' => new lang_string('timeformat_24', 'calendar')))); 123 $temp->add(new admin_setting_configselect('calendar_startwday', new lang_string('configstartwday', 'admin'), 124 new lang_string('helpstartofweek', 'admin'), get_string('firstdayofweek', 'langconfig'), 125 array( 126 0 => new lang_string('sunday', 'calendar'), 127 1 => new lang_string('monday', 'calendar'), 128 2 => new lang_string('tuesday', 'calendar'), 129 3 => new lang_string('wednesday', 'calendar'), 130 4 => new lang_string('thursday', 'calendar'), 131 5 => new lang_string('friday', 'calendar'), 132 6 => new lang_string('saturday', 'calendar') 133 ))); 134 $temp->add(new admin_setting_special_calendar_weekend()); 135 $options = array(365 => new lang_string('numyear', '', 1), 136 270 => new lang_string('nummonths', '', 9), 137 180 => new lang_string('nummonths', '', 6), 138 150 => new lang_string('nummonths', '', 5), 139 120 => new lang_string('nummonths', '', 4), 140 90 => new lang_string('nummonths', '', 3), 141 60 => new lang_string('nummonths', '', 2), 142 30 => new lang_string('nummonth', '', 1), 143 21 => new lang_string('numweeks', '', 3), 144 14 => new lang_string('numweeks', '', 2), 145 7 => new lang_string('numweek', '', 1), 146 6 => new lang_string('numdays', '', 6), 147 5 => new lang_string('numdays', '', 5), 148 4 => new lang_string('numdays', '', 4), 149 3 => new lang_string('numdays', '', 3), 150 2 => new lang_string('numdays', '', 2), 151 1 => new lang_string('numday', '', 1)); 152 $temp->add(new admin_setting_configselect('calendar_lookahead', new lang_string('configlookahead', 'admin'), new lang_string('helpupcominglookahead', 'admin'), 21, $options)); 153 $options = array(); 154 for ($i=1; $i<=20; $i++) { 155 $options[$i] = $i; 156 } 157 $temp->add(new admin_setting_configselect('calendar_maxevents',new lang_string('configmaxevents','admin'),new lang_string('helpupcomingmaxevents', 'admin'),10,$options)); 158 $temp->add(new admin_setting_configcheckbox('enablecalendarexport', new lang_string('enablecalendarexport', 'admin'), new lang_string('configenablecalendarexport','admin'), 1)); 159 160 // Calendar custom export settings. 161 $days = array(365 => new lang_string('numdays', '', 365), 162 180 => new lang_string('numdays', '', 180), 163 150 => new lang_string('numdays', '', 150), 164 120 => new lang_string('numdays', '', 120), 165 90 => new lang_string('numdays', '', 90), 166 60 => new lang_string('numdays', '', 60), 167 30 => new lang_string('numdays', '', 30), 168 5 => new lang_string('numdays', '', 5)); 169 $temp->add(new admin_setting_configcheckbox('calendar_customexport', new lang_string('configcalendarcustomexport', 'admin'), new lang_string('helpcalendarcustomexport','admin'), 1)); 170 $temp->add(new admin_setting_configselect('calendar_exportlookahead', new lang_string('configexportlookahead','admin'), new lang_string('helpexportlookahead', 'admin'), 365, $days)); 171 $temp->add(new admin_setting_configselect('calendar_exportlookback', new lang_string('configexportlookback','admin'), new lang_string('helpexportlookback', 'admin'), 5, $days)); 172 $temp->add(new admin_setting_configtext('calendar_exportsalt', new lang_string('calendarexportsalt','admin'), new lang_string('configcalendarexportsalt', 'admin'), random_string(60))); 173 $temp->add(new admin_setting_configcheckbox('calendar_showicalsource', new lang_string('configshowicalsource', 'admin'), new lang_string('helpshowicalsource','admin'), 1)); 174 $ADMIN->add('appearance', $temp); 175 176 // blog 177 $temp = new admin_settingpage('blog', new lang_string('blog','blog'), 'moodle/site:config', empty($CFG->enableblogs)); 178 $temp->add(new admin_setting_configcheckbox('useblogassociations', new lang_string('useblogassociations', 'blog'), new lang_string('configuseblogassociations','blog'), 1)); 179 $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'), 180 BLOG_SITE_LEVEL => new lang_string('siteblogs','blog'), 181 BLOG_USER_LEVEL => new lang_string('personalblogs','blog')))); 182 $temp->add(new admin_setting_configcheckbox('useexternalblogs', new lang_string('useexternalblogs', 'blog'), new lang_string('configuseexternalblogs','blog'), 1)); 183 $temp->add(new admin_setting_configselect('externalblogcrontime', new lang_string('externalblogcrontime', 'blog'), new lang_string('configexternalblogcrontime', 'blog'), 86400, 184 array(43200 => new lang_string('numhours', '', 12), 185 86400 => new lang_string('numhours', '', 24), 186 172800 => new lang_string('numdays', '', 2), 187 604800 => new lang_string('numdays', '', 7)))); 188 $temp->add(new admin_setting_configtext('maxexternalblogsperuser', new lang_string('maxexternalblogsperuser','blog'), new lang_string('configmaxexternalblogsperuser', 'blog'), 1)); 189 $temp->add(new admin_setting_configcheckbox('blogusecomments', new lang_string('enablecomments', 'admin'), new lang_string('configenablecomments', 'admin'), 1)); 190 $temp->add(new admin_setting_configcheckbox('blogshowcommentscount', new lang_string('showcommentscount', 'admin'), new lang_string('configshowcommentscount', 'admin'), 1)); 191 $ADMIN->add('appearance', $temp); 192 193 // Navigation settings 194 $temp = new admin_settingpage('navigation', new lang_string('navigation')); 195 $temp->add(new admin_setting_configcheckbox( 196 'enabledashboard', 197 new lang_string('enabledashboard', 'admin'), 198 new lang_string('enabledashboard_help', 'admin'), 199 1 200 )); 201 202 $choices = [HOMEPAGE_SITE => new lang_string('home')]; 203 if (!isset($CFG->enabledashboard) || $CFG->enabledashboard) { 204 $choices[HOMEPAGE_MY] = new lang_string('mymoodle', 'admin'); 205 } 206 $choices[HOMEPAGE_MYCOURSES] = new lang_string('mycourses', 'admin'); 207 $choices[HOMEPAGE_USER] = new lang_string('userpreference', 'admin'); 208 $temp->add(new admin_setting_configselect('defaulthomepage', new lang_string('defaulthomepage', 'admin'), 209 new lang_string('configdefaulthomepage', 'admin'), get_default_home_page(), $choices)); 210 if (!isset($CFG->enabledashboard) || $CFG->enabledashboard) { 211 $temp->add(new admin_setting_configcheckbox( 212 'allowguestmymoodle', 213 new lang_string('allowguestmymoodle', 'admin'), 214 new lang_string('configallowguestmymoodle', 'admin'), 215 1 216 )); 217 } 218 $temp->add(new admin_setting_configcheckbox('navshowfullcoursenames', new lang_string('navshowfullcoursenames', 'admin'), new lang_string('navshowfullcoursenames_help', 'admin'), 0)); 219 $temp->add(new admin_setting_configcheckbox('navshowcategories', new lang_string('navshowcategories', 'admin'), new lang_string('confignavshowcategories', 'admin'), 1)); 220 $temp->add(new admin_setting_configcheckbox('navshowmycoursecategories', new lang_string('navshowmycoursecategories', 'admin'), new lang_string('navshowmycoursecategories_help', 'admin'), 0)); 221 $temp->add(new admin_setting_configcheckbox('navshowallcourses', new lang_string('navshowallcourses', 'admin'), new lang_string('confignavshowallcourses', 'admin'), 0)); 222 $sortoptions = array( 223 'sortorder' => new lang_string('sort_sortorder', 'admin'), 224 'fullname' => new lang_string('sort_fullname', 'admin'), 225 'shortname' => new lang_string('sort_shortname', 'admin'), 226 'idnumber' => new lang_string('sort_idnumber', 'admin'), 227 ); 228 $temp->add(new admin_setting_configselect('navsortmycoursessort', new lang_string('navsortmycoursessort', 'admin'), new lang_string('navsortmycoursessort_help', 'admin'), 'sortorder', $sortoptions)); 229 $temp->add(new admin_setting_configcheckbox('navsortmycourseshiddenlast', 230 new lang_string('navsortmycourseshiddenlast', 'admin'), 231 new lang_string('navsortmycourseshiddenlast_help', 'admin'), 232 1)); 233 $temp->add(new admin_setting_configtext('navcourselimit', new lang_string('navcourselimit', 'admin'), 234 new lang_string('confignavcourselimit', 'admin'), 10, PARAM_INT)); 235 $temp->add(new admin_setting_configcheckbox('usesitenameforsitepages', new lang_string('usesitenameforsitepages', 'admin'), new lang_string('configusesitenameforsitepages', 'admin'), 0)); 236 $temp->add(new admin_setting_configcheckbox('linkadmincategories', new lang_string('linkadmincategories', 'admin'), new lang_string('linkadmincategories_help', 'admin'), 1)); 237 $temp->add(new admin_setting_configcheckbox('linkcoursesections', new lang_string('linkcoursesections', 'admin'), new lang_string('linkcoursesections_help', 'admin'), 1)); 238 $temp->add(new admin_setting_configcheckbox('navshowfrontpagemods', new lang_string('navshowfrontpagemods', 'admin'), new lang_string('navshowfrontpagemods_help', 'admin'), 1)); 239 $temp->add(new admin_setting_configcheckbox('navadduserpostslinks', new lang_string('navadduserpostslinks', 'admin'), new lang_string('navadduserpostslinks_help', 'admin'), 1)); 240 241 $ADMIN->add('appearance', $temp); 242 243 // "htmlsettings" settingpage 244 $temp = new admin_settingpage('htmlsettings', new lang_string('htmlsettings', 'admin')); 245 $sitenameintitleoptions = [ 246 'shortname' => new lang_string('shortname'), 247 'fullname' => new lang_string('fullname'), 248 ]; 249 $sitenameintitleconfig = new admin_setting_configselect( 250 'sitenameintitle', 251 new lang_string('sitenameintitle', 'admin'), 252 new lang_string('sitenameintitle_help', 'admin'), 253 'shortname', 254 $sitenameintitleoptions 255 ); 256 $temp->add($sitenameintitleconfig); 257 $temp->add(new admin_setting_configcheckbox('formatstringstriptags', new lang_string('stripalltitletags', 'admin'), new lang_string('configstripalltitletags', 'admin'), 1)); 258 $temp->add(new admin_setting_emoticons()); 259 $ADMIN->add('appearance', $temp); 260 $ADMIN->add('appearance', new admin_externalpage('resetemoticons', new lang_string('emoticonsreset', 'admin'), 261 new moodle_url('/admin/resetemoticons.php'), 'moodle/site:config', true)); 262 263 // "documentation" settingpage 264 $temp = new admin_settingpage('documentation', new lang_string('moodledocs')); 265 $temp->add(new admin_setting_configtext('docroot', new lang_string('docroot', 'admin'), new lang_string('configdocroot', 'admin'), 'https://docs.moodle.org', PARAM_URL)); 266 $ltemp = array('' => get_string('forceno')); 267 $ltemp += get_string_manager()->get_list_of_translations(true); 268 $temp->add(new admin_setting_configselect('doclang', get_string('doclang', 'admin'), get_string('configdoclang', 'admin'), '', $ltemp)); 269 $temp->add(new admin_setting_configcheckbox('doctonewwindow', new lang_string('doctonewwindow', 'admin'), new lang_string('configdoctonewwindow', 'admin'), 0)); 270 $temp->add(new admin_setting_configtext( 271 'coursecreationguide', 272 new lang_string('coursecreationguide', 'admin'), 273 new lang_string('coursecreationguide_help', 'admin'), 274 'https://moodle.academy/coursequickstart', 275 PARAM_URL 276 )); 277 $ADMIN->add('appearance', $temp); 278 279 if (!empty($CFG->enabledashboard)) { 280 $temp = new admin_externalpage('mypage', new lang_string('mypage', 'admin'), $CFG->wwwroot . '/my/indexsys.php', 281 'moodle/my:configsyspages'); 282 $ADMIN->add('appearance', $temp); 283 } 284 285 $temp = new admin_externalpage('profilepage', new lang_string('myprofile', 'admin'), $CFG->wwwroot . '/user/profilesys.php', 286 'moodle/my:configsyspages'); 287 $ADMIN->add('appearance', $temp); 288 289 // coursecontact is the person responsible for course - usually manages enrolments, receives notification, etc. 290 $temp = new admin_settingpage('coursecontact', new lang_string('courses')); 291 $temp->add(new admin_setting_special_coursecontact()); 292 $temp->add(new admin_setting_configcheckbox('coursecontactduplicates', 293 new lang_string('coursecontactduplicates', 'admin'), 294 new lang_string('coursecontactduplicates_desc', 'admin'), 0)); 295 $temp->add(new admin_setting_configcheckbox('courselistshortnames', 296 new lang_string('courselistshortnames', 'admin'), 297 new lang_string('courselistshortnames_desc', 'admin'), 0)); 298 $temp->add(new admin_setting_configtext('coursesperpage', new lang_string('coursesperpage', 'admin'), new lang_string('configcoursesperpage', 'admin'), 20, PARAM_INT)); 299 $temp->add(new admin_setting_configtext('courseswithsummarieslimit', new lang_string('courseswithsummarieslimit', 'admin'), new lang_string('configcourseswithsummarieslimit', 'admin'), 10, PARAM_INT)); 300 301 $temp->add(new admin_setting_configtext('courseoverviewfileslimit', new lang_string('courseoverviewfileslimit'), 302 new lang_string('configcourseoverviewfileslimit', 'admin'), 1, PARAM_INT)); 303 $temp->add(new admin_setting_filetypes('courseoverviewfilesext', new lang_string('courseoverviewfilesext'), 304 new lang_string('configcourseoverviewfilesext', 'admin'), 'web_image' 305 )); 306 307 $temp->add(new admin_setting_configtext('coursegraceperiodbefore', new lang_string('coursegraceperiodbefore', 'admin'), 308 new lang_string('configcoursegraceperiodbefore', 'admin'), 0, PARAM_INT)); 309 $temp->add(new admin_setting_configtext('coursegraceperiodafter', new lang_string('coursegraceperiodafter', 'admin'), 310 new lang_string('configcoursegraceperiodafter', 'admin'), 0, PARAM_INT)); 311 $ADMIN->add('appearance', $temp); 312 313 $temp = new admin_settingpage('ajax', new lang_string('ajaxuse')); 314 $temp->add(new admin_setting_configcheckbox('yuicomboloading', new lang_string('yuicomboloading', 'admin'), new lang_string('configyuicomboloading', 'admin'), 1)); 315 $setting = new admin_setting_configcheckbox('cachejs', new lang_string('cachejs', 'admin'), new lang_string('cachejs_help', 'admin'), 1); 316 $setting->set_updatedcallback('js_reset_all_caches'); 317 $temp->add($setting); 318 $ADMIN->add('appearance', $temp); 319 320 // Link to tag management interface. 321 $url = new moodle_url('/tag/manage.php'); 322 $hidden = empty($CFG->usetags); 323 $page = new admin_externalpage('managetags', new lang_string('managetags', 'tag'), $url, 'moodle/tag:manage', $hidden); 324 $ADMIN->add('appearance', $page); 325 326 $temp = new admin_settingpage('additionalhtml', new lang_string('additionalhtml', 'admin')); 327 $temp->add(new admin_setting_heading('additionalhtml_heading', new lang_string('additionalhtml_heading', 'admin'), new lang_string('additionalhtml_desc', 'admin'))); 328 $temp->add(new admin_setting_configtextarea('additionalhtmlhead', new lang_string('additionalhtmlhead', 'admin'), new lang_string('additionalhtmlhead_desc', 'admin'), '', PARAM_RAW)); 329 $temp->add(new admin_setting_configtextarea('additionalhtmltopofbody', new lang_string('additionalhtmltopofbody', 'admin'), new lang_string('additionalhtmltopofbody_desc', 'admin'), '', PARAM_RAW)); 330 $temp->add(new admin_setting_configtextarea('additionalhtmlfooter', new lang_string('additionalhtmlfooter', 'admin'), new lang_string('additionalhtmlfooter_desc', 'admin'), '', PARAM_RAW)); 331 $ADMIN->add('appearance', $temp); 332 333 $setting = new admin_setting_configcheckbox('cachetemplates', new lang_string('cachetemplates', 'admin'), 334 new lang_string('cachetemplates_help', 'admin'), 1); 335 $setting->set_updatedcallback('template_reset_all_caches'); 336 $temp = new admin_settingpage('templates', new lang_string('templates', 'admin')); 337 $temp->add($setting); 338 $ADMIN->add('appearance', $temp); 339 } // end of speedup
title
Description
Body
title
Description
Body
title
Description
Body
title
Body