addInitEvent(function () {
var links = getElementsByClass('qsub__link', document, 'img');
if (links.length === 0) return;
function prettyid(ns) {
return ns ? (ns + ':*') : '*';
}
function onclick(e) {
// IE fix, dunno
e.preventDefault();
var overlay = $('plugin_qsub_popup');
if (overlay) overlay.parentNode.removeChild(overlay);
var content = document.createElement('div');
var s = this.className.match(/qsub__notsubscribed/);
content.className = 'content';
if (s) {
content.innerHTML = '
' + LANG.plugins.quicksubscribe.subscr_in_progress + '
';
var ajax = new doku_ajax('plugin_quicksubscribe_subscribe', {ns: NS + ':'});
} else {
content.innerHTML = '' + LANG.plugins.quicksubscribe.is_subscr.replace(/%s/, this.title) +
'
' + LANG.plugins.quicksubscribe.del_subscr +
'
';
var ajax = new doku_ajax('plugin_quicksubscribe_unsubscribe', {ns: this.ns});
addEvent(content.lastChild.lastChild, 'click', function () {
// late bind!
ajax.runAJAX();
});
}
var _this = this;
var tgt = content.lastChild;
ajax.onCompletion = function () {
tgt.innerHTML = LANG.plugins.quicksubscribe[(s ? 'sub' : 'unsub') +
'_' + (this.responseStatus[0] == 200 ?
'succ' : 'fail')].replace(/%s/, prettyid(this.ns));
if (this.responseStatus[0] !== 200) {
return;
}
_this.className = _this.className.replace(/qsub__(not)?subscribed/g, '') +
(s ? 'qsub__subscribed' : 'qsub__notsubscribed');
if (s) {
_this.ns = NS + ':';
}
_this.title = s ? prettyid(NS) : LANG.plugins.quicksubscribe.subscribe;
};
if (s) ajax.runAJAX();
plugin_qsub__createOverlay(LANG.plugins.quicksubscribe.title, content, this);
return false;
}
for (var i = 0 ; i < links.length ; ++i) {
var link = links[i].parentNode;
link.className += ' ' + links[i].className;
link.ns = link.className.match(/qsubns__([^ ]+)/);
link.ns = link.ns ? link.ns[1] : (NS + ':');
link.title = links[i].title;
link.innerHTML = ' ';
addEvent(link, 'click', onclick);
}
});
function plugin_qsub__createOverlay(title, content, button) {
var div = document.createElement('div');
div.innerHTML = '' +
'

' +
title + '
';
content.appendChild(document.createElement('hr'));
var more = document.createElement('p');
more.innerHTML = LANG.plugins.quicksubscribe.edit_subscr +
' ';
addEvent(more.lastChild, 'click', function () {document.location = button.href});
content.appendChild(more);
div.appendChild(content);
div.id = 'plugin_qsub_popup';
div.__close = function(event) {
div.style.display = 'none';
};
addEvent(div.firstChild.firstChild,'click',div.__close);
drag.attach(div, div.firstChild);
var dw = getElementsByClass('dokuwiki', document.body, 'div')[0];
dw.appendChild(div);
// FIXME
div.style.top = '300px';
div.style.left = '500px';
return div;
}