Bug 10363: Use Koha::AuthorisedValue[s] in the admin page
authorJonathan Druart <jonathan.druart@biblibre.com>
Mon, 10 Nov 2014 13:11:20 +0000 (14:11 +0100)
committerTomas Cohen Arazi <tomascohen@theke.io>
Mon, 19 Oct 2015 15:46:27 +0000 (12:46 -0300)
Now we have packages, we need use them in the pl script.

Test plan:
Verify there are no regression on addind/editing/deleting authorised
values.
Done forget to test the branch limitation.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Koha/AuthorisedValues.pm
admin/authorised_values.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/authorised_values.tt
t/db_dependent/AuthorisedValues.t

index 8d8193b..ec201c3 100644 (file)
@@ -23,7 +23,7 @@ use Carp;
 
 use Koha::Database;
 
-use Koha::Borrower;
+use Koha::AuthorisedValue;
 
 use base qw(Koha::Objects);
 
@@ -46,27 +46,39 @@ my @objects = Koha::AuthorisedValues->search($params);
 sub search {
     my ( $self, $params ) = @_;
 
-    carp("No branchcode passed in for authorised values search!")
-      unless $params->{branchcode};
-
     my $branchcode = $params->{branchcode};
     delete( $params->{branchcode} );
 
-    my $rs = $self->_resultset()->search(
-        {
-            %$params,
-            -or => [
-                'authorised_values_branches.branchcode' => undef,
-                'authorised_values_branches.branchcode' => $branchcode,
-            ],
-        },
-        { join => 'authorised_values_branches' }
-    );
+    my $or =
+      $branchcode
+      ? {
+        '-or' => [
+            'authorised_values_branches.branchcode' => undef,
+            'authorised_values_branches.branchcode' => $branchcode,
+        ]
+      }
+      : {};
+    my $join = $branchcode ? { join => 'authorised_values_branches' } : {};
+    my $rs = $self->_resultset()
+      ->search( { %$params, %$or, }, $join );
 
     my $class = ref($self);
     return wantarray ? $self->_wrap( $rs->all() ) : $class->new_from_dbic($rs);
 }
 
+sub categories {
+    my ( $self ) = @_;
+    my $rs = $self->_resultset->search(
+        undef,
+        {
+            select => ['category'],
+            distinct => 1,
+            order_by => 'category',
+        },
+    );
+    return map $_->get_column('category'), $rs->all;
+}
+
 =head3 type
 
 =cut
index 9e83512..022348e 100755 (executable)
@@ -17,8 +17,7 @@
 # You should have received a copy of the GNU General Public License
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
-use warnings;
+use Modern::Perl;
 
 use CGI qw ( -utf8 );
 use C4::Auth;
@@ -27,31 +26,15 @@ use C4::Context;
 use C4::Koha;
 use C4::Output;
 
