diff --git a/blocks/navigation/block_navigation.php b/blocks/navigation/block_navigation.php index 8bfa9b7179f..0fa1a5f8d79 100644 --- a/blocks/navigation/block_navigation.php +++ b/blocks/navigation/block_navigation.php @@ -1,5 +1,4 @@ <?php - // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify @@ -19,8 +18,8 @@ * This file contains classes used to manage the navigation structures in Moodle * and was introduced as part of the changes occuring in Moodle 2.0 * - * @since 2.0 - * @package blocks + * @since 2.0 + * @package block_navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -30,19 +29,20 @@ * * Used to produce the global navigation block new to Moodle 2.0 * - * @package blocks + * @package block_navigation + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class block_navigation extends block_base { - /** @var int */ + /** @var int This allows for multiple navigation trees */ public static $navcount; - /** @var string */ + /** @var string The name of the block */ public $blockname = null; - /** @var bool */ + /** @var bool A switch to indicate whether content has been generated or not. */ protected $contentgenerated = false; - /** @var bool|null */ + /** @var bool|null variable for checking if the block is docked*/ protected $docked = null; /** @var int Trim characters from the right */ @@ -63,7 +63,7 @@ class block_navigation extends block_base { /** * All multiple instances of this block - * @return bool Returns true + * @return bool Returns false */ function instance_allow_multiple() { return false; @@ -95,10 +95,18 @@ class block_navigation extends block_base { return false; } + /** + * Find out if an instance can be docked. + * + * @return bool true or false depending on whether the instance can be docked or not. + */ function instance_can_be_docked() { return (parent::instance_can_be_docked() && (empty($this->config->enabledock) || $this->config->enabledock=='yes')); } + /** + * Gets Javascript that may be required for navigation + */ function get_required_javascript() { global $CFG; user_preference_allow_ajax_update('docked_block_instance_'.$this->instance->id, PARAM_INT); @@ -124,6 +132,8 @@ class block_navigation extends block_base { /** * Gets the content for this block by grabbing it from $this->page + * + * @return object $this->content */ function get_content() { global $CFG, $OUTPUT; @@ -134,7 +144,7 @@ class block_navigation extends block_base { // JS for navigation moved to the standard theme, the code will probably have to depend on the actual page structure // $this->page->requires->js('/lib/javascript-navigation.js'); // Navcount is used to allow us to have multiple trees although I dont' know why - // you would want to trees the same + // you would want two trees the same block_navigation::$navcount++; @@ -209,9 +219,9 @@ class block_navigation extends block_base { * * This function returns an array of HTML attributes for this block including * the defaults - * {@link block_tree->html_attributes()} is used to get the default arguments + * {@see block_tree::html_attributes()} is used to get the default arguments * and then we check whether the user has enabled hover expansion and add the - * appropriate hover class if it has + * appropriate hover class if it has. * * @return array An array of HTML attributes */ @@ -227,6 +237,7 @@ class block_navigation extends block_base { * Trims the text and shorttext properties of this node and optionally * all of its children. * + * @param navigation_node $node * @param int $mode One of navigation_node::TRIM_* * @param int $long The length to trim text to * @param int $short The length to trim shorttext to diff --git a/blocks/navigation/edit_form.php b/blocks/navigation/edit_form.php index 0d36b6b09fa..3134e59f23e 100644 --- a/blocks/navigation/edit_form.php +++ b/blocks/navigation/edit_form.php @@ -1,5 +1,4 @@ <?php - // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify @@ -18,8 +17,8 @@ /** * Form for editing global navigation instances. * - * @since 2.0 - * @package blocks + * @since 2.0 + * @package block_navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -27,7 +26,8 @@ /** * Form for editing global navigation instances. * - * @package blocks + * @package block_navigation + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ diff --git a/blocks/navigation/renderer.php b/blocks/navigation/renderer.php index b62d4db60c6..2e6f69c63c0 100644 --- a/blocks/navigation/renderer.php +++ b/blocks/navigation/renderer.php @@ -1,7 +1,45 @@ <?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/>. +/** + * Outputs the navigation tree. + * + * @since 2.0 + * @package block_navigation + * @copyright 2009 Sam Hemelryk + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Renderer for block navigation + * + * @package block_navigation + * @category navigation + * @copyright 2009 Sam Hemelryk + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ class block_navigation_renderer extends plugin_renderer_base { - + /** + * Returns the content of the navigation tree. + * + * @param global_navigation $navigation + * @param int $expansionlimit + * @param array $options + * @return string $content + */ public function navigation_tree(global_navigation $navigation, $expansionlimit, array $options = array()) { $navigation->add_class('navigation_node'); $content = $this->navigation_node(array($navigation), array('class'=>'block_tree list'), $expansionlimit, $options); @@ -10,7 +48,16 @@ class block_navigation_renderer extends plugin_renderer_base { } return $content; } - + /** + * Produces a navigation node for the navigation tree + * + * @param array $items + * @param array $attrs + * @param int $expansionlimit + * @param array $options + * @param int $depth + * @return string + */ protected function navigation_node($items, $attrs=array(), $expansionlimit=null, array $options = array(), $depth=1) { // exit if empty, we don't want an empty ul element diff --git a/blocks/navigation/version.php b/blocks/navigation/version.php index 3d5bf5eed0f..fee1d15918c 100644 --- a/blocks/navigation/version.php +++ b/blocks/navigation/version.php @@ -17,8 +17,7 @@ /** * Version details * - * @package block - * @subpackage navigation + * @package block_navigation * @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 8fe10420125..980dd63a507 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -21,7 +21,6 @@ * * @since 2.0 * @package core - * @subpackage navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -42,8 +41,8 @@ define('NAVIGATION_CACHE_NAME', 'navigation'); * When a node is first created it is created as a leaf, when/if children are added * the node then becomes a branch. * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -297,8 +296,7 @@ class navigation_node implements renderable { * Adds a navigation node as a child of this one, given a $node object * created using the create function. * @param navigation_node $childnode Node to add - * @param int|string $key The key of a node to add this before. If not - * specified, adds at end of list + * @param string $beforekey * @return navigation_node The added node */ public function add_node(navigation_node $childnode, $beforekey=null) { @@ -355,7 +353,7 @@ class navigation_node implements renderable { } /** - * Get ths child of this node that has the given key + (optional) type. + * Get the child of this node that has the given key + (optional) type. * * If you are looking for a node and want to search all children + thier children * then please use the find method instead. @@ -596,7 +594,7 @@ class navigation_node implements renderable { /** * Finds all nodes of a given type (recursive) * - * @param int $type On of navigation_node::TYPE_* + * @param int $type One of navigation_node::TYPE_* * @return array */ public function find_all_of_type($type) { @@ -681,8 +679,8 @@ class navigation_node implements renderable { * however it was decided that a better solution would be to use a class that * implements the standard IteratorAggregate interface. * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2010 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -854,6 +852,9 @@ class navigation_node_collection implements IteratorAggregate { /** * Fetches all nodes of a given type from this collection + * + * @param string|int $type node type being searched for. + * @return array ordered collection */ public function type($type) { if (!array_key_exists($type, $this->orderedcollection)) { @@ -864,7 +865,7 @@ class navigation_node_collection implements IteratorAggregate { /** * Removes the node with the given key and type from the collection * - * @param string|int $key + * @param string|int $key The key of the node we want to find. * @param int $type * @return bool */ @@ -915,43 +916,38 @@ class navigation_node_collection implements IteratorAggregate { * and is then used by the settings nav and navbar to save on processing and DB calls * * See - * <ul> - * <li><b>{@link lib/pagelib.php}</b> {@link moodle_page::initialise_theme_and_output()}<li> - * <li><b>{@link lib/ajax/getnavbranch.php}</b> Called by ajax<li> - * </ul> + * {@link lib/pagelib.php} {@see moodle_page::initialise_theme_and_output()} + * {@link lib/ajax/getnavbranch.php} Called by ajax * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class global_navigation extends navigation_node { - /** - * The Moodle page this navigation object belongs to. - * @var moodle_page - */ + /** @var moodle_page The Moodle page this navigation object belongs to. */ protected $page; - /** @var bool */ + /** @var bool switch to let us know if the navigation object is initialised*/ protected $initialised = false; - /** @var array */ + /** @var array An array of course information */ protected $mycourses = array(); - /** @var array */ + /** @var array An array for containing root navigation nodes */ protected $rootnodes = array(); - /** @var bool */ + /** @var bool A switch for whether to show empty sections in the navigation */ protected $showemptysections = false; - /** @var bool */ + /** @var bool A switch for whether courses should be shown within categories on the navigation. */ protected $showcategories = null; - /** @var array */ + /** @var array An array of stdClasses for users that the navigation is extended for */ protected $extendforuser = array(); /** @var navigation_cache */ protected $cache; - /** @var array */ + /** @var array An array of course ids that are present in the navigation */ protected $addedcourses = array(); - /** @var array */ + /** @var array An array of category ids that are included in the navigation */ protected $addedcategories = array(); - /** @var int */ + /** @var int expansion limit */ protected $expansionlimit = 0; - /** @var int */ + /** @var int userid to allow parent to see child's profile page navigation */ protected $useridtouseforparentchecks = 0; /** @@ -984,7 +980,7 @@ class global_navigation extends navigation_node { ); } - // Use the parents consturctor.... good good reuse + // Use the parents constructor.... good good reuse parent::__construct($properties); // Initalise and set defaults @@ -1340,7 +1336,7 @@ class global_navigation extends navigation_node { } /** - * Returns true is courses should be shown within categories on the navigation. + * Returns true if courses should be shown within categories on the navigation. * * @return bool */ @@ -1379,10 +1375,9 @@ class global_navigation extends navigation_node { } /** - * Loads of the the courses in Moodle into the navigation. + * Loads the courses in Moodle into the navigation. * - * @global moodle_database $DB - * @param string|array $categoryids Either a string or array of category ids to load courses for + * @param mixed $categoryids Either a string or array of category ids to load courses for * @return array An array of navigation_node */ protected function load_all_courses($categoryids=null) { @@ -1430,7 +1425,7 @@ class global_navigation extends navigation_node { * @param int $categoryid The category id to load or null/0 to load all base level categories * @param bool $showbasecategories If set to true all base level categories will be loaded as well * as the requested category and any parent categories. - * @return void + * @return navigation_node|void returns a navigation node if a category has been loaded. */ protected function load_all_categories($categoryid = null, $showbasecategories = false) { global $DB; @@ -1572,7 +1567,7 @@ class global_navigation extends navigation_node { * formats lib.php file to customise the navigation that is generated at this * point for the course. * - * By default (if not defined) the method {@see load_generic_course_sections} is + * By default (if not defined) the method {@see global_navigation::load_generic_course_sections()} is * called instead. * * @param stdClass $course Database record for the course @@ -2128,7 +2123,7 @@ class global_navigation extends navigation_node { /** * This method simply checks to see if a given module can extend the navigation. * - * TODO: A shared caching solution should be used to save details on what extends navigation + * @todo (MDL-25290) A shared caching solution should be used to save details on what extends navigation. * * @param string $modname * @return bool @@ -2159,7 +2154,7 @@ class global_navigation extends navigation_node { /** * Returns all of the users the navigation is being extended for * - * @return array + * @return array An array of extending users. */ public function get_extending_users() { return $this->extendforuser; @@ -2168,6 +2163,8 @@ class global_navigation extends navigation_node { * Adds the given course to the navigation structure. * * @param stdClass $course + * @param bool $forcegeneric (optional) + * @param bool $ismycourse (optional) * @return navigation_node */ public function add_course(stdClass $course, $forcegeneric = false, $ismycourse = false) { @@ -2253,7 +2250,7 @@ class global_navigation extends navigation_node { * * @param navigation_node $coursenode * @param stdClass $course - * @return bool + * @return bool returns true on successful addition of a node. */ public function add_course_essentials($coursenode, stdClass $course) { global $CFG; @@ -2313,7 +2310,7 @@ class global_navigation extends navigation_node { return true; } /** - * This generates the the structure of the course that won't be generated when + * This generates the structure of the course that won't be generated when * the modules and sections are added. * * Things such as the reports branch, the participants branch, blogs... get @@ -2406,7 +2403,7 @@ class global_navigation extends navigation_node { * They are still generated in order to ensure the navbar still makes sense. * * @param int $type One of navigation_node::TYPE_* - * @return <type> + * @return bool true when complete. */ public function set_expansion_limit($type) { $nodes = $this->find_all_of_type($type); @@ -2432,7 +2429,7 @@ class global_navigation extends navigation_node { * This function only looks at this nodes children, it does NOT look recursivily. * If the node can't be found then false is returned. * - * If you need to search recursivily then use the {@see find()} method. + * If you need to search recursivily then use the {@see global_navigation::find()} method. * * Note: If you are trying to set the active node {@see navigation_node::override_active_url()} * may be of more use to you. @@ -2449,14 +2446,14 @@ class global_navigation extends navigation_node { } /** - * Searches this nodes children and thier children to find a navigation node + * Searches this nodes children and their children to find a navigation node * with the matching key and type. * * This method is recursive and searches children so until either a node is - * found of there are no more nodes to search. + * found or there are no more nodes to search. * * If you know that the node being searched for is a child of this node - * then use the {@see get()} method instead. + * then use the {@see global_navigation::get()} method instead. * * Note: If you are trying to set the active node {@see navigation_node::override_active_url()} * may be of more use to you. @@ -2484,21 +2481,28 @@ class global_navigation extends navigation_node { * This has been done only because it shortens the amounts of information that is generated * which of course will speed up the response time.. because no one likes laggy AJAX. * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class global_navigation_for_ajax extends global_navigation { + /** @var int used for determining what type of navigation_node::TYPE_* is being used */ protected $branchtype; + + /** @var int the instance id */ protected $instanceid; - /** @var array */ + /** @var array Holds an array of expandable nodes */ protected $expandable = array(); /** - * Constructs the navigation for use in AJAX request + * Constructs the navigation for use in an AJAX request + * + * @param moodle_page $page moodle_page object + * @param int $branchtype + * @param int $id */ public function __construct($page, $branchtype, $id) { $this->page = $page; @@ -2511,7 +2515,7 @@ class global_navigation_for_ajax extends global_navigation { /** * Initialise the navigation given the type and id for the branch to expand. * - * @return array The expandable nodes + * @return array An array of the expandable nodes */ public function initialise() { global $CFG, $DB, $SITE; @@ -2611,31 +2615,31 @@ class global_navigation_for_ajax extends global_navigation { * This class is used to manage the navbar, which is initialised from the navigation * object held by PAGE * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class navbar extends navigation_node { - /** @var bool */ + /** @var bool A switch for whether the navbar is initialised or not */ protected $initialised = false; - /** @var mixed */ + /** @var mixed keys used to reference the nodes on the navbar */ protected $keys = array(); - /** @var null|string */ + /** @var null|string content of the navbar */ protected $content = null; - /** @var moodle_page object */ + /** @var moodle_page object the moodle page that this navbar belongs to */ protected $page; - /** @var bool */ + /** @var bool A switch for whether to ignore the active navigation information */ protected $ignoreactive = false; - /** @var bool */ + /** @var bool A switch to let us know if we are in the middle of an install */ protected $duringinstall = false; - /** @var bool */ + /** @var bool A switch for whether the navbar has items */ protected $hasitems = false; - /** @var array */ + /** @var array An array of navigation nodes for the navbar */ protected $items; - /** @var array */ + /** @var array An array of child node objects */ public $children = array(); - /** @var bool */ + /** @var bool A switch for whether we want to include the root node in the navbar */ public $includesettingsbase = false; /** * The almighty constructor @@ -2685,6 +2689,14 @@ class navbar extends navigation_node { public function ignore_active($setting=true) { $this->ignoreactive = ($setting); } + + /** + * Gets a navigation node + * + * @param string|int $key for referencing the navbar nodes + * @param int $type navigation_node::TYPE_* + * @return navigation_node|bool + */ public function get($key, $type = null) { foreach ($this->children as &$child) { if ($child->key === $key && ($type == null || $type == $child->type)) { @@ -2824,21 +2836,21 @@ class navbar extends navigation_node { * This class is used to manage the settings options in a tree format (recursively) * and was created initially for use with the settings blocks. * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class settings_navigation extends navigation_node { - /** @var stdClass */ + /** @var stdClass the current context */ protected $context; - /** @var moodle_page */ + /** @var moodle_page the moodle page that the navigation belongs to */ protected $page; - /** @var string */ + /** @var string contains administration section navigation_nodes */ protected $adminsection; - /** @var bool */ + /** @var bool A switch to see if the navigation node is initialised */ protected $initialised = false; - /** @var array */ + /** @var array An array of users that the nodes can extend for. */ protected $userstoextendfor = array(); /** @var navigation_cache **/ protected $cache; @@ -2949,13 +2961,13 @@ class settings_navigation extends navigation_node { * It does this by first calling the parent's add method {@link navigation_node::add()} * and then proceeds to use the key to set class and hr * - * @param string $text - * @param sting|moodle_url $url + * @param string $text text to be used for the link. + * @param string|moodle_url $url url for the new node + * @param int $type the type of node navigation_node::TYPE_* * @param string $shorttext - * @param string|int $key - * @param int $type - * @param string $icon - * @return navigation_node + * @param string|int $key a key to access the node by. + * @param pix_icon $icon An icon that appears next to the node. + * @return navigation_node with the new node added to it. */ public function add($text, $url=null, $type=null, $shorttext=null, $key=null, pix_icon $icon=null) { $node = parent::add($text, $url, $type, $shorttext, $key, $icon); @@ -2967,13 +2979,13 @@ class settings_navigation extends navigation_node { * This function allows the user to add something to the start of the settings * navigation, which means it will be at the top of the settings navigation block * - * @param string $text - * @param sting|moodle_url $url + * @param string $text text to be used for the link. + * @param string|moodle_url $url url for the new node + * @param int $type the type of node navigation_node::TYPE_* * @param string $shorttext - * @param string|int $key - * @param int $type - * @param string $icon - * @return navigation_node + * @param string|int $key a key to access the node by. + * @param pix_icon $icon An icon that appears next to the node. + * @return navigation_node $node with the new node added to it. */ public function prepend($text, $url=null, $type=null, $shorttext=null, $key=null, pix_icon $icon=null) { $children = $this->children; @@ -3417,7 +3429,7 @@ class settings_navigation extends navigation_node { * This only gets called if there is a corrosponding function in the modules * lib file. * - * For examples mod/forum/lib.php ::: forum_extend_settings_navigation() + * For examples mod/forum/lib.php {@see forum_extend_settings_navigation()} * * @return navigation_node|false */ @@ -3582,10 +3594,9 @@ class settings_navigation extends navigation_node { } /** - * This function gets called by {@link load_user_settings()} and actually works out + * This function gets called by {@see settings_navigation::load_user_settings()} and actually works out * what can be shown/done * - * @global moodle_database $DB * @param int $courseid The current course' id * @param int $userid The user id to load for * @param string $gstitle The string to pass to get_string for the branch title @@ -3920,6 +3931,7 @@ class settings_navigation extends navigation_node { /** * This function loads all of the front page settings into the settings navigation. * This function is called when the user is on the front page, or $COURSE==$SITE + * @param bool $forceopen (optional) * @return navigation_node */ protected function load_front_page_settings($forceopen = false) { @@ -3997,15 +4009,15 @@ class settings_navigation extends navigation_node { /** * Simple class used to output a navigation branch in XML * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class navigation_json { - /** @var array */ + /** @var array An array of different node types */ protected $nodetype = array('node','branch'); - /** @var array */ + /** @var array An array of node keys and types */ protected $expandable = array(); /** * Turns a branch and all of its children into XML @@ -4114,27 +4126,32 @@ class navigation_json { * $content = $cache->viewdiscussion; * </code> * - * @package moodlecore - * @subpackage navigation + * @package core + * @category navigation * @copyright 2009 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class navigation_cache { - /** @var int */ + /** @var int represents the time created */ protected $creation; - /** @var array */ + /** @var array An array of session keys */ protected $session; - /** @var string */ + /** + * The string to use to segregate this particular cache. It can either be + * unique to start a fresh cache or if you want to share a cache then make + * it the string used in the original cache. + * @var string + */ protected $area; - /** @var int */ + /** @var int a time that the information will time out */ protected $timeout; - /** @var stdClass */ + /** @var stdClass The current context */ protected $currentcontext; - /** @var int */ + /** @var int cache time information */ const CACHETIME = 0; - /** @var int */ + /** @var int cache user id */ const CACHEUSERID = 1; - /** @var int */ + /** @var int cache value */ const CACHEVALUE = 2; /** @var null|array An array of navigation cache areas to expire on shutdown */ public static $volatilecaches; @@ -4273,7 +4290,7 @@ class navigation_cache { * Marks the cache as being volatile (likely to change) * * Any caches marked as volatile will be destroyed at the on shutdown by - * {@link navigation_node::destroy_volatile_caches()} which is registered + * {@see navigation_node::destroy_volatile_caches()} which is registered * as a shutdown function if any caches are marked as volatile. * * @param bool $setting True to destroy the cache false not too