[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/admin/ -> category.php (source)

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * This file is used to display a categories sub categories, external pages, and settings.
  19   *
  20   * @since      Moodle 2.3
  21   * @package    admin
  22   * @copyright  2011 Sam Hemelryk
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  require_once('../config.php');
  27  require_once($CFG->libdir.'/adminlib.php');
  28  
  29  $category = required_param('category', PARAM_SAFEDIR);
  30  $return = optional_param('return','', PARAM_ALPHA);
  31  $adminediting = optional_param('adminedit', -1, PARAM_BOOL);
  32  
  33  /// no guest autologin
  34  require_login(0, false);
  35  $PAGE->set_context(context_system::instance());
  36  $PAGE->set_url('/admin/category.php', array('category' => $category));
  37  $PAGE->set_pagetype('admin-setting-' . $category);
  38  $PAGE->set_pagelayout('admin');
  39  $PAGE->navigation->clear_cache();
  40  
  41  $adminroot = admin_get_root(); // need all settings
  42  $settingspage = $adminroot->locate($category, true);
  43  
  44  if (empty($settingspage) or !($settingspage instanceof admin_category)) {
  45      print_error('categoryerror', 'admin', "$CFG->wwwroot/$CFG->admin/");
  46  }
  47  
  48  if (!($settingspage->check_access())) {
  49      print_error('accessdenied', 'admin');
  50  }
  51  
  52  
  53  $statusmsg = '';
  54  $errormsg  = '';
  55  
  56  if ($data = data_submitted() and confirm_sesskey()) {
  57      if (admin_write_settings($data)) {
  58          $statusmsg = get_string('changessaved');
  59      }
  60  
  61      if (empty($adminroot->errors)) {
  62          switch ($return) {
  63              case 'site': redirect("$CFG->wwwroot/");
  64              case 'admin': redirect("$CFG->wwwroot/$CFG->admin/");
  65          }
  66      } else {
  67          $errormsg = get_string('errorwithsettings', 'admin');
  68          $firsterror = reset($adminroot->errors);
  69      }
  70      $adminroot = admin_get_root(true); //reload tree
  71      $settingspage = $adminroot->locate($category, true);
  72  }
  73  
  74  if ($PAGE->user_allowed_editing() && $adminediting != -1) {
  75      $USER->editing = $adminediting;
  76  }
  77  
  78  if ($PAGE->user_allowed_editing()) {
  79      $url = clone($PAGE->url);
  80      if ($PAGE->user_is_editing()) {
  81          $caption = get_string('blockseditoff');
  82          $url->param('adminedit', 'off');
  83      } else {
  84          $caption = get_string('blocksediton');
  85          $url->param('adminedit', 'on');
  86      }
  87      $buttons = $OUTPUT->single_button($url, $caption, 'get');
  88  }
  89  
  90  $savebutton = false;
  91  $outputhtml = '';
  92  foreach ($settingspage->children as $childpage) {
  93      if ($childpage->is_hidden()) {
  94          continue;
  95      }
  96      if ($childpage instanceof admin_externalpage) {
  97          $outputhtml .= $OUTPUT->heading(html_writer::link($childpage->url, $childpage->visiblename), 3);
  98      } else if ($childpage instanceof admin_settingpage) {
  99          $outputhtml .= $OUTPUT->heading(html_writer::link(new moodle_url('/'.$CFG->admin.'/settings.php', array('section' => $childpage->name)), $childpage->visiblename), 3);
 100          // If its a settings page and has settings lets display them.
 101          if (!empty($childpage->settings)) {
 102              $outputhtml .= html_writer::start_tag('fieldset', array('class' => 'adminsettings'));
 103              foreach ($childpage->settings as $setting) {
 104                  if (empty($setting->nosave)) {
 105                      $savebutton = true;
 106                  }
 107                  $fullname = $setting->get_full_name();
 108                  if (array_key_exists($fullname, $adminroot->errors)) {
 109                      $data = $adminroot->errors[$fullname]->data;
 110                  } else {
 111                      $data = $setting->get_setting();
 112                  }
 113                  $outputhtml .= html_writer::tag('div', '<!-- -->', array('class' => 'clearer'));
 114                  $outputhtml .= $setting->output_html($data);
 115              }
 116              $outputhtml .= html_writer::end_tag('fieldset');
 117          }
 118      } else if ($childpage instanceof admin_category) {
 119          $outputhtml .= $OUTPUT->heading(html_writer::link(new moodle_url('/'.$CFG->admin.'/category.php', array('category' => $childpage->name)), get_string('admincategory', 'admin', $childpage->visiblename)), 3);
 120      }
 121  }
 122  if ($savebutton) {
 123      $outputhtml .= html_writer::start_tag('div', array('class' => 'form-buttons'));
 124      $outputhtml .= html_writer::empty_tag('input', array('class' => 'form-submit', 'type' => 'submit', 'value' => get_string('savechanges','admin')));
 125      $outputhtml .= html_writer::end_tag('div');
 126  }
 127  
 128  $visiblepathtosection = array_reverse($settingspage->visiblepath);
 129  $PAGE->set_title("$SITE->shortname: " . implode(": ",$visiblepathtosection));
 130  $PAGE->set_heading($SITE->fullname);
 131  $PAGE->set_button($buttons);
 132  
 133  echo $OUTPUT->header();
 134  
 135  if ($errormsg !== '') {
 136      echo $OUTPUT->notification($errormsg);
 137  } else if ($statusmsg !== '') {
 138      echo $OUTPUT->notification($statusmsg, 'notifysuccess');
 139  }
 140  
 141  $path = array_reverse($settingspage->visiblepath);
 142  if (is_array($path)) {
 143      $visiblename = join(' / ', $path);
 144  } else {
 145      $visiblename = $path;
 146  }
 147  echo $OUTPUT->heading(get_string('admincategory', 'admin', $visiblename), 2);
 148  
 149  echo html_writer::start_tag('form', array('action' => '', 'method' => 'post', 'id' => 'adminsettings'));
 150  echo html_writer::start_tag('div');
 151  echo html_writer::input_hidden_params(new moodle_url($PAGE->url, array('sesskey' => sesskey(), 'return' => $return)));
 152  echo html_writer::end_tag('div');
 153  echo html_writer::start_tag('fieldset');
 154  echo html_writer::tag('div', '<!-- -->', array('class' => 'clearer'));
 155  echo $outputhtml;
 156  echo html_writer::end_tag('fieldset');
 157  echo html_writer::end_tag('form');
 158  
 159  echo $OUTPUT->footer();


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1