forked from github/kensanata.oddmuse
no longer needed
This commit is contained in:
137
journal.js
137
journal.js
@@ -1,137 +0,0 @@
|
||||
/* Copyright 2006 Alex Schroeder <alex@emacswiki.org> */
|
||||
|
||||
// not used at the moment
|
||||
function insertForeigner (parent, foreigner, target) {
|
||||
if(!document.importNode) {
|
||||
var imported = foreigner.cloneNode(true);
|
||||
var dummy = new Element;
|
||||
dummy.innerHTML = imported.outerHTML;
|
||||
parent.insertBefore(dummy.firstChild, target);
|
||||
} else {
|
||||
var imported = document.importNode(foreigner, true);
|
||||
parent.insertBefore(imported, target);
|
||||
}
|
||||
}
|
||||
|
||||
function doChanges (id, url, num, regexp, reverse, offset, xml) {
|
||||
var target = document.getElementById(id);
|
||||
var elem = getElementsByTagAndClass(xml, 'div', 'page');
|
||||
for (var i = 0; i < elem.length; i++) {
|
||||
var imported = document.importNode(elem[i], true);
|
||||
target.parentNode.insertBefore(imported, target);
|
||||
// insertForeigner(target.parentNode, elem[i], target);
|
||||
}
|
||||
addMoreLink(target.parentNode, num, regexp, reverse, offset+num);
|
||||
target.parentNode.removeChild(target);
|
||||
}
|
||||
|
||||
function createXMLHttpRequest() {
|
||||
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
|
||||
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
|
||||
try { return new XMLHttpRequest(); } catch(e) {}
|
||||
alert("XMLHttpRequest not supported");
|
||||
return null;
|
||||
}
|
||||
|
||||
function journalQueue (id, url, num, regexp, reverse, offset) {
|
||||
var xmlHttp = createXMLHttpRequest();
|
||||
xmlHttp.open('GET', url+'?action=journal;num='+num
|
||||
+';regexp='+escape(regexp)
|
||||
+';reverse='+reverse
|
||||
+';offset='+offset, true);
|
||||
var requestTimer = setTimeout(
|
||||
function() {
|
||||
xmlHttp.abort();
|
||||
alert('Timeout while getting more journal entries.');
|
||||
}, 30000);
|
||||
xmlHttp.onreadystatechange = function () {
|
||||
if (xmlHttp.readyState != 4) { return; }
|
||||
clearTimeout(requestTimer);
|
||||
if (xmlHttp.status != 200) {
|
||||
alert('Got '+xmlHttp.status+' from '+xmlHttp.url
|
||||
+'response instead of more journal entries: '
|
||||
+xmlHttp.responseText);
|
||||
return;
|
||||
}
|
||||
doChanges(id, url, num, regexp, reverse, offset, xmlHttp.responseXML);
|
||||
};
|
||||
xmlHttp.send(null);
|
||||
}
|
||||
|
||||
function addMore (id, url, num, regexp, reverse, offset) {
|
||||
var target = document.getElementById(id);
|
||||
var replacement = document.createElement('span');
|
||||
var text = document.createTextNode('Loading...');
|
||||
replacement.appendChild(text);
|
||||
target.parentNode.insertBefore(replacement, target);
|
||||
target.parentNode.removeChild(target);
|
||||
replacement.id = id;
|
||||
journalQueue(id, url, num, regexp, reverse, offset);
|
||||
}
|
||||
|
||||
var linkCount = 1;
|
||||
|
||||
function addMoreLink (div, url, num, regexp, reverse, offset) {
|
||||
var more = document.createElement('span');
|
||||
more.id = 'journal' + linkCount++;
|
||||
more.setAttribute('onclick', 'javascript:addMore("'+more.id+'","'
|
||||
+url+'",'+num+',"'
|
||||
+regexp.replace(/\\/g, "\\\\")+'","'
|
||||
+reverse+'",'+(offset+num)+')');
|
||||
more.className = 'more';
|
||||
more.appendChild(document.createTextNode('More...'));
|
||||
div.appendChild(more);
|
||||
}
|
||||
|
||||
function getElementsByTagAndClass (node, tag, class) {
|
||||
// find the content div: why is there no xpath?
|
||||
var elem = node.getElementsByTagName(tag);
|
||||
var result = new Array;
|
||||
for (var i = 0; i < elem.length; i++) {
|
||||
var val = elem[i].getAttribute('class');
|
||||
if (val) {
|
||||
var classes = val.split(" ");
|
||||
for (var j = 0; j < classes.length; j++) {
|
||||
if (classes[j] == class) {
|
||||
result.push(elem[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function addMoreToJournal () {
|
||||
/* Only show the more link on ordinary pages: They either use
|
||||
* path_info or keywords in the URL, not parameters. */
|
||||
if (/=/.test(document.location.href)) {
|
||||
return;
|
||||
}
|
||||
// find the content div: why is there no xpath?
|
||||
var journals = getElementsByTagAndClass(document, 'div', 'journal');
|
||||
// find the comment inside the journal div and extract the
|
||||
// parameters
|
||||
for (var i = 0; i < journals.length; i++) {
|
||||
var current = journals[i];
|
||||
var str = current.firstChild;
|
||||
if (str.nodeType == 8) {
|
||||
var match = str.nodeValue.match(/(\S*?) ([0-9]+) (.*?) (reverse)? ([0-9]+)/);
|
||||
addMoreLink(current, match[1], parseInt(match[2]),
|
||||
match[3], match[4]||"", parseInt(match[5]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addLoadEvent (func) {
|
||||
var oldonload = window.onload;
|
||||
if (typeof window.onload != 'function') {
|
||||
window.onload = func;
|
||||
} else {
|
||||
window.onload = function() {
|
||||
oldonload();
|
||||
func();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addLoadEvent(addMoreToJournal);
|
||||
@@ -1,11 +0,0 @@
|
||||
$Action{journal} = \&PullJournal;
|
||||
|
||||
sub PullJournal {
|
||||
my ($num, $regexp, $mode, $offset) = @_;
|
||||
my $num = GetParam('num', 10);
|
||||
my $regexp = GetParam('regexp', '^\d\d\d\d-\d\d-\d\d');
|
||||
my $mode = GetParam('mode', '');
|
||||
my $offset = GetParam('offset', 0);
|
||||
print GetHttpHeader('text/xml');
|
||||
PrintJournal($num, $regexp, $mode, $offset);
|
||||
}
|
||||
Reference in New Issue
Block a user