View | Details | Raw Unified | Return to bug 16286
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/js/categories.js (+97 lines)
Line 0 Link Here
1
jQuery.validator.addMethod( "letters_numbers", function(value,element){
2
    var patt = /^[a-zA-Z0-9\-_]+$/g;
3
    if (patt.test(element.value)) {
4
        return true;
5
    } else {
6
        return false;
7
    }
8
    }, MSG_CATEGORYCODE_CHARS
9
);
10
11
jQuery.validator.addMethod( "enrollment_period", function(){
12
        enrolmentperiod = $("#enrolmentperiod").val();
13
        enrolmentperioddate = $("#enrolmentperioddate").val();
14
        if ( $("#enrolmentperiod").val() !== "" && $("#enrolmentperioddate").val() !== "" ) {
15
            return false;
16
        } else {
17
            return true;
18
        }
19
    }, MSG_ONE_ENROLLMENTPERIOD
20
);
21
22
23
$(document).ready(function() {
24
    $("#table_categorie").dataTable($.extend(true, {}, dataTablesDefaults, {
25
        "aoColumnDefs": [{
26
            "aTargets": [-1, -2],
27
            "bSortable": false,
28
            "bSearchable": false
29
        }, {
30
            "aTargets": [3, 4, 5],
31
            "sType": "natural"
32
        }, ],
33
        "aaSorting": [
34
            [1, "asc"]
35
        ],
36
        "sPaginationType": "four_button"
37
    }));
38
39
    $("#enrolmentperioddate").datepicker({
40
        minDate: 1
41
    }); // Require that "until date" be in the future
42
43
    if ($("#branches option:selected").length < 1) {
44
        $("#branches option:first").attr("selected", "selected");
45
    }
46
47
    $("#categorycode").on("blur",function(){
48
        toUC(this);
49
    });
50
51
    $("#category_form").validate({
52
        rules: {
53
            categorycode: {
54
                required: true,
55
                letters_numbers: true
56
            },
57
            description: "required",
58
            enrolmentperiod: {
59
                required: function(element){
60
                    return $("#enrolmentperioddate").val() === "";
61
                },
62
                number: true,
63
                enrollment_period: true
64
            },
65
            enrolmentperioddate: {
66
                required: function(element){
67
                    return $("#enrolmentperiod").val() === "";
68
                },
69
                enrollment_period: true
70
            },
71
            dateofbirthrequired: {
72
                number: true
73
            },
74
            upperagelimit: {
75
                number: true
76
            },
77
            enrolmentfee: {
78
                number: true
79
            },
80
            reservefee: {
81
                number: true
82
            },
83
            category_type: {
84
                required: true
85
            }
86
        },
87
        messages: {
88
            enrolmentperiod: {
89
                required: MSG_ONE_ENROLLMENTPERIOD
90
            },
91
            enrolmentperioddate: {
92
                required: MSG_ONE_ENROLLMENTPERIOD
93
            }
94
        }
95
96
    });
97
});
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt (-100 / +15 lines)
Lines 9-106 Link Here
9
[% INCLUDE 'calendar.inc' %]
9
[% INCLUDE 'calendar.inc' %]
10
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
10
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
11
[% INCLUDE 'datatables.inc' %]
11
[% INCLUDE 'datatables.inc' %]
12
<script type="text/javascript" id="js">
12
<script type="text/javascript">
13
//<![CDATA[
13
    var MSG_CATEGORYCODE_CHARS = _("Category code can only contain the following characters: letters, numbers, - and _.");
14
    $(document).ready(function() {
14
    var MSG_BOTH_ENROLLMENTPERIODS = _("Please choose only one enrollment period setting.");
15
        $("#table_categorie").dataTable($.extend(true, {}, dataTablesDefaults, {
15
    var MSG_ONE_ENROLLMENTPERIOD = ("Please choose an enrollment period in months OR by date.");
16
            "aoColumnDefs": [{
17
                "aTargets": [-1, -2],
18
                "bSortable": false,
19
                "bSearchable": false
20
            }, {
21
                "aTargets": [3, 4, 5],
22
                "sType": "natural"
23
            }, ],
24
            "aaSorting": [
25
                [1, "asc"]
26
            ],
27
            "sPaginationType": "four_button"
28
        }));
29
30
        $("#enrolmentperioddate").datepicker({
31
            minDate: 1
32
        }); // Require that "until date" be in the future
33
34
        if ($("#branches option:selected").length < 1) {
35
            $("#branches option:first").attr("selected", "selected");
36
        }
37
    });
38
39
    function isNotNull(f, noalert) {
40
        if (f.value.length == 0) {
41
            return false;
42
        }
43
        return true;
44
    }
45
46
    function isNum(v, maybenull) {
47
        var n = new Number(v.value);
48
        if (isNaN(n)) {
49
            return false;
50
        }
51
        if (maybenull == 0 && v.value == '') {
52
            return false;
53
        }
54
        return true;
55
    }
56
57
    // to check if the data are correctly entered.
