X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fauthorised_values.pl;h=dd8339b56893bfddc499810b323f04b61393cead;hb=d3ebbb88be68e42318f3de08ba55318e2970a70c;hp=272ed0012b6a22d68000ca99c5c4f58c5032a846;hpb=a80366439e13fe3682d815c910d2efd7adafe840;p=koha-ffzg.git diff --git a/admin/authorised_values.pl b/admin/authorised_values.pl index 272ed0012b..dd8339b568 100755 --- a/admin/authorised_values.pl +++ b/admin/authorised_values.pl @@ -20,16 +20,18 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Auth; +use List::MoreUtils qw( any ); + +use C4::Auth qw( get_template_and_user ); use C4::Context; -use C4::Koha; -use C4::Output; +use C4::Koha qw( getitemtypeimagelocation ); +use C4::Output qw( output_html_with_http_headers ); use Koha::AuthorisedValues; use Koha::AuthorisedValueCategories; use Koha::Libraries; -my $input = new CGI; +my $input = CGI->new; my $id = $input->param('id'); my $op = $input->param('op') || 'list'; my $searchfield = $input->param('searchfield'); @@ -39,32 +41,29 @@ my @messages; our ($template, $borrowernumber, $cookie)= get_template_and_user({ template_name => "admin/authorised_values.tt", - authnotrequired => 0, - flagsrequired => {parameters => 'parameters_remaining_permissions'}, + flagsrequired => {parameters => 'manage_auth_values'}, query => $input, type => "intranet", - debug => 1, }); ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { - my ( $selected_branches, $category, $av ); + my ( @selected_branches, $category, $av ); if ($id) { $av = Koha::AuthorisedValues->new->find( $id ); - $selected_branches = $av->branch_limitations; + @selected_branches = $av->library_limits ? $av->library_limits->as_list : (); } else { $category = $input->param('category'); } - my $branches = Koha::Libraries->search( {}, { order_by => ['branchname'] } )->unblessed; + my $branches = Koha::Libraries->search( {}, { order_by => ['branchname'] } ); my @branches_loop; - foreach my $branch ( @$branches ) { - my $selected = ( grep {$_ eq $branch->{branchcode}} @$selected_branches ) ? 1 : 0; + while ( my $branch = $branches->next ) { push @branches_loop, { - branchcode => $branch->{branchcode}, - branchname => $branch->{branchname}, - selected => $selected, + branchcode => $branch->branchcode, + branchname => $branch->branchname, + selected => any {$_->branchcode eq $branch->branchcode} @selected_branches, }; } @@ -78,16 +77,13 @@ if ($op eq 'add_form') { if ( $av ) { $template->param( - category => $av->category, - authorised_value => $av->authorised_value, - lib => $av->lib, - lib_opac => $av->lib_opac, - id => $av->id, + category_name => $av->category, + av => $av, imagesets => C4::Koha::getImageSets( checked => $av->imageurl ), ); } else { $template->param( - category => $category, + category_name => $category, imagesets => C4::Koha::getImageSets(), ); } @@ -98,22 +94,17 @@ if ($op eq 'add_form') { } 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/; + my $image = $input->param( 'image' ) || ''; + my $imageurl = + $image eq 'removeImage' ? '' + : ( + $image eq 'remoteImage' ? $input->param('remoteImage') + : $image + ); my $duplicate_entry = 0; my @branches = grep { $_ ne q{} } $input->multi_param('branches'); - my $already_exists = Koha::AuthorisedValues->search( - { - category => $new_category, - authorised_value => $new_authorised_value, - } - )->next; - - if ( $already_exists and ( not $id or $already_exists->id != $id ) ) { - push @messages, {type => 'error', code => 'already_exists' }; - } - elsif ( $new_category eq 'branches' or $new_category eq 'itemtypes' or $new_category eq 'cn_source' ) { + if ( $new_category eq 'branches' or $new_category eq 'itemtypes' or $new_category eq 'cn_source' ) { push @messages, {type => 'error', code => 'invalid_category_name' }; } elsif ( $id ) { # Update @@ -126,7 +117,7 @@ if ($op eq 'add_form') { $av->imageurl( $imageurl ); eval{ $av->store; - $av->replace_branch_limitations( \@branches ); + $av->replace_library_limits( \@branches ); }; if ( $@ ) { push @messages, {type => 'error', code => 'error_on_update' }; @@ -135,17 +126,18 @@ if ($op eq 'add_form') { } } else { # Insert - my $av = Koha::AuthorisedValue->new( { - category => $new_category, - authorised_value => $new_authorised_value, - lib => scalar $input->param('lib') || undef, - lib_opac => scalar $input->param('lib_opac') || undef, - imageurl => $imageurl, - } ); - eval { + my $av = Koha::AuthorisedValue->new( + { + category => $new_category, + authorised_value => $new_authorised_value, + lib => scalar $input->param('lib') || undef, + lib_opac => scalar $input->param('lib_opac') || undef, + imageurl => $imageurl, + } + )->store; + $av->replace_library_limits( \@branches ); $av->store; - $av->replace_branch_limitations( \@branches ); }; if ( $@ ) { @@ -201,7 +193,17 @@ if ($op eq 'add_form') { } $op = 'list'; - $template->param( delete_success => 1 ); +} elsif ($op eq 'delete_category') { + my $category_name = $input->param('category_name'); + my $avc = Koha::AuthorisedValueCategories->find( $category_name ); + my $deleted = eval {$avc->delete}; + if ( $@ or not $deleted ) { + push @messages, {type => 'error', code => 'error_on_delete_category' }; + } else { + push @messages, { type => 'message', code => 'success_on_delete_category' }; + } + + $op = 'list'; } $template->param( @@ -212,15 +214,17 @@ $template->param( if ( $op eq 'list' ) { # build categories list - my @categories = Koha::AuthorisedValueCategories->search({ category_name => { -not_in => ['', 'branches', 'itemtypes', 'cn_source']}}, { order_by => ['category_name'] } ); - my @category_list; - for my $category ( @categories ) { - push( @category_list, $category->category_name ); - } + my @category_names = Koha::AuthorisedValueCategories->search( + { + category_name => + { -not_in => [ '', 'branches', 'itemtypes', 'cn_source' ] } + }, + { order_by => ['category_name'] } + )->get_column('category_name'); - $searchfield ||= $category_list[0]; + $searchfield ||= $category_names[0]; - my @avs_by_category = Koha::AuthorisedValues->new->search( { category => $searchfield } ); + my @avs_by_category = Koha::AuthorisedValues->new->search( { category => $searchfield } )->as_list; my @loop_data = (); # builds value list for my $av ( @avs_by_category ) { @@ -229,16 +233,16 @@ if ( $op eq 'list' ) { $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{image} = getitemtypeimagelocation( 'intranet', $av->imageurl ); + $row_data{branches} = $av->library_limits ? $av->library_limits->as_list : []; $row_data{id} = $av->id; push(@loop_data, \%row_data); } $template->param( loop => \@loop_data, - category => $searchfield, - categories => \@category_list, + category => Koha::AuthorisedValueCategories->find($searchfield), # TODO Move this up and add a Koha::AVC->authorised_values method to replace call for avs_by_category + category_names => \@category_names, ); }