diff --git a/admin/tool/monitor/lang/en/tool_monitor.php b/admin/tool/monitor/lang/en/tool_monitor.php index b2ab10db38d..4c59a8c8013 100644 --- a/admin/tool/monitor/lang/en/tool_monitor.php +++ b/admin/tool/monitor/lang/en/tool_monitor.php @@ -29,6 +29,8 @@ $string['allmodules'] = 'All modules'; $string['core'] = 'Core'; $string['eventnotfound'] = 'Event not found'; $string['freqdesc'] = '{$a->freq} times in {$a->mins} minutes'; +$string['managesubscriptions'] = 'Manage subscriptions'; +$string['managerules'] = 'Manage rules'; $string['pluginname'] = 'Event monitor'; $string['selectcourse'] = 'Visit this report at course level to get a list of possible modules'; $string['tool/monitor:managerules'] = 'Manage event monitor rules'; diff --git a/admin/tool/monitor/lib.php b/admin/tool/monitor/lib.php new file mode 100644 index 00000000000..e562f82ad4b --- /dev/null +++ b/admin/tool/monitor/lib.php @@ -0,0 +1,67 @@ +. + +/** + * This page lists public api for tool_monitor plugin. + * + * @package tool_monitor + * @copyright 2014 onwards Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die; + +/** + * This function extends the navigation with the tool items + * + * @param navigation_node $navigation The navigation node to extend + * @param stdClass $course The course to object for the tool + * @param context $context The context of the course + */ +function tool_monitor_extend_navigation_course($navigation, $course, $context) { + $node = navigation_node::create(get_string('pluginname', 'tool_monitor'), null, navigation_node::TYPE_CONTAINER, null, + 'eventmonitor', new pix_icon('i/tool', '')); + + if (has_capability('tool/monitor:managerules', $context)) { + $url = new moodle_url('/admin/tool/monitor/managerules.php', array('courseid' => $course->id)); + $settingsnode = navigation_node::create(get_string('managerules', 'tool_monitor'), $url, navigation_node::TYPE_SETTING, + null, null, new pix_icon('i/settings', '')); + } + + if (has_capability('tool/monitor:subscribe', $context)) { + $url = new moodle_url('/admin/tool/monitor/index.php', array('courseid' => $course->id)); + $subsnode = navigation_node::create(get_string('managesubscriptions', 'tool_monitor'), $url, + navigation_node::TYPE_SETTING, null, null, new pix_icon('i/settings', '')); + } + + $reportnode = $navigation->get('coursereports'); + + if ((isset($subsnode) || isset($settingsnode)) && !empty($reportnode)) { + // Add the node only if there are sub pages. + $node = $reportnode->add_node($node); + + // Our navigation lib can not handle nodes that have active child, so we need to always add parent first without + // children. Refer MDL-45872 . + + if (isset($settingsnode)) { + $node->add_node($settingsnode); + } + + if (isset($subsnode)) { + $node->add_node($subsnode); + } + } +} diff --git a/admin/tool/monitor/settings.php b/admin/tool/monitor/settings.php new file mode 100644 index 00000000000..9bfc3013dc4 --- /dev/null +++ b/admin/tool/monitor/settings.php @@ -0,0 +1,44 @@ +. + +/** + * Links and settings + * + * This file contains links and settings used by tool_monitor + * + * @package tool_monitor + * @copyright 2014 onwards Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +defined('MOODLE_INTERNAL') || die; + +if ($hassiteconfig) { + $ADMIN->add('reports', new admin_category('toolmonitor', new lang_string('pluginname', 'tool_monitor'))); + + // Manage rules page. + $url = new moodle_url('/admin/tool/monitor/managerules.php', array('courseid' => 0)); + $temp = new admin_externalpage('toolmonitorrules', get_string('managerules', 'tool_monitor'), $url, + 'tool/monitor:managerules'); + $ADMIN->add('toolmonitor', $temp); + + // Manage subscriptions page. + $url = new moodle_url('/admin/tool/monitor/index.php', array('courseid' => 0)); + $temp = new admin_externalpage('toolmonitorsubscriptions', get_string('managesubscriptions', 'tool_monitor'), $url, + 'tool/monitor:subscribe'); + $ADMIN->add('toolmonitor', $temp); + + $settings = null; +}