Bug 15801: Koha::BiblioFrameworks - Remove C4::Koha::GetFrameworksLoop
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 10 Feb 2016 16:06:14 +0000 (16:06 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 28 Oct 2016 12:04:58 +0000 (12:04 +0000)
The C4::Koha::GetFrameworksLoop retrieves biblio frameworks and returns
them ordered by the description (frameworktext). If a parameter is
passed, a selected flag is set. The selection of the options should be
done on the template side.
These 2 calls can be replaced with
  Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });

Test plan:
1/ Go on a Labeled MARC biblio view (catalogue/labeledMARCdetail.pl)
You should see a dropdown list with the biblio frameworks. The framework
of the record should be selected by default
2/ Create a sql report using the biblio_framework parameter, something
like:
  SELECT COUNT(*) FROM biblio WHERE frameworkcode=<<framework|biblio_framework>>
Save and execute the report.
You should get a dropdown list with the framework list.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Both dropdowns Ok
No errors

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

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

C4/Koha.pm
catalogue/labeledMARCdetail.pl
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/labeledMARCdetail.tt
reports/guided_reports.pl
t/db_dependent/Koha.t

index 48c5532..33673d4 100644 (file)
@@ -44,7 +44,6 @@ BEGIN {
                &GetItemTypes &getitemtypeinfo
                 &GetItemTypesCategorized &GetItemTypesByCategory
                &getframeworks &getframeworkinfo
-        &GetFrameworksLoop
                &getallthemes
                &getFacets
                &getnbpages
@@ -283,55 +282,6 @@ sub getframeworks {
     return ( \%itemtypes );
 }
 
-=head2 GetFrameworksLoop
-
-  $frameworks = GetFrameworksLoop( $frameworkcode );
-
-Returns the loop suggested on getframework(), but ordered by framework description.
-
-build a HTML select with the following code :
-
-=head3 in PERL SCRIPT
-
-  $template->param( frameworkloop => GetFrameworksLoop( $frameworkcode ) );
-
-=head3 in TEMPLATE
-
-  Same as getframework()
-
-  <form action="[% script_name %] method=post>
-    <select name="frameworkcode">
-        <option value="">Default</option>
-        [% FOREACH framework IN frameworkloop %]
-        [% IF ( framework.selected ) %]
-        <option value="[% framework.value %]" selected="selected">[% framework.description %]</option>
-        [% ELSE %]
-        <option value="[% framework.value %]">[% framework.description %]</option>
-        [% END %]
-        [% END %]
-    </select>
-    <input type=text name=searchfield value="[% searchfield %]">
-    <input type="submit" value="OK" class="button">
-  </form>
-
-=cut
-
-sub GetFrameworksLoop {
-    my $frameworkcode = shift;
-    my $frameworks = getframeworks();
-    my @frameworkloop;
-    foreach my $thisframework (sort { uc($frameworks->{$a}->{'frameworktext'}) cmp uc($frameworks->{$b}->{'frameworktext'}) } keys %$frameworks) {
-        my $selected = ( $thisframework eq $frameworkcode ) ? 1 : undef;
-        my %row = (
-                value       => $thisframework,
-                selected    => $selected,
-                description => $frameworks->{$thisframework}->{'frameworktext'},
-            );
-        push @frameworkloop, \%row;
-  }
-  return \@frameworkloop;
-}
-
 =head2 getframeworkinfo
 
   $frameworkinfo = &getframeworkinfo($frameworkcode);
index 7c488e0..c4b9019 100755 (executable)
@@ -30,7 +30,8 @@ use C4::Items;
 use C4::Members; # to use GetMember
 use C4::Search;                # enabled_staff_search_views
 use C4::Acquisition qw(GetOrdersByBiblionumber);
-use C4::Koha qw( GetFrameworksLoop );
+
+use Koha::BiblioFrameworks;
 
 my $query        = new CGI;
 my $dbh          = C4::Context->dbh;
@@ -82,8 +83,11 @@ my $itemcount = GetItemsCount($biblionumber);
 $template->param( count => $itemcount,
                                        bibliotitle => $biblio->{title}, );
 
-#Getting framework loop
-$template->param(frameworkloop => GetFrameworksLoop( $frameworkcode ) );
+my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
+$template->param(
+    frameworks    => $frameworks,
+    frameworkcode => $frameworkcode,
+);
 
 my @marc_data;
 my $prevlabel = '';
index 72d29e9..c56a3cc 100644 (file)
                     <p><b>With framework:
                     <select name="Frameworks" id="Frameworks" size="1" onchange="Changefwk(this);">
                         <option value="">Default</option>
-                        [% FOREACH framework IN frameworkloop %]
-                        [% IF ( framework.selected ) %]
-                        <option value="[% framework.value %]" selected="selected">[% framework.description %]</option>
+                        [% FOREACH framework IN frameworks %]
+                        [% IF framework.frameworkcode == frameworkcode %]
+                            <option value="[% framework.frameworkcode %]" selected="selected">[% framework.frameworktext %]</option>
                         [% ELSE %]
-                        <option value="[% framework.value %]">[% framework.description %]</option>
+                            <option value="[% framework.frameworkcode %]">[% framework.frameworktext %]</option>
                         [% END %]
                         [% END %]
                     </select>
index 64e7632..9c42863 100755 (executable)
@@ -28,13 +28,13 @@ use C4::Reports::Guided;
 use C4::Auth qw/:DEFAULT get_session/;
 use C4::Output;
 use C4::Debug;
-use C4::Koha qw/GetFrameworksLoop/;
 use C4::Context;
 use Koha::Caches;
 use C4::Log;
 use Koha::DateUtils qw/dt_from_string output_pref/;
 use Koha::AuthorisedValue;
 use Koha::AuthorisedValues;
+use Koha::BiblioFrameworks;
 use Koha::Libraries;
 use Koha::Patron::Categories;
 
@@ -686,13 +686,13 @@ elsif ($phase eq 'Run this report'){
                         }
                     }
                     elsif ( $authorised_value eq "biblio_framework" ) {
-                        my $frameworks = GetFrameworksLoop();
+                        my @frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
                         my $default_source = '';
                         push @authorised_values,$default_source;
                         $authorised_lib{$default_source} = 'Default';
-                        foreach my $framework (@$frameworks) {
-                            push @authorised_values, $framework->{value};
-                            $authorised_lib{$framework->{value}} = $framework->{description};
+                        foreach my $framework (@frameworks) {
+                            push @authorised_values, $framework->frameworkcode;
+                            $authorised_lib{$framework->frameworkcode} = $framework->frameworktext;
                         }
                     }
                     elsif ( $authorised_value eq "cn_source" ) {
index 6f7f3ef..d59bdab 100644 (file)
@@ -239,49 +239,6 @@ subtest 'ISBN tests' => sub {
 
 };
 
-subtest 'GetFrameworksLoop() tests' => sub {
-    plan tests => 6;
-
-    $dbh->do("DELETE FROM biblio_framework");
-
-    my $frameworksloop = GetFrameworksLoop();
-    is ( scalar(@$frameworksloop), 0, 'No frameworks' );
-
-    $dbh->do("INSERT INTO biblio_framework ( frameworkcode, frameworktext ) VALUES ( 'A', 'Third framework'  )");
-    $dbh->do("INSERT INTO biblio_framework ( frameworkcode, frameworktext ) VALUES ( 'B', 'Second framework' )");
-    $dbh->do("INSERT INTO biblio_framework ( frameworkcode, frameworktext ) VALUES ( 'C', 'First framework'  )");
-
-    $frameworksloop = GetFrameworksLoop();
-    is ( scalar(@$frameworksloop), 3, 'All frameworks' );
-    is ( scalar ( grep { defined $_->{'selected'} } @$frameworksloop ), 0, 'None selected' );
-
-    $frameworksloop = GetFrameworksLoop( 'B' );
-    is ( scalar ( grep { defined $_->{'selected'} } @$frameworksloop ), 1, 'One selected' );
-    my @descriptions = map { $_->{'description'} } @$frameworksloop;
-    is ( $descriptions[0], 'First framework', 'Ordered result' );
-    cmp_deeply(
-        $frameworksloop,
-        [
-            {
-                'value' => 'C',
-                'description' => 'First framework',
-                'selected' => undef,
-            },
-            {
-                'value' => 'B',
-                'description' => 'Second framework',
-                'selected' => 1,                # selected
-            },
-            {
-                'value' => 'A',
-                'description' => 'Third framework',
-                'selected' => undef,
-            }
-        ],
-        'Full check, sorted by description with selected val (Bug 12675)'
-    );
-};
-
 subtest 'GetItemTypesByCategory GetItemTypesCategorized test' => sub{
     plan tests => 7;