Owen Leonard
04d79ba063
This patch modifies more and more staff client serials templates so that JavaScript is included in the footer instead of the header. This patch adds a new JavaScript include, showpredictionpattern.js, which is used by subscription-add.tt and subscription-numberpatterns.tt. it also adds subscription-add.js, moving most of the JS embedded in subscription-add.tt into an external file. To test, apply the patch and test the JavaScript-driven features of the modified templates: All button controls, DataTables functionality, tabs, etc. - Serials -> New subscription - Date pickers - Popup search windows for vendors and bibliographic records - Next / Previous buttons - Form validation - Prediction pattern operations Test with new subscriptions, editing existing subscriptions, and duplicating subscriptions. - Serials -> Manage Numbering Patterns - Datatable - Delete confirmation -> Edit - Datepicker, test pattern - Serials -> Manage frequencies - Delete confirmation -> Edit - Form validation - Serials -> Subscription details -> Planning tab -> Edit history -> Datepicker - Serials -> Subscription details -> Renew - Datepicker Signed-off-by: Dominic Pichette <dominic@inlibro.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
389 lines
17 KiB
Text
389 lines
17 KiB
Text
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Serials › Numbering patterns</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
|
|
</head>
|
|
|
|
<body id="ser_subscription_numberpatterns" class="ser">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'serials-search.inc' %]
|
|
|
|
<div id="breadcrumbs">
|
|
<a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
|
|
<a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a> ›
|
|
<a href="/cgi-bin/koha/serials/subscription-numberpatterns.pl">Numbering patterns</a>
|
|
[% IF ( new ) %]
|
|
› New numbering pattern
|
|
[% ELSIF ( modify ) %]
|
|
› Modifying numbering pattern '[% label %]'
|
|
[% END %]
|
|
</div>
|
|
|
|
<div id="doc3" class="yui-t2">
|
|
|
|
<div id="bd">
|
|
<div id="yui-main">
|
|
<div class="yui-b">
|
|
[% IF (new or modify) %]
|
|
<div class="yui-g">
|
|
[% IF (new) %]
|
|
<h1>New numbering pattern</h1>
|
|
[% IF (error_existing_numberpattern) %]
|
|
<div class="dialog alert">
|
|
<p>A pattern with this name already exists.</p>
|
|
</div>
|
|
[% END %]
|
|
[% ELSE %]
|
|
<h1>Modify pattern: [% label %]</h1>
|
|
[% IF (error_existing_numberpattern) %]
|
|
<div class="dialog alert">
|
|
<p>Another pattern with this name already exists.</p>
|
|
</div>
|
|
[% END %]
|
|
[% END %]
|
|
</div>
|
|
<div class="yui-g">
|
|
<form action="/cgi-bin/koha/serials/subscription-numberpatterns.pl" method="post">
|
|
[% IF (new) %]
|
|
<input type="hidden" name="op" value="savenew" />
|
|
[% ELSE %]
|
|
<input type="hidden" name="op" value="savemod" />
|
|
<input type="hidden" name="id" value="[% id %]" />
|
|
[% END %]
|
|
<fieldset class="rows">
|
|
<ol>
|
|
<li>
|
|
<label for="label">Name:</label>
|
|
<input type="text" id="label" name="label" value="[% label %]" />
|
|
</li>
|
|
<li>
|
|
<label for="description">Description:</label>
|
|
<input type="text" id="description" name="description" value="[% description %]" />
|
|
</li>
|
|
<li>
|
|
<label for="numberingmethod">Numbering formula:</label>
|
|
<input type="text" id="numberingmethod" name="numberingmethod" value="[% numberingmethod %]" />
|
|
</li>
|
|
<li>
|
|
<label for="displayorder">Display order:</label>
|
|
<input type="text" id="displayorder" name="displayorder" value="[% displayorder %]" />
|
|
</li>
|
|
</ol>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th> </th>
|
|
<th>X</th>
|
|
<th>Y</th>
|
|
<th>Z</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Label</td>
|
|
<td><input type="text" id="label1" name="label1" value="[% label1 %]" /></td>
|
|
<td><input type="text" id="label2" name="label2" value="[% label2 %]" /></td>
|
|
<td><input type="text" id="label3" name="label3" value="[% label3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Add</td>
|
|
<td><input type="text" id="add1" name="add1" value="[% add1 %]" /></td>
|
|
<td><input type="text" id="add2" name="add2" value="[% add2 %]" /></td>
|
|
<td><input type="text" id="add3" name="add3" value="[% add3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Every</td>
|
|
<td><input type="text" id="every1" name="every1" value="[% every1 %]" /></td>
|
|
<td><input type="text" id="every2" name="every2" value="[% every2 %]" /></td>
|
|
<td><input type="text" id="every3" name="every3" value="[% every3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Set back to</td>
|
|
<td><input type="text" id="setto1" name="setto1" value="[% setto1 %]" /></td>
|
|
<td><input type="text" id="setto2" name="setto2" value="[% setto2 %]" /></td>
|
|
<td><input type="text" id="setto3" name="setto3" value="[% setto3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>When more than</td>
|
|
<td><input type="text" id="whenmorethan1" name="whenmorethan1" value="[% whenmorethan1 %]" /></td>
|
|
<td><input type="text" id="whenmorethan2" name="whenmorethan2" value="[% whenmorethan2 %]" /></td>
|
|
<td><input type="text" id="whenmorethan3" name="whenmorethan3" value="[% whenmorethan3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
[% BLOCK numbering_select %]
|
|
<select id="[% name %]" name="[% name %]">
|
|
<option value=""></option>
|
|
[% IF (value == "dayname") %]
|
|
<option selected="selected" value="dayname">Name of day</option>
|
|
[% ELSE %]
|
|
<option value="dayname">Name of day</option>
|
|
[% END %]
|
|
[% IF (value == "dayabrv") %]
|
|
<option selected="selected" value="dayabrv">Name of day (abbreviated)</option>
|
|
[% ELSE %]
|
|
<option value="dayabrv">Name of day (abbreviated)</option>
|
|
[% END %]
|
|
[% IF (value == "monthname") %]
|
|
<option selected="selected" value="monthname">Name of month</option>
|
|
[% ELSE %]
|
|
<option value="monthname">Name of month</option>
|
|
[% END %]
|
|
[% IF (value == "monthabrv") %]
|
|
<option selected="selected" value="monthabrv">Name of month (abbreviated)</option>
|
|
[% ELSE %]
|
|
<option value="monthabrv">Name of month (abbreviated)</option>
|
|
[% END %]
|
|
[% IF (value == "season") %]
|
|
<option selected="selected" value="season">Name of season</option>
|
|
[% ELSE %]
|
|
<option value="season">Name of season</option>
|
|
[% END %]
|
|
[% IF (value == "seasonabrv") %]
|
|
<option selected="selected" value="seasonabrv">Name of season (abbreviated)</option>
|
|
[% ELSE %]
|
|
<option value="seasonabrv">Name of season (abbreviated)</option>
|
|
[% END %]
|
|
</select>
|
|
[% END %]
|
|
<td>Formatting</td>
|
|
<td>[% PROCESS numbering_select name="numbering1" value=numbering1 %]</td>
|
|
<td>[% PROCESS numbering_select name="numbering2" value=numbering2 %]</td>
|
|
<td>[% PROCESS numbering_select name="numbering3" value=numbering3 %]</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</fieldset>
|
|
<fieldset class="action">
|
|
<button type="submit" class="btn btn-default btn-sm">Save</button>
|
|
<button type="reset" class="btn btn-default btn-sm">Reset</button>
|
|
<a class="cancel" href="/cgi-bin/koha/serials/subscription-numberpatterns.pl">Cancel</a>
|
|
</fieldset>
|
|
</form>
|
|
</div>
|
|
<div class="yui-g">
|
|
<form>
|
|
<fieldset class="rows">
|
|
<legend>Test prediction pattern</legend>
|
|
<ol>
|
|
<li>
|
|
<label for="frequency">Frequency: </label>
|
|
<select id="frequency">
|
|
[% FOREACH frequency IN frequencies_loop %]
|
|
<option value="[% frequency.id %]">[% frequency.description %]</option>
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
<li>
|
|
<label for="firstacquidate">First issue publication date: </label>
|
|
<input type="text" id="firstacquidate" class="datepicker" size="10" />
|
|
</li>
|
|
<li>
|
|
<label for="sublength">Subscription length:</label>
|
|
<select id="subtype">
|
|
[% FOREACH subtype IN subtypes_loop %]
|
|
<option value="[% subtype.value %]">[% subtype.value %]</option>
|
|
[% END %]
|
|
</select>
|
|
<input type="text" id="sublength" size="3" />
|
|
</li>
|
|
<li>
|
|
<label for="locale">Locale: </label>
|
|
<select id="locale" name="locale">
|
|
<option value=""></option>
|
|
[% FOREACH locale IN locales %]
|
|
<option value="[% locale.language %]">[% locale.description %]</option>
|
|
[% END %]
|
|
</select>
|
|
<span class="hint">If empty, English is used</span>
|
|
</li>
|
|
</ol>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th> </th>
|
|
<th>X</th>
|
|
<th>Y</th>
|
|
<th>Z</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Begins with</td>
|
|
<td><input type="text" id="lastvalue1" name="lastvalue1" value="[% lastvalue1 %]" /></td>
|
|
<td><input type="text" id="lastvalue2" name="lastvalue2" value="[% lastvalue2 %]" /></td>
|
|
<td><input type="text" id="lastvalue3" name="lastvalue3" value="[% lastvalue3 %]" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Inner counter</td>
|
|
<td><input type="text" id="innerloop1" name="innerloop1" value="[% innerloop1 %]" /></td>
|
|
<td><input type="text" id="innerloop2" name="innerloop2" value="[% innerloop2 %]" /></td>
|
|
<td><input type="text" id="innerloop3" name="innerloop3" value="[% innerloop3 %]" /></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<fieldset class="action">
|
|
<button type="button" id="test_pattern" class="btn btn-default btn-sm">Test pattern</button>
|
|
</fieldset>
|
|
<div id="predictionpattern"></div>
|
|
</fieldset>
|
|
</form>
|
|
</div>
|
|
[% ELSE %]
|
|
<h1>Numbering patterns</h1>
|
|
[% IF still_used %]
|
|
<div class="dialog alert">
|
|
<p>
|
|
This pattern is still used by [% subscriptions.size %]
|
|
subscription(s). Do you still want to delete it?
|
|
</p>
|
|
<p><a href="#" id="show_blocking_subs">Show subscriptions</a></p>
|
|
<ul id="blocking_subs" style="display:none">
|
|
[% FOREACH sub IN subscriptions %]
|
|
<li style="list-style-type:none">
|
|
<a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% sub.subscriptionid %]">[% sub.title %]</a>
|
|
</li>
|
|
[% END %]
|
|
</ul>
|
|
|
|
<form action="/cgi-bin/koha/serials/subscription-numberpatterns.pl" method="get">
|
|
<input type="hidden" name="op" value="del" />
|
|
<input type="hidden" name="confirm" value="1" />
|
|
<input type="hidden" name="id" value="[% id %]" />
|
|
<button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete</button>
|
|
</form>
|
|
<form action="/cgi-bin/koha/serials/subscription-numberpatterns.pl" method="get">
|
|
<button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
|
|
</form>
|
|
</div>
|
|
[% END %]
|
|
|
|
<div id="toolbar" class="btn-toolbar">
|
|
<a class="btn btn-default btn-sm" id="newnumberpattern" href="/cgi-bin/koha/serials/subscription-numberpatterns.pl?op=new"><i class="fa fa-plus"></i> New numbering pattern</a>
|
|
</div>
|
|
|
|
[% IF (numberpatterns_loop.size) %]
|
|
<table id="numberpatternst">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Description</th>
|
|
<th>Numbering formula</th>
|
|
<th>Display order</th>
|
|
<th>Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH numberpattern IN numberpatterns_loop %]
|
|
<tr>
|
|
<td>[% numberpattern.label %]</td>
|
|
<td>[% numberpattern.description %]</td>
|
|
<td>[% numberpattern.numberingmethod %]</td>
|
|
<td>[% numberpattern.displayorder %]</td>
|
|
<td class="actions">
|
|
<a class="btn btn-default btn-xs" href="/cgi-bin/koha/serials/subscription-numberpatterns.pl?op=modify&id=[% numberpattern.id %]"><i class="fa fa-pencil"></i> Edit</a>
|
|
<a class="delete_pattern btn btn-default btn-xs" href="/cgi-bin/koha/serials/subscription-numberpatterns.pl?op=del&id=[% numberpattern.id %]"><i class="fa fa-trash"></i> Delete</a>
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% ELSE %]
|
|
<p>There are no existing numbering patterns.</p>
|
|
[% END %]
|
|
[% END %]
|
|
</div>
|
|
</div>
|
|
<div class="yui-b">
|
|
[% INCLUDE 'serials-menu.inc' %]
|
|
</div>
|
|
</div>
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% IF (daily_options) %]
|
|
<script type="text/javascript" src="[% interface %]/[% theme %]/js/showpredictionpattern.js"></script>
|
|
[% END %]
|
|
[% INCLUDE 'calendar.inc' %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
<script type="text/javascript">
|
|
function confirmDelete() {
|
|
return confirm(_("Are you sure you want to delete this numbering pattern?"));
|
|
}
|
|
|
|
[% IF (new or modify) %]
|
|
function testPattern() {
|
|
var frequencyid = $("#frequency").val();
|
|
var firstacquidate = $("#firstacquidate").val();
|
|
var error = 0;
|
|
var error_msg = "";
|
|
if(frequencyid == undefined || frequencyid == "") {
|
|
error_msg += _("- Frequency is not defined") + "\n";
|
|
error ++;
|
|
}
|
|
if(firstacquidate == undefined || firstacquidate == "") {
|
|
error_msg += _("- First publication date is not defined") + "\n";
|
|
error ++;
|
|
}
|
|
|
|
if(error){
|
|
alert(_("Cannot test prediction pattern for the following reason(s):") + "\n\n"
|
|
+ error_msg);
|
|
return false;
|
|
}
|
|
|
|
var ajaxData = {
|
|
'custompattern': true,
|
|
};
|
|
var ajaxParams = [
|
|
'firstacquidate', 'subtype', 'sublength', 'frequency', 'numberingmethod',
|
|
'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
|
|
'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
|
|
'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
|
|
'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
|
|
];
|
|
for(i in ajaxParams) {
|
|
var param = ajaxParams[i];
|
|
var value = $("#"+param).val();
|
|
if(value.length > 0)
|
|
ajaxData[param] = value;
|
|
}
|
|
|
|
$.ajax({
|
|
url: "/cgi-bin/koha/serials/showpredictionpattern.pl",
|
|
data: ajaxData,
|
|
async: false,
|
|
dataType: "text",
|
|
success: function(data) {
|
|
$("#predictionpattern").html(data);
|
|
}
|
|
});
|
|
}
|
|
[% END %]
|
|
|
|
function show_blocking_subs() {
|
|
$("#blocking_subs").show();
|
|
}
|
|
$(document).ready(function(){
|
|
|
|
$("#numberpatternst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"aoColumnDefs": [
|
|
{ "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
|
|
],
|
|
"sPaginationType": "four_button"
|
|
}));
|
|
|
|
$(".delete_pattern").on("click",function(){
|
|
return confirmDelete();
|
|
});
|
|
$("#show_blocking_subs").on("click",function(e){
|
|
e.preventDefault();
|
|
$("#blocking_subs").show();
|
|
});
|
|
$("#test_pattern").on("click",function(){
|
|
testPattern();
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|