[Koha-patches] [SIGNED OFF] Fix for Bug 5285, Show/hide columns in the output of items in batch operations
Colin Campbell
colin.campbell at ptfs-europe.com
Thu Dec 9 18:57:49 CET 2010
From: Owen Leonard <oleonard at myacpl.org>
Also adds title/author information to output of batch deletions
Signed-off-by: Colin Campbell <colin.campbell at ptfs-europe.com>
---
.../prog/en/includes/doc-head-close.inc | 2 +-
.../intranet-tmpl/prog/en/js/pages/batchMod.js | 139 ++++++++++++++++++++
.../prog/en/modules/tools/batchMod-del.tmpl | 50 ++++----
.../prog/en/modules/tools/batchMod-edit.tmpl | 54 ++++----
tools/batchMod.pl | 13 ++-
5 files changed, 201 insertions(+), 57 deletions(-)
create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
index 1970440..bbbd648 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
@@ -62,7 +62,7 @@
<!-- yui js -->
<script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/utilities/utilities.js"></script>
-<script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/datasource/datasource.js"></script>
+<script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/datasource/datasource-min.js"></script>
<!-- TMPL_IF NAME="CircAutocompl" -->
<script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/autocomplete/autocomplete-min.js"></script>
<!-- /TMPL_IF -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js b/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js
new file mode 100644
index 0000000..e6e2dc6
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js
@@ -0,0 +1,139 @@
+// Set expiration date for cookies
+ var date = new Date();
+ date.setTime(date.getTime()+(365*24*60*60*1000));
+ var expiration = date.toGMTString();
+
+
+function hideColumns(){
+ valCookie = YAHOO.util.Cookie.get("showColumns", function(stringValue){
+ return stringValue.split("/");
+ });
+ if(valCookie){
+ $("#showall").attr("checked","").parent().removeClass("selected");
+ for( i=0; i<valCookie.length; i++ ){
+ if(valCookie[i] != ''){
+ index = valCookie[i] - 2;
+ $("#itemst td:nth-child("+valCookie[i]+"),#itemst th:nth-child("+valCookie[i]+")").toggle();
+ $("#checkheader"+index).attr("checked","").parent().removeClass("selected");
+ }
+ }
+ }
+}
+
+function hideColumn(num) {
+ $("#hideall,#showall").attr("checked","").parent().removeClass("selected");
+ valCookie = YAHOO.util.Cookie.get("showColumns", function(stringValue){
+ return stringValue.split("/");
+ });
+ // set the index of the table column to hide
+ $("#"+num).parent().removeClass("selected");
+ var hide = Number(num.replace("checkheader","")) + 2;
+ // hide header and cells matching the index
+ $("#itemst td:nth-child("+hide+"),#itemst th:nth-child("+hide+")").toggle();
+ // set or modify cookie with the hidden column's index
+ if(valCookie){
+ var found = false;
+ for( $i=0; $i<valCookie.length; $i++ ){
+ if (hide == valCookie[i]) {
+ found = true;
+ break;
+ }
+ }
+ if( !found ){
+ valCookie.push(hide);
+ var cookieString = valCookie.join("/");
+ YAHOO.util.Cookie.set("showColumns", cookieString, {
+ expires: date
+ });
+ }
+ } else {
+ YAHOO.util.Cookie.set("showColumns", hide, {
+ expires: date
+ });
+ }
+}
+
+// Array Remove - By John Resig (MIT Licensed)
+// http://ejohn.org/blog/javascript-array-remove/
+Array.prototype.remove = function(from, to) {
+ var rest = this.slice((to || from) + 1 || this.length);
+ this.length = from < 0 ? this.length + from : from;
+ return this.push.apply(this, rest);
+};
+
+function showColumn(num){
+ $("#hideall").attr("checked","").parent().removeClass("selected");
+ $("#"+num).parent().addClass("selected");
+ valCookie = YAHOO.util.Cookie.get("showColumns", function(stringValue){
+ return stringValue.split("/");
+ });
+ // set the index of the table column to hide
+ show = Number(num.replace("checkheader","")) + 2;
+ // hide header and cells matching the index
+ $("#itemst td:nth-child("+show+"),#itemst th:nth-child("+show+")").toggle();
+ // set or modify cookie with the hidden column's index
+ if(valCookie){
+ var found = false;
+ for( i=0; i<valCookie.length; i++ ){
+ if (show == valCookie[i]) {
+ valCookie.remove(i);
+ found = true;
+ }
+ }
+ if( found ){
+ var cookieString = valCookie.join("/");
+ YAHOO.util.Cookie.set("showColumns", cookieString, {
+ expires: date
+ });
+ }
+ }
+}
+function showAllColumns(){
+ $("#selections").checkCheckboxes();
+ $("#selections span").addClass("selected");
+ $("#itemst td:nth-child(2),#itemst tr th:nth-child(2)").nextAll().show();
+ YAHOO.util.Cookie.remove("showColumns");
+ $("#hideall").attr("checked","").parent().removeClass("selected");
+}
+function hideAllColumns(){
+ $("#selections").unCheckCheckboxes();
+ $("#selections span").removeClass("selected");
+ $("#itemst td:nth-child(2),#itemst th:nth-child(2)").nextAll().hide();
+ $("#hideall").attr("checked","checked").parent().addClass("selected");
+ var cookieString = allColumns.join("/");
+ YAHOO.util.Cookie.set("showColumns", cookieString, {
+ expires: date
+ });
+}
+
+ $(document).ready(function() {
+ hideColumns();
+ $("#itemst").tablesorter({
+ widgets : ['zebra'],
+ headers: {0:{sorter: false}}
+ });
+ $("#selectallbutton").click(function(){
+ $("#itemst").checkCheckboxes();
+ return false;
+ });
+ $("#clearallbutton").click(function(){
+ $("#itemst").unCheckCheckboxes();
+ return false;
+ });
+ $("#selections input").change(function(e){
+ var num = $(this).attr("id");
+ if(num == 'showall'){
+ showAllColumns();
+ e.stopPropagation();
+ } else if(num == 'hideall'){
+ hideAllColumns();
+ e.stopPropagation();
+ } else {
+ if($(this).attr("checked")){
+ showColumn(num);
+ } else {
+ hideColumn(num);
+ }
+ }
+ });
+ });
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl
index 441f4c5..f757240 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tmpl
@@ -2,32 +2,25 @@
<title>Koha › Tools › Batch item deletion</title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
<!-- TMPL_INCLUDE NAME="background-job.inc" -->
-<style type="text/css">
- #jobpanel,#jobstatus,#jobfailed { display : none; }
- #jobstatus { margin:.4em; }
- #jobprogress{ width:200px;height:10px;border:1px solid #666;background:url('/intranet-tmpl/prog/img/progress.png') -300px 0px no-repeat; }
-</style>
+<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/pages/batchMod.css" />
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/JavaScript" language="JavaScript">
+<script src="<!-- TMPL_VAR name="themelang" -->/lib/yui/cookie/cookie-min.js"></script>
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
+<script type="text/javascript">
//<![CDATA[
- $(document).ready(function() {
- $("#itemst").tablesorter({
- widgets : ['zebra']
- });
- $("#selectallbutton").click(function() {
- $("#itemst").find("input:checkbox").each(function() {
- $(this).attr("checked", true);
- });
- });
- $("#clearallbutton").click(function() {
- $("#itemst").find("input:checkbox").each(function() {
- $(this).attr("checked", false);
- });
- });
-
- });
+
+// Prepare array of all column headers, incrementing each index by
+// two to accomodate control and title columns
+var allColumns = new Array(<!-- TMPL_LOOP NAME="item_header_loop" -->'<!-- TMPL_VAR NAME="__counter__" -->'<!-- TMPL_UNLESS NAME="__last__" -->,<!-- /TMPL_UNLESS --><!-- /TMPL_LOOP -->);
+for( x=0; x<allColumns.length; x++ ){
+ allColumns[x] = Number(allColumns[x]) + 2;
+}
//]]>
</script>
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/js/pages/batchMod.js"></script>
+<!--[if IE]>
+<style type="text/css">#selections { display: none; }</style>
+<![endif]-->
</head>
<body>
<!-- TMPL_INCLUDE NAME="header.inc" -->
@@ -81,24 +74,31 @@
<!-- TMPL_IF name="item_loop" -->
<!-- TMPL_IF NAME="show" --><div id="toolbar"><a id="selectallbutton" href="#">Select All</a> | <a id="clearallbutton" href="#">Clear All</a></div><!-- /TMPL_IF -->
<div id="cataloguing_additem_itemlist">
- <div style="overflow:auto">
+
+ <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>
+ <!-- TMPL_LOOP NAME="item_header_loop" -->
+ <span class="selected"><input id="checkheader<!-- TMPL_VAR NAME="__counter" -->" type="checkbox" checked="checked" /> <label for="checkheader<!-- TMPL_VAR NAME="__counter__" -->"><!-- TMPL_VAR NAME="header_value" --></label> </span>
+ <!-- /TMPL_LOOP -->
+ </p>
+
<table id="itemst">
<thead>
<tr>
<!-- TMPL_IF NAME="show" --><th> </th><!-- /TMPL_IF -->
- <!-- TMPL_LOOP NAME="item_header_loop" -->
+ <th>Title</th>
+ <!-- TMPL_LOOP NAME="item_header_loop" -->
<th> <!-- TMPL_VAR NAME="header_value" --> </th>
- <!-- /TMPL_LOOP -->
+ <!-- /TMPL_LOOP -->
</tr>
</thead>
<tbody>
<!-- TMPL_LOOP NAME="item_loop" --> <tr> <!-- TMPL_IF NAME="show" --><!-- TMPL_IF Name="nomod"--> <td class="error">Cannot Edit</td><!--TMPL_ELSE--><td><input type="checkbox" name="itemnumber" value="<!--TMPL_VAR Name="itemnumber"-->" id="row<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" /></td><!--/TMPL_IF--><!--/TMPL_IF-->
+ <td><label for="row<!-- TMPL_VAR NAME="itemnumber" -->"><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" --></a><!-- TMPL_IF NAME="author" -->, by <!-- TMPL_VAR NAME="author" --><!-- /TMPL_IF --></label></td>
<!-- TMPL_LOOP NAME="item_value" --> <td><!-- TMPL_VAR ESCAPE="HTML" NAME="field" --></td>
<!-- /TMPL_LOOP --> </tr>
<!-- /TMPL_LOOP -->
</tbody>
</table>
- </div>
</div>
<!-- /TMPL_IF -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl
index f314c7c..cdf3ef5 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tmpl
@@ -2,32 +2,26 @@
<title>Koha › Tools › Batch item modification</title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
<!-- TMPL_INCLUDE NAME="background-job.inc" -->
-<style type="text/css">
- #jobpanel,#jobstatus,#jobfailed { display : none; }
- #jobstatus { margin:.4em; }
- #jobprogress{ width:200px;height:10px;border:1px solid #666;background:url('/intranet-tmpl/prog/img/progress.png') -300px 0px no-repeat; }
-</style>
+<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/css/pages/batchMod.css" />
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/JavaScript" language="JavaScript">
+<script src="<!-- TMPL_VAR name="themelang" -->/lib/yui/cookie/cookie-min.js"></script>
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
+<script type="text/javascript">
//<![CDATA[
- $(document).ready(function() {
- $("#itemst").tablesorter({
- widgets : ['zebra'],
- headers: {0:{sorter: false}}
- });
- $("#selectallbutton").click(function() {
- $("#itemst").find("input:checkbox").each(function() {
- $(this).attr("checked", true);
- });
- });
- $("#clearallbutton").click(function() {
- $("#itemst").find("input:checkbox").each(function() {
- $(this).attr("checked", false);
- });
- });
- });
+
+// Prepare array of all column headers, incrementing each index by
+// two to accomodate control and title columns
+var allColumns = new Array(<!-- TMPL_LOOP NAME="item_header_loop" -->'<!-- TMPL_VAR NAME="__counter__" -->'<!-- TMPL_UNLESS NAME="__last__" -->,<!-- /TMPL_UNLESS --><!-- /TMPL_LOOP -->);
+for( x=0; x<allColumns.length; x++ ){
+ allColumns[x] = Number(allColumns[x]) + 2;
+}
//]]>
</script>
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/js/pages/batchMod.js"></script>
+<!--[if IE]>
+<style type="text/css">#selections { display: none; }</style>
+<![endif]-->
+<link type="text/css" rel="stylesheet" href="<!-- TMPL_VAR NAME="themelang" -->/css/addbiblio.css" />
</head>
<body>
<!-- TMPL_INCLUDE NAME="header.inc" -->
@@ -74,26 +68,30 @@
<!-- TMPL_IF name="item_loop" -->
<!-- TMPL_IF NAME="show" --><div id="toolbar"><a id="selectallbutton" href="#">Select All</a> | <a id="clearallbutton" href="#">Clear All</a></div><!-- TMPL_ELSE --><!-- /TMPL_IF -->
<div id="cataloguing_additem_itemlist">
- <div style="overflow:auto">
+
+<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>
+ <!-- TMPL_LOOP NAME="item_header_loop" -->
+ <span class="selected"><input id="checkheader<!-- TMPL_VAR NAME="__counter" -->" type="checkbox" checked="checked" /> <label for="checkheader<!-- TMPL_VAR NAME="__counter__" -->"><!-- TMPL_VAR NAME="header_value" --></label> </span>
+ <!-- /TMPL_LOOP -->
+</p>
<table id="itemst">
<thead>
<tr>
- <!-- TMPL_IF NAME="show" --><th> </th><!-- /TMPL_IF -->
+ <th> </th>
<th>Title</th>
- <!-- TMPL_LOOP NAME="item_header_loop" -->
+ <!-- TMPL_LOOP NAME="item_header_loop" -->
<th> <!-- TMPL_VAR NAME="header_value" --> </th>
<!-- /TMPL_LOOP -->
</tr>
</thead>
<tbody>
- <!-- TMPL_LOOP NAME="item_loop" --> <tr> <!-- TMPL_IF NAME="show" --><!-- TMPL_IF Name="nomod"--> <td class="error">Cannot Edit</td><!--TMPL_ELSE--><td><input type="checkbox" name="itemnumber" value="<!--TMPL_VAR Name="itemnumber"-->" id="row<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" /></td><!--/TMPL_IF--><!-- /TMPL_IF -->
- <td><!-- TMPL_VAR ESCAPE="HTML" NAME="bibinfo" --></td>
+ <!-- TMPL_LOOP NAME="item_loop" --> <tr> <!-- TMPL_IF NAME="show" --><!-- TMPL_IF Name="nomod"--> <td class="error">Cannot Edit</td><!--TMPL_ELSE--><td><input type="checkbox" name="itemnumber" value="<!--TMPL_VAR Name="itemnumber"-->" id="row<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" /></td><!--/TMPL_IF--><!--TMPL_ELSE--><td> </td><!-- /TMPL_IF -->
+ <td><label for="row<!-- TMPL_VAR NAME="itemnumber" -->"><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" --></a><!-- TMPL_IF NAME="author" -->, by <!-- TMPL_VAR NAME="author" --><!-- /TMPL_IF --></label></td>
<!-- TMPL_LOOP NAME="item_value" --> <td><!-- TMPL_VAR ESCAPE="HTML" NAME="field" --></td>
<!-- /TMPL_LOOP --> </tr>
<!-- /TMPL_LOOP -->
</tbody>
</table>
- </div>
</div>
<!-- /TMPL_IF --><!-- /item_loop -->
diff --git a/tools/batchMod.pl b/tools/batchMod.pl
index b2007bc..43e5029 100755
--- a/tools/batchMod.pl
+++ b/tools/batchMod.pl
@@ -456,8 +456,11 @@ sub BuildItemsData{
# grab title, author, and ISBN to identify bib that the item
# belongs to in the display
- my $biblio=GetBiblioData($$itemdata{biblionumber});
- $this_row{bibinfo} = join("\n", @$biblio{qw(title author ISBN)});
+ my $biblio=GetBiblioData($$itemdata{biblionumber});
+ $this_row{title} = $biblio->{title};
+ $this_row{author} = $biblio->{author};
+ $this_row{isbn} = $biblio->{isbn};
+ $this_row{biblionumber} = $biblio->{biblionumber};
if (%this_row) {
push(@big_array, \%this_row);
@@ -476,7 +479,11 @@ sub BuildItemsData{
$row_data{itemnumber} = $row->{itemnumber};
#reporting this_row values
$row_data{'nomod'} = $row->{'nomod'};
- $row_data{bibinfo} = $row->{bibinfo};
+ $row_data{bibinfo} = $row->{bibinfo};
+ $row_data{author} = $row->{author};
+ $row_data{title} = $row->{title};
+ $row_data{isbn} = $row->{isbn};
+ $row_data{biblionumber} = $row->{biblionumber};
push(@item_value_loop,\%row_data);
}
my @header_loop=map { { header_value=> $witness{$_}} } @witnesscodessorted;
--
1.7.3.2
More information about the Koha-patches
mailing list