MT 1975 : Adding records to a list, corrected pop-up height
[koha_fer] / suggestion / acceptorreject.pl
index f9f82fa..d4615a1 100755 (executable)
@@ -17,7 +17,6 @@
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
 
-# $Id$
 
 =head1 NAME
 
@@ -66,13 +65,16 @@ op can be :
 =cut
 
 use strict;
-require Exporter;
+use warnings;
+
 use CGI;
 
 use C4::Auth;    # get_template_and_user
-use C4::Interface::CGI::Output;
+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');
@@ -101,57 +103,107 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 
 my $suggestions;
 
+my $branchcode;
+my $userenv = C4::Context->userenv;
+if ($userenv) {
+    unless ($userenv->{flags} % 2 == 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=",@deletelist);
+        print $input->redirect("/cgi-bin/koha/suggestion/acceptorreject.pl?op=delete_confirm$params");
+        exit;
+    }  
 }
-
-if ( $op eq "delete_confirm" ) {
+elsif ( $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);
-}
+my $reasonsloop = GetAuthorisedValues("SUGGEST");
+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;
+
+# FIXME: BAD use of map in VOID context.
+
+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
+  };
 
-if ( $op eq "rejected" ) {
-    $suggestions = &GetSuggestionByStatus('REJECTED');
-    $template->param(done => 1);
-}
+$template->param(
+    suggestions => \@allsuggestions,
+    "op_$op"    => 1,
+    dateformat  => C4::Context->preference("dateformat"),
+);
 
-my $reasonsloop = GetAuthorisedValues("SUGGEST");
-my @suggestions_loop;
-foreach my $suggestion (@$suggestions) {
-    $suggestion->{'reasonsloop'} = $reasonsloop;
-    push @suggestions_loop, $suggestion;
+output_html_with_http_headers $input, $cookie, $template->output;
+my @allsuggestions;
+foreach my $status ('ASKED','CHECKED','REJECTED','ACCEPTED'){
+    my $suggestions = &GetSuggestionByStatus( $status, $branchcode );
+    map{
+        $_->{$status}=1 unless ($status eq 'ASKED' ||$status eq 'PENDING');
+        $_->{'reasonsloop'}=$reasonsloop;
+        $_->{'suggestioncreatedon'}=format_date($_->{'suggestioncreatedon'})
+        } @$suggestions;
+    
+    push @allsuggestions,{"suggestiontype"=>($status eq 'ASKED'?"pending":lc $status),
+                        'suggestions_loop'=>$suggestions,
+                        'reasonsloop' => $reasonsloop};
 }
-
+>>>>>>> suggestions changes (probably useless):suggestion/acceptorreject.pl
 $template->param(
-    suggestions_loop        => \@suggestions_loop,
-    "op_$op"                => 1,
-    intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
-    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
-    IntranetNav        => C4::Context->preference("IntranetNav"),
+    suggestions => \@allsuggestions,
+    "op_$op"    => 1,
+    dateformat  => C4::Context->preference("dateformat"),
 );
 
 output_html_with_http_headers $input, $cookie, $template->output;