RSS feeds: Modifying RSS Feeds to display link's description in tooltips.

RSS feeds: Modifying RSS Feeds to display link's description in tooltips.

by Badrul Mohamad -
Number of replies: 1
Hi,

One of our clients has asked us to tweak the RSS feed to show a short description when user mouseover on the feed link.

We managed to make it works on 1.9.5 & 1.9.6 and configurable (meaning you can turn it on or off in RSS block's configuration). In case anyone else interested, here's how we do it:

In file blocks/rss_client/block_rss_client.php

1. After line 76:
$display_description = false;

Add:
$display_description_tooltip = false;

2. After line 93:
if (!empty($this->config->display_description)) {
$display_description = intval($this->config->display_description);
}

Add:
if (!empty($this->config->display_description_tooltip)) {
$display_description_tooltip = intval($this->config->display_description_tooltip);
}

3. Change line 145:
$output .= $this->get_rss_by_id($rssid, $display_description, $shownumentries, ($numids > 1) ? true : false);

To:
$output .= $this->get_rss_by_id($rssid, $display_description, $display_description_tooltip, $shownumentries, ($numids > 1) ? true : false);

4. Change line 176:
function get_rss_by_id($rssid, $display_description, $shownumentries, $showtitle=false) {

To:
function get_rss_by_id($rssid, $display_description, $display_description_tooltip, $shownumentries, $showtitle=false) {

5. Change line 256:
$item['link'] = str_replace('&', '&', $item['link']);

To:
if ($display_description && $display_description_tooltip && !empty($item['description'])) {
$item['description'] = break_up_long_words($item['description'], 30);

$popupstring = format_text($item['description'], FORMAT_PLAIN, $formatoptions, $this->courseid);
$popupstring = str_replace("'", "\'", $popupstring);
$popupstring = str_replace(array("\r\n", "\n", "\r", "<br />"), " ", $popupstring);

$popupstring = "onmouseout=\"return nd();\" onmouseover=\"return overlib('" . $popupstring . "', CAPTION, '" . str_replace("'", "\'", $item['title']) . "');\"";
} else {
$popupstring = "";
}

$returnstring .= '<li><div class="link"><a href="'. $item['link'] .'" onclick="this.target=\'_blank\'" ' . $popupstring . ' >'. $item['title'] . "</a></div>\n";

6. Change line 260:
if ($display_description && !empty($item['description'])) {

To:
if ($display_description && !$display_description_tooltip && !empty($item['description'])) {

7. Change line 263:
format_text($item['description'], FORMAT_MOODLE, $formatoptions, $this->courseid) .

To:
str_replace(array("<br>", "<br />"), " ", format_text($item['description'], FORMAT_MOODLE, $formatoptions, $this->courseid)) .


In file blocks/rss_client/config_instance.html

8. After line 42:
</tr>

Add:
<tr valign="top">
<td class="label">
<?php print_string('linkdescriptionintooltip', 'block_rss_client') ?>
</td>
<td class="value">
<?php
if(! isset($CFG->block_rss_client_display_description_tooltip) ) {
$CFG->block_rss_client_display_description_tooltip = '0';
}
$selected = $CFG->block_rss_client_display_description_tooltip;
if (isset($this->config) && isset($this->config->display_description_tooltip)) {
$selected = $this->config->display_description_tooltip;
}
$options[0] = get_string('no');
$options[1] = get_string('yes');
choose_from_menu ($options, 'display_description_tooltip', $selected);
?>
</td>
</tr>


In file lang/en_utf8/block_rss_client.php

9. After line 49:
$string['validatefeed'] = 'Validate feed';

Add:
$string['linkdescriptionintooltip'] = 'Display the link\'s description in tooltips?';

Attachment rss_feed_tooltips.jpg
Average of ratings: Useful (1)
In reply to Badrul Mohamad

Re: RSS feeds: Modifying RSS Feeds to display link's description in tooltips.

by Frankie Kam -
Picture of Plugin developers

Encik Badrul

The modifications work on my moodle site, but the popup text is too transparent (light gray) to be read. Also notice that the popup window seems to be in 2 layers - one lightgray layer, and on black layer. Where did I go wrong?

Terima kasih
Frankie Kam, Melaka