mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
js: Separate the virt-tools blog planet loader code
In order to promote simple assets sharing between main libvirt web and the libvirt-wiki separate the virt tools blog feed loader from the main code used for search. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
da851ed184
commit
753a6add46
@ -65,10 +65,7 @@ Blog Planet
|
|||||||
|
|
||||||
.. raw:: html
|
.. raw:: html
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript" src="js/virt-tools-blog-planet.js">
|
||||||
<!--
|
|
||||||
window.addEventListener("load", function() { fetchRSS() });
|
|
||||||
// -->
|
|
||||||
</script>
|
</script>
|
||||||
<div id="planet"> </div>
|
<div id="planet"> </div>
|
||||||
|
|
||||||
|
@ -89,65 +89,3 @@ function advancedsearch(e) {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchRSS() {
|
|
||||||
if (document.location.protocol == "file:")
|
|
||||||
return;
|
|
||||||
|
|
||||||
var planet = document.getElementById("planet");
|
|
||||||
if (planet === null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var req = new XMLHttpRequest();
|
|
||||||
req.open("GET", "https://planet.virt-tools.org/atom.xml");
|
|
||||||
req.setRequestHeader("Accept", "application/atom+xml, text/xml");
|
|
||||||
req.onerror = function(e) {
|
|
||||||
if (this.statusText != "")
|
|
||||||
console.error(this);
|
|
||||||
};
|
|
||||||
req.onload = function(e) {
|
|
||||||
if (this.readyState !== 4)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (this.status != 200) {
|
|
||||||
console.error(this.statusText);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.responseXML === null) {
|
|
||||||
console.error("Atom response is not an XML");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dl = document.createElement("dl");
|
|
||||||
var dateOpts = { day: "numeric", month: "short", year: "numeric"};
|
|
||||||
|
|
||||||
var entries = this.responseXML.querySelectorAll("feed > entry:not(:nth-of-type(1n+5))");
|
|
||||||
|
|
||||||
entries.forEach(function(e) {
|
|
||||||
var name = e.querySelector("author > name").textContent;
|
|
||||||
var title = e.querySelector("title").textContent;
|
|
||||||
var updated = e.querySelector("updated").textContent;
|
|
||||||
var link = e.querySelector("link").attributes.href.textContent;
|
|
||||||
|
|
||||||
var a = document.createElement("a");
|
|
||||||
a.href = link;
|
|
||||||
a.innerText = title;
|
|
||||||
|
|
||||||
var dt = document.createElement("dt");
|
|
||||||
dt.appendChild(a);
|
|
||||||
dl.appendChild(dt);
|
|
||||||
|
|
||||||
var date = new Date(updated);
|
|
||||||
date = date.toLocaleDateString("default", dateOpts);
|
|
||||||
|
|
||||||
var dd = document.createElement("dd");
|
|
||||||
dd.innerText = ` by ${name} on ${date}`;
|
|
||||||
|
|
||||||
dl.appendChild(dd);
|
|
||||||
});
|
|
||||||
|
|
||||||
planet.appendChild(dl);
|
|
||||||
};
|
|
||||||
req.send();
|
|
||||||
}
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
docs_js_files = [
|
docs_js_files = [
|
||||||
'main.js',
|
'main.js',
|
||||||
|
'virt-tools-blog-planet.js',
|
||||||
]
|
]
|
||||||
|
|
||||||
install_data(docs_js_files, install_dir: docs_html_dir / 'js')
|
install_data(docs_js_files, install_dir: docs_html_dir / 'js')
|
||||||
|
65
docs/js/virt-tools-blog-planet.js
Normal file
65
docs/js/virt-tools-blog-planet.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
function fetchRSS() {
|
||||||
|
if (document.location.protocol == "file:")
|
||||||
|
return;
|
||||||
|
|
||||||
|
var planet = document.getElementById("planet");
|
||||||
|
if (planet === null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var req = new XMLHttpRequest();
|
||||||
|
req.open("GET", "https://planet.virt-tools.org/atom.xml");
|
||||||
|
req.setRequestHeader("Accept", "application/atom+xml, text/xml");
|
||||||
|
req.onerror = function(e) {
|
||||||
|
if (this.statusText != "")
|
||||||
|
console.error(this);
|
||||||
|
};
|
||||||
|
req.onload = function(e) {
|
||||||
|
if (this.readyState !== 4)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this.status != 200) {
|
||||||
|
console.error(this.statusText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.responseXML === null) {
|
||||||
|
console.error("Atom response is not an XML");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dl = document.createElement("dl");
|
||||||
|
var dateOpts = { day: "numeric", month: "short", year: "numeric"};
|
||||||
|
|
||||||
|
var entries = this.responseXML.querySelectorAll("feed > entry:not(:nth-of-type(1n+5))");
|
||||||
|
|
||||||
|
entries.forEach(function(e) {
|
||||||
|
var name = e.querySelector("author > name").textContent;
|
||||||
|
var title = e.querySelector("title").textContent;
|
||||||
|
var updated = e.querySelector("updated").textContent;
|
||||||
|
var link = e.querySelector("link").attributes.href.textContent;
|
||||||
|
|
||||||
|
var a = document.createElement("a");
|
||||||
|
a.href = link;
|
||||||
|
a.innerText = title;
|
||||||
|
|
||||||
|
var dt = document.createElement("dt");
|
||||||
|
dt.appendChild(a);
|
||||||
|
dl.appendChild(dt);
|
||||||
|
|
||||||
|
var date = new Date(updated);
|
||||||
|
date = date.toLocaleDateString("default", dateOpts);
|
||||||
|
|
||||||
|
var dd = document.createElement("dd");
|
||||||
|
dd.innerText = ` by ${name} on ${date}`;
|
||||||
|
|
||||||
|
dl.appendChild(dd);
|
||||||
|
});
|
||||||
|
|
||||||
|
planet.appendChild(dl);
|
||||||
|
};
|
||||||
|
req.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", function() { fetchRSS() });
|
Loading…
Reference in New Issue
Block a user