xref: /plugin/acknowledge/script.js (revision c2e33bcede677b26c01ce484dd9ed10c198ffb08)
1jQuery(function () {
2
3    /**
4     * admin interface: autocomplete users
5     */
6    function adminAutocomplete($form) {
7
8        $form.find('input[name="user"]')
9            .autocomplete({
10                source: function (request, response) {
11                    jQuery.getJSON(DOKU_BASE + 'lib/exe/ajax.php?call=plugin_acknowledge_autocomplete', {
12                        user: request.term,
13                        sectok: $form.find('input[name="sectok"]').val()
14                    }, response);
15                },
16                minLength: 1
17            });
18        $form.find('input[name="pg"]')
19            .autocomplete({
20                source: function (request, response) {
21                    jQuery.getJSON(DOKU_BASE + 'lib/exe/ajax.php?call=plugin_acknowledge_autocomplete', {
22                        pg: request.term,
23                        sectok: $form.find('input[name="sectok"]').val()
24                    }, response);
25                },
26                minLength: 3
27            });
28    }
29
30    const $form = jQuery('.dokuwiki.mode_admin div.plugin_acknowledgement_admin form#acknowledge__user-autocomplete');
31    if ($form.length) {
32        adminAutocomplete($form);
33    }
34
35    /*
36     * Handle assignments
37     */
38
39    let $aContainer = jQuery('.plugin-acknowledge-banner');
40
41    // if no container is found, create one in the last section
42    if ($aContainer.length === 0) {
43        const section = jQuery('.dokuwiki.mode_show')
44            .find('div.level1, div.level2, div.level3, div.level4, div.level5')
45            .filter(function (idx, el) {
46                return jQuery(el).parents('ul, ol, aside, nav, footer, header').length === 0;
47            })
48            .last();
49        if (section.length === 0) {
50            return;
51        }
52        $aContainer = jQuery('<div class="plugin-acknowledge-banner"></div>');
53        section.append($aContainer);
54    }
55
56    // on-page report: load the full user list when a count is clicked
57    $aContainer.on('click', 'a.plugin-acknowledge-loadusers', function (event) {
58        event.preventDefault();
59        const $link = jQuery(this);
60        const $target = jQuery('<div class="plugin-acknowledge-userlist"></div>');
61        $link.replaceWith($target);
62        $target.load(
63            DOKU_BASE + 'lib/exe/ajax.php',
64            {
65                call: 'plugin_acknowledge_userlist',
66                id: $link.data('id'),
67                status: $link.data('status')
68            }
69        );
70    });
71
72    $aContainer.on('submit', function (event) {
73        event.preventDefault();
74        const $form = jQuery(event.target),
75            ack = $form.find("input[name='ack']")[0];
76
77        $aContainer.load(
78            DOKU_BASE + "lib/exe/ajax.php",
79            {
80                call: "plugin_acknowledge_acknowledge",
81                id: JSINFO.id,
82                ack: ack.checked === true ? 1 : 0
83            }
84        );
85    });
86    $aContainer.load(
87        DOKU_BASE + 'lib/exe/ajax.php',
88        {
89            call: 'plugin_acknowledge_acknowledge',
90            id: JSINFO.id
91        },
92        response => {
93            // remove container if no data to show
94            if (response === '') {
95                $aContainer.remove();
96            }
97        }
98    );
99});
100