Permalink
Browse files

Merge branch 'MDL-27829_block_pagetype_master' of git://github.com/an…

…dyjdavis/moodle
  • Loading branch information...
Sam Hemelryk
Sam Hemelryk committed Jun 29, 2011
2 parents cddb428 + b38e2e2 commit f86e19b1ee523a7627f18ee23a232feb3daa865d
View
@@ -1035,7 +1035,7 @@ function blog_comment_validate($comment_param) {
* @param stdClass $parentcontext Block's parent context
* @param stdClass $currentcontext Current context of block
*/
-function blog_pagetypelist($pagetype, $parentcontext, $currentcontext) {
+function blog_page_type_list($pagetype, $parentcontext, $currentcontext) {
return array(
'*'=>get_string('page-x', 'pagetype'),
'blog-*'=>get_string('page-blog-x', 'blog'),
View
@@ -4218,7 +4218,7 @@ protected function notify($touser, $fromuser, $name='courserequested', $subject,
* @param stdClass $parentcontext Block's parent context
* @param stdClass $currentcontext Current context of block
*/
-function course_pagetypelist($pagetype, $parentcontext, $currentcontext) {
+function course_page_type_list($pagetype, $parentcontext, $currentcontext) {
// if above course context ,display all course fomats
list($currentcontext, $course, $cm) = get_context_info_array($currentcontext->id);
if ($course->id == SITEID) {
@@ -4230,4 +4230,4 @@ function course_pagetypelist($pagetype, $parentcontext, $currentcontext) {
'mod-*'=>get_string('page-mod-x', 'pagetype')
);
}
-}
+}
@@ -2,4 +2,5 @@
$string['completion:view'] = 'View course completion report';
$string['completiondate']='Completion date';
+$string['pluginpagetype'] = 'Completion course report';
$string['pluginname']='Course completion';
@@ -44,3 +44,18 @@ function completion_report_extend_navigation($navigation, $course, $context) {
}
}
}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function completion_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-completion-*' => get_string('pluginpagetype', 'coursereport_completion')
+ );
+ return $array;
+}
View
@@ -0,0 +1,38 @@
+<?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/>.
+
+/**
+ * This file contains functions used by course reports
+ *
+ * @since 2.1
+ * @package course-report
+ * @copyright 2011 Andrew Davis
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function coursereport_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype')
+ );
+ return $array;
+}
@@ -27,4 +27,5 @@
$string['log:view'] = 'View course logs';
$string['log:viewlive'] = 'View live logs';
$string['log:viewtoday'] = 'View today\'s logs';
+$string['pluginpagetype'] = 'Log course report';
$string['pluginname'] = 'Logs';
View
@@ -537,3 +537,18 @@ function log_report_extend_navigation($navigation, $course, $context) {
$navigation->add(get_string('pluginname', 'coursereport_log'), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
}
}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function log_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-log-*' => get_string('pluginpagetype', 'coursereport_log')
+ );
+ return $array;
+}
@@ -24,4 +24,5 @@
*/
$string['outline:view'] = 'View course activity report';
+$string['pluginpagetype'] = 'Course activity report';
$string['pluginname'] = 'Course activity';
@@ -37,4 +37,19 @@ function outline_report_extend_navigation($navigation, $course, $context) {
$url = new moodle_url('/course/report/outline/index.php', array('id'=>$course->id));
$navigation->add(get_string( 'activityreport' ), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
}
+}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function outline_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-outline-*' => get_string('pluginpagetype', 'coursereport_outline')
+ );
+ return $array;
}
@@ -24,4 +24,5 @@
*/
$string['participation:view'] = 'View course participation report';
+$string['pluginpagetype'] = 'Participation course report';
$string['pluginname'] = 'Course participation';
@@ -37,4 +37,19 @@ function participation_report_extend_navigation($navigation, $course, $context)
$url = new moodle_url('/course/report/participation/index.php', array('id'=>$course->id));
$navigation->add(get_string('participationreport'), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
}
+}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function participation_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-participation-*' => get_string('pluginpagetype', 'coursereport_participation')
+ );
+ return $array;
}
@@ -24,4 +24,5 @@
*/
$string['pluginname'] = 'Activity completion';
+$string['pluginpagetype'] = 'Progress course report';
$string['progress:view'] = 'View activity completion reports';
@@ -49,3 +49,18 @@ function progress_report_extend_navigation($navigation, $course, $context) {
$navigation->add(get_string('pluginname','coursereport_progress'), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
}
}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function progress_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-progress-*' => get_string('pluginpagetype', 'coursereport_progress')
+ );
+ return $array;
+}
@@ -24,4 +24,5 @@
*/
$string['pluginname'] = 'Course statistics';
+$string['pluginpagetype'] = 'Statistics course report';
$string['stats:view'] = 'View course statistics report';
@@ -91,3 +91,18 @@ function stats_report_extend_navigation($navigation, $course, $context) {
}
}
}
+
+/**
+ * Return a list of page types
+ * @param string $pagetype current page type
+ * @param stdClass $parentcontext Block's parent context
+ * @param stdClass $currentcontext Current context of block
+ */
+function stats_page_type_list($pagetype, $parentcontext, $currentcontext) {
+ $array = array(
+ '*' => get_string('page-x', 'pagetype'),
+ 'course-report-*' => get_string('page-course-report-x', 'pagetype'),
+ 'course-report-stats-*' => get_string('pluginpagetype', 'coursereport_stats')
+ );
+ return $array;
+}
View
@@ -25,6 +25,7 @@
$string['page-course-view-x'] = 'Any type of course main page';
$string['page-course-x'] = 'Any course page';
+$string['page-course-report-x'] = 'Any course report';
$string['page-mod-x'] = 'Any activity module page';
$string['page-mod-x-view'] = 'Any main activity module page';
$string['page-my-index'] = 'My home page';
View
@@ -1563,34 +1563,72 @@ function generate_page_type_patterns($pagetype, $parentcontext = null, $currentc
$bits = explode('-', $pagetype);
- $component = clean_param(reset($bits), PARAM_ALPHANUMEXT);
- $function = 'default_pagetypelist';
-
$core = get_core_subsystems();
$plugins = get_plugin_types();
- // First check to see if the initial component is a core component
- // if its not check to see if it is a plugin component.
- if (array_key_exists($component, $core) && !empty($core[$component])) {
- $libfile = $CFG->dirroot.'/'.$core[$component].'/lib.php';
- if (file_exists($libfile)) {
- require_once($libfile);
- if (function_exists($component.'_pagetypelist')) {
- $function = $component.'_pagetypelist';
+ //progressively strip pieces off the page type looking for a match
+ $componentarray = null;
+ for ($i = count($bits); $i > 0; $i--) {
+ $possiblecomponentarray = array_slice($bits, 0, $i);
+ $possiblecomponent = implode('', $possiblecomponentarray);
+
+ // Check to see if the component is a core component
+ if (array_key_exists($possiblecomponent, $core) && !empty($core[$possiblecomponent])) {
+ $libfile = $CFG->dirroot.'/'.$core[$possiblecomponent].'/lib.php';
+ if (file_exists($libfile)) {
+ require_once($libfile);
+ $function = $possiblecomponent.'_page_type_list';
+ if (function_exists($function)) {
+ if ($patterns = $function($pagetype, $parentcontext, $currentcontext)) {
+ break;
+ }
+ }
}
}
- } else if (array_key_exists($component, $plugins) && !empty($plugins[$component])) {
- $function = 'plugin_pagetypelist';
- if (function_exists($component.'_pagetypelist')) {
- $function = $component.'_pagetypelist';
+
+ //check the plugin directory and look for a callback
+ if (array_key_exists($possiblecomponent, $plugins) && !empty($plugins[$possiblecomponent])) {
+
+ //We've found a plugin type. Look for a plugin name by getting the next section of page type
+ if (count($bits) > $i) {
+ $pluginname = $bits[$i];
+ $directory = get_plugin_directory($possiblecomponent, $pluginname);
+ if (!empty($directory)){
+ $libfile = $directory.'/lib.php';
+ if (file_exists($libfile)) {
+ require_once($libfile);
+ $function = $pluginname.'_page_type_list';
+ if (function_exists($function)) {
+ if ($patterns = $function($pagetype, $parentcontext, $currentcontext)) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ //we'll only get to here if we still don't have any patterns
+ //the plugin type may have a callback
+ $directory = get_plugin_directory($possiblecomponent, null);
+ if (!empty($directory)){
+ $libfile = $directory.'/lib.php';
+ if (file_exists($libfile)) {
+ require_once($libfile);
+ $function = $possiblecomponent.'_page_type_list';
+ if (function_exists($function)) {
+ if ($patterns = $function($pagetype, $parentcontext, $currentcontext)) {
+ break;
+ }
+ }
+ }
+ }
}
}
- // Call the most appropriate function we could determine
- $patterns = $function($pagetype, $parentcontext, $currentcontext);
+
if (empty($patterns)) {
- // If there are no patterns default to just the current pattern.
- $patterns = array($pagetype => $pagetype);
+ $patterns = default_page_type_list($pagetype, $parentcontext, $currentcontext);
}
+
return $patterns;
}
@@ -1602,7 +1640,7 @@ function generate_page_type_patterns($pagetype, $parentcontext = null, $currentc
* @param stdClass $currentcontext
* @return array
*/
-function default_pagetypelist($pagetype, $parentcontext = null, $currentcontext = null) {
+function default_page_type_list($pagetype, $parentcontext = null, $currentcontext = null) {
// Generate page type patterns based on current page type if
// callbacks haven't been defined
$patterns = array($pagetype => $pagetype);
@@ -1622,40 +1660,6 @@ function default_pagetypelist($pagetype, $parentcontext = null, $currentcontext
return $patterns;
}
-/**
- * Generates a page type list for plugins
- *
- * @param string $pagetype
- * @param stdClass $parentcontext
- * @param stdClass $currentcontext
- * @return array
- */
-function plugin_pagetypelist($pagetype, $parentcontext = null, $currentcontext = null) {
- global $CFG;
-
- // for modules
- $bits = explode('-', $pagetype);
- $plugintype = $bits[0];
- $pluginname = $bits[1];
- $directory = get_plugin_directory($plugintype, $pluginname);
- if (empty($directory)) {
- return array();
- }
- $libfile = $directory.'/lib.php';
- require_once($libfile);
- $function = $pluginname.'_pagetypelist';
- if (!function_exists($function)) {
- return array();
- }
- $patterns = $function($pagetype, $parentcontext, $currentcontext);
- if ($parentcontext->contextlevel == CONTEXT_COURSE) {
- // including course page type
- require_once("$CFG->dirroot/course/lib.php");
- $patterns = array_merge(course_pagetypelist($pagetype, $parentcontext, $currentcontext), $patterns);
- }
- return $patterns;
-}
-
/**
* Generates the page type list for the my moodle page
*
@@ -1664,7 +1668,7 @@ function plugin_pagetypelist($pagetype, $parentcontext = null, $currentcontext =
* @param stdClass $currentcontext
* @return array
*/
-function my_pagetypelist($pagetype, $parentcontext = null, $currentcontext = null) {
+function my_page_type_list($pagetype, $parentcontext = null, $currentcontext = null) {
return array('my-index' => 'my-index');
}
@@ -1677,8 +1681,8 @@ function my_pagetypelist($pagetype, $parentcontext = null, $currentcontext = nul
* @param stdClass $currentcontext
* @return array
*/
-function mod_pagetypelist($pagetype, $parentcontext = null, $currentcontext = null) {
- $patterns = plugin_pagetypelist($pagetype, $parentcontext, $currentcontext);
+function mod_page_type_list($pagetype, $parentcontext = null, $currentcontext = null) {
+ $patterns = plugin_page_type_list($pagetype, $parentcontext, $currentcontext);
if (empty($patterns)) {
// if modules don't have callbacks
// generate two default page type patterns for modules only
Oops, something went wrong.

0 comments on commit f86e19b

Please sign in to comment.