1/*
2 enforcesummary plugin for DokuWiki
3 File: script.js
4 http://www.dokuwiki.org/plugin:enforcesummary
5 */
6
7jQuery(function() {
8    var $summary = jQuery('#edit__summary'); // get summary field
9    if (typeof $summary.val() == 'undefined') return;
10
11    // Minor Edit by default
12    // Parts copied from https://www.dokuwiki.org/tips:autominor
13    var $minoredit = jQuery('#minoredit');
14    var prv = jQuery('div.preview');
15    if (!prv[0] && JSINFO.plugin_enforcesummary.default_minoredit)
16        jQuery('#minoredit').prop('checked', true);
17
18    // Parts copied from https://www.dokuwiki.org/tips:summary_enforcement
19    $summary.keyup(enforceSummary).focus(enforceSummary);
20    $minoredit.change(enforceSummary);
21    enforceSummary(); // summary may be there if we're previewing
22});
23
24function enforceSummary() {
25    var $summary = jQuery('#edit__summary'); // get summary field
26    var $minoredit = jQuery('#minoredit');
27    var ckgd =  jQuery( "input[type=checkbox][name=ckgdoku]:checked" ).val();
28    var ckge =  jQuery( "input[type=checkbox][name=ckgedit]:checked" ).val();
29    var m_class, $savebutton;
30    if(typeof ckgd == 'string' || typeof ckge == 'string') {
31        $savebutton = jQuery("#save_button");
32        m_class = "plugin_enforcesummary_missing";
33    } else {
34        $savebutton = jQuery("#edbtn__save");
35        m_class = "missing"
36
37    }
38    var prv = jQuery('div.preview');
39
40    // always require summary, even when minor change option is checked
41    // if($summary.val().replace(/^\s+/,"") === '')
42
43    summary_filled = !($summary.val().replace(/^\s+/,'') === '');
44    minor_checked = $minoredit.is(':checked');
45
46    // set summary inputbox attribute
47    if (summary_filled) {
48        $summary.removeClass(m_class);
49    } else {
50        $summary.addClass(m_class);
51    }
52
53    // set save button attribute
54    save_ready = false;
55    if (JSINFO.plugin_enforcesummary.enforce_summary) {
56        if (summary_filled || minor_checked) save_ready = true;
57    }
58    if (JSINFO.plugin_enforcesummary.enforce_preview) {
59        if (prv[0]) { save_ready = true; }
60        else { save_ready = false; }
61    }
62    if (save_ready) {
63        $savebutton.removeAttr("disabled").css("color", "black");
64    } else {
65        $savebutton.attr("disabled", true).css("color", "#999");
66    }
67}
68