Permalink
Browse files

Merge branch 'MDL-25999_head' of git://github.com/rwijaya/moodle

  • Loading branch information...
2 parents f50a61f + 5375812 commit d0542700f5267e184d33aa7da762ddec3374ea1b Sam Hemelryk committed Apr 19, 2011
@@ -1,15 +1,65 @@
<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Admin Bookmarks Block page.
+ *
+ * @package block
+ * @subpackage admin_bookmarks
+ * @copyright 2011 Moodle
+ * @author 2006 vinkmar
+ * 2011 Rossiani Wijaya (updated)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ *
+ */
+
+/**
+ * The admin bookmarks block class
+ */
+class block_admin_bookmarks extends block_base {
-// seems to work...
-// maybe I should add some pretty icons?
-// or possibly add the ability to custom-name things?
+ /** @var string */
+ public $blockname = null;
-class block_admin_bookmarks extends block_base {
+ /** @var bool */
+ protected $contentgenerated = false;
+ /** @var bool|null */
+ protected $docked = null;
+
+ /**
+ * Set the initial properties for the block
+ */
function init() {
- $this->title = get_string('pluginname', 'block_admin_bookmarks');
+ $this->blockname = get_class($this);
+ $this->title = get_string('pluginname', $this->blockname);
+ }
+
+ /**
+ * All multiple instances of this block
+ * @return bool Returns false
+ */
+ function instance_allow_multiple() {
+ return false;
}
+ /**
+ * Set the applicable formats for this block to all
+ * @return array
+ */
function applicable_formats() {
if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
return array('all' => true);
@@ -18,58 +68,59 @@ function applicable_formats() {
}
}
- function preferred_width() {
- return 210;
- }
-
- function create_item($visiblename,$link,$icon) {
- $this->tempcontent .= '<a href="' . $link . '"><img src="' . $icon . '" alt="" /> ' . $visiblename . '</a><br />' . "\n";
- }
-
+ /**
+ * Gets the content for this block
+ */
function get_content() {
- global $CFG, $USER;
+ global $CFG;
- if ($this->content !== NULL) {
+ // First check if we have already generated, don't waste cycles
+ if ($this->contentgenerated === true) {
return $this->content;
}
- $this->content = new stdClass;
- $this->content->text = '';
if (get_user_preferences('admin_bookmarks')) {
- // this is expensive! Only require when bookmakrs exist..
require_once($CFG->libdir.'/adminlib.php');
$adminroot = admin_get_root(false, false); // settings not required - only pages
$bookmarks = explode(',', get_user_preferences('admin_bookmarks'));
- // hmm... just a liiitle (potentially) processor-intensive
- // (recall that $adminroot->locate is a huge recursive call... and we're calling it repeatedly here
-
/// Accessibility: markup as a list.
- $this->content->text .= '<ol class="list">'."\n";
-
+ $contents = array();
foreach($bookmarks as $bookmark) {
$temp = $adminroot->locate($bookmark);
if ($temp instanceof admin_settingpage) {
- $this->content->text .= '<li><a href="' . $CFG->wwwroot . '/' . $CFG->admin . '/settings.php?section=' . $bookmark . '">' . $temp->visiblename . "</a></li>\n";
+ $contenturl = new moodle_url('settings.php', array('section'=>$bookmark));
+ $contentlink = html_writer::link($contenturl, $temp->visiblename);
+ $contents[] = html_writer::tag('li', $contentlink);
} else if ($temp instanceof admin_externalpage) {
- $this->content->text .= '<li><a href="' . $temp->url . '">' . $temp->visiblename . "</a></li>\n";
+ $contenturl = new moodle_url($temp->url);
+ $contentlink = html_writer::link($contenturl, $temp->visiblename);
+ $contents[] = html_writer::tag('li', $contentlink);
}
}
- $this->content->text .= "</ol>\n";
+ $this->content->text = html_writer::tag('ol', implode('', $contents), array('class' => 'list'));
} else {
$bookmarks = array();
}
- if (isset($this->page->section) and $this->page->section == 'search'){
+ $this->content->footer = '';
+ $this->page->settingsnav->initialise();
+ $node = $this->page->settingsnav->get('root', navigation_node::TYPE_SETTING);
+ if (!$node || !$node->contains_active_node()) {
+ return $this->content;
+ }
+ $section = $node->find_active_node()->key;
+
+ if ($section == 'search' || empty($section)){
// the search page can't be properly bookmarked at present
$this->content->footer = '';
- } else if (($section = (isset($this->page->section) ? $this->page->section : '')) && (in_array($section, $bookmarks))) {
- $this->content->footer = '<a href="' . $CFG->wwwroot . '/blocks/admin_bookmarks/delete.php?section=' . $section . '&amp;sesskey='.sesskey().'">' . get_string('unbookmarkthispage','admin') . '</a>';
- } else if ($section = (isset($this->page->section) ? $this->page->section : '')) {
- $this->content->footer = '<a href="' . $CFG->wwwroot . '/blocks/admin_bookmarks/create.php?section=' . $section . '&amp;sesskey='.sesskey().'">' . get_string('bookmarkthispage','admin') . '</a>';
+ } else if (in_array($section, $bookmarks)) {
+ $deleteurl = new moodle_url('/blocks/admin_bookmarks/delete.php', array('section'=>$section, 'sesskey'=>sesskey()));
+ $this->content->footer = html_writer::link($deleteurl, get_string('unbookmarkthispage','admin'));
} else {
- $this->content->footer = '';
+ $createurl = new moodle_url('/blocks/admin_bookmarks/create.php', array('section'=>$section, 'sesskey'=>sesskey()));
+ $this->content->footer = html_writer::link($createurl, get_string('bookmarkthispage','admin'));
}
return $this->content;
@@ -4,6 +4,8 @@
require_once($CFG->libdir.'/adminlib.php');
require_login();
+$context = get_context_instance(CONTEXT_SYSTEM);
+$PAGE->set_context($context);
$adminroot = admin_get_root(false, false); // settings not required - only pages
if ($section = optional_param('section', '', PARAM_SAFEDIR) and confirm_sesskey()) {
@@ -5,6 +5,8 @@
require_once($CFG->libdir.'/adminlib.php');
require_login();
+$context = get_context_instance(CONTEXT_SYSTEM);
+$PAGE->set_context($context);
$adminroot = admin_get_root(false, false); // settings not required - only pages
if ($section = optional_param('section', '', PARAM_SAFEDIR) and confirm_sesskey()) {

0 comments on commit d054270

Please sign in to comment.