Owen Leonard
28518a033b
The budget planning table previously used a YUI menu as part of a system for hiding and showing table columns. Instead of trying to convert that sytem to Bootstrap I have used code from the batch modification/deletion pages which uses a list of checkboxes to show and hide table columns. This has the advantage of giving the user visual feedback of what columns are hidden and of offering the user an interface which is familiar from other pages. This patch also moves CSS from a batch-operations-specific CSS file into the main CSS file. Batch modification templates have been modified accordingly. To test, view the budget planning page and choose different "plan by" options (by month, by library, by item type). Test the show/hide action on each individual column and using the "show all" and "hide all" checkboxes. Signed-off-by: David Cook <dcook@prosentient.com.au> Works as described. This interface is also much more visually appealing, user-friendly, and informative than it was when it used the YUI menu. Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
204 lines
9.7 KiB
Text
204 lines
9.7 KiB
Text
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Tools › Batch item modification</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
|
|
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
|
|
<script type="text/javascript" src="[% themelang %]/js/pages/batchMod.js"></script>
|
|
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
|
|
[% INCLUDE 'datatables-strings.inc' %]
|
|
<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
|
|
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
|
|
// Prepare array of all column headers, incrementing each index by
|
|
// two to accomodate control and title columns
|
|
var allColumns = new Array([% FOREACH item_header_loo IN item_header_loop %]'[% loop.count %]'[% UNLESS ( loop.last ) %],[% END %][% END %]);
|
|
for( x=0; x<allColumns.length; x++ ){
|
|
allColumns[x] = Number(allColumns[x]) + 2;
|
|
}
|
|
$(document).ready(function(){
|
|
$("#selectallbutton").click(function() {
|
|
$("#itemst").find("input:checkbox").each(function() {
|
|
$(this).attr("checked", "checked");
|
|
});
|
|
});
|
|
$("#clearallbutton").click(function() {
|
|
$("#itemst").find("input:checkbox").each(function() {
|
|
$(this).removeAttr("checked");
|
|
});
|
|
});
|
|
$("input[name='disable_input']").click(function() {
|
|
var row = $(this).attr("id");
|
|
row = row.replace("row","hint");
|
|
var subfield = $(this).next();
|
|
if ($(this).is(":checked")){
|
|
$(this).val($(this).siblings("[name='subfield']").val());
|
|
$(subfield).attr('disabled',true);
|
|
$("#"+row).html(_("This subfield will be deleted"));
|
|
} else {
|
|
$(subfield).removeAttr('disabled');
|
|
$("#"+row).html("");
|
|
}
|
|
});
|
|
});
|
|
//]]>
|
|
</script>
|
|
<!--[if IE]>
|
|
<style type="text/css">#selections { display: none; }</style>
|
|
<![endif]-->
|
|
<style type="text/css">input[type=checkbox]{ margin : 0 .5em; }</style>
|
|
<link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
|
|
</head>
|
|
<body id="tools_batchMod-edit" class="tools">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'cat-search.inc' %]
|
|
|
|
<div id="breadcrumbs">
|
|
<a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
|
|
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> ›
|
|
<a href="/cgi-bin/koha/tools/batchMod.pl">Batch item modification</a>
|
|
</div>
|
|
|
|
<div id="doc3" class="yui-t7">
|
|
<div id="bd">
|
|
<div id="yui-main">
|
|
[% IF ( show ) %]<h1>Batch item modification</h1>[% ELSE %]<h1>Batch item modification results</h1>[% END %]
|
|
[% IF ( barcode_not_unique ) %]<div class="dialog alert"><strong>Error saving item</strong>: Barcode must be unique.</div>[% END %]
|
|
[% IF ( no_next_barcode ) %]<div class="dialog alert"><strong>Error saving items</strong>: Unable to automatically determine values for barcodes. No item has been inserted.</div>[% END %]
|
|
[% IF ( book_on_loan ) %]<div class="dialog alert"><strong>Cannot Delete</strong>: item is checked out.</div>[% END %]
|
|
[% IF ( book_reserved ) %]<div class="dialogalert"><strong>Cannot Delete</strong>: item has a waiting hold.</div>[% END %]
|
|
|
|
[% IF ( notfoundbarcodes ) %]
|
|
<div class="dialog alert"><p>Warning, the following barcodes were not found:</p></div>
|
|
<table style="margin:auto;">
|
|
<thead>
|
|
<tr><th>Barcodes not found</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH notfoundbarcode IN notfoundbarcodes %]
|
|
<tr><td>[% notfoundbarcode.barcode %]</td></td>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% IF ( item_loop ) %]
|
|
[% UNLESS ( too_many_items ) %]
|
|
<h4>The following barcodes were found: </h4>
|
|
[% END %]
|
|
[% END %]
|
|
[% END %] <!-- /notfoundbarcodes -->
|
|
|
|
<form name="f" action="batchMod.pl" method="post">
|
|
<input type="hidden" name="op" value="[% op %]" />
|
|
<input type="hidden" name="uploadedfileid" id="uploadedfileid" value="" />
|
|
<input type="hidden" name="runinbackground" id="runinbackground" value="" />
|
|
<input type="hidden" name="completedJobID" id="completedJobID" value="" />
|
|
<input type="hidden" name="src" id="src" value="[% src %]" />
|
|
|
|
[% IF ( item_loop ) %]
|
|
[% IF ( show ) %]<div id="toolbar"><a id="selectallbutton" href="#">Select All</a> | <a id="clearallbutton" href="#">Clear All</a></div>[% ELSE %][% END %]
|
|
<div id="cataloguing_additem_itemlist">
|
|
|
|
<p id="selections"><strong>Show/hide columns:</strong> <span class="selected"><input type="checkbox" checked="checked" id="showall"/><label for="showall">Show all columns</label></span> <span><input type="checkbox" id="hideall"/><label for="hideall">Hide all columns</label></span>
|
|
[% FOREACH item_header_loo IN item_header_loop %]
|
|
<span class="selected"><input id="checkheader[% loop.count %]" type="checkbox" checked="checked" /> <label for="checkheader[% loop.count %]">[% item_header_loo.header_value %]</label> </span>
|
|
[% END %]
|
|
</p>
|
|
<table id="itemst">
|
|
<thead>
|
|
<tr>
|
|
<th> </th>
|
|
<th>Title</th>
|
|
[% FOREACH item_header_loo IN item_header_loop %]
|
|
<th> [% item_header_loo.header_value %] </th>
|
|
[% END %]
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH item_loo IN item_loop %] <tr> [% IF ( show ) %][% IF ( item_loo.nomod ) %] <td class="error">Cannot Edit</td>[% ELSE %]<td><input type="checkbox" name="itemnumber" value="[% item_loo.itemnumber %]" id="row[% item_loo.itemnumber %]" checked="checked" /></td>[% END %][% ELSE %]<td> </td>[% END %]
|
|
<td><label for="row[% item_loo.itemnumber %]"><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item_loo.biblionumber %]">[% item_loo.title %]</a>[% IF ( item_loo.author ) %], by [% item_loo.author %][% END %]</label></td>
|
|
[% FOREACH item_valu IN item_loo.item_value %] <td>[% item_valu.field |html %]</td>
|
|
[% END %] </tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
[% END %]<!-- /item_loop -->
|
|
|
|
[% IF ( simple_items_display ) %]
|
|
<p>The following items were modified:</p>
|
|
<ul>
|
|
[% FOREACH simple_items_displa IN simple_items_display %]
|
|
<li>
|
|
[% IF ( CAN_user_editcatalogue_edit_items ) %]<a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% simple_items_displa.biblionumber %]&itemnumber=[% simple_items_displa.itemnumber %]">[% simple_items_displa.barcode %]</a>[% ELSE %][% simple_items_displa.barcode %][% END %]
|
|
</li>
|
|
[% END %]
|
|
</ul>
|
|
[% END %]<!-- /simple_items_display -->
|
|
|
|
[% IF ( show ) %]
|
|
|
|
[% IF ( too_many_items ) %]
|
|
<p>Too many items ([% too_many_items %]): not displaying each one individually.</p>
|
|
[% FOREACH itemnumbers_hashre IN itemnumbers_hashref %]
|
|
<input type="hidden" name="itemnumber" value="[% itemnumbers_hashre.itemnumber %]" />
|
|
[% END %]
|
|
[% END %]<!-- /too_many_items -->
|
|
|
|
[% IF ( item_loop ) %]
|
|
<div id="cataloguing_additem_newitem">
|
|
<h2>Edit Items</h2>
|
|
<div class="hint">Checking the box right next the subfield label will disable the entry and delete the subfield on all selected items. Leave fields blank to make no change.</div>
|
|
<fieldset class="rows">
|
|
<ol>
|
|
[% FOREACH ite IN item %]
|
|
<li><div class="subfield_line" style="[% ite.visibility %]" id="subfield[% ite.tag %][% ite.subfield %][% ite.random %]">
|
|
[% IF ( ite.mandatory ) %]
|
|
<label class="required" for="tag_[% ite.tag %]_subfield_[% ite.subfield %]_[% ite.random %]">
|
|
[% ELSE %]
|
|
<label for="tag_[% ite.tag %]_subfield_[% ite.subfield %]_[% ite.random %]">
|
|
[% END %]
|
|
[% ite.subfield %] -
|
|
[% ite.marc_lib %]
|
|
</label>
|
|
[% UNLESS ( ite.mandatory ) %]<input type="checkbox" id="row[% ite.tag %][% ite.subfield %][% ite.random %]" title="Check to delete subfield [% ite.subfield %]" name="disable_input" value="[% ite.subfield %]" />[% ELSE %]<span class="required">Required</span>[% END %]
|
|
[% ite.marc_value %]
|
|
<input type="hidden" name="tag" value="[% ite.tag %]" />
|
|
<input type="hidden" name="subfield" value="[% ite.subfield %]" />
|
|
<input type="hidden" name="mandatory" value="[% ite.mandatory %]" />
|
|
[% IF ( ite.repeatable ) %]
|
|
<a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode); return false;">
|
|
<img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
|
|
</a>
|
|
[% END %]
|
|
<span class="hint" id="hint[% ite.tag %][% ite.subfield %][% ite.random %]"></span>
|
|
</div></li>
|
|
[% END %]
|
|
</ol>
|
|
</fieldset>
|
|
<fieldset class="action">
|
|
<div id="jobpanel">
|
|
<div id="jobstatus">Job progress: <div id="jobprogress"></div> <span id="jobprogresspercent">0</span>%</div>
|
|
<div id="jobfailed"></div>
|
|
</div>
|
|
<input type="submit" name="mainformsubmit" value="Save" onclick="return submitBackgroundJob(this.form);" />
|
|
<a href="/cgi-bin/koha/tools/batchMod.pl" class="cancel" onclick="history.back();return false;">Cancel</a>
|
|
</fieldset>
|
|
</div>
|
|
[% ELSE %]
|
|
<p><a href="/cgi-bin/koha/tools/batchMod.pl">Return to batch item modification</a></p>
|
|
[% END %]
|
|
[% ELSE %] <!-- // show -->
|
|
<fieldset class="action">
|
|
[% IF ( src == 'CATALOGUING') %]
|
|
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item_loo.biblionumber %]">Done</a>
|
|
[% ELSE %]
|
|
<a href="/cgi-bin/koha/tools/batchMod.pl">Done</a>
|
|
[% END %]
|
|
</fieldset>
|
|
|
|
[% END %]
|
|
</div>
|
|
</div>
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|