58
    function Check(ff) {
59
        var ok = 0;
60
        var _alertString = _("Form not submitted because of the following problem(s)");
61
        _alertString += "\n-------------------------------------------------------------------\n\n";
62
        ff.categorycode.value = $.trim(ff.categorycode.value);
63
        if (ff.categorycode.value.length == 0) {
64
            ok = 1;
65
            _alertString += _("- categorycode missing") + "\n";
66
        } else {
67
            var patt = /^[a-zA-Z0-9\-_]+$/g;
68
            if (!patt.test(ff.categorycode.value)) {
69
                ok = 1;
70
                _alertString += _("- category code can only contain the following characters: letters, numbers, - and _") + "\n";
71
            }
72
        }
73
        if (!(ff.category_type.value)) {
74
            ok = 1;
75
            _alertString += _("- category type missing") + "\n";
76
        }
77
        if (!(isNotNull(ff.description, 1))) {
78
            ok = 1;
79
            _alertString += _("- description missing") + "\n";
80
        }
81
        if (!isNum(ff.upperagelimit, 0) && ff.category_type.value == 'C') {
82
            ok = 1;
83
            _alertString += _("- upperagelimit is not a number") + "\n";
84
85
        }
86
        if (!(ff.enrolmentperioddate.value || ff.enrolmentperiod.value)) {
87
            ok = 1;
88
            _alertString += _("- either Enrollment period or Until date must be provided") + "\n";
89
        }
90
        if (ff.enrolmentperioddate.value && ff.enrolmentperiod.value) {
91
            document.getElementById('enrolmentmessage').className = "error";
92
            return false;
93
        }
94
95
        if (ok) { // if there is a problem
96
            alert(_alertString);
97
            return false;
98
        }
99
        // if all is good
100
        ff.submit();
101
    }
102
//]]>
103
</script>
16
</script>
17
<script type="text/javascript" src="[% themelang %]/js/categories.js"></script>
104
<style type="text/css">#enrolmentmessage.hint { display : none; }</style>
18
<style type="text/css">#enrolmentmessage.hint { display : none; }</style>
105
</head>
19
</head>
106
<body id="admin_categorie" class="admin">
20
<body id="admin_categorie" class="admin">
Lines 141-147 Link Here
141
[% END %]
55
[% END %]
142
56
143
[% IF op == 'add_form' %]
57
[% IF op == 'add_form' %]
144
    <form name="Aform" action="/cgi-bin/koha/admin/categories.pl" method="post">
58
    <form id="category_form" action="/cgi-bin/koha/admin/categories.pl" method="post">
145
        <input type="hidden" name="op" value="add_validate" />
59
        <input type="hidden" name="op" value="add_validate" />
146
        <input type="hidden" name="checked" value="0" />
60
        <input type="hidden" name="checked" value="0" />
147
        [% IF category %]
61
        [% IF category %]
Lines 159-186 Link Here
159
                [% ELSE %]
73
                [% ELSE %]
160
                    <li>
74
                    <li>
161
                        <label for="categorycode" class="required">Category code: </label>
75
                        <label for="categorycode" class="required">Category code: </label>
162
                        <input type="text" name="categorycode" id="categorycode" size="10" maxlength="10" onblur="toUC(this)" />
76
                        <input type="text" name="categorycode" id="categorycode" size="10" maxlength="10" class="required" required="required" />
163
                        <span class="required">Required</span>
77
                        <span class="required">Required</span>
164
                    </li>
78
                    </li>
165
                [% END %]
79
                [% END %]
166
                <li>
80
                <li>
167
                    <label for="description" class="required">Description: </label>
81
                    <label for="description" class="required">Description: </label>
168
                    <input type="text" name="description" id="description" size="40" maxlength="80" value="[% category.description |html %]" />
82
                    <input type="text" name="description" id="description" size="40" maxlength="80" class="required" required="required" value="[% category.description |html %]" />
169
                    <span class="required">Required</span>
83
                    <span class="required">Required</span>
170
                </li>
84
                </li>
171
                <li>
85
                <li>
172
                    <label for="enrolmentperiod" class="required">Enrollment period: </label>
86
                    <span class="label">Enrollment period: </span>
173
                    <fieldset>
87
                    <fieldset>
174
                        <legend>Choose one</legend>
88
                        <legend>Choose one</legend>
175
                        <ol>
89
                        <ol>
176
                            <li>
90
                            <li>
177
                                <label for="enrolmentperiod" style="width:6em;">In months: </label>
91
                                <label for="enrolmentperiod" style="width:6em;">In months: </label>
178
                                <input type="text" name="enrolmentperiod" id="enrolmentperiod" size="3" maxlength="3" value="[% IF category.enrolmentperiod %][% category.enrolmentperiod %][% END %]" /> months
92
                                <input type="text" class="enrollmentperiod" name="enrolmentperiod" id="enrolmentperiod" size="3" maxlength="3" value="[% IF category.enrolmentperiod %][% category.enrolmentperiod %][% END %]" /> months
179
                            </li>
93
                            </li>
180
                            <li>
94
                            <li>
181
                                <label for="enrolmentperioddate" style="width:6em;">Until date: </label>
95
                                <label for="enrolmentperioddate" style="width:6em;">Until date: </label>
182
                                <input type="text" name="enrolmentperioddate" id="enrolmentperioddate" value="[% category.enrolmentperioddate | $KohaDates %]" />
96
                                <input type="text" class="enrollmentperiod" name="enrolmentperioddate" id="enrolmentperioddate" value="[% category.enrolmentperioddate | $KohaDates %]" />
183
                                <div id="enrolmentmessage" class="hint" style="margin-left:0;">Cannot have "months" and "until date" at the same time</div>
184
                            </li>
97
                            </li>
185
                        </ol>
98
                        </ol>
186
                    </fieldset>
99
                    </fieldset>
Lines 307-313 Link Here
307
                [% INCLUDE 'messaging-preference-form.inc' %]
220
                [% INCLUDE 'messaging-preference-form.inc' %]
308
            </fieldset>
221
            </fieldset>
309
        [% END %]
222
        [% END %]
310
        <fieldset class="action"><input type="button" value="Save" onclick="Check(this.form);" /> </fieldset>
223
        <fieldset class="action">
224
            <input type="submit" value="Save" />
225
            <a href="/cgi-bin/koha/admin/categories.pl" class="cancel">Cancel</a>
226
        </fieldset>
311
    </form>
227
    </form>
312
[% END %]
228
[% END %]
313
229
314
- 

Return to bug 16286