mirror of
https://github.com/moodle/moodle.git
synced 2025-02-25 12:33:18 +01:00
Added methods that allow a navigation cache to be marked as volatile so that it is destroyed on shutdown, forcing the next page to load to completely regenerate the navigation structure. Caches are marked as volatile automatically if the load is within the system context, and can optionally be marked as volatile by calling PAGE->navigation->clear_cache() if desired.
137 lines
4.5 KiB
PHP
137 lines
4.5 KiB
PHP
<?php // $Id$
|
|
|
|
require_once('../config.php');
|
|
require_once($CFG->libdir.'/adminlib.php');
|
|
|
|
$section = required_param('section', PARAM_SAFEDIR);
|
|
$return = optional_param('return','', PARAM_ALPHA);
|
|
$adminediting = optional_param('adminedit', -1, PARAM_BOOL);
|
|
|
|
/// no guest autologin
|
|
require_login(0, false);
|
|
$PAGE->set_context(get_context_instance(CONTEXT_SYSTEM));
|
|
$PAGE->set_url($CFG->admin . '/settings.php', array('section' => $section));
|
|
$PAGE->set_pagetype('admin-setting-' . $section);
|
|
$PAGE->navigation->clear_cache();
|
|
|
|
$adminroot = admin_get_root(); // need all settings
|
|
$settingspage = $adminroot->locate($section, true);
|
|
|
|
if (empty($settingspage) or !($settingspage instanceof admin_settingpage)) {
|
|
print_error('sectionerror', 'admin', "$CFG->wwwroot/$CFG->admin/");
|
|
die;
|
|
}
|
|
|
|
if (!($settingspage->check_access())) {
|
|
print_error('accessdenied', 'admin');
|
|
die;
|
|
}
|
|
|
|
/// WRITING SUBMITTED DATA (IF ANY) -------------------------------------------------------------------------------
|
|
|
|
$statusmsg = '';
|
|
$errormsg = '';
|
|
$focus = '';
|
|
|
|
if ($data = data_submitted() and confirm_sesskey()) {
|
|
if (admin_write_settings($data)) {
|
|
$statusmsg = get_string('changessaved');
|
|
}
|
|
|
|
if (empty($adminroot->errors)) {
|
|
switch ($return) {
|
|
case 'site': redirect("$CFG->wwwroot/");
|
|
case 'admin': redirect("$CFG->wwwroot/$CFG->admin/");
|
|
}
|
|
} else {
|
|
$errormsg = get_string('errorwithsettings', 'admin');
|
|
$firsterror = reset($adminroot->errors);
|
|
$focus = $firsterror->id;
|
|
}
|
|
$adminroot = admin_get_root(true); //reload tree
|
|
$settingspage = $adminroot->locate($section, true);
|
|
}
|
|
|
|
if ($PAGE->user_allowed_editing() && $adminediting != -1) {
|
|
$USER->editing = $adminediting;
|
|
}
|
|
|
|
/// print header stuff ------------------------------------------------------------
|
|
$PAGE->set_focuscontrol($focus);
|
|
if (empty($SITE->fullname)) {
|
|
$PAGE->set_title($settingspage->visiblename);
|
|
$PAGE->set_heading($settingspage->visiblename);
|
|
|
|
echo $OUTPUT->header();
|
|
echo $OUTPUT->box(get_string('configintrosite', 'admin'));
|
|
|
|
if ($errormsg !== '') {
|
|
echo $OUTPUT->notification($errormsg);
|
|
|
|
} else if ($statusmsg !== '') {
|
|
echo $OUTPUT->notification($statusmsg, 'notifysuccess');
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------------------------------
|
|
|
|
echo '<form action="settings.php" method="post" id="adminsettings">';
|
|
echo '<div class="settingsform clearfix">';
|
|
echo $PAGE->url->hidden_params_out();
|
|
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
|
echo '<input type="hidden" name="return" value="'.$return.'" />';
|
|
|
|
echo $settingspage->output_html();
|
|
|
|
echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
|
|
|
|
echo '</div>';
|
|
echo '</form>';
|
|
|
|
} else {
|
|
if ($PAGE->user_allowed_editing()) {
|
|
$options = $PAGE->url->params();
|
|
if ($PAGE->user_is_editing()) {
|
|
$caption = get_string('blockseditoff');
|
|
$options['adminedit'] = 'off';
|
|
} else {
|
|
$caption = get_string('blocksediton');
|
|
$options['adminedit'] = 'on';
|
|
}
|
|
$buttons = $OUTPUT->button(html_form::make_button($PAGE->url->out(false), $options, $caption, 'get'));
|
|
}
|
|
|
|
$visiblepathtosection = array_reverse($settingspage->visiblepath);
|
|
|
|
$PAGE->set_title("$SITE->shortname: " . implode(": ",$visiblepathtosection));
|
|
$PAGE->set_heading($SITE->fullname);
|
|
$PAGE->set_button($buttons);
|
|
echo $OUTPUT->header();
|
|
|
|
if ($errormsg !== '') {
|
|
echo $OUTPUT->notification($errormsg);
|
|
|
|
} else if ($statusmsg !== '') {
|
|
echo $OUTPUT->notification($statusmsg, 'notifysuccess');
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------------------------------
|
|
|
|
echo '<form action="settings.php" method="post" id="adminsettings">';
|
|
echo '<div class="settingsform clearfix">';
|
|
echo $PAGE->url->hidden_params_out();
|
|
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
|
echo '<input type="hidden" name="return" value="'.$return.'" />';
|
|
echo $OUTPUT->heading($settingspage->visiblename);
|
|
|
|
echo $settingspage->output_html();
|
|
|
|
echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
|
|
|
|
echo '</div>';
|
|
echo '</form>';
|
|
}
|
|
|
|
echo $OUTPUT->footer();
|
|
|
|
?>
|