Lines 3-396
Link Here
|
3 |
[% USE KohaDates %] |
3 |
[% USE KohaDates %] |
4 |
[% USE Price %] |
4 |
[% USE Price %] |
5 |
[% INCLUDE 'doc-head-open.inc' %] |
5 |
[% INCLUDE 'doc-head-open.inc' %] |
6 |
<title> Add a patron category</title> |
6 |
<title>Koha › Web installer › Add a patron category</title> |
|
|
7 |
[% IF (categories && categories.count > 1 ) |
8 |
# This if statement checks if the categories variable handed to this template |
9 |
# by onboarding.pl has data in it. If the categories variable does have data |
10 |
# in it this means that the user has previously imported sample patron category |
11 |
# data and so we do not need to show them the create patron category screen 1, |
12 |
#instead we can display a screen with ubtton redirecting the user to step 3 %] |
13 |
<meta http-equiv="refresh" content="0; url=/cgi-bin/koha/installer/onboarding.pl?step=3"> |
14 |
[% END %] |
7 |
[% INCLUDE 'installer-doc-head-close.inc' %] |
15 |
[% INCLUDE 'installer-doc-head-close.inc' %] |
8 |
[% INCLUDE 'calendar.inc' %] |
16 |
[% INCLUDE 'calendar.inc' %] |
9 |
|
17 |
[% INCLUDE 'validator-strings.inc' %] |
10 |
<script type="text/javascript"> |
18 |
[% INCLUDE 'installer-strings.inc' %] |
11 |
//<![CDATA[ |
19 |
<script type="text/javascript" src="[% interface %]/[% theme %]/js/onboarding.js"></script> |
12 |
|
|
|
13 |
var debug = ""; |
14 |
var dformat = "us"; |
15 |
var sentmsg = 0; |
16 |
if (debug > 1) {alert("dateformat: " + dformat + "\ndebug is on (level " + debug + ")");} |
17 |
var MSG_PLEASE_ENTER_A_VALID_DATE = (_("Please enter a valid date (should match %s).")); |
18 |
|
19 |
function is_valid_date(date) { |
20 |
// An empty string is considered as a valid date for convenient reasons. |
21 |
if ( date === '' ) return 1; |
22 |
var dateformat = dateformat_str = 'us'; |
23 |
if ( dateformat == 'us' ) { |
24 |
if ( date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1 ) return 0; |
25 |
dateformat = 'mm/dd/yy'; |
26 |
} else if ( dateformat == 'metric' ) { |
27 |
if ( date.search(/^\d{2}\/\d{2}\/\d{4}($|\s)/) == -1 ) return 0; |
28 |
dateformat = 'dd/mm/yy'; |
29 |
} else if (dateformat == 'iso' ) { |
30 |
if ( date.search(/^\d{4}-\d{2}-\d{2}($|\s)/) == -1 ) return 0; |
31 |
dateformat = 'yy-mm-dd'; |
32 |
} else if ( dateformat == 'dmydot' ) { |
33 |
if ( date.search(/^\d{2}\.\d{2}\.\d{4}($|\s)/) == -1 ) return 0; |
34 |
dateformat = 'dd.mm.yy'; |
35 |
} |
36 |
try { |
37 |
$.datepicker.parseDate(dateformat, date); |
38 |
} catch (e) { |
39 |
return 0; |
40 |
}; |
41 |
return 1; |
42 |
}function get_dateformat_str(dateformat) { |
43 |
var dateformat_str; |
44 |
if ( dateformat == 'us' ) { |
45 |
dateformat_str = 'mm/dd/yyyy'; |
46 |
} else if ( dateformat == 'metric' ) { |
47 |
dateformat_str = 'dd/mm/yyyy'; |
48 |
} else if (dateformat == 'iso' ) { |
49 |
dateformat_str = 'yyyy-mm-dd'; |
50 |
} else if ( dateformat == 'dmydot' ) { |
51 |
dateformat_str = 'dd.mm.yyyy'; |
52 |
} |
53 |
return dateformat_str; |
54 |
} |
55 |
|
56 |
function validate_date (dateText, inst) { |
57 |
if ( !is_valid_date(dateText) ) { |
58 |
var dateformat_str = get_dateformat_str( 'us' ); |
59 |
alert(MSG_PLEASE_ENTER_A_VALID_DATE.format(dateformat_str)); |
60 |
$('#'+inst.id).val(''); |
61 |
} |
62 |
} |
63 |
function Date_from_syspref(dstring) { |
64 |
var dateX = dstring.split(/[-/.]/); |
65 |
if (debug > 1 && sentmsg < 1) {sentmsg++; alert("Date_from_syspref(" + dstring + ") splits to:\n" + dateX.join("\n"));} |
66 |
if (dformat === "iso") { |
67 |
return new Date(dateX[0], (dateX[1] - 1), dateX[2]); // YYYY-MM-DD to (YYYY,m(0-11),d) |
68 |
} else if (dformat === "us") { |
69 |
return new Date(dateX[2], (dateX[0] - 1), dateX[1]); // MM/DD/YYYY to (YYYY,m(0-11),d) |
70 |
} else if (dformat === "metric") { |
71 |
return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD/MM/YYYY to (YYYY,m(0-11),d) |
72 |
} else if (dformat === "dmydot") { |
73 |
return new Date(dateX[2], (dateX[1] - 1), dateX[0]); // DD.MM.YYYY to (YYYY,m(0-11),d) |
74 |
} else { |
75 |
if (debug > 0) {alert("KOHA ERROR - Unrecognized date format: " +dformat);} |
76 |
return 0; |
77 |
} |
78 |
} |
79 |
|
80 |
function DateTime_from_syspref(date_time) { |
81 |
var parts = date_time.split(" "); |
82 |
var date = parts[0]; |
83 |
var time = parts[1]; |
84 |
parts = time.split(":"); |
85 |
var hour = parts[0]; |
86 |
var minute = parts[1]; |
87 |
if ( hour < 0 || hour > 23 ) { |
88 |
return 0; |
89 |
} |
90 |
if ( minute < 0 || minute > 59 ) { |
91 |
return 0; |
92 |
} |
93 |
var datetime = Date_from_syspref( date ); |
94 |
if ( isNaN( datetime.getTime() ) ) { |
95 |
return 0; |
96 |
} |
97 |
datetime.setHours( hour ); |
98 |
datetime.setMinutes( minute ); |
99 |
return datetime; |
100 |
} |
101 |
|
102 |
/* Instead of including multiple localization files as you would normally see with |
103 |
jQueryUI we expose the localization strings in the default configuration */ |
104 |
jQuery(function($){ |
105 |
$.datepicker.regional[''] = { |
106 |
closeText: _("Done"), |
107 |
prevText: _("Prev"), |
108 |
nextText: _("Next"), |
109 |
currentText: _("Today"), |
110 |
monthNames: [_("January"),_("February"),_("March"),_("April"),_("May"),_("June"), |
111 |
_("July"),_("August"),_("September"),_("October"),_("November"),_("December")], |
112 |
monthNamesShort: [_("Jan"), _("Feb"), _("Mar"), _("Apr"), _("May"), _("Jun"), |
113 |
_("Jul"), _("Aug"), _("Sep"), _("Oct"), _("Nov"), _("Dec")], |
114 |
dayNames: [_("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")], |
115 |
dayNamesShort: [_("Sun"), _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat")], |
116 |
dayNamesMin: [_("Su"),_("Mo"),_("Tu"),_("We"),_("Th"),_("Fr"),_("Sa")], |
117 |
weekHeader: _("Wk"), |
118 |
dateFormat: "mm/dd/yy", |
119 |
firstDay: 0, |
120 |
isRTL: false, |
121 |
showMonthAfterYear: false, |
122 |
yearSuffix: ''}; |
123 |
$.datepicker.setDefaults($.datepicker.regional['']); |
124 |
}); |
125 |
|
126 |
$(document).ready(function(){ |
127 |
$.datepicker.setDefaults({ |
128 |
showOn: "both", |
129 |
changeMonth: true, |
130 |
changeYear: true, |
131 |
buttonImage: '/[% interface %]/prog/img/famfamfam/silk/calendar.png', |
132 |
buttonImageOnly: true, |
133 |
showButtonPanel: true, |
134 |
showOtherMonths: true, |
135 |
selectOtherMonths: true |
136 |
}); |
137 |
$( ".datepicker" ).datepicker({ |
138 |
onClose: function(dateText, inst) { |
139 |
validate_date(dateText, inst); |
140 |
}, |
141 |
}).on("change", function(e, value) { |
142 |
if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");} |
143 |
}); |
144 |
// http://jqueryui.com/demos/datepicker/#date-range |
145 |
var dates = $( ".datepickerfrom, .datepickerto" ).datepicker({ |
146 |
changeMonth: true, |
147 |
numberOfMonths: 1, |
148 |
onSelect: function( selectedDate ) { |
149 |
var option = this.id == "from" ? "minDate" : "maxDate", |
150 |
instance = $( this ).data( "datepicker" ); |
151 |
date = $.datepicker.parseDate( |
152 |
instance.settings.dateFormat || |
153 |
$.datepicker._defaults.dateFormat, |
154 |
selectedDate, instance.settings ); |
155 |
dates.not( this ).datepicker( "option", option, date ); |
156 |
}, |
157 |
onClose: function(dateText, inst) { |
158 |
validate_date(dateText, inst); |
159 |
}, |
160 |
}).on("change", function(e, value) { |
161 |
if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");} |
162 |
}); |
163 |
}); |
164 |
//]]> |
165 |
</script> |
166 |
|
167 |
|
168 |
<script type="text/javascript"> |
169 |
var MSG_CATEGORYCODE_CHARS=(_("Please only enter letters into this field.")); |
170 |
var MSG_ONE_ENROLLMENTPERIOD =(_("Please choose an enrollment period in months OR by date.")); |
171 |
var MSG_ONLY_ONE_ENROLLMENTPERIOD=(_("Please only choose one enrolment period.")); |
172 |
</script> |
173 |
|
174 |
<script type="text/javascript"> |
175 |
jQuery.validator.addMethod( "category_code_check", function(value,element){ |
176 |
var patt = /[0-9A-Za-z]{1,10}$/g; |
177 |
if (patt.test(element.value)) { |
178 |
return true; |
179 |
} else { |
180 |
return false; |
181 |
} |
182 |
}, MSG_CATEGORYCODE_CHARS |
183 |
); |
184 |
|
185 |
jQuery.validator.addMethod( "enrollment_period", function(){ |
186 |
enrolmentperiod = $("#enrolmentperiod").val(); |
187 |
enrolmentperioddate = $("#enrolmentperioddate").val(); |
188 |
if (( $("#enrolmentperiod").val() == "" && $("#enrolmentperioddate").val() == "") || ($("#enrolmentperiod").val() !== "" && $("#enrolmentperioddate").val() !== "")) { |
189 |
return false; |
190 |
} else { |
191 |
return true; |
192 |
} |
193 |
}, MSG_ONLY_ONE_ENROLLMENTPERIOD |
194 |
); |
195 |
|
196 |
$(document).ready(function() { |
197 |
$("#enrolmentperioddate").datepicker({ |
198 |
minDate: 1 |
199 |
}); // Require that "until date" be in the future |
200 |
if ($("#branches option:selected").length < 1) { |
201 |
$("#branches option:first").attr("selected", "selected"); |
202 |
} |
203 |
$("#categorycode").on("blur",function(){ |
204 |
toUC(this); |
205 |
}); |
206 |
$("#category_form").validate({ |
207 |
rules: { |
208 |
categorycode: { |
209 |
required: true, |
210 |
category_code_check: true |
211 |
}, |
212 |
description: { |
213 |
required:true, |
214 |
}, |
215 |
enrolmentperiod: { |
216 |
required: function(element){ |
217 |
return $("#enrolmentperioddate").val() === ""; |
218 |
}, |
219 |
digits: true, |
220 |
enrollment_period: true, |
221 |
}, |
222 |
enrolmentperioddate: { |
223 |
required: function(element){ |
224 |
return $("#enrolmentperiod").val() === ""; |
225 |
}, |
226 |
enrollment_period: true, |
227 |
}, |
228 |
dateofbirthrequired: { |
229 |
digits: true |
230 |
}, |
231 |
upperagelimit: { |
232 |
digits: true |
233 |
}, |
234 |
enrolmentfee: { |
235 |
number: true |
236 |
}, |
237 |
reservefee: { |
238 |
number: true |
239 |
}, |
240 |
category_type: { |
241 |
required: true |
242 |
} |
243 |
}, |
244 |
messages: { |
245 |
categorycode: { |
246 |
required: MSG_CATEGORYCODE_CHARS |
247 |
}, |
248 |
enrolmentperiod: { |
249 |
required: MSG_ONE_ENROLLMENTPERIOD |
250 |
}, |
251 |
enrolmentperioddate: { |
252 |
required: MSG_ONE_ENROLLMENTPERIOD |
253 |
} |
254 |
} |
255 |
}); |
256 |
}); |
257 |
|
258 |
</script> |
259 |
</head> |
20 |
</head> |
260 |
|
21 |
|
261 |
[% IF (categories && categories.count > 1 ) %] <!--This if statement checks if the categories variable handed to this template by onboarding.pl has data in it. If the categories variable does have data in it this means that the user has previously imported sample patron category data and so we do not need to show them the create patron category screen 1, instead we can display a screen with ubtton redirecting the user to step 3--> |
22 |
<body id="installer" class="installer"> |
262 |
|
23 |
|
263 |
|
24 |
<div class="container-fluid"> |
264 |
<meta http-equiv="refresh" content="0; url=/cgi-bin/koha/installer/onboarding.pl?step=3"> |
25 |
<div class="row"> |
265 |
|
26 |
<div id="installer-step3" class="installer-main col-sm-8 col-sm-offset-2 col-md-8 col-md-offset-2"> |
266 |
[% ELSIF (op == "add_validate_category") %] |
27 |
|
267 |
<!--else if the user has not previously imported sample patron categories check if the user has pressed the button name="add_validate" in the create patron category screen 1, and if they have pressed that button then display the below screen with a button to redirect the user to step 3--> |
28 |
<h1 id="logo"><a href="#">Koha</a></h1> |
268 |
|
29 |
|
269 |
<div> <!-- Header that appears at the top of every screen in the koha onboarding tool--> |
30 |
[% IF (op == "add_validate_category") |
270 |
<h1 id="logo"><img alt="Koha" src="[% interface %]/[% theme %]/img/koha.org-logo.gif"/> Welcome to Koha</h1> |
31 |
# if the user has not previously imported sample patron categories |
271 |
</div> |
32 |
# check if the user has pressed the button name="add_validate" in |
272 |
|
33 |
# the create patron category screen 1, and if they have pressed that |
273 |
[% IF message != "error_on_insert" %] |
34 |
# button then display the below screen with a button to redirect the |
274 |
<form name="createcat" method="post" action="onboarding.pl"> |
35 |
# user to step 3 %] |
275 |
<input type="hidden" name="step" value="3"/> |
36 |
|
276 |
<h1 align="left"> New patron category</h1> |
37 |
[% IF message != "error_on_insert" %] |
277 |
<div> |
38 |
|
278 |
<p> Success: patron category created! </p> |
39 |
<h2>Web installer › Patron category created</h2> |
279 |
<p> To add another patron category and for more settings<br> |
40 |
|
280 |
go to:<br> |
41 |
<form name="createcat" method="post" action="onboarding.pl"> |
281 |
More -> Administration -> Patron categories<br> |
42 |
<input type="hidden" name="step" value="3"/> |
282 |
</div> |
43 |
<div class="alert alert-success">Success: Patron category created! </div> |
283 |
Next up:<br> |
44 |
<p> To add another patron category and for more settings go to:</p> |
284 |
<input type="submit" name="start" value="Add a patron"><!-- When the user clicks on this button then redirect them to step 3 of the onboarding tool--> |
45 |
<div class="breadcrumbs"> Administration <b>›</b> Patron categories</div> |
285 |
</form> |
46 |
<input type="submit" class="btn btn-primary" name="start" value="Continue to the next step" /> |
286 |
[% ELSE %] |
47 |
</form> |
287 |
<form name="retrypatcat" method="post" action="onboarding.pl"> |
48 |
[% ELSE %] |
288 |
Message is [% message %] |
49 |
|
289 |
<input type="hidden" name="step" value="2"/> |
50 |
<h2>Web installer › Patron category creation failed</h2> |
290 |
<h1 align="left">Failed</h1> |
51 |
|
291 |
<div>Patron category was not successfully created.</br> |
52 |
<form name="retrypatcat" method="post" action="onboarding.pl"> |
292 |
Please try again or contact your system administrator.</p> |
53 |
<input type="hidden" name="step" value="2"/> |
293 |
</div> |
54 |
<div class="alert alert-danger"> |
294 |
<input type="submit" value="Try again"/> |
55 |
Patron category was not successfully created. |
295 |
</form> |
56 |
Message is [% message %] |
296 |
[% END %] |
57 |
</div> |
297 |
|
58 |
<p>Please try again or contact your system administrator.</p> |
298 |
|
59 |
<input type="submit" class="btn btn-primary" value="Try again" /> |
299 |
[% ELSE %] <!--Else display create patron category screen 1 where the user can input values to create their first patron category--> |
60 |
</form> |
300 |
<div> <!-- Header that appears at the top of every screen in the koha onboarding tool--> |
61 |
[% END %] |
301 |
<h1 id="logo"><img alt="Koha" src="[% interface %]/[% theme %]/img/koha.org-logo.gif"/> Welcome to Koha</h1> |
62 |
|
302 |
</div> |
63 |
|
303 |
|
64 |
[% ELSE |
304 |
<h1 align="left"> Create a new patron category</h1> |
65 |
# Else display create patron category screen 1 where the user |
305 |
<p> The patron category you create in this form is going to be the one which the new administrator patron account will have.</p> |
66 |
# can input values to create their first patron category %] |
306 |
<form id="category_form" method="post" action="onboarding.pl"> |
67 |
|
307 |
<fieldset class="rows"> |
68 |
<h2>Web installer › Create a patron category</h2> |
308 |
<input type="hidden" name="step" value="2"/> |
69 |
|
309 |
<input type="hidden" name="op" value="add_validate_category" /> |
70 |
<p> The patron category you create will be used by the <span class="bg-info">administrator account</span>.</p> |
310 |
<ol> |
71 |
|
311 |
<li> |
72 |
<form id="category_form" method="post" action="onboarding.pl"> |
312 |
<label for="categorycode" class="required">Category code: </label> |
73 |
<fieldset class="rows"> |
313 |
<input type="text" pattern="[0-9A-Za-z]{1,10}" title="Please enter up to 10 letters and/or numbers" id="categorycode" name="categorycode" value="[% category.categorycode |html %]" size="10" maxlength="10" class="required" required="required" /> |
74 |
<input type="hidden" name="step" value="2"/> |
314 |
<span class="required">Required</span> |
75 |
<input type="hidden" name="op" value="add_validate_category" /> |
315 |
</li> |
76 |
<ol> |
316 |
|
77 |
<li> |
317 |
<li> |
78 |
<label for="categorycode" class="required">Category code: </label> |
318 |
<label for="description" class="required">Description: </label> |
79 |
<input type="text" id="categorycode" name="categorycode" size="10" maxlength="10" class="required" required="required" /> |
319 |
<input type="text" name="description" title="Please enter a description of the category" size="40" maxlength="80" class="required" required="required" value="[% category.description |html%]" /> |
80 |
<span class="required">Required</span> |
320 |
<span class="required">Required</span> |
81 |
</li> |
321 |
</li> |
82 |
|
322 |
|
83 |
<li> |
323 |
<li> |
84 |
<label for="description" class="required">Description: </label> |
324 |
<label for="overduenoticerequired">Overdue notice required: </label> |
85 |
<input type="text" id="description" name="description" size="40" class="required" required="required" /> |
325 |
<select name="overduenoticerequired" value="overduenoticerequired"> |
86 |
<span class="required">Required</span> |
326 |
[% IF category.overduenoticerequired %] |
87 |
</li> |
327 |
<option value="0">No</option> |
88 |
|
328 |
<option value="1" selected="selected">Yes</option> |
89 |
<li> |
329 |
[% ELSE %] |
90 |
<label for="overduenoticerequired">Overdue notice required: </label> |
|
|
91 |
<select name="overduenoticerequired" id="overduenoticerequired"> |
330 |
<option value="0" selected="selected">No</option> |
92 |
<option value="0" selected="selected">No</option> |
331 |
<option value="1">Yes</option> |
93 |
<option value="1">Yes</option> |
332 |
[% END %] |
94 |
</select> |
333 |
</select> |
95 |
</li> |
334 |
</li> |
96 |
|
335 |
|
97 |
<li> |
336 |
<li> |
98 |
<span class="label">Category type: </span> |
337 |
<label for="category_type" class="required">Category type: </label> |
99 |
<input type="hidden" name="category_type" value="S" /> |
338 |
<select name="category_type" value="category_type" class='required' required='required'> |
100 |
Staff |
339 |
[% IF category and category.category_type == 'S' %] |
101 |
</li> |
340 |
<option value="S" selected="selected">Staff</option> |
102 |
|
341 |
[% ELSE %] |
103 |
<li> |
342 |
<option value="S">Staff</option> |
104 |
<label for="default_privacy">Default privacy: </label> |
343 |
[% END %] |
105 |
<select id="default_privacy" name="default_privacy" required="required"> |
344 |
</select> |
|
|
345 |
<span class="required">Required</span> |
346 |
</li> |
347 |
|
348 |
<li> |
349 |
<label for="default_privacy">Default privacy: </label> |
350 |
<select value="default_privacy" name="default_privacy" required="required"> |
351 |
[% SET default_privacy = 'default' %] |
352 |
|
353 |
[% IF category %] |
354 |
[% SET default_privacy = category.default_privacy %] |
355 |
[% END %] |
356 |
|
357 |
[% SWITCH default_privacy %] |
358 |
[% CASE 'forever' %] |
359 |
<option value="default">Default</option> |
360 |
<option value="never">Never</option> |
361 |
<option value="forever" selected="selected">Forever</option> |
362 |
[% CASE 'never' %] |
363 |
<option value="default">Default</option> |
364 |
<option value="never" selected="selected">Never</option> |
365 |
<option value="forever">Forever</option> |
366 |
[% CASE %] |
367 |
<option value="default" selected="selected">Default</option> |
106 |
<option value="default" selected="selected">Default</option> |
368 |
<option value="never">Never</option> |
107 |
<option value="never">Never</option> |
369 |
<option value="forever">Forever</option> |
108 |
<option value="forever">Forever</option> |
370 |
[% END %] |
109 |
</select> |
371 |
</select> |
110 |
<div class="hint">Controls how long a patrons checkout history is kept for new patrons of this category. "Never" anonymizes checkouts on return, and "Forever" keeps a patron's checkout history indefinitely. When set to "Default", the amount of history kept is controlled by the cronjob <code>batch_anonymise.pl</code> which should be set up by your system administrator.</div> |
372 |
<p>Controls how long a patrons checkout history is kept for new patrons of this category. "Never" anonymizes checkouts on return, and "Forever" keeps a patron's checkout history indefinitely. When set to "Default", the amount of history kept is controlled by the cronjob <i>batch_anonymise.pl</i> which should be set up by your system administrator.</p> |
111 |
</li> |
373 |
</li> |
112 |
<li> |
374 |
</ol> |
113 |
<span class="label">Enrolment period: </span> |
375 |
<span class="label">Enrolment period: </span> |
114 |
<fieldset class="rows"> |
376 |
</br> |
115 |
<ol> |
377 |
<fieldset> |
116 |
<li> |
378 |
<legend>Choose one</legend> |
117 |
<span class="label"> </span><strong>Choose one</strong> |
379 |
<ol> |
118 |
</li> |
380 |
<li> |
119 |
<li> |
381 |
<label for="enrolmentperiod" style="width:6em;">In months: </label> |
120 |
<label for="enrolmentperiod">In months: </label> |
382 |
<input type="number" class="enrolmentperiod" name="enrolmentperiod" id="enrolmentperiod" size="3" maxlength="3" value="[% IF category.enrolmentperiod %][% category.enrolmentperiod %][% END %]" /> months |
121 |
<input type="number" name="enrolmentperiod" id="enrolmentperiod" size="3" /> months |
383 |
</li> |
122 |
</li> |
384 |
<li> |
123 |
<li> |
385 |
<label for="enrolmentperioddate" style="width:6em;">Until date: </label> |
124 |
<label for="enrolmentperioddate">Until date: </label> |
386 |
<input type="text" class="enrolmentperioddate datepicker" name="enrolmentperioddate" id="enrolmentperioddate" value="[% category.enrolmentperioddate | $KohaDates %]" /> |
125 |
<input type="text" name="enrolmentperioddate" id="enrolmentperioddate" /> |
387 |
</li> |
126 |
<div class="hint">[% INCLUDE 'date-format.inc' %]</div> |
388 |
</ol> |
127 |
</li> |
389 |
</fieldset> |
128 |
</ol> |
390 |
<br> |
129 |
</fieldset> |
391 |
<input type="submit" class="action" value="Submit" /> |
130 |
</li> |
392 |
</fieldset> |
131 |
</ol> |
393 |
</form> |
132 |
<input type="submit" class="btn btn-primary" value="Submit" /> |
394 |
[% END %] |
133 |
</fieldset> |
|
|
134 |
</form> |
135 |
[% END %] |
136 |
</div> |
137 |
</div> |
395 |
|
138 |
|
396 |
[% INCLUDE 'intranet-bottom.inc' %] |
139 |
[% INCLUDE 'intranet-bottom.inc' %] |