xref: /plugin/quicksubscribe/script.js (revision b2d51c8472ca4b6aa1b06f27c4de32ec4ec7ef1b)
1addInitEvent(function () {
2    var links = getElementsByClass('qsub__link', document, 'img');
3    if (links.length === 0) return;
4
5    function onclick() {
6        var overlay = $('plugin_qsub_popup');
7        if (overlay) overlay.parentNode.removeChild(overlay);
8
9        var content = document.createElement('div');
10        var s = this.className.match(/qsub__notsubscribed/);
11        content.className = 'content';
12        if (s) {
13            content.innerHTML = '<p>Das Abo wird eingerichtet …</p>';
14            var ajax = new doku_ajax('plugin_quicksubscribe_subscribe', {ns: NS + ':'});
15        } else {
16            content.innerHTML = '<p>Sie haben diese Seite über den Namespace ' + this.title +  ' abonniert.<br />' +
17                                'Möchten Sie dieses Abo löschen? ' +
18                                '<button class="button">' + 'Löschen' + '</button></p>';
19            var ajax = new doku_ajax('plugin_quicksubscribe_unsubscribe', {ns: this.ns});
20            addEvent(content.lastChild.lastChild, 'click', function () {
21                // late bind!
22                ajax.runAJAX();
23            });
24        }
25
26        ajax.elementObj = content.lastChild;
27        var _this = this;
28        ajax.onCompletion = function () {
29            if (this.responseStatus[0] !== 200) {
30                return;
31            }
32            _this.className = _this.className.replace(/qsub__(not)?subscribed/g, '') +
33                              (s ? 'qsub__subscribed' : 'qsub__notsubscribed');
34            if (s) {
35                _this.ns = NS + ':';
36            }
37            _this.title     = (s ? (NS ? (NS + ':*') : '*') : 'Änderungen abonnieren');
38        };
39        if (s) ajax.runAJAX();
40
41        // FIXME lang
42        plugin_qsub__createOverlay('Abo', content, this);
43        return false;
44    }
45
46    for (var i = 0 ; i < links.length ; ++i) {
47        var link = links[i].parentNode;
48        link.className += ' ' + links[i].className;
49        link.ns = link.className.match(/qsubns__([^ ]+)/);
50        link.ns = link.ns ? link.ns[1] : (NS + ':');
51        link.title = links[i].title;
52        link.innerHTML = ' ';
53        addEvent(link, 'click', onclick);
54    }
55});
56
57function plugin_qsub__createOverlay(title, content, button) {
58    var div = document.createElement('div');
59    div.innerHTML = '<div class="title">' +
60                    '<img src="' + DOKU_BASE + 'lib/images/close.png">' +
61                    title + '</div>';
62
63    content.appendChild(document.createElement('hr'));
64    var more = document.createElement('p');
65    more.innerHTML = 'Möchten Sie Ihre Abo-Einstellungen bearbeiten?' +
66                     '<button class="button">' + 'Einstellungen' + '</button>';
67    addEvent(more.lastChild, 'click', function () {document.location = button.href});
68    content.appendChild(more);
69    div.appendChild(content);
70
71    div.id = 'plugin_qsub_popup';
72
73    div.__close = function(event) {
74        div.style.display = 'none';
75    };
76
77    addEvent(div.firstChild.firstChild,'click',div.__close);
78
79    drag.attach(div, div.firstChild);
80    var dw = getElementsByClass('dokuwiki', document.body, 'div')[0];
81    dw.appendChild(div);
82    // FIXME
83    div.style.top  = '300px';
84    div.style.left = '500px';
85    return div;
86}
87