Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

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