moodle_page: MDL-12212 reimplement user_is_editing, deprecate isediting
[moodle.git] / admin / pagelib.php
1 <?php // $Id$
3 require_once($CFG->libdir.'/pagelib.php');
5 define('PAGE_ADMIN', 'admin');
7 // Bounds for block widths
8 // more flexible for theme designers taken from theme config.php
9 $lmin = (empty($THEME->block_l_min_width)) ? 0 :   $THEME->block_l_min_width;
10 $lmax = (empty($THEME->block_l_max_width)) ? 210 : $THEME->block_l_max_width;
11 $rmin = (empty($THEME->block_r_min_width)) ? 0 :   $THEME->block_r_min_width;
12 $rmax = (empty($THEME->block_r_max_width)) ? 210 : $THEME->block_r_max_width;
14 define('BLOCK_L_MIN_WIDTH', $lmin);
15 define('BLOCK_L_MAX_WIDTH', $lmax);
16 define('BLOCK_R_MIN_WIDTH', $rmin);
17 define('BLOCK_R_MAX_WIDTH', $rmax);
19 page_map_class(PAGE_ADMIN, 'page_admin');
21 class page_admin extends page_base {
22     var $extrabutton = '';
24     function _legacy_blocks_get_default() {
25         return 'admin_tree,admin_bookmarks';
26     }
28     // seems reasonable that the only people that can edit blocks on the admin pages
29     // are the admins... but maybe we want a role for this?
30     function user_allowed_editing() {
31         return has_capability('moodle/site:manageblocks', get_context_instance(CONTEXT_SYSTEM));
32     }
34     /**
35      * Use this to pass extra HTML that is added after the turn blocks editing on/off button.
36      *
37      * @param string $extrabutton HTML code.
38      */
39     function set_extra_button($extrabutton) {
40         $this->extrabutton = $extrabutton;
41     }
43     function print_header($focus='') {
44         global $USER, $CFG, $SITE;
46         $adminroot = admin_get_root(false, false); //settings not required - only pages
48         // fetch the path parameter
49         $section = $this->url->param('section');
50         $current = $adminroot->locate($section, true);
51         $visiblepathtosection = array_reverse($current->visiblepath);
53         // The search page currently doesn't handle block editing
54         if ($this->user_allowed_editing()) {
55             $options = $this->url->params();
56             if ($this->user_is_editing()) {
57                 $caption = get_string('blockseditoff');
58                 $options['adminedit'] = 'off';
59             } else {
60                 $caption = get_string('blocksediton');
61                 $options['adminedit'] = 'on';
62             }
63             $buttons = print_single_button($this->url->out(false), $options, $caption, 'get', '', true);
64         }
65         $buttons .= $this->extrabutton;
67         $navlinks = array();
68         foreach ($visiblepathtosection as $element) {
69             $navlinks[] = array('name' => $element, 'link' => null, 'type' => 'misc');
70         }
71         $navigation = build_navigation($navlinks);
73         print_header("$SITE->shortname: " . implode(": ",$visiblepathtosection), $SITE->fullname, $navigation, $focus, '', true, $buttons, '');
74     }
75 }
77 ?>