Bug 15803: Koha::AuthorisedValues - Remove C4::Koha::GetAuthorisedValueCategories
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 11 Feb 2016 11:26:35 +0000 (11:26 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 28 Oct 2016 16:35:52 +0000 (16:35 +0000)
The subroutine C4::Koha::GetAuthorisedValueCategories just retrieves all
the authorised value categories.
We already have a method in the Koha::AuthorisedValues module to do this
job, let's use it!

Technical explanations:
The new subroutine of the AuthorisedValues TT plugin will allow to get
the authorised value categories from the templates.
The new html_helpers include file will get rid of the if selected else
end statements. Bug 15758 already uses this file, see the commit
description for more informations.

Test plan:
1/ Create or edit a new fund (aqbudgets.pl), the fields "statistic 1"
and "statistic 2" should be correctly filled with the list of authorised
value categories
2/ Edit subfields for a biblio and authority framework.
The "Authorized value" dropdown list should be correctly filled on both
pages
3/ Create new items search fields (from the administration area), same
as previously, the authorised value category dropdown list should be
correctly filled
4/ Add and edit patron attribute types, check the authorised value
category list.

Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

19 files changed:
C4/Koha.pm
Koha/Template/Plugin/AuthorisedValues.pm
admin/aqbudgets.pl
admin/auth_subfields_structure.pl
admin/auth_tag_structure.pl
admin/items_search_field.pl
admin/items_search_fields.pl
admin/marctagstructure.pl
admin/patron-attr-types.pl
koha-tmpl/intranet-tmpl/prog/en/includes/admin-items-search-field-form.inc
koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc
koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/auth_tag_structure.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/items_search_field.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/items_search_fields.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/patron-attr-types.tt
koha-tmpl/intranet-tmpl/prog/en/modules/serials/add_fields.tt
serials/add_fields.pl

index 43804a5..b6e494a 100644 (file)
@@ -52,7 +52,6 @@ BEGIN {
                &getitemtypeimagesrc
                &getitemtypeimagelocation
                &GetAuthorisedValues
-               &GetAuthorisedValueCategories
                &GetNormalizedUPC
                &GetNormalizedISBN
                &GetNormalizedEAN
@@ -824,26 +823,6 @@ sub GetAuthorisedValues {
     return \@results;
 }
 
-=head2 GetAuthorisedValueCategories
-
-  $auth_categories = GetAuthorisedValueCategories();
-
-Return an arrayref of all of the available authorised
-value categories.
-
-=cut
-
-sub GetAuthorisedValueCategories {
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare("SELECT DISTINCT category FROM authorised_values ORDER BY category");
-    $sth->execute;
-    my @results;
-    while (defined (my $category  = $sth->fetchrow_array) ) {
-        push @results, $category;
-    }
-    return \@results;
-}
-
 =head2 xml_escape
 
   my $escaped_string = C4::Koha::xml_escape($string);
index 70751e8..39ec785 100644 (file)
@@ -22,6 +22,7 @@ use Template::Plugin;
 use base qw( Template::Plugin );
 
 use C4::Koha;
+use Koha::AuthorisedValues;
 
 sub GetByCode {
     my ( $self, $category, $code, $opac ) = @_;
@@ -43,6 +44,20 @@ sub GetAuthValueDropbox {
     return C4::Koha::GetAuthvalueDropbox($category, $default);
 }
 
+sub GetCategories {
+    my ( $self, $params ) = @_;
+    my $selected = $params->{selected};
+    my @categories = Koha::AuthorisedValues->new->categories;
+    return [
+        map {
+            {
+                category => $_,
+                ( ( $selected and $selected eq $_ ) ? ( selected => 1 ) : () ),
+            }
+        } @categories
+    ];
+}
+
 1;
 
 =head1 NAME
index d8a1b57..483ff8f 100755 (executable)
@@ -140,24 +140,11 @@ if ($op eq 'add_form') {
     }
     $budget_parent = GetBudget($budget_parent_id);
 
-    # populates the YUI planning button
-    my $categories = GetAuthorisedValueCategories();
-    my @auth_cats_loop1 = ();
-    foreach my $category (@$categories) {
-        my $entry = { category => $category,
-                        selected => ( $budget and $budget->{sort1_authcat} eq $category ? 1 : 0 ),
-                    };
-        push @auth_cats_loop1, $entry;
-    }
-    my @auth_cats_loop2 = ();
-    foreach my $category (@$categories) {
-        my $entry = { category => $category,
-                        selected => ( $budget and $budget->{sort2_authcat} eq $category ? 1 : 0 ),
-                    };
-        push @auth_cats_loop2, $entry;
-    }
-    $template->param(authorised_value_categories1 => \@auth_cats_loop1);
-    $template->param(authorised_value_categories2 => \@auth_cats_loop2);
+    # populates the planning button
+    $template->param(
+        sort1_auth => $budget->{sort1_authcat},
+        sort2_auth => $budget->{sort2_authcat},
+    );
 
     if($budget->{'budget_permission'}){
         my $budget_permission = "budget_perm_".$budget->{'budget_permission'};
index ffa74f2..0ba7677 100755 (executable)
@@ -25,6 +25,7 @@ use C4::Context;
 use C4::Koha;
 
 use Koha::Authority::Types;
+use Koha::AuthorisedValues;
 
 use List::MoreUtils qw( uniq );
 
@@ -92,11 +93,11 @@ if ($op eq 'add_form') {
                push @kohafields, "auth_header.".$field;
        }
        
-        # build authorised value list
-        my $authorised_values = C4::Koha::GetAuthorisedValueCategories;
-        unshift @$authorised_values, '';
-        push @$authorised_values, 'branches';
-        push @$authorised_values, 'itemtypes';
+        # build authorised value category list
+        my @authorised_value_categories = Koha::AuthorisedValues->new->categories;
+        unshift @authorised_value_categories, '';
+        push @authorised_value_categories, 'branches';
+        push @authorised_value_categories, 'itemtypes';
 
         # build thesaurus categories list
         my @authtypes = uniq( "", map { $_->authtypecode } Koha::Authority::Types->search );
@@ -138,7 +139,7 @@ if ($op eq 'add_form') {
         $row_data{seealso}           = $data->{'seealso'};
         $row_data{kohafields}        = \@kohafields;
         $row_data{kohafield}         = $data->{'kohafield'};
-        $row_data{authorised_values} = $authorised_values;
+        $row_data{authorised_values} = \@authorised_value_categories;
         $row_data{authorised_value}  = $data->{'authorised_value'};
         $row_data{frameworkcodes}    = \@authtypes;
         $row_data{frameworkcode}     = $data->{'frameworkcode'};
@@ -167,7 +168,7 @@ if ($op eq 'add_form') {
     $row_data{mandatory}        = 0;
     $row_data{isurl}            = 0;
     $row_data{kohafields} = \@kohafields,
-    $row_data{authorised_values} = $authorised_values;
+    $row_data{authorised_values} = \@authorised_value_categories;
     $row_data{frameworkcodes} = \@authtypes;
     $row_data{value_builders} = \@value_builder;
     $row_data{row} = $i;
@@ -199,7 +200,7 @@ if ($op eq 'add_form') {
        my @tab                         = $input->multi_param('tab');
        my @seealso             = $input->multi_param('seealso');
     my @ohidden             = $input->multi_param('ohidden');
-       my @authorised_values   = $input->multi_param('authorised_value');
+    my @authorised_value_categories = $input->multi_param('authorised_value');
        my $authtypecode        = $input->param('authtypecode');
        my @frameworkcodes      = $input->multi_param('frameworkcode');
        my @value_builder       =$input->multi_param('value_builder');
@@ -215,7 +216,7 @@ if ($op eq 'add_form') {
                my $kohafield           =$kohafield[$i];
                my $tab                         =$tab[$i];
                my $seealso                             =$seealso[$i];
-               my $authorised_value            =$authorised_values[$i];
+        my $authorised_value = $authorised_value_categories[$i];
                my $frameworkcode               =$frameworkcodes[$i];
                my $value_builder=$value_builder[$i];
         my $defaultvalue = $defaultvalue[$i];
index 710ff91..fbe69de 100755 (executable)
@@ -92,13 +92,6 @@ if ($op eq 'add_form') {
         $data=$sth->fetchrow_hashref;
     }
 
-    my @authorised_values = @{C4::Koha::GetAuthorisedValueCategories()};    # function returns array ref, dereferencing
-    unshift @authorised_values, "";                                         # put empty value first
-    my $authorised_value = {
-        values  => \@authorised_values,
-        default => $data->{'authorised_value'},
-    };
-
     if ($searchfield) {
         $template->param('searchfield' => $searchfield);
         $template->param('heading_modify_tag_p' => 1);
@@ -110,7 +103,7 @@ if ($op eq 'add_form') {
                             libopac => $data->{'libopac'},
                             repeatable => "".$data->{'repeatable'},
                             mandatory => "".$data->{'mandatory'},
-                            authorised_value => $authorised_value,
+                            authorised_value => $data->{authorised_value},
                             authtypecode => $authtypecode,
                             );
                                                     # END $OP eq ADD_FORM
index a544959..c1f6c0c 100755 (executable)
@@ -21,7 +21,6 @@ use CGI;
 
 use C4::Auth;
 use C4::Output;
-use C4::Koha;
 
 use Koha::Item::Search::Field qw(GetItemSearchField ModItemSearchField);
 
@@ -53,11 +52,9 @@ if ($op eq 'mod') {
 }
 
 my $field = GetItemSearchField($name);
-my $authorised_values_categories = C4::Koha::GetAuthorisedValueCategories();
 
 $template->param(
     field => $field,
-    authorised_values_categories => $authorised_values_categories,
 );
 
 output_html_with_http_headers $cgi, $cookie, $template->output;
index 1ebf243..f93f0bb 100755 (executable)
@@ -21,7 +21,6 @@ use CGI;
 
 use C4::Auth;
 use C4::Output;
-use C4::Koha;
 
 use Koha::Item::Search::Field qw(AddItemSearchField GetItemSearchFields DelItemSearchField);
 
@@ -71,11 +70,9 @@ if ($op eq 'add') {
 }
 
 my @fields = GetItemSearchFields();
-my $authorised_values_categories = C4::Koha::GetAuthorisedValueCategories();
 
 $template->param(
     fields => \@fields,
-    authorised_values_categories => $authorised_values_categories,
 );
 
 output_html_with_http_headers $cgi, $cookie, $template->output;
index 575f4f4..4800b34 100755 (executable)
@@ -28,6 +28,7 @@ use C4::Output;
 use C4::Context;
 
 use Koha::Caches;
+use Koha::AuthorisedValues;
 use Koha::BiblioFrameworks;
 
 # retrieve parameters
@@ -94,13 +95,6 @@ if ($op eq 'add_form') {
                $data=$sth->fetchrow_hashref;
        }
 
-    my @authorised_values = @{C4::Koha::GetAuthorisedValueCategories()};    # function returns array ref, dereferencing
-    unshift @authorised_values, "";                                         # put empty value first
-    my $authorised_value = {
-        values  => \@authorised_values,
-        default => $data->{'authorised_value'},
-    };
-
        if ($searchfield) {
         $template->param(searchfield => $searchfield);
                $template->param(action => "Modify tag");
@@ -114,7 +108,7 @@ if ($op eq 'add_form') {
                        libopac => $data->{'libopac'},
             repeatable => $data->{'repeatable'},
             mandatory => $data->{'mandatory'},
-                       authorised_value => $authorised_value,
+            authorised_value => $data->{authorised_value},
                        frameworkcode => $frameworkcode,
     );  # FIXME: move checkboxes to presentation layer
                                                                                                        # END $OP eq ADD_FORM
index 2faa178..74e075c 100755 (executable)
@@ -101,7 +101,6 @@ sub add_attribute_type_form {
         categories => $patron_categories,
         branches_loop => \@branches_loop,
     );
-    authorised_value_category_list($template);
     $template->param(classes_val_loop => GetAuthorisedValues( 'PA_CLASS'));
 }
 
@@ -132,8 +131,8 @@ sub error_add_attribute_type_form {
     $template->param(
         attribute_type_form => 1,
         confirm_op => 'add_attribute_type_confirmed',
+        authorised_value_category => $input->param('authorised_value_category'),
     );
-    authorised_value_category_list($template, $input->param('authorised_value_category'));
 }
 
 sub add_update_attribute_type {
@@ -249,10 +248,9 @@ sub edit_attribute_type_form {
     if ($attr_type->display_checkout()) {
         $template->param(display_checkout_checked => 'checked="checked"');
     }
-    authorised_value_category_list($template, $attr_type->authorised_value_category());
+    $template->param( authorised_value_category => $attr_type->authorised_value_category() );
     $template->param(classes_val_loop => GetAuthorisedValues( 'PA_CLASS' ));
 
-
     my $branches = Koha::Libraries->search( {}, { order_by => ['branchname'] } )->unblessed;
     my @branches_loop;
     my $selected_branches = $attr_type->branches;
@@ -311,17 +309,3 @@ sub patron_attribute_type_list {
     $template->param(available_attribute_types => \@attributes_loop);
     $template->param(display_list => 1);
 }
-
-sub authorised_value_category_list {
-    my $template = shift;
-    my $selected = @_ ? shift : '';
-
-    my $categories = GetAuthorisedValueCategories();
-    my @list = ();
-    foreach my $category (@$categories) {
-        my $entry = { category => $category };
-        $entry->{selected} = 1 if $category eq $selected;
-        push @list, $entry;
-    }
-    $template->param(authorised_value_categories => \@list);
-}
index a886a8b..fd39a47 100644 (file)
     <label for="authorised_values_category">Authorised values category: </label>
     <select id="authorised_values_category" name="authorised_values_category">
       <option value="">- None -</option>
-      [% FOREACH category IN authorised_values_categories %]
-        [% IF field && field.authorised_values_category == category %]
-          <option value="[% category %]" selected="selected">[% category %]</option>
-        [% ELSE %]
-          <option value="[% category %]">[% category %]</option>
-        [% END %]
-      [% END %]
+      [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => field.authorised_values_category ) %]
     </select>
   </li>
 </ol>
index 82714d0..4e970c7 100644 (file)
@@ -7,3 +7,13 @@
         [% END%]
     [% END %]
 [% END %]
+
+[% BLOCK options_for_authorised_value_categories %]
+    [% FOREACH avc IN authorised_value_categories %]
+        [% IF avc.selected %]
+            <option value="[% avc.category %]" selected="selected">[% avc.category %]</option>
+        [% ELSE %]
+            <option value="[% avc.category %]">[% avc.category %]</option>
+        [% END %]
+    [% END %]
+[% END %]
index 97e250c..8d288ac 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% USE Branches %]
 [% USE Price %]
 [% INCLUDE 'doc-head-open.inc' %]
@@ -594,34 +595,14 @@ var MSG_PARENT_BENEATH_BUDGET = "- " + _("New budget-parent is beneath budget")
     <label  style="white-space: nowrap;" for="authorised_value_category1">Statistic 1 done on: </label>
         <select name="sort1_authcat" id="authorised_value_category1">
             <option value=""></option>
-            [% FOREACH authorised_value_categories IN authorised_value_categories1 %]
-                [% IF ( authorised_value_categories.selected ) %]
-                    <option value="[% authorised_value_categories.category %]" selected="selected">
-                        [% authorised_value_categories.category %]
-                    </option>
-                [% ELSE %]
-                    <option value="[% authorised_value_categories.category %]">
-                        [% authorised_value_categories.category %]
-                    </option>
-                [% END %]
-            [% END %]
+            [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => sort1_authcat ) %]
         </select>
     </li>
     <li>
     <label  style="white-space: nowrap;" for="authorised_value_category2">Statistic 2 done on: </label>
         <select name="sort2_authcat" id="authorised_value_category2">
             <option value=""></option>
-            [% FOREACH authorised_value_categories IN authorised_value_categories2 %]
-                [% IF ( authorised_value_categories.selected ) %]
-                    <option value="[% authorised_value_categories.category %]" selected="selected">
-                        [% authorised_value_categories.category %]
-                    </option>
-                [% ELSE %]
-                    <option value="[% authorised_value_categories.category %]">
-                        [% authorised_value_categories.category %]
-                    </option>
-                [% END %]
-            [% END %]
+            [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => sort2_authcat ) %]
         </select>
     </li>
     </ol>
index a6b76c8..9e01b5b 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Administration &rsaquo; Authority MARC framework [% IF ( add_form ) %][% IF ( use_heading_flags_p ) %]
     [% IF ( heading_modify_tag_p ) %]&rsaquo; [% IF ( authtypecode ) %][% authtypecode %] Framework[% ELSE %]Default framework[% END %] &rsaquo; Modify tag[% END %]
         </li>
         <li><label for="authorised_value">Authorized value: </label>
             <select name="authorised_value" id="authorised_value" size="1">
-            [% FOREACH value IN authorised_value.values %]
-                [% IF ( value == authorised_value.default ) %]
-                    <option value="[% value %]" selected="selected">[% value %]</option>
-                [% ELSE %]
-                    <option value="[% value %]">[% value %]</option>
-                [% END %]
-            [% END %]
+                <option value=""></option>
+                [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value ) %]
             </select>
             (if you select a value here, the indicators will be limited to the authorized value list)
         </li>
index ed1f9c5..5a69d71 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
   <title>Koha &rsaquo; Administration &rsaquo; Item search fields</title>
   [% INCLUDE 'doc-head-close.inc' %]
index caaf1ae..a67f081 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
   <title>Koha &rsaquo; Administration &rsaquo; Item search fields</title>
   [% INCLUDE 'doc-head-close.inc' %]
index 9f1d310..249991d 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Administration &rsaquo;
 [% IF ( add_form ) %]MARC frameworks &rsaquo; [% action %] [% searchfield %][% END %]
@@ -100,13 +101,8 @@ $(document).ready(function() {
     </li>
     <li><label for="authorised_value">Authorized value: </label>
         <select name="authorised_value" id="authorised_value" size="1">
-        [% FOREACH value IN authorised_value.values %]
-        [% IF ( value == authorised_value.default ) %]
-            <option value="[% value %]" selected="selected">[% value %]</option>
-        [% ELSE %]
-            <option value="[% value %]">[% value %]</option>
-        [% END %]
-        [% END %]
+            <option value=""></option>
+            [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value ) %]
         </select>
         (if you select a value here, the indicators will be limited to the authorized value list)</li>
 </ol></fieldset> 
index 8b0c880..6fb7c97 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Administration &rsaquo; Patron attribute types
 [% IF ( attribute_type_form ) %]
@@ -142,17 +143,7 @@ $(document).ready(function() {
         <li><label for="authorised_value_category">Authorized value category: </label>
             <select name="authorised_value_category" id="authorised_value_category">
                 <option value=""></option>
-                [% FOREACH authorised_value_categorie IN authorised_value_categories %]
-                    [% IF ( authorised_value_categorie.selected ) %]
-                        <option value="[% authorised_value_categorie.category %]" selected="selected">
-                            [% authorised_value_categorie.category %]
-                        </option>
-                    [% ELSE %]
-                        <option value="[% authorised_value_categorie.category %]">
-                            [% authorised_value_categorie.category %]
-                        </option>
-                    [% END %]
-                [% END %]
+                [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value_category ) %]
             </select>
             <span>Authorized value category; if one is selected, the patron record input page will only allow values 
                   to be chosen from the authorized value list.  However, an authorized value list is not 
index 51d5b06..5f90da6 100644 (file)
@@ -1,3 +1,4 @@
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Serials &rsaquo; Manage new fields for subscriptions
   [% IF op == "list" %] &rsaquo; List of fields
             <label for="av">Authorised value category: </label>
             <select name="authorised_value_category">
               <option value="">None</option>
-              [% FOR category IN categories %]
-                [% IF field.authorised_value_category == category %]
-                  <option value="[% category %]" selected="selected">[% category %]</option>
-                [% ELSE %]
-                  <option value="[% category %]">[% category %]</option>
-                [% END %]
-              [% END %]
+              [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => field.authorised_value_category ) %]
             </select>
           </li>
           <li>
index 9451a1b..317f299 100755 (executable)
@@ -101,7 +101,6 @@ if ( $op eq 'delete' ) {
 }
 
 if ( $op eq 'add_form' ) {
-    my $categories = C4::Koha::GetAuthorisedValueCategories();
     my $field;
     if ( $field_id ) {
         $field = Koha::AdditionalField->new( { id => $field_id } )->fetch;
@@ -109,7 +108,6 @@ if ( $op eq 'add_form' ) {
 
     $template->param(
         field => $field,
-        categories => $categories,
     );
 }