[Koha-patches] [PATCH] Accept or reject : Bug Fix and improvements.

Henri-Damien LAURENT henridamien at koha-fr.org
Tue Apr 15 19:19:18 CEST 2008


Improving workflow : A suggestion can be edited and status can be changed if mistaken as soon as it is not deleted or acquired.
Adding dates display.
Adding deletion of suggestions.
---
diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm
index afb548d..4250db0 100644
--- a/C4/Suggestions.pm
+++ b/C4/Suggestions.pm
@@ -72,7 +72,7 @@ Suggestions done by other borrowers can be seen when not "AVAILABLE"
 
 =head2 SearchSuggestion
 
-(\@array) = &SearchSuggestion($user,$author,$title,$publishercode,$status,$suggestedbyme)
+(\@array) = &SearchSuggestion($user,$author,$title,$publishercode,$status,$suggestedbyme,$branchcode)
 
 searches for a suggestion
 
@@ -85,7 +85,7 @@ Note the status is stored twice :
 =cut
 
 sub SearchSuggestion  {
-    my ($user,$author,$title,$publishercode,$status,$suggestedbyme)=@_;
+    my ($user,$author,$title,$publishercode,$status,$suggestedbyme,$branchcode)=@_;
     my $dbh = C4::Context->dbh;
     my $query = "
     SELECT suggestions.*,
@@ -113,7 +113,7 @@ sub SearchSuggestion  {
         push @sql_params,"%".$publishercode."%";
         $query .= " and publishercode like ?";
     }
-    if (C4::Context->preference("IndependantBranches")) {
+    if (C4::Context->preference("IndependantBranches") || $branchcode) {
         my $userenv = C4::Context->userenv;
         if ($userenv) {
             unless ($userenv->{flags} == 1){
@@ -121,6 +121,10 @@ sub SearchSuggestion  {
                 $query .= " and (U1.branchcode = ? or U1.branchcode ='')";
             }
         }
+        if ($branchcode) {
+            push @sql_params,$branchcode;
+            $query .= " and (U1.branchcode = ? or U1.branchcode ='')";
+        }
     }
     if ($status) {
         push @sql_params,$status;
@@ -146,6 +150,7 @@ sub SearchSuggestion  {
         } else {
             $even=1;
         }
+#         $data->{date} = format_date($data->{date});
         push(@results,$data);
     }
     return (\@results);
@@ -201,7 +206,7 @@ sub GetSuggestionFromBiblionumber {
 
 =head2 GetSuggestionByStatus
 
-$suggestions = &GetSuggestionByStatus($status)
+$suggestions = &GetSuggestionByStatus($status,[$branchcode])
 
 Get a suggestion from it's status
 
@@ -212,8 +217,10 @@ all the suggestion with C<$status>
 
 sub GetSuggestionByStatus {
     my $status = shift;
+    my $branchcode = shift;
     my $dbh = C4::Context->dbh;
-    my $query = "SELECT suggestions.*,
+    my @sql_params=($status);  
+    my $query = qq(SELECT suggestions.*,
                         U1.surname   AS surnamesuggestedby,
                         U1.firstname AS firstnamesuggestedby,
 						U1.borrowernumber AS borrnumsuggestedby,
@@ -223,17 +230,28 @@ sub GetSuggestionByStatus {
                         FROM suggestions
                         LEFT JOIN borrowers AS U1 ON suggestedby=U1.borrowernumber
                         LEFT JOIN borrowers AS U2 ON managedby=U2.borrowernumber
-                        WHERE status = ?
-                        ";
+                        WHERE status = ?);
+    if (C4::Context->preference("IndependantBranches") || $branchcode) {
+        my $userenv = C4::Context->userenv;
+        if ($userenv) {
+            unless ($userenv->{flags} == 1){
+                push @sql_params,$userenv->{branch};
+                $query .= " and (U1.branchcode = ? or U1.branchcode ='')";
+            }
+        }
+        if ($branchcode) {
+            push @sql_params,$branchcode;
+            $query .= " and (U1.branchcode = ? or U1.branchcode ='')";
+        }
+    }
+    
     my $sth = $dbh->prepare($query);
-    $sth->execute($status);
+    $sth->execute(@sql_params);
     
-    my @results;
-    while(my $data = $sth->fetchrow_hashref){
-        $data->{date} = format_date($data->{date});
-        push @results,$data;
-    }
-    return \@results;
+    my $results;
+    $results=  $sth->fetchall_arrayref({});
+#     map{$_->{date} = format_date($_->{date})} @$results;
+    return $results;
 }
 
 =head2 CountSuggestion
@@ -443,7 +461,7 @@ Delete a suggestion. A borrower can delete a suggestion only if he is its owner.
 =cut
 
 sub DelSuggestion {
-    my ($borrowernumber,$suggestionid) = @_;
+    my ($borrowernumber,$suggestionid,$type) = @_;
     my $dbh = C4::Context->dbh;
     # check that the suggestion comes from the suggestor
     my $query = "
@@ -454,13 +472,14 @@ sub DelSuggestion {
     my $sth = $dbh->prepare($query);
     $sth->execute($suggestionid);
     my ($suggestedby) = $sth->fetchrow;
-    if ($suggestedby eq $borrowernumber) {
+    if ($type eq "intranet" || $suggestedby eq $borrowernumber ) {
         my $queryDelete = "
             DELETE FROM suggestions
             WHERE suggestionid=?
         ";
         $sth = $dbh->prepare($queryDelete);
-        $sth->execute($suggestionid);
+        my $suggestiondeleted=$sth->execute($suggestionid);
+        return $suggestiondeleted;  
     }
 }
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/acceptorreject.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/acceptorreject.tmpl
index 6973172..61b9d20 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/acceptorreject.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/acceptorreject.tmpl
@@ -1,9 +1,15 @@
 <!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
-<title>Koha &rsaquo; Acquisitions &rasquo; Suggestions Management</title>
+<title>Koha &rsaquo; Acquisitions &rsaquo; Suggestions Management</title>
 <!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.pack.js"></script>
 <script type="text/JavaScript">
  // <![CDATA[
-	
+	$.tablesorter.addParser({
+	    id: 'articles', 
+	    is: function(s) {return false;  }, 
+	    format: function(s) { return s.toLowerCase().replace(/^(the|an|a) /,''); }, 
+	    type: 'text' 
+	});
 	/**
 	 *  displayOther.
 	 *  This function display the select or an textaera to write a reason.
@@ -13,6 +19,38 @@
 		$("#"+show+id).show();
 	}
 	$(document).ready(function() {
+    $('#suggestiontabs > ul').tabs({
+		select: function(ui) {
+	        $("#loadingtab").show();
+	    },
+    	show: function(ui) {
+	        $("#loadingtab").hide();
+	    }
+	}); 
+	$("#acceptedt").tablesorter({
+		headers: { 0: { sorter: 'articles' },3:{sorter: false},4:{sorter: false},5:{sorter: false},6:{sorter: false},7:{sorter: false}}
+	});
+	$("#acceptedt").bind("sortStart",function() {
+		$("#sorting").show();
+	}).bind("sortEnd",function() {
+		$("#sorting").hide();
+	});
+	$("#pendingt").tablesorter({
+    headers: { 0: { sorter: 'articles' },3:{sorter: false},4:{sorter: false},5:{sorter: false},6:{sorter: false},7:{sorter: false}}
+	});
+	$("#pendingt").bind("sortStart",function() {
+		$("#sorting").show();
+	}).bind("sortEnd",function() {
+		$("#sorting").hide();
+	});
+	$("#rejectedt").tablesorter({
+    headers: { 0: { sorter: 'articles' },3:{sorter: false},4:{sorter: false},5:{sorter: false},6:{sorter: false},7:{sorter: false}}
+	});
+	$("#rejectedt").bind("sortStart",function() {
+		$("#sorting").show();
+	}).bind("sortEnd",function() {
+		$("#sorting").hide();
+	});
 		$("div[id*=other-reason]").hide();
 		$("input[name*=other-reason]").focus(function(){ $(this).val(""); });
 		$("select[name*=reason]").change(function(){
@@ -28,6 +66,21 @@
 	}); 
 // ]]>
 </script>
+<style>
+.overlay {
+	top: 180px;
+	left: 50%;
+	position: absolute;
+	margin-left: -100px;
+	width: 200px;
+	text-align: center;
+	display: none;
+	margin-top: -10px;
+	background: #eeffd4;
+	padding : .5em;
+	color: #000;
+}
+</style>
 </head>
 <body>
 <!-- TMPL_INCLUDE NAME="header.inc" -->
@@ -42,39 +95,69 @@
 	<div class="yui-b">
 
     <h1>Suggestions</h1>
-	
-	<div class="toptabs">
+  <div id="sorting" class="overlay">Sorting...</div>
+  <div id="loadingtab" class="overlay">Loading tab...</div>
+  <div id="suggestiontabs" class="toptabs">
 	<ul class="ui-tabs-nav">
-			<!-- TMPL_IF NAME="op_accepted"--><li class="ui-tabs-selected"><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><a href="/cgi-bin/koha/suggestion/acceptorreject.pl?op=accepted">Accepted</a></li>
-			<!-- TMPL_IF NAME="op_else" --><li class="ui-tabs-selected"><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><a href="/cgi-bin/koha/suggestion/acceptorreject.pl?op=aorr_confirm">Pending</a></li>
-			<!-- TMPL_IF NAME="op_rejected"--><li class="ui-tabs-selected"><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><a href="/cgi-bin/koha/suggestion/acceptorreject.pl?op=rejected">Rejected</a></li>
+      <li><a href="/cgi-bin/koha/suggestion/acceptorreject.pl#accepted">Accepted</a></li>
+      <li class="ui-tabs-selected"><a href="/cgi-bin/koha/suggestion/acceptorreject.pl#pending">Pending</a></li>
+      <li><a href="/cgi-bin/koha/suggestion/acceptorreject.pl#rejected">Rejected</a></li>
 		</ul>
 	
-	<div class="tabs-container">
+ <!--TMPL_LOOP Name="suggestions"-->
+  <div id="<!--TMPL_VAR Name="suggestiontype"-->">
+<form name="f<!--TMPL_VAR Name="suggestiontype"-->" method="post" action="/cgi-bin/koha/suggestion/acceptorreject.pl">
+ <input type="hidden" name="op" value="aorr_confirm" />
+ <input type="hidden" name="suggestiontype" value="<!--TMPL_VAR Name="suggestiontype"-->" >
 
-<!-- TMPL_IF name="op_else" -->
     <!-- TMPL_IF NAME="suggestions_loop" -->
-    <form name="f" method="post" action="/cgi-bin/koha/suggestion/acceptorreject.pl">
-    <input type="hidden" name="op" value="aorr_confirm" />
-    <table>
-        <tr>
-            <th>Status</th>
-            <th>Reason</th>
+	<!--TMPL_IF EXPR="suggestiontype eq 'accepted'"-->
+    <table id="acceptedt">
+	<!-- TMPL_ELSIF EXPR="suggestiontype eq 'pending'" -->
+	<table id="pendingt">
+	<!-- TMPL_ELSE -->
+	<table id="rejectedt">
+	<!-- /TMPL_IF -->
+        <thead><tr>
             <th>Suggestion</th>
             <th>Suggested by</th>
-        </tr>
-        <!-- TMPL_LOOP NAME="suggestions_loop" -->
+            <th>Date</th>
+    <!--TMPL_IF EXPR="suggestiontype ne 'pending'"-->
+            <th>Reason</th>
+            <th>Reason Update</th>
+    <!--TMPL_ELSE-->
+            <th>Reason</th>
+    <!--/TMPL_IF -->         
+            <th>Accept</th>
+            <th>Reject</th>
+            <th>Delete</th>
+    </tr></thead>
+        <tbody><!-- TMPL_LOOP NAME="suggestions_loop" -->
             <!-- TMPL_IF name="even" --><tr class="highlight"><!-- TMPL_ELSE --><tr><!-- /TMPL_IF -->
                 <td>
-                    <select name="aorr">
-                        <option value=""> -- Choose Action -- </option>
-                        <option value="R<!--TMPL_VAR name="suggestionid" -->">Reject</option>
-                        <option value="A<!--TMPL_VAR name="suggestionid" -->">Accept</option>
-                    </select>
+    <!-- TMPL_VAR NAME="title" --><!-- TMPL_IF NAME="author" -->, by <!-- TMPL_VAR NAME="author" --><!-- /TMPL_IF --><br />
+                    <!-- TMPL_IF name="copyrightdate" -->&copy; <!-- TMPL_VAR name="copyrightdate" --> <!-- /TMPL_IF -->
+                        <!-- TMPL_IF name="volumedesc" -->; Volume:<i><!-- TMPL_VAR name="volumedesc" --></i> <!-- /TMPL_IF -->
+                        <!-- TMPL_IF name="isbn" -->; ISBN :<i><!-- TMPL_VAR name="isbn" --></i> <!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" -->; Published by <!-- TMPL_VAR name="publishercode" --> <!-- /TMPL_IF --><!-- TMPL_IF name="publicationyear" --> in <i><!-- TMPL_VAR name="publicationyear" --></i> <!-- /TMPL_IF --><!-- TMPL_IF name="place" --> in <i><!-- TMPL_VAR name="place" --></i> <!-- /TMPL_IF --><br /><!-- TMPL_IF name="note" --><!-- TMPL VAR NAME="note" --><!-- /TMPL_IF -->
+                </td>
+                <td>
+                    <!-- TMPL_VAR name="surnamesuggestedby" -->
+                    <!-- TMPL_IF name="firstnamesuggestedby" -->,<!-- /TMPL_IF -->
+                    <!-- TMPL_VAR name="firstnamesuggestedby" -->
+                </td>
+                <td>
+                    <!-- TMPL_VAR name="date" -->
+                </td>
+  
+    <!--TMPL_IF EXPR="suggestiontype ne 'pending'"-->
+                <td>
+                <!--TMPL_VAR Name="reason"-->
+      
                 </td>
+    <!--/TMPL_IF -->
                 <td>
 		            <div id="select-reason<!-- TMPL_VAR NAME="suggestionid" -->">
-                    <!-- TMPL_IF NAME="reasonsloop" --><select id="reason<!-- TMPL_VAR name="suggestionid" -->" name="reason<!-- TMPL_VAR name="suggestionid" -->">
+                        <!-- TMPL_IF NAME="reasonsloop" --><select id="reason<!-- TMPL_VAR NAME="suggestionid" -->" name="reason<!-- TMPL_VAR NAME="suggestionid" -->">
 			                <option value=""> -- Choose a reason -- </option>
                             <!-- TMPL_LOOP NAME="reasonsloop" -->
                                 <option value="<!-- TMPL_VAR NAME="lib" -->"><!-- TMPL_VAR NAME="lib" --></option>
@@ -89,87 +172,64 @@
 			
                 </td>
                 <td>
-		<!-- TMPL_VAR NAME="title" --><!-- TMPL_IF NAME="author" -->, by <!-- TMPL_VAR NAME="author" --><!-- /TMPL_IF --><br />
-                    <!-- TMPL_IF name="copyrightdate" -->&copy; <!-- TMPL_VAR name="copyrightdate" --> <!-- /TMPL_IF -->
-                        <!-- TMPL_IF name="volumedesc" -->; Volume:<i><!-- TMPL_VAR name="volumedesc" --></i> <!-- /TMPL_IF -->
-                        <!-- TMPL_IF name="isbn" -->; ISBN :<i><!-- TMPL_VAR name="isbn" --></i> <!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" -->; Published by <!-- TMPL_VAR name="publishercode" --> <!-- /TMPL_IF --><!-- TMPL_IF name="publicationyear" --> in <i><!-- TMPL_VAR name="publicationyear" --></i> <!-- /TMPL_IF --><!-- TMPL_IF name="place" --> in <i><!-- TMPL_VAR name="place" --></i> <!-- /TMPL_IF --><br /><!-- TMPL_IF name="note" --><!-- TMPL VAR NAME="note" --><!-- /TMPL_IF -->
-                </td>
-                <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrnumsuggestedby" -->"><!-- TMPL_VAR name="surnamesuggestedby" --><!-- TMPL_IF name="firstnamesuggestedby" -->, <!-- TMPL_VAR name="firstnamesuggestedby" --><!-- /TMPL_IF --></a></td>
-            </tr>
-        <!-- /TMPL_LOOP -->
-        </table>
-        <fieldset class="action"><input type="submit" value="Change Status" /></fieldset>
-</form>
-<!-- TMPL_ELSE -->
-    <b>No waiting suggestions to accept or reject.</b>
-<!-- /TMPL_IF -->
-<!-- /TMPL_IF -->
-
-<!-- TMPL_IF NAME="done" -->
+    <!--TMPL_IF EXPR="suggestiontype eq 'accepted'"-->
+                        <input id="a<!--TMPL_VAR name="suggestionid" -->" name="<!--TMPL_VAR name="suggestionid" -->" type="radio" value="ACCEPTED" disabled="disabled"  />
     
-    <!-- TMPL_IF NAME="suggestions_loop" -->
-        <table>
-        <tr>
-            <th>Reason</th>
-            <th>Suggestion</th>
-            <th>Suggested by</th>
-            <th>Date</th>
-        </tr>
-        <!-- TMPL_LOOP NAME="suggestions_loop" -->
-            <td>
-                <!-- TMPL_VAR NAME="reason" -->
+    <!--TMPL_ELSE-->  
+                        <input id="a<!--TMPL_VAR name="suggestionid" -->" name="<!--TMPL_VAR name="suggestionid" -->" type="radio" value="ACCEPTED" />
+    <!--/TMPL_IF-->            
             </td>
             <td>
-                <!-- TMPL_VAR NAME="title" -->
-                    <!-- TMPL_IF NAME="author" -->
-                        , by <!-- TMPL_VAR NAME="author" -->
-                    <!-- /TMPL_IF -->
-                    <br />
-                    <!-- TMPL_IF name="copyrightdate" -->
-                        &copy; <!-- TMPL_VAR name="copyrightdate" -->
-                    <!-- /TMPL_IF -->
-                    <!-- TMPL_IF name="volumedesc" -->
-                        ; Volume:<i><!-- TMPL_VAR name="volumedesc" --></i>
-                    <!-- /TMPL_IF -->
-                    <!-- TMPL_IF name="isbn" -->
-                        ; ISBN :<i><!-- TMPL_VAR name="isbn" --></i>
-                    <!-- /TMPL_IF -->
-                    <!-- TMPL_IF name="publishercode" -->
-                        ; Published by <!-- TMPL_VAR name="publishercode" -->
-                    <!-- /TMPL_IF -->
-                    <!-- TMPL_IF name="publicationyear" -->
-                        in <i><!-- TMPL_VAR name="publicationyear" --></i>
-                    <!-- /TMPL_IF -->
-                    <!-- TMPL_IF name="place" -->
-                        in <i><!-- TMPL_VAR name="place" --></i>
-                    <!-- /TMPL_IF -->
-                    <br />
-                    <!-- TMPL_IF name="note" -->
-                        <!-- TMPL VAR NAME="note" -->
-                    <!-- /TMPL_IF -->
-            </td>
-            <td>
-                <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrnumsuggestedby" -->"><!-- TMPL_VAR name="surnamesuggestedby" --><!-- TMPL_IF name="firstnamesuggestedby" -->, <!-- TMPL_VAR name="firstnamesuggestedby" --><!-- /TMPL_IF --></a>
+    <!--TMPL_IF EXPR="suggestiontype eq 'rejected'"-->
+                        <input id="r<!--TMPL_VAR name="suggestionid" -->" name="<!--TMPL_VAR name="suggestionid" -->" type="radio" value="REJECTED" disabled="disabled" />
+    
+    <!--TMPL_ELSE-->  
+                        <input id="r<!--TMPL_VAR name="suggestionid" -->"  name="<!--TMPL_VAR name="suggestionid" -->" type="radio" value="REJECTED" />
+    <!--/TMPL_IF-->            
+                
             </td>
             <td>
-                <!-- TMPL_VAR NAME="date" -->
+                        <input id="d<!--TMPL_VAR name="suggestionid" -->" name="<!--TMPL_VAR name="suggestionid" -->" type="radio" value="delete" />
             </td>
          </tr>
-        <!-- /TMPL_LOOP -->
-        </table>
-    <!-- TMPL_ELSE -->
+        <!-- /TMPL_LOOP --></tbody>
+        </table>  <fieldset>
+  <div id="select-reason<!-- TMPL_VAR NAME="suggestiontype" -->all">
+     <label for="reason<!-- TMPL_VAR NAME="suggestiontype" -->all">Choose a reason for all marked entries:</label>                 <select id="reason<!-- TMPL_VAR NAME="suggestiontype" -->all" name="reason<!-- TMPL_VAR NAME="suggestiontype" -->all">
+                      <option value=""> -- Choose a reason -- </option>
+                        <!--TMPL_LOOP Name="reasonsloop"-->
+                        <option value="<!--TMPL_VAR Name="lib" -->"><!--TMPL_VAR Name="lib" --></option>
+                        <!--/TMPL_LOOP-->
+                      <option value="other">Others...</option>
+                      </select>  <a href="#markall" id="markallop<!-- TMPL_VAR NAME="suggestiontype" -->">Mark all with this reason</a> 
+      </div>
 	
-		<h4>No suggestions have been 
-        <!-- TMPL_IF NAME="op_accepted"-->
-            accepted.
-        <!-- TMPL_ELSE -->
-            rejected.
-        <!-- /TMPL_IF --></h4>
-    <!-- /TMPL_IF -->
+        <div id="other-reason<!-- TMPL_VAR NAME="suggestiontype" -->all">
+    <label for="other-reason<!-- TMPL_VAR NAME="suggestiontype" -->all">Enter a reason for all marked entries:</label>
+      <input type="text" size="31" id="other-reason<!-- TMPL_VAR NAME="suggestiontype" -->all" name="other-reason<!-- TMPL_VAR NAME="suggestiontype" -->all" value="please note your reason here..." /> 
+    </div>
+  </fieldset>
+        <fieldset class="action"><input type="submit" value="Change Status" /></fieldset>
+</form>
+<!-- TMPL_ELSE -->
+    <!--TMPL_IF EXPR="suggestiontype eq 'pending'"-->
+    <b>No pending suggestions.</b>
+    <!--/TMPL_IF-->  
+    <!--TMPL_IF EXPR="suggestiontype eq 'accepted'"-->
+    <b>No accepted suggestions.</b>
+    <!--/TMPL_IF-->  
+    <!--TMPL_IF EXPR="suggestiontype eq 'rejected'"-->
+    <b>No rejected suggestions.</b>
+    <!--/TMPL_IF-->  
 <!-- /TMPL_IF -->
+
+</div>
+<!--/TMPL_LOOP-->
+
+</div>  
 </div></div>
 
 </div>
 </div>
 </div>
-<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
+<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
\ No newline at end of file
diff --git a/suggestion/acceptorreject.pl b/suggestion/acceptorreject.pl
index 704f2c5..8769ccb 100755
--- a/suggestion/acceptorreject.pl
+++ b/suggestion/acceptorreject.pl
@@ -72,6 +72,8 @@ use C4::Auth;    # get_template_and_user
 use C4::Output;
 use C4::Suggestions;
 use C4::Koha;    # GetAuthorisedValue
+use C4::Dates qw(format_date);
+
 
 my $input           = new CGI;
 my $title           = $input->param('title');
@@ -100,53 +102,77 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 
 my $suggestions;
 
+my $branchcode;
+my $userenv = C4::Context->userenv;
+if ($userenv) {
+    unless ($userenv->{flags} == 1){
+        $branchcode=$userenv->{branch};
+    }
+}
+
 if ( $op eq "aorr_confirm" ) {
-    my @suggestionlist = $input->param("aorr");
-
-    foreach my $suggestion (@suggestionlist) {
-        if ( $suggestion =~ /(A|R)(.*)/ ) {
-            my ( $newstatus, $suggestionid ) = ( $1, $2 );
-            $newstatus = "REJECTED" if $newstatus eq "R";
-            $newstatus = "ACCEPTED" if $newstatus eq "A";
-            my $reason = $input->param( "reason" . $suggestionid );
+    my $parameters=$input->Vars;
+    my @deletelist;
+    my $suggestiontype=$parameters->{suggestiontype};
+    foreach my $suggestionid (keys %$parameters){
+        next unless $suggestionid=~/^\d+$/;
+        ## it is a suggestion
+        if ($parameters->{$suggestionid}=~/delete/i){
+           push @deletelist,$suggestionid;    
+        }
+        else {        
+        ## it is not a deletion    
+            ## Get the Reason
+            my $reason = $parameters->{"reason$suggestionid"};
+            if ( $reason eq "other" ) {
+                $reason = $parameters->{"other-reason$suggestionid"};
+            }
+            unless ($reason){
+                $reason= $parameters->{"reason".$suggestiontype."all"};
             if ( $reason eq "other" ) {
-                $reason = $input->param( "other-reason" . $suggestionid );
+                    $reason = $parameters->{"other-reason".$suggestiontype."all"};
             }
-            ModStatus( $suggestionid, $newstatus, $loggedinuser, '', $reason );
+            }      
+            ModStatus( $suggestionid, $parameters->{$suggestionid}, $loggedinuser, '', $reason );
         }
     }
     $op = "else";
-    $suggestions = &SearchSuggestion( "", "", "", "", 'ASKED', "" );
+    if (scalar(@deletelist)>0){  
+        my $params = "&delete_field=".join ("&delete_field=", at deletelist);
+        warn $params;    
+        print $input->redirect("/cgi-bin/koha/suggestion/acceptorreject.pl?op=delete_confirm$params");
+    }  
 }
 
 if ( $op eq "delete_confirm" ) {
     my @delete_field = $input->param("delete_field");
     foreach my $delete_field (@delete_field) {
-        &DelSuggestion( $loggedinuser, $delete_field );
+        &DelSuggestion( $loggedinuser, $delete_field,"intranet" );
     }
     $op = 'else';
-    $suggestions = &SearchSuggestion( "", "", "", "", 'ASKED', "" );
-}
-
-if ( $op eq "accepted" ) {
-    $suggestions = &GetSuggestionByStatus('ACCEPTED');
-    $template->param(done => 1);
-}
-
-if ( $op eq "rejected" ) {
-    $suggestions = &GetSuggestionByStatus('REJECTED');
-    $template->param(done => 1);
 }
 
 my $reasonsloop = GetAuthorisedValues("SUGGEST");
-my @suggestions_loop;
-foreach my $suggestion (@$suggestions) {
-    $suggestion->{'reasonsloop'} = $reasonsloop;
-    push @suggestions_loop, $suggestion;
-}
+my $pending_suggestions = &SearchSuggestion( "", "", "", "", 'ASKED', "",$branchcode );
+map{$_->{'reasonsloop'}=$reasonsloop;$_->{'date'}=format_date($_->{'date'})} @$pending_suggestions;
+my $accepted_suggestions = &GetSuggestionByStatus('ACCEPTED',$branchcode);
+map{$_->{'reasonsloop'}=$reasonsloop;$_->{'date'}=format_date($_->{'date'})} @$accepted_suggestions;
+my $rejected_suggestions = &GetSuggestionByStatus('REJECTED',$branchcode);
+map{$_->{'reasonsloop'}=$reasonsloop;$_->{'date'}=format_date($_->{'date'})} @$rejected_suggestions;
+
+my @allsuggestions;
+push @allsuggestions,{"suggestiontype"=>"accepted",
+                    'suggestions_loop'=>$accepted_suggestions,    
+                    'reasonsloop' => $reasonsloop};
+push @allsuggestions,{"suggestiontype"=>"pending",
+                     'suggestions_loop'=>$pending_suggestions,
+                    'reasonsloop' => $reasonsloop};
+push @allsuggestions,{"suggestiontype"=>"rejected",
+                     'suggestions_loop'=>$rejected_suggestions,
+                    'reasonsloop' => $reasonsloop};
 
 $template->param(
-    suggestions_loop        => \@suggestions_loop,
+    suggestions       => \@allsuggestions,
     "op_$op"                => 1,
 );
 



More information about the Koha-patches mailing list