-
-sub AuthorizedValuesForCategory {
-    my ($searchstring) = shift or return;
-    my $dbh = C4::Context->dbh;
-    $searchstring=~ s/\'/\\\'/g;
-    my @data=split(' ',$searchstring);
-    my $sth=$dbh->prepare('
-          SELECT  id, category, authorised_value, lib, lib_opac, imageurl
-            FROM  authorised_values
-           WHERE  (category = ?)
-        ORDER BY  category, authorised_value
-    ');
-    $sth->execute("$data[0]");
-    return $sth->fetchall_arrayref({});
-}
+use Koha::AuthorisedValues;
 
 my $input = new CGI;
 my $id          = $input->param('id');
-my $op          = $input->param('op')     || '';
-our $offset      = $input->param('offset') || 0;
-our $searchfield = $input->param('searchfield');
+my $op          = $input->param('op') || 'list';
+my $searchfield = $input->param('searchfield');
 $searchfield = '' unless defined $searchfield;
 $searchfield =~ s/\,//g;
-our $script_name = "/cgi-bin/koha/admin/authorised_values.pl";
-our $dbh = C4::Context->dbh;
+my @messages;
 
 our ($template, $borrowernumber, $cookie)= get_template_and_user({
     template_name => "admin/authorised_values.tt",
@@ -62,31 +45,22 @@ our ($template, $borrowernumber, $cookie)= get_template_and_user({
     debug => 1,
 });
 
-$template->param(  script_name => $script_name,
-                 ($op||'else') => 1 );
 ################## ADD_FORM ##################################
 # called by default. Used to create form to add or  modify a record
 if ($op eq 'add_form') {
-       my $data;
-    my @selected_branches;
-       if ($id) {
-               my $sth=$dbh->prepare("select id, category, authorised_value, lib, lib_opac, imageurl from authorised_values where id=?");
-               $sth->execute($id);
-               $data=$sth->fetchrow_hashref;
-        $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM authorised_values_branches AS avb, branches AS b WHERE avb.branchcode = b.branchcode AND avb.av_id = ?;");
-        $sth->execute( $id );
-        while ( my $branch = $sth->fetchrow_hashref ) {
-            push @selected_branches, $branch;
-        }
-       } else {
-               $data->{'category'} = $input->param('category');
-       }
+    my ( $selected_branches, $category, $av );
+    if ($id) {
+        $av = Koha::AuthorisedValues->new->find( $id );
+        $selected_branches = $av->branch_limitations;
+    } else {
+        $category = $input->param('category');
+    }
 
     my $branches = GetBranches;
     my @branches_loop;
 
     foreach my $branchcode ( sort { uc($branches->{$a}->{branchname}) cmp uc($branches->{$b}->{branchname}) } keys %$branches ) {
-        my $selected = ( grep {$_->{branchcode} eq $branchcode} @selected_branches ) ? 1 : 0;
+        my $selected = ( grep {$_->{branchcode} eq $branchcode} @$selected_branches ) ? 1 : 0;
         push @branches_loop, {
             branchcode => $branchcode,
             branchname => $branches->{$branchcode}->{branchname},
@@ -96,152 +70,104 @@ if ($op eq 'add_form') {
 
        if ($id) {
                $template->param(action_modify => 1);
-               $template->param('heading_modify_authorized_value_p' => 1);
-       } elsif ( ! $data->{'category'} ) {
+   } elsif ( ! $category ) {
                $template->param(action_add_category => 1);
-               $template->param('heading_add_new_category_p' => 1);
        } else {
                $template->param(action_add_value => 1);
-               $template->param('heading_add_authorized_value_p' => 1);
        }
-       $template->param('use_heading_flags_p' => 1);
-       $template->param( category        => $data->{'category'},
-                         authorised_value => $data->{'authorised_value'},
-                         lib              => $data->{'lib'},
-                         lib_opac         => $data->{'lib_opac'},
-                         id               => $data->{'id'},
-                         imagesets        => C4::Koha::getImageSets( checked => $data->{'imageurl'} ),
-                         offset           => $offset,
-                         branches_loop    => \@branches_loop,
-                     );
-                          
-################## ADD_VALIDATE ##################################
-# called by add_form, used to insert/modify data in DB
-} elsif ($op eq 'add_validate') {
+
+    if ( $av ) {
+        $template->param(
+            category => $av->category,
+            authorised_value => $av->authorised_value,
+            lib              => $av->lib,
+            lib_opac         => $av->lib_opac,
+            id               => $av->id,
+            imagesets        => C4::Koha::getImageSets( checked => $av->imageurl ),
+        );
+    } else {
+        $template->param(
+            category  => $category,
+            imagesets => C4::Koha::getImageSets(),
+        );
+    }
+    $template->param(
+        branches_loop    => \@branches_loop,
+    );
+
+} elsif ($op eq 'add') {
     my $new_authorised_value = $input->param('authorised_value');
     my $new_category = $input->param('category');
     my $imageurl     = $input->param( 'imageurl' ) || '';
-       $imageurl = '' if $imageurl =~ /removeImage/;
+    $imageurl = '' if $imageurl =~ /removeImage/;
     my $duplicate_entry = 0;
     my @branches = $input->param('branches');
 
     if ( $id ) { # Update
-        my $sth = $dbh->prepare( "SELECT category, authorised_value FROM authorised_values WHERE id = ? ");
-        $sth->execute($id);
-        my ($category, $authorised_value) = $sth->fetchrow_array();
-        if ( $authorised_value ne $new_authorised_value ) {
-            my $sth = $dbh->prepare_cached( "SELECT COUNT(*) FROM authorised_values " .
-                "WHERE category = ? AND authorised_value = ? and id <> ? ");
-            $sth->execute($new_category, $new_authorised_value, $id);
-            ($duplicate_entry) = $sth->fetchrow_array();
-        }
-        unless ( $duplicate_entry ) {
-            my $sth=$dbh->prepare( 'UPDATE authorised_values
-                                      SET category         = ?,
-                                          authorised_value = ?,
-                                          lib              = ?,
-                                          lib_opac         = ?,
-                                          imageurl         = ?
-                                      WHERE id=?' );
-            my $lib = $input->param('lib');
-            my $lib_opac = $input->param('lib_opac');
-            undef $lib if ($lib eq ""); # to insert NULL instead of a blank string
-            undef $lib_opac if ($lib_opac eq ""); # to insert NULL instead of a blank string
-            $sth->execute($new_category, $new_authorised_value, $lib, $lib_opac, $imageurl, $id);
-            if ( @branches ) {
-                $sth = $dbh->prepare("DELETE FROM authorised_values_branches WHERE av_id = ?");
-                $sth->execute( $id );
-                $sth = $dbh->prepare(
-                    "INSERT INTO authorised_values_branches
-                                ( av_id, branchcode )
-                                VALUES ( ?, ? )"
-                );
-                for my $branchcode ( @branches ) {
-                    next if not $branchcode;
-                    $sth->execute($id, $branchcode);
-                }
-            }
-            $sth->finish;
-            print $input->redirect("/cgi-bin/koha/admin/authorised_values.pl?searchfield=$new_category&amp;offset=$offset");
-            exit;
+        my $av = Koha::AuthorisedValues->new->find( $id );
+
+        $av->lib( $input->param('lib') || undef );
+        $av->lib_opac( $input->param('lib_opac') || undef );
+        $av->category( $new_category );
+        $av->authorised_value( $new_authorised_value );
+        $av->imageurl( $imageurl );
+        eval{
+            $av->store;
+            $av->branch_limitations( \@branches );
+        };
+        if ( $@ ) {
+            push @messages, {type => 'error', code => 'error_on_update' };
+        } else {
+            push @messages, { type => 'message', code => 'success_on_update' };
         }
     }
     else { # Insert
-        my $sth = $dbh->prepare_cached( "SELECT COUNT(*) FROM authorised_values " .
-            "WHERE category = ? AND authorised_value = ? ");
-        $sth->execute($new_category, $new_authorised_value);
-        ($duplicate_entry) = $sth->fetchrow_array();
-        unless ( $duplicate_entry ) {
-            my $sth=$dbh->prepare( 'INSERT INTO authorised_values
-                                    ( category, authorised_value, lib, lib_opac, imageurl )
-                                    values (?, ?, ?, ?, ?)' );
-           my $lib = $input->param('lib');
-           my $lib_opac = $input->param('lib_opac');
-           undef $lib if ($lib eq ""); # to insert NULL instead of a blank string
-           undef $lib_opac if ($lib_opac eq ""); # to insert NULL instead of a blank string
-            $sth->execute( $new_category, $new_authorised_value, $lib, $lib_opac, $imageurl );
-            $id = $dbh->{'mysql_insertid'};
-            if ( @branches ) {
-                $sth = $dbh->prepare(
-                    "INSERT INTO authorised_values_branches
-                                ( av_id, branchcode )
-                                VALUES ( ?, ? )"
-                );
-                for my $branchcode ( @branches ) {
-                    next if not $branchcode;
-                    $sth->execute($id, $branchcode);
-                }
-            }
-            my $category = $input->param('category');
-            print $input->redirect("/cgi-bin/koha/admin/authorised_values.pl?searchfield=$category&amp;offset=$offset");
-            exit;
+        my $av = Koha::AuthorisedValue->new( {
+            category => $new_category,
+            authorised_value => $new_authorised_value,
+            lib => $input->param('lib') || undef,
+            lib_opac => $input->param('lib_opac') || undef,
+            imageurl => $imageurl,
+        } );
+        eval {
+            $av->store;
+            $av->branch_limitations( \@branches );
+        };
+        if ( $@ ) {
+            push @messages, {type => 'error', code => 'error_on_insert' };
+        } else {
+            push @messages, { type => 'message', code => 'success_on_insert' };
         }
     }
-    if ( $duplicate_entry ) {       
-        $template->param(duplicate_category => $new_category,
-                         duplicate_value =>  $new_authorised_value,
-                         else => 1);
-        default_form();
-     }           
-       
-################## DELETE_CONFIRM ##################################
-# called by default form, used to confirm deletion of data in DB
-} elsif ($op eq 'delete_confirm') {
-       my $sth=$dbh->prepare("select category,authorised_value,lib,lib_opac from authorised_values where id=?");
-       $sth->execute($id);
-       my $data=$sth->fetchrow_hashref;
-       $id = $input->param('id') unless $id;
-       $template->param(searchfield => $searchfield,
-                                                       Tlib => $data->{'lib'},
-                                                       Tlib_opac => $data->{'lib_opac'},
-                                                       Tvalue => $data->{'authorised_value'},
-                                                       id =>$id,
-                                                       );
 
-                                                                                                       # END $OP eq DELETE_CONFIRM
-################## DELETE_CONFIRMED ##################################
-# called by delete_confirm, used to effectively confirm deletion of data in DB
-} elsif ($op eq 'delete_confirmed') {
-       my $id = $input->param('id');
-       my $sth=$dbh->prepare("delete from authorised_values where id=?");
-       $sth->execute($id);
-    print $input->redirect("/cgi-bin/koha/admin/authorised_values.pl?searchfield=$searchfield&amp;offset=$offset");
-    exit;
-                                                                                                       # END $OP eq DELETE_CONFIRMED
-################## DEFAULT ##################################
-} else { # DEFAULT
-    default_form();
-} #---- END $OP eq DEFAULT
-output_html_with_http_headers $input, $cookie, $template->output;
+    $op = 'list';
+    $searchfield = $new_category;
+} elsif ($op eq 'delete') {
+    my $av = Koha::AuthorisedValues->new->find( $input->param('id') );
+    my $deleted = eval {$av->delete};
+    if ( $@ or not $deleted ) {
+        push @messages, {type => 'error', code => 'error_on_delete' };
+    } else {
+        push @messages, { type => 'message', code => 'success_on_delete' };
+    }
 
-exit 0;
+    $op = 'list';
+    $template->param( delete_success => 1 );
+}
+
+$template->param(
+    op => $op,
+    searchfield => $searchfield,
+    messages => \@messages,
+);
 
-sub default_form {
+if ( $op eq 'list' ) {
     # build categories list
-    my $category_list = C4::Koha::GetAuthorisedValueCategories();
-    my @category_list = @{$category_list};
+    my @categories = Koha::AuthorisedValues->new->categories;
+    my @category_list;
     my %categories;    # a hash, to check that some hardcoded categories exist.
-    for my $category ( @category_list ) {
+    for my $category ( @categories ) {
+        push( @category_list, $category );
         $categories{$category} = 1;
     }
 
@@ -250,42 +176,31 @@ sub default_form {
         push @category_list, $_ unless $categories{$_};
     }
 
-       #reorder the list
-    @category_list = sort {lc($a) cmp lc($b)} @category_list;
-       if (!$searchfield) {
-               $searchfield=$category_list[0];
-       }
-    my $tab_list = {
-        values  => \@category_list,
-        default => $searchfield,
-    };
-    my ($results) = AuthorizedValuesForCategory($searchfield);
-    my $count = scalar(@$results);
-       my @loop_data = ();
-       # builds value list
-    my $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM authorised_values_branches AS avb, branches AS b WHERE avb.branchcode = b.branchcode AND avb.av_id = ?");
-       for (my $i=0; $i < $count; $i++){
-        $sth->execute( $results->[$i]{id} );
-        my @selected_branches;
-        while ( my $branch = $sth->fetchrow_hashref ) {
-            push @selected_branches, $branch;
-        }
-               my %row_data;  # get a fresh hash for the row data
-               $row_data{category}              = $results->[$i]{'category'};
-               $row_data{authorised_value}      = $results->[$i]{'authorised_value'};
-               $row_data{lib}                   = $results->[$i]{'lib'};
-               $row_data{lib_opac}              = $results->[$i]{'lib_opac'};
-               $row_data{imageurl}              = getitemtypeimagelocation( 'intranet', $results->[$i]{'imageurl'} );
-               $row_data{edit}                  = "$script_name?op=add_form&amp;id=".$results->[$i]{'id'}."&amp;offset=$offset";
-               $row_data{delete}                = "$script_name?op=delete_confirm&amp;searchfield=$searchfield&amp;id=".$results->[$i]{'id'}."&amp;offset=$offset";
-        $row_data{branches}              = \@selected_branches;
-               push(@loop_data, \%row_data);
-       }
+    #reorder the list
+    @category_list = sort {$a cmp $b} @category_list;
+
+    $searchfield ||= $category_list[0];
+
+    my @avs_by_category = Koha::AuthorisedValues->new->search( { category => $searchfield } );
+    my @loop_data = ();
+    # builds value list
+    for my $av ( @avs_by_category ) {
+        my %row_data;  # get a fresh hash for the row data
+        $row_data{category}              = $av->category;
+        $row_data{authorised_value}      = $av->authorised_value;
+        $row_data{lib}                   = $av->lib;
+        $row_data{lib_opac}              = $av->lib_opac;
+        $row_data{imageurl}              = getitemtypeimagelocation( 'intranet', $av->imageurl );
+        $row_data{branches}              = $av->branch_limitations;
+        $row_data{id}                    = $av->id;
+        push(@loop_data, \%row_data);
+    }
 
     $template->param(
-            loop     => \@loop_data,
-            tab_list => $tab_list,
-            category => $searchfield,
+        loop     => \@loop_data,
+        category => $searchfield,
+        categories => \@category_list,
     );
-}
 
+}
+output_html_with_http_headers $input, $cookie, $template->output;
index 7dae71e..3d34cf1 100644 (file)
@@ -1,9 +1,11 @@
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Koha &rsaquo; Administration &rsaquo; Authorized values [% IF ( add_form ) %] &rsaquo; [% IF ( action_modify ) %]Modify authorized value[% END %]
-          [% IF ( action_add_value ) %] &rsaquo;  New authorized value[% END %]
-          [% IF ( action_add_category ) %] &rsaquo; New category[% END %][% END %]
-[% IF ( delete_confirm ) %] &rsaquo; Confirm deletion[% END %]
-[% IF ( else ) %]Authorized values[% END %]</title>
+<title>Koha &rsaquo; Administration &rsaquo; Authorized values
+[% IF op == 'add_form' %]
+  [% IF ( action_modify ) %] &rsaquo; Modify authorized value[% END %]
+  [% IF ( action_add_value ) %] &rsaquo;  New authorized value[% END %]
+  [% IF ( action_add_category ) %] &rsaquo; New category[% END %]
+[% END %]
+</title>
 [% INCLUDE 'doc-head-close.inc' %]
 
 <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
         $("#branches option:first").attr("selected", "selected");
     }
     $('#icons').tabs();
+
+    $("a.delete").click(function(){
+        return confirm(_("Are you sure you want to delete this authorised value?"));
+    });
 });
 //]]>
 </script>
 
-[% IF ( else ) %]
+[% IF op == 'list' %]
 <script type="text/javascript">
 //<![CDATA[
 $(document).ready(function() {
@@ -50,11 +56,10 @@ $(document).ready(function() {
 <body id="admin_authorised_values" class="admin">
 [% INCLUDE 'header.inc' %]
 [% INCLUDE 'cat-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( add_form ) %] <a href="/cgi-bin/koha/admin/authorised_values.pl">Authorized values</a> &rsaquo; [% IF ( action_modify ) %]Modify authorized value[% END %]
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF op == 'add_form' %] <a href="/cgi-bin/koha/admin/authorised_values.pl">Authorized values</a> &rsaquo; [% IF ( action_modify ) %]Modify authorized value[% END %]
           [% IF ( action_add_value ) %]New authorized value[% END %]
           [% IF ( action_add_category ) %]New category[% END %][% END %]
-[% IF ( delete_confirm ) %] <a href="/cgi-bin/koha/admin/authorised_values.pl">Authorized values</a> &rsaquo; Confirm deletion[% END %]
-[% IF ( else ) %]Authorized values[% END %]</div>
+[% IF op == 'list' %]Authorized values[% END %]</div>
 
 <div id="doc3" class="yui-t2">
    
@@ -62,7 +67,7 @@ $(document).ready(function() {
        <div id="yui-main">
        <div class="yui-b">
 
-[% IF ( add_form ) %]
+[% IF op == 'add_form' %]
        <h1>
           [% IF ( action_modify ) %]Modify authorized value[% END %]
           [% IF ( action_add_value ) %]New authorized value[% END %]
@@ -71,9 +76,8 @@ $(document).ready(function() {
 
     [% IF ( action_modify ) %]<div class="note"><strong>NOTE:</strong> If you change an authorized value code, existing records using it won't be updated. Changes to value descriptions will show immediately.</div>[% END %]
 
-       <form action="[% script_name %]" name="Aform" method="post">
-       <input type="hidden" name="op" value="add_validate" />
-    <input type="hidden" name="offset" value="[% offset %]" />
+ <form action="/cgi-bin/koha/admin/authorised_values.pl" name="Aform" method="post">
+    <input type="hidden" name="op" value="add" />
         <fieldset class="rows"><ol>
         <li>
         [% IF ( action_add_category ) %]<label for="category">Category: </label>
@@ -155,32 +159,7 @@ $(document).ready(function() {
 [% END %]
 
 
-[% IF ( delete_confirm ) %]
-       <div class="dialog alert">
-<h3>Confirm deletion</h3>
-<table>
-       <tr>
-               <th>Category</th>
-               <th>Value</th>
-               <th>Description</th>
-               <th>Description (OPAC)</th>
-       </tr>
-       <tr>
-           <td>[% searchfield %]</td>
-           <td>[% Tvalue %]</td>
-           <td>[% Tlib %]</td>
-           <td>[% Tlib_opac %]</td>
-       </tr>
-       </table>
-       <form action="[% script_name %]" method="post">
-               <input type="hidden" name="op" value="delete_confirmed" />
-               <input type="hidden" name="id" value="[% id %]" />
-        <input type="hidden" name="searchfield" value="[% searchfield %]" /><fieldset class="action"><input type="submit" value="Yes, delete" class="approve" /></form>
-<form action="[% script_name %]" method="get"><input type="hidden" name="searchfield" value="[% searchfield %]" /><input type="submit" value="No, do not delete" class="deny" /></form>
-</div>
-[% END %]
-
-[% IF ( else ) %]
+[% IF op == 'list' %]
 
 <div id="toolbar" class="btn-toolbar">
     <a id="addauth" class="btn btn-small" href= "/cgi-bin/koha/admin/authorised_values.pl?op=add_form&amp;category=[% category %]"><i class="icon-plus"> </i> New authorized value for [% category %]</a>
@@ -190,22 +169,38 @@ $(document).ready(function() {
 <h1>Authorized values</h1>
 <div class="note"><strong>NOTE:</strong> If you change an authorized value code, existing records using it won't be updated. Changes to value descriptions will show immediately.</div>
 
-[% IF ( duplicate_category ) %]
-<div class="dialog alert">Could not add value &quot;[% duplicate_value %]&quot; for category &quot;[% duplicate_category %]&quot; &mdash; value already present.
-</div>
+[% FOR m IN messages %]
+    <div class="dialog [% m.type %]">
+        [% SWITCH m.code %]
+        [% CASE 'error_on_update' %]
+            An error occurred when updating this authorised values. Perhaps the value already exists.
+        [% CASE 'error_on_insert' %]
+            An error occurred when inserting this authorised values. Perhaps the value or the category already exists.
+        [% CASE 'error_on_delete' %]
+            An error occurred when deleteing this authorised values. Check the logs.
+        [% CASE 'success_on_update' %]
+            Authorised value updated with success.
+        [% CASE 'success_on_insert' %]
+            Authorised value inserted with success.
+        [% CASE 'success_on_delete' %]
+            Authorised value deleted with success.
+        [% CASE %]
+            [% m.code %]
+        [% END %]
+    </div>
 [% END %]
+
 <form action="/cgi-bin/koha/admin/authorised_values.pl" method="post" id="category">
-    <label for="searchfield">Show category: </label>
-    <select name="searchfield" id="searchfield" size="1">
-    [% FOREACH value IN tab_list.values %]
-    [% IF ( value == tab_list.default ) %]
-        <option value="[% value %]" selected="selected">[% value %]</option>
+  <label for="searchfield">Show category: </label>
+  <select name="searchfield" id="searchfield" size="1">
+  [% FOR c IN categories %]
+    [% IF c == searchfield %]
+      <option value="[% c %]" selected="selected">[% c %]</option>
     [% ELSE %]
-        <option value="[% value %]">[% value %]</option>
-    [% END %]
+      <option value="[% c %]">[% c %]</option>
     [% END %]
-    </select>
-    <input type="submit" value="Submit" />
+  [% END %]
+  <input type="submit" value="Submit" />
 </form>
 [% IF ( category == 'Bsort1' ) %]
     <p>An authorized value attached to patrons, that can be used for stats purposes</p>
@@ -285,8 +280,8 @@ $(document).ready(function() {
             No limitation
         [% END %]
     </td>
-       <td><a href="[% loo.edit %]">Edit</a></td>
-       <td><a href="[% loo.delete %]">Delete</a></td>
+    <td><a href="/cgi-bin/koha/admin/authorised_values.pl?op=add_form&amp;id=[% loo.id %]">Edit</a></td>
+    <td><a class="delete" href="/cgi-bin/koha/admin/authorised_values.pl?op=delete&amp;searchfield=[% searchfield %]&amp;id=[% loo.id %]">Delete</a></td>
 </tr>
 [% END %]
 </tbody></table>[% ELSE %]
@@ -294,8 +289,8 @@ $(document).ready(function() {
 [% END %]
 
 [% IF ( isprevpage ) %]
-<form class="inline" action="[% script_name %]" method="post">
-<input type="hidden" name="offset" value="[% prevpage %]" /><input type="hidden" name="searchfield" value="[% searchfield %]" />
+<form class="inline" action="/cgi-bin/koha/admin/authorised_values.pl" method="post">
+<input type="hidden" name="searchfield" value="[% searchfield %]" />
        <input type="submit" value="&lt;&lt; Previous" /></form>
 [% END %] 
 
index da85748..a1cbfef 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 
 use Modern::Perl;
-use Test::More;    # tests => 25;
+use Test::More tests => 14;
 
 use C4::Context;
 use Koha::AuthorisedValue;
@@ -44,9 +44,20 @@ my $av3 = Koha::AuthorisedValue->new(
     }
 )->store();
 
+my $av4 = Koha::AuthorisedValue->new(
+    {
+        category         => 'aaav_for_testing',
+        authorised_value => 'value 4',
+        lib              => 'display value 4',
+        lib_opac         => 'opac display value 4',
+        imageurl         => 'image4.png',
+    }
+)->store();
+
 ok( $av1->id(), 'AV 1 is inserted' );
 ok( $av2->id(), 'AV 2 is inserted' );
 ok( $av3->id(), 'AV 3 is inserted' );
+ok( $av4->id(), 'AV 4 is inserted' );
 
 is( $av3->opac_description, 'opac display value 3', 'Got correction opac description if lib_opac is set' );
 $av3->lib_opac('');
@@ -80,4 +91,7 @@ $av1->branch_limitations( [ $branchcode1, $branchcode2 ] );
 my $limits = $av1->branch_limitations;
 is( @$limits, 2, 'branch_limitations functions correctly both as setter and getter' );
 
-done_testing;
+my @categories = Koha::AuthorisedValues->new->categories;
+is( @categories, 2, 'There should have 2 categories inserted' );
+is( $categories[0], $av4->category, 'The first category should be correct (ordered by category name)' );
+is( $categories[1], $av1->category, 'The second category should be correct (ordered by category name)' );