[HtmlFormat] Add syndication links (#1348)

Adds <link> elements for each additional output format in the <head> of
HTML format output to allow RSS readers to find the actual feeds
directly from the HTML page.
This commit is contained in:
Roliga 2019-11-09 18:43:21 +01:00 committed by LogMANOriginal
parent 8161829ad5
commit d65714fa47

View file

@ -12,6 +12,7 @@ class HtmlFormat extends FormatAbstract {
$formatFac->setWorkingDir(PATH_LIB_FORMATS); $formatFac->setWorkingDir(PATH_LIB_FORMATS);
$buttons = ''; $buttons = '';
$links = '';
foreach($formatFac->getFormatNames() as $format) { foreach($formatFac->getFormatNames() as $format) {
if(strcasecmp($format, 'HTML') === 0) { if(strcasecmp($format, 'HTML') === 0) {
@ -20,6 +21,9 @@ class HtmlFormat extends FormatAbstract {
$query = str_replace('format=Html', 'format=' . $format, htmlentities($_SERVER['QUERY_STRING'])); $query = str_replace('format=Html', 'format=' . $format, htmlentities($_SERVER['QUERY_STRING']));
$buttons .= $this->buildButton($format, $query) . PHP_EOL; $buttons .= $this->buildButton($format, $query) . PHP_EOL;
$mime = $formatFac->create($format)->getMimeType();
$links .= $this->buildLink($format, $query, $mime) . PHP_EOL;
} }
$entries = ''; $entries = '';
@ -101,6 +105,7 @@ EOD;
<title>{$title}</title> <title>{$title}</title>
<link href="static/HtmlFormat.css" rel="stylesheet"> <link href="static/HtmlFormat.css" rel="stylesheet">
<link rel="icon" type="image/png" href="static/favicon.png"> <link rel="icon" type="image/png" href="static/favicon.png">
{$links}
<meta name="robots" content="noindex, follow"> <meta name="robots" content="noindex, follow">
</head> </head>
<body> <body>
@ -131,6 +136,13 @@ EOD;
private function buildButton($format, $query) { private function buildButton($format, $query) {
return <<<EOD return <<<EOD
<a href="./?{$query}"><button class="rss-feed">{$format}</button></a> <a href="./?{$query}"><button class="rss-feed">{$format}</button></a>
EOD;
}
private function buildLink($format, $query, $mime) {
return <<<EOD
<link href="./?{$query}" title="{$format}" rel="alternate" type="{$mime}">
EOD; EOD;
} }
} }