xref: /plugin/recommend/script.js (revision 869ed47d9eff26fcaf229ab545d92b70cb94a06a)
1/* Lib */
2
3var recommend_ajax_call = 'plugin_recommend';
4
5function sack_form(form, fnc) {
6    var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php');
7    ajax.setVar('call', recommend_ajax_call);
8    function serializeByTag(tag) {
9        var inps = form.getElementsByTagName(tag);
10        for (var inp in inps) {
11            if (inps[inp].name) {
12                ajax.setVar(inps[inp].name, inps[inp].value);
13            }
14        }
15    }
16    serializeByTag('input');
17    serializeByTag('textarea');
18    ajax.onCompletion = fnc;
19    ajax.runAJAX();
20    return false;
21}
22
23function bind(fnc, val) {
24    return function () {
25        return fnc(val);
26    };
27}
28
29function change_form_handler(forms, handler) {
30    if (!forms) return;
31    for (var formid in forms) {
32        var form = forms[formid];
33        form.onsubmit = bind(handler, form);
34    }
35}
36
37/* Recommend */
38
39function recommend_box(content) {
40    var div = $('recommend_box');
41    if (!div) {
42        div = document.createElement('div');
43        div.id = 'recommend_box';
44    } else if (content === '') {
45        div.parentNode.removeChild(div);
46        return;
47    }
48    div.innerHTML = content;
49    getElementsByClass('stylehead', document, 'div')[0].appendChild(div);
50    return div;
51}
52
53function recommend_handle() {
54    if (this.response === "AJAX call '" + recommend_ajax_call + "' unknown!\n") {
55        /* No user logged in. */
56        return;
57    }
58    if (this.responseStatus[0] === 204) {
59        recommend_box('');
60        return;
61    }
62
63    var box = recommend_box(this.response);
64    box.getElementsByTagName('label')[0].focus();
65    change_form_handler(box.getElementsByTagName('form'),
66                        function (form) {return sack_form(form, recommend_handle); });
67
68    var inputs = box.getElementsByTagName('input');
69    inputs[inputs.length - 1].onclick = function() {recommend_box(''); return false;};
70}
71
72addInitEvent(function () {
73                change_form_handler(getElementsByClass('btn_recommend', document, 'form'),
74                                    function (form) {return sack_form(form, recommend_handle); });
75             });
76