From 9e86f2e7a9bf92c86039ec268493d55341aef2f0 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Thu, 13 May 2010 08:44:35 +0000 Subject: [PATCH] rss MDL-22204 fixed rss autodiscovery and made the RSS UI elements placement consistent --- lib/rsslib.php | 6 ++++++ mod/data/lib.php | 15 +++++++++++---- mod/data/view.php | 10 +++++----- mod/forum/discuss.php | 7 +++++++ mod/forum/index.php | 10 +++++----- mod/forum/lib.php | 4 ++-- mod/forum/view.php | 8 +++++++- mod/glossary/lib.php | 14 +++++++++++++- mod/glossary/view.php | 20 ++++++++++++++------ 9 files changed, 70 insertions(+), 24 deletions(-) diff --git a/lib/rsslib.php b/lib/rsslib.php index 67bd403a68a..930ae0e576d 100644 --- a/lib/rsslib.php +++ b/lib/rsslib.php @@ -23,6 +23,12 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ + function rss_add_http_header($context, $modname, $modinstance, $title) { + global $PAGE, $USER; + $rsspath = rss_get_url($context->id, $USER->id, $modname, $modinstance->id); + $PAGE->add_alternate_version($title, $rsspath, 'application/rss+xml'); + } + /** * This function returns the icon (from theme) with the link to rss/file.php * diff --git a/mod/data/lib.php b/mod/data/lib.php index 41e4278e5e1..8659fd9d675 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -2809,11 +2809,9 @@ function data_extend_navigation($navigation, $course, $module, $cm) { * @param navigation_node $datanode The node to add module settings to */ function data_extend_settings_navigation(settings_navigation $settings, navigation_node $datanode) { - global $PAGE; + global $PAGE, $DB, $CFG, $USER; - // We only actually need the id here for functions - $data = new stdClass; - $data->id = $PAGE->cm->instance; + $data = $DB->get_record('data', array("id" => $PAGE->cm->instance)); $currentgroup = groups_get_activity_group($PAGE->cm); $groupmode = groups_get_activity_groupmode($PAGE->cm); @@ -2855,4 +2853,13 @@ function data_extend_settings_navigation(settings_navigation $settings, navigati $datanode->add(get_string('fields', 'data'), new moodle_url('/mod/data/field.php', array('d'=>$data->id))); $datanode->add(get_string('presets', 'data'), new moodle_url('/mod/data/preset.php', array('d'=>$data->id))); } + + if (!empty($CFG->enablerssfeeds) && !empty($CFG->data_enablerssfeeds) && $data->rssarticles > 0) { + require_once("$CFG->libdir/rsslib.php"); + + $string = get_string('rsstype','forum'); + + $url = new moodle_url(rss_get_url($PAGE->cm->context->id, $USER->id, 'data', $data->id)); + $datanode->add($string, $url, settings_navigation::TYPE_SETTING, null, null, new pix_icon('i/rss', '')); + } } diff --git a/mod/data/view.php b/mod/data/view.php index 4f353f46b46..3579984f55e 100755 --- a/mod/data/view.php +++ b/mod/data/view.php @@ -266,9 +266,8 @@ /// RSS and CSS and JS meta $meta = ''; if (!empty($CFG->enablerssfeeds) && !empty($CFG->data_enablerssfeeds) && $data->rssarticles > 0) { - $rsspath = rss_get_url($context->id, $USER->id, 'data', $data->id); - $PAGE->add_alternate_version(format_string($course->shortname) . ': %fullname%', - $rsspath, 'application/rss+xml'); + $rsstitle = format_string($course->shortname) . ': %fullname%'; + rss_add_http_header($context, 'data', $data, $rsstitle); } if ($data->csstemplate) { $PAGE->requires->css('/mod/data/css.php?d='.$data->id); @@ -315,12 +314,13 @@ echo $OUTPUT->heading(format_string($data->name)); // Do we need to show a link to the RSS feed for the records? - if (!empty($CFG->enablerssfeeds) && !empty($CFG->data_enablerssfeeds) && $data->rssarticles > 0) { + //this links has been Settings (database activity administration) block + /*if (!empty($CFG->enablerssfeeds) && !empty($CFG->data_enablerssfeeds) && $data->rssarticles > 0) { echo '
'; rss_print_link($context->id, $USER->id, 'data', $data->id, get_string('rsstype')); echo '
'; echo '
'; - } + }*/ if ($data->intro and empty($page) and empty($record) and $mode != 'single') { $options = new object(); diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index d4c57b18b50..42d5ad41cf2 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -79,6 +79,13 @@ $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); require_capability('mod/forum:viewdiscussion', $modcontext, NULL, true, 'noviewdiscussionspermission', 'forum'); + if (!empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds) && $forum->rsstype && $forum->rssarticles) { + require_once("$CFG->libdir/rsslib.php"); + + $rsstitle = format_string($course->shortname) . ': %fullname%'; + rss_add_http_header($modcontext, 'forum', $forum, $rsstitle); + } + if ($forum->type == 'news') { if (!($USER->id == $discussion->userid || (($discussion->timestart == 0 || $discussion->timestart <= time()) diff --git a/mod/forum/index.php b/mod/forum/index.php index a58ef5da7b8..a09e7804577 100644 --- a/mod/forum/index.php +++ b/mod/forum/index.php @@ -248,11 +248,11 @@ if ($generalforums) { //If this forum has RSS activated, calculate it if ($show_rss) { if ($forum->rsstype and $forum->rssarticles) { - //Calculate the tolltip text + //Calculate the tooltip text if ($forum->rsstype == 1) { - $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name)); + $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum'); } else { - $tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name)); + $tooltiptext = get_string('rsssubscriberssposts', 'forum'); } //Get html code for RSS link $row[] = rss_get_link($context->id, $USER->id, 'forum', $forum->id, $tooltiptext); @@ -384,9 +384,9 @@ if ($course->id != SITEID) { // Only real courses have learning forums if ($forum->rsstype and $forum->rssarticles) { //Calculate the tolltip text if ($forum->rsstype == 1) { - $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum', format_string($forum->name)); + $tooltiptext = get_string('rsssubscriberssdiscussions', 'forum'); } else { - $tooltiptext = get_string('rsssubscriberssposts', 'forum', format_string($forum->name)); + $tooltiptext = get_string('rsssubscriberssposts', 'forum'); } //Get html code for RSS link $row[] = rss_get_link($context->id, $USER->id, 'forum', $forum->id, $tooltiptext); diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 802a3d1f77e..15cc2532a9e 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -7503,9 +7503,9 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi } if ($forumobject->rsstype == 1) { - $string = get_string("rsssubscriberssdiscussions","forum",format_string($forumobject->name)); + $string = get_string('rsssubscriberssdiscussions','forum'); } else { - $string = get_string("rsssubscriberssposts","forum",format_string($forumobject->name)); + $string = get_string('rsssubscriberssposts','forum'); } if (!isloggedin()) { $userid = 0; diff --git a/mod/forum/view.php b/mod/forum/view.php index f9e204b88e1..4d3a8c4ed39 100644 --- a/mod/forum/view.php +++ b/mod/forum/view.php @@ -23,7 +23,6 @@ require_once('../../config.php'); require_once('lib.php'); - require_once("$CFG->libdir/rsslib.php"); $id = optional_param('id', 0, PARAM_INT); // Course Module ID @@ -91,6 +90,13 @@ $context = get_context_instance(CONTEXT_MODULE, $cm->id); $PAGE->set_context($context); + if (!empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds) && $forum->rsstype && $forum->rssarticles) { + require_once("$CFG->libdir/rsslib.php"); + + $rsstitle = format_string($course->shortname) . ': %fullname%'; + rss_add_http_header($context, 'forum', $forum, $rsstitle); + } + /// Print header. /// Add ajax-related libs for ratings if required MDL-20119 diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 0f9e7af4ca2..4fc6fd71d33 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -2581,7 +2581,7 @@ function glossary_extend_navigation($navigation, $course, $module, $cm) { * @param navigation_node $glossarynode The node to add module settings to */ function glossary_extend_settings_navigation(settings_navigation $settings, navigation_node $glossarynode) { - global $PAGE, $DB, $CFG; + global $PAGE, $DB, $CFG, $USER; $mode = optional_param('mode', '', PARAM_ALPHA); $hook = optional_param('hook', 'ALL', PARAM_CLEAN); @@ -2601,4 +2601,16 @@ function glossary_extend_settings_navigation(settings_navigation $settings, navi if (has_capability('mod/glossary:write', $PAGE->cm->context)) { $glossarynode->add(get_string('addentry', 'glossary'), new moodle_url('/mod/glossary/edit.php', array('cmid'=>$PAGE->cm->id))); } + + $glossary = $DB->get_record('glossary', array("id" => $PAGE->cm->instance)); + + if (!empty($CFG->enablerssfeeds) && !empty($CFG->glossary_enablerssfeeds) + && $glossary->rsstype && $glossary->rssarticles) { + require_once("$CFG->libdir/rsslib.php"); + + $string = get_string('rsstype','forum'); + + $url = new moodle_url(rss_get_url($PAGE->cm->context->id, $USER->id, 'glossary', $glossary->id)); + $glossarynode->add($string, $url, settings_navigation::TYPE_SETTING, null, null, new pix_icon('i/rss', '')); + } } diff --git a/mod/glossary/view.php b/mod/glossary/view.php index 1c5f4ef4aac..80c8bc557b2 100644 --- a/mod/glossary/view.php +++ b/mod/glossary/view.php @@ -236,6 +236,14 @@ if (isset($mode)) { $url->param('mode', $mode); } $PAGE->set_url($url); + +if (!empty($CFG->enablerssfeeds) && !empty($CFG->glossary_enablerssfeeds) + && $glossary->rsstype && $glossary->rssarticles) { + + $rsstitle = format_string($course->shortname) . ': %fullname%'; + rss_add_http_header($context, 'glossary', $glossary, $rsstitle); +} + if ($tab == GLOSSARY_APPROVAL_VIEW) { require_capability('mod/glossary:approve', $context); $PAGE->navbar->add($strwaitingapproval); @@ -251,7 +259,7 @@ if ($showcommonelements) { $availableoptions = ''; /// Decide about to print the import link - if (has_capability('mod/glossary:import', $context)) { + /*if (has_capability('mod/glossary:import', $context)) { $availableoptions = '' . '' . @@ -269,7 +277,7 @@ if ($showcommonelements) { ' title="' . s(get_string('exportentries', 'glossary')) . '">' . get_string('exportentries', 'glossary') . '' . ''; - } + }*/ /// Decide about to print the approval link if (has_capability('mod/glossary:approve', $context)) { @@ -293,10 +301,10 @@ if ($showcommonelements) { echo $availableoptions; /// If rss are activated at site and glossary level and this glossary has rss defined, show link - if (isset($CFG->enablerssfeeds) && isset($CFG->glossary_enablerssfeeds) && - $CFG->enablerssfeeds && $CFG->glossary_enablerssfeeds && $glossary->rsstype && $glossary->rssarticles) { + /*if (!empty($CFG->enablerssfeeds) && !empty($CFG->glossary_enablerssfeeds) + && $glossary->rsstype && $glossary->rssarticles) { - $tooltiptext = get_string("rsssubscriberss","glossary",format_string($glossary->name,true)); + $tooltiptext = get_string("rsssubscriberss",'glossary',format_string($glossary->name,true)); if (!isloggedin()) { $userid = 0; } else { @@ -307,7 +315,7 @@ if ($showcommonelements) { rss_print_link($context->id, $userid, "glossary", $glossary->id, $tooltiptext); echo ''; // print_box_end(); - } + }*/ /// The print icon if ( $showcommonelements and $mode != 'search') {