moodle_page: MDL-12212 reimplement user_is_editing, deprecate isediting
[moodle.git] / admin / settings.php
1 <?php // $Id$
3 require_once('../config.php');
4 require_once($CFG->libdir.'/adminlib.php');
5 require_once($CFG->libdir.'/blocklib.php');
6 require_once($CFG->dirroot.'/'.$CFG->admin.'/pagelib.php');
8 $section      = required_param('section', PARAM_SAFEDIR);
9 $return       = optional_param('return','', PARAM_ALPHA);
10 $adminediting = optional_param('adminedit', -1, PARAM_BOOL);
12 /// no guest autologin
13 require_login(0, false);
14 $PAGE->set_context(get_context_instance(CONTEXT_SYSTEM));
15 $PAGE->set_url($CFG->admin . '/settings.php', array('section' => $section));
17 $adminroot = admin_get_root(); // need all settings
18 $page      = $adminroot->locate($section);
20 if (empty($page) or !($page instanceof admin_settingpage)) {
21     print_error('sectionerror', 'admin', "$CFG->wwwroot/$CFG->admin/");
22     die;
23 }
25 if (!($page->check_access())) {
26     print_error('accessdenied', 'admin');
27     die;
28 }
30 /// WRITING SUBMITTED DATA (IF ANY) -------------------------------------------------------------------------------
32 $statusmsg = '';
33 $errormsg  = '';
34 $focus = '';
36 if ($data = data_submitted() and confirm_sesskey()) {
37     if (admin_write_settings($data)) {
38         $statusmsg = get_string('changessaved');
39     }
41     if (empty($adminroot->errors)) {
42         switch ($return) {
43             case 'site':  redirect("$CFG->wwwroot/");
44             case 'admin': redirect("$CFG->wwwroot/$CFG->admin/");
45         }
46     } else {
47         $errormsg = get_string('errorwithsettings', 'admin');
48         $firsterror = reset($adminroot->errors);
49         $focus = $firsterror->id;
50     }
51     $adminroot =& admin_get_root(true); //reload tree
52     $page      =& $adminroot->locate($section);
53 }
55 /// very hacky page setup
56 page_map_class(PAGE_ADMIN, 'page_admin');
57 $PAGE = page_create_object(PAGE_ADMIN, 0); // there must be any constant id number
58 $PAGE->set_pagetype('admin-setting-' . $section);
59 $PAGE->init_extra($section);
61 if ($PAGE->user_allowed_editing() && $adminediting != -1) {
62     $USER->editing = $adminediting;
63 }
66 /// print header stuff ------------------------------------------------------------
68 if (empty($SITE->fullname)) {
69     print_header($page->visiblename, $page->visiblename, '', $focus);
70     print_simple_box(get_string('configintrosite', 'admin'), 'center', '50%');
72     if ($errormsg !== '') {
73         notify ($errormsg);
75     } else if ($statusmsg !== '') {
76         notify ($statusmsg, 'notifysuccess');
77     }
79     // ---------------------------------------------------------------------------------------------------------------
81     echo '<form action="settings.php" method="post" id="adminsettings">';
82     echo '<div class="settingsform clearfix">';
83     echo '<input type="hidden" name="section" value="'.$PAGE->section.'" />';
84     echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
85     echo '<input type="hidden" name="return" value="'.$return.'" />';
87     echo $page->output_html();
89     echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
91     echo '</div>';
92     echo '</form>';
94 } else {
95     $pageblocks = blocks_setup($PAGE);
97     $preferred_width_left  = bounded_number(BLOCK_L_MIN_WIDTH, blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]),
98                                             BLOCK_L_MAX_WIDTH);
99     $preferred_width_right = bounded_number(BLOCK_R_MIN_WIDTH, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]),
100                                             BLOCK_R_MAX_WIDTH);
102     $PAGE->print_header($focus);
104     echo '<table id="layout-table"><tr>';
105     $lt = (empty($THEME->layouttable)) ? array('left', 'middle', 'right') : $THEME->layouttable;
106     foreach ($lt as $column) {
107         switch ($column) {
108             case 'left':
109     echo '<td style="width: '.$preferred_width_left.'px;" id="left-column">';
110     print_container_start();
111     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
112     print_container_end();
113     echo '</td>';
114             break;
115             case 'middle':
116     echo '<td id="middle-column">';
117     print_container_start();
118     echo '<a name="startofcontent"></a>';
120     if ($errormsg !== '') {
121         notify ($errormsg);
123     } else if ($statusmsg !== '') {
124         notify ($statusmsg, 'notifysuccess');
125     }
127     // ---------------------------------------------------------------------------------------------------------------
129     echo '<form action="settings.php" method="post" id="adminsettings">';
130     echo '<div class="settingsform clearfix">';
131     echo '<input type="hidden" name="section" value="'.$PAGE->section.'" />';
132     echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
133     echo '<input type="hidden" name="return" value="'.$return.'" />';
134     print_heading($page->visiblename);
136     echo $page->output_html();
138     echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
140     echo '</div>';
141     echo '</form>';
143     print_container_end();
144     echo '</td>';
145             break;
146             case 'right':
147     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT)) {
148         echo '<td style="width: '.$preferred_width_right.'px;" id="right-column">';
149         print_container_start();
150         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
151         print_container_end();
152         echo '</td>';
153     }
154             break;
155         }
156     }
157     echo '</tr></table>';
160 print_footer();
162 ?>