Link in description & option to invert link/permalink.
Patch for issue https://github.com/sebsauvage/Shaarli/issues/19 Now: * The (perma)link is added at the bottom of description. * If "permalinks" is added in URL parameters, link/permalinks will be swapped. eg. * Normal link in title + permalink in description: http://mysite.com/shaarli/?do=rss * Permalink in title + normal link in description : http://mysite.com/shaarli/?do=rss&permalinks It works for the ATOM feed too. (Happy ? :-D )
This commit is contained in:
parent
30b0672d04
commit
2abd39052d
1 changed files with 32 additions and 4 deletions
34
index.php
34
index.php
|
@ -858,6 +858,10 @@ function showRSS()
|
||||||
{
|
{
|
||||||
header('Content-Type: application/rss+xml; charset=utf-8');
|
header('Content-Type: application/rss+xml; charset=utf-8');
|
||||||
|
|
||||||
|
// $usepermalink : If true, use permalink instead of final link.
|
||||||
|
// User just has to add 'permalink' in URL parameters. eg. http://mysite.com/shaarli/?do=rss&permalinks
|
||||||
|
$usepermalinks = isset($_GET['permalinks']);
|
||||||
|
|
||||||
// Cache system
|
// Cache system
|
||||||
$query = $_SERVER["QUERY_STRING"];
|
$query = $_SERVER["QUERY_STRING"];
|
||||||
$cache = new pageCache(pageUrl(),startsWith($query,'do=rss') && !isLoggedIn());
|
$cache = new pageCache(pageUrl(),startsWith($query,'do=rss') && !isLoggedIn());
|
||||||
|
@ -892,13 +896,22 @@ function showRSS()
|
||||||
$rfc822date = linkdate2rfc822($link['linkdate']);
|
$rfc822date = linkdate2rfc822($link['linkdate']);
|
||||||
$absurl = htmlspecialchars($link['url']);
|
$absurl = htmlspecialchars($link['url']);
|
||||||
if (startsWith($absurl,'?')) $absurl=$pageaddr.$absurl; // make permalink URL absolute
|
if (startsWith($absurl,'?')) $absurl=$pageaddr.$absurl; // make permalink URL absolute
|
||||||
|
if ($usepermalinks===true)
|
||||||
|
echo '<item><title>'.htmlspecialchars($link['title']).'</title><guid>'.$guid.'</guid><link>'.$guid.'</link>';
|
||||||
|
else
|
||||||
echo '<item><title>'.htmlspecialchars($link['title']).'</title><guid>'.$guid.'</guid><link>'.$absurl.'</link>';
|
echo '<item><title>'.htmlspecialchars($link['title']).'</title><guid>'.$guid.'</guid><link>'.$absurl.'</link>';
|
||||||
if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) echo '<pubDate>'.htmlspecialchars($rfc822date)."</pubDate>\n";
|
if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) echo '<pubDate>'.htmlspecialchars($rfc822date)."</pubDate>\n";
|
||||||
if ($link['tags']!='') // Adding tags to each RSS entry (as mentioned in RSS specification)
|
if ($link['tags']!='') // Adding tags to each RSS entry (as mentioned in RSS specification)
|
||||||
{
|
{
|
||||||
foreach(explode(' ',$link['tags']) as $tag) { echo '<category domain="'.htmlspecialchars($pageaddr).'">'.htmlspecialchars($tag).'</category>'."\n"; }
|
foreach(explode(' ',$link['tags']) as $tag) { echo '<category domain="'.htmlspecialchars($pageaddr).'">'.htmlspecialchars($tag).'</category>'."\n"; }
|
||||||
}
|
}
|
||||||
echo '<description><![CDATA['.nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description'])))).']]></description>'."\n</item>\n";
|
|
||||||
|
// Add permalink in description
|
||||||
|
$descriptionlink = '(<a href="'.$guid.'">Permalink</a>)';
|
||||||
|
// If user wants permalinks first, put the final link in description
|
||||||
|
if ($usepermalinks===true) $descriptionlink = '(<a href="'.$absurl.'">Link</a>)';
|
||||||
|
if (strlen($link['description'])>0) $descriptionlink = '<br>'.$descriptionlink;
|
||||||
|
echo '<description><![CDATA['.nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description'])))).$descriptionlink.']]></description>'."\n</item>\n";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
echo '</channel></rss>';
|
echo '</channel></rss>';
|
||||||
|
@ -914,6 +927,10 @@ function showATOM()
|
||||||
{
|
{
|
||||||
header('Content-Type: application/atom+xml; charset=utf-8');
|
header('Content-Type: application/atom+xml; charset=utf-8');
|
||||||
|
|
||||||
|
// $usepermalink : If true, use permalink instead of final link.
|
||||||
|
// User just has to add 'permalink' in URL parameters. eg. http://mysite.com/shaarli/?do=atom&permalinks
|
||||||
|
$usepermalinks = isset($_GET['permalinks']);
|
||||||
|
|
||||||
// Cache system
|
// Cache system
|
||||||
$query = $_SERVER["QUERY_STRING"];
|
$query = $_SERVER["QUERY_STRING"];
|
||||||
$cache = new pageCache(pageUrl(),startsWith($query,'do=atom') && !isLoggedIn());
|
$cache = new pageCache(pageUrl(),startsWith($query,'do=atom') && !isLoggedIn());
|
||||||
|
@ -942,9 +959,20 @@ function showATOM()
|
||||||
$latestDate = max($latestDate,$iso8601date);
|
$latestDate = max($latestDate,$iso8601date);
|
||||||
$absurl = htmlspecialchars($link['url']);
|
$absurl = htmlspecialchars($link['url']);
|
||||||
if (startsWith($absurl,'?')) $absurl=$pageaddr.$absurl; // make permalink URL absolute
|
if (startsWith($absurl,'?')) $absurl=$pageaddr.$absurl; // make permalink URL absolute
|
||||||
$entries.='<entry><title>'.htmlspecialchars($link['title']).'</title><link href="'.$absurl.'" /><id>'.$guid.'</id>';
|
$entries.='<entry><title>'.htmlspecialchars($link['title']).'</title>';
|
||||||
|
if ($usepermalinks===true)
|
||||||
|
$entries.='<link href="'.$guid.'" /><id>'.$guid.'</id>';
|
||||||
|
else
|
||||||
|
$entries.='<link href="'.$absurl.'" /><id>'.$guid.'</id>';
|
||||||
if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) $entries.='<updated>'.htmlspecialchars($iso8601date).'</updated>';
|
if (!$GLOBALS['config']['HIDE_TIMESTAMPS'] || isLoggedIn()) $entries.='<updated>'.htmlspecialchars($iso8601date).'</updated>';
|
||||||
$entries.='<content type="html">'.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description'])))))."</content>\n";
|
|
||||||
|
// Add permalink in description
|
||||||
|
$descriptionlink = htmlspecialchars('(<a href="'.$guid.'">Permalink</a>)');
|
||||||
|
// If user wants permalinks first, put the final link in description
|
||||||
|
if ($usepermalinks===true) $descriptionlink = htmlspecialchars('(<a href="'.$absurl.'">Link</a>)');
|
||||||
|
if (strlen($link['description'])>0) $descriptionlink = '<br>'.$descriptionlink;
|
||||||
|
|
||||||
|
$entries.='<content type="html">'.htmlspecialchars(nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description']))))).$descriptionlink."</content>\n";
|
||||||
if ($link['tags']!='') // Adding tags to each ATOM entry (as mentioned in ATOM specification)
|
if ($link['tags']!='') // Adding tags to each ATOM entry (as mentioned in ATOM specification)
|
||||||
{
|
{
|
||||||
foreach(explode(' ',$link['tags']) as $tag)
|
foreach(explode(' ',$link['tags']) as $tag)
|
||||||
|
|
Reference in a new issue