Bug 15801: Koha::BiblioFrameworks - Remove C4::Koha::getframeworks

C4::Koha::getframeworks returned a hashref of biblio frameworks.
It was mainly used to generate the dropdown list of frameworks.
The scripts modified in this patch did not necessary order the element
by description (frameworktext), the displays were not consistent from
one screen to another.
Using the same search method everywhere:
  Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
We will know always get the framework in the same order.

Test plan:
Following the different pages modified by this patch, and make sure the
frameworks are displayed correctly in the dropdown list:
1/ acqui/z3950_search.pl - Create an order from an external source.
2/ admin/fieldmapping.pl - Define some mappings keyword / MARC field
3/ admin/marctagstructure.pl - On the MARC frameworks admin page, select
another framework than the default one and click on the 'Search' button
4/ catalogue/MARCdetail.pl - On the MARC defail page, change the
framework you want to use to display the record
5/ cataloguing/addbiblio.pl - Add or edit a biblio record, change its
framework. When editing, the framework of the record should be selected
by default
6/ cataloguing/addbooks.pl - Go on the cataloguing home page and click
on the "New record" button. You should see all the frameworks
7/ cataloguing/merge.pl - Select 2 biblio records to merge. On the first
step (select the merge reference), you should be allowed to select the
framework to use.
8/ tools/inventory.pl - On the inventory page, the "Item statuses" part
should be populated as before this patch
9/ tools/manage-marc-import.pl - Stage records for import. Before
importing them into the catalog, you should see the framework dropdown
list.

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

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

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Jonathan Druart 2016-02-10 16:56:01 +00:00 committed by Kyle M Hall
parent ddb1ecb9d8
commit 8f436a5075
17 changed files with 82 additions and 207 deletions

View File

@ -43,7 +43,7 @@ BEGIN {
&GetPrinters &GetPrinter
&GetItemTypes &getitemtypeinfo
&GetItemTypesCategorized &GetItemTypesByCategory
&getframeworks &getframeworkinfo
&getframeworkinfo
&getallthemes
&getFacets
&getnbpages
@ -227,61 +227,6 @@ sub GetItemTypesByCategory {
return @$tmp;
}
=head2 getframework
$frameworks = &getframework();
Returns information about existing frameworks
build a HTML select with the following code :
=head3 in PERL SCRIPT
my $frameworks = getframeworks();
my @frameworkloop;
foreach my $thisframework (keys %$frameworks) {
my $selected = 1 if $thisframework eq $frameworkcode;
my %row =(
value => $thisframework,
selected => $selected,
description => $frameworks->{$thisframework}->{'frameworktext'},
);
push @frameworksloop, \%row;
}
$template->param(frameworkloop => \@frameworksloop);
=head3 in TEMPLATE
<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 getframeworks {
# returns a reference to a hash of references to branches...
my %itemtypes;
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("select * from biblio_framework");
$sth->execute;
while ( my $IT = $sth->fetchrow_hashref ) {
$itemtypes{ $IT->{'frameworkcode'} } = $IT;
}
return ( \%itemtypes );
}
=head2 getframeworkinfo
$frameworkinfo = &getframeworkinfo($frameworkcode);

View File

@ -30,10 +30,10 @@ use C4::Breeding;
use C4::Koha;
use Koha::Acquisition::Bookseller;
use Koha::BiblioFrameworks;
my $input = new CGI;
my $biblionumber = $input->param('biblionumber')||0;
my $frameworkcode = $input->param('frameworkcode')||'';
my $title = $input->param('title');
my $author = $input->param('author');
my $isbn = $input->param('isbn');
@ -50,18 +50,7 @@ my $page = $input->param('current_page') || 1;
$page = $input->param('goto_page') if $input->param('changepage_goto');
# get framework list
my $frameworks = getframeworks;
my @frameworkcodeloop;
foreach my $thisframeworkcode ( keys %$frameworks ) {
my %row = (
value => $thisframeworkcode,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
);
if ( $row{'value'} eq $frameworkcode){
$row{'active'} = 'true';
}
push @frameworkcodeloop, \%row;
}
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
my $vendor = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
@ -74,8 +63,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
}
);
$template->param(
frameworkcode => $frameworkcode,
frameworkcodeloop => \@frameworkcodeloop,
frameworks => $frameworks,
booksellerid => $booksellerid,
basketno => $basketno,
name => $vendor->{'name'},

View File

@ -24,10 +24,11 @@ use C4::Biblio;
use C4::Koha;
use C4::Output;
use Koha::BiblioFrameworks;
my $query = new CGI;
my $framework = $query->param('framework') || "";
my $frameworkcode = $query->param('framework') || "";
my $field = $query->param('fieldname');
my $fieldcode = $query->param('marcfield');
my $subfieldcode = $query->param('marcsubfield');
@ -43,42 +44,25 @@ my ($template, $loggedinuser, $cookie)
debug => 1,
});
# get framework list
my $frameworks = getframeworks();
my @frameworkloop;
my $selected;
my $frameworktext;
foreach my $thisframeworkcode (keys %$frameworks) {
if ($thisframeworkcode eq $framework){
$selected = 1;
$frameworktext = $frameworks->{$thisframeworkcode}->{'frameworktext'};
} else {
$selected = 0;
}
my %row =(value => $thisframeworkcode,
selected => $selected,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
);
push @frameworkloop, \%row;
}
if($op eq "delete" and $id){
DeleteFieldMapping($id);
print $query->redirect("/cgi-bin/koha/admin/fieldmapping.pl?framework=".$framework);
print $query->redirect("/cgi-bin/koha/admin/fieldmapping.pl?framework=".$frameworkcode);
exit;
}
# insert operation
if($field and $fieldcode){
SetFieldMapping($framework, $field, $fieldcode, $subfieldcode);
SetFieldMapping($frameworkcode, $field, $fieldcode, $subfieldcode);
}
my $fieldloop = GetFieldMapping($framework);
my $fieldloop = GetFieldMapping($frameworkcode);
$template->param( frameworkloop => \@frameworkloop,
framework => $framework,
frameworktext => $frameworktext,
fields => $fieldloop,
);
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
my $framework = $frameworks->search( { frameworkcode => $frameworkcode } )->next;
$template->param(
frameworks => $frameworks,
framework => $framework,
fields => $fieldloop,
);
output_html_with_http_headers $query, $cookie, $template->output;

View File

@ -28,6 +28,7 @@ use C4::Output;
use C4::Context;
use Koha::Caches;
use Koha::BiblioFrameworks;
# retrieve parameters
my $input = new CGI;
@ -58,16 +59,7 @@ my ($template, $loggedinuser, $cookie)
debug => 1,
});
# get framework list
my $frameworks = getframeworks();
my @frameworkloop;
foreach my $thisframeworkcode (keys %$frameworks) {
push @frameworkloop, {
value => $thisframeworkcode,
selected => ($thisframeworkcode eq $frameworkcode) ? 1 : 0,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
};
}
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
# check that framework is defined in marc_tag_structure
my $sth=$dbh->prepare("select count(*) from marc_tag_structure where frameworkcode=?");
@ -83,12 +75,13 @@ unless ($frameworkexist) {
$op = "framework_create";
}
}
$template->param(
frameworkloop => \@frameworkloop,
frameworks => $frameworks,
frameworkcode => $frameworkcode,
frameworktext => $frameworkinfo->{frameworktext},
script_name => $script_name,
($op||'else') => 1,
( $op || 'else' ) => 1,
);

View File

@ -59,6 +59,7 @@ use C4::Acquisition;
use C4::Members; # to use GetMember
use C4::Serials; #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber
use C4::Search; # enabled_staff_search_views
use Koha::BiblioFrameworks;
use List::MoreUtils qw( uniq );
@ -115,21 +116,11 @@ my $itemcount = GetItemsCount($biblionumber);
$template->param( count => $itemcount,
bibliotitle => $biblio->{title}, );
# Getting the list of all frameworks
# get framework list
my $frameworks = getframeworks;
my @frameworkcodeloop;
foreach my $thisframeworkcode ( keys %$frameworks ) {
my %row = (
value => $thisframeworkcode,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
);
if ($frameworkcode eq $thisframeworkcode){
$row{'selected'}= 1;
}
push @frameworkcodeloop, \%row;
}
$template->param( frameworkcodeloop => \@frameworkcodeloop, );
my $frameworks = Koha::BiblioFrameworks->search( {}, { order_by => ['frameworktext'] } );
$template->param(
frameworks => $frameworks,
frameworkcode => $frameworkcode,
);
# fill arrays
my @loop_data = ();

View File

@ -39,6 +39,8 @@ use Koha::DateUtils;
use Koha::Libraries;
use Koha::BiblioFrameworks;
use Date::Calc qw(Today);
use MARC::File::USMARC;
use MARC::File::XML;
@ -744,9 +746,11 @@ if ($frameworkcode eq 'FA'){
exit;
}
my $frameworkcodeloop = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
$template->param( frameworkcodeloop => $frameworkcodeloop ,
breedingid => $breedingid );
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
$template->param(
frameworks => $frameworks,
breedingid => $breedingid,
);
# ++ Global
$tagslib = &GetMarcStructure( 1, $frameworkcode );

View File

@ -34,6 +34,7 @@ use C4::Output;
use C4::Koha;
use C4::Search;
use Koha::BiblioFrameworks;
use Koha::SearchEngine::Search;
use Koha::SearchEngine::QueryBuilder;
@ -57,17 +58,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
}
);
# get framework list
my $frameworks = getframeworks;
my @frameworkcodeloop;
foreach my $thisframeworkcode ( sort { uc($frameworks->{$a}->{'frameworktext'}) cmp uc($frameworks->{$b}->{'frameworktext'}) } keys %{$frameworks} ) {
push @frameworkcodeloop, {
value => $thisframeworkcode,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
};
}
# Searching the catalog.
if ($query) {
@ -143,8 +133,9 @@ for my $resultsbr (@resultsbr) {
};
}
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
$template->param(
frameworkcodeloop => \@frameworkcodeloop,
frameworks => $frameworks,
breeding_count => $countbr,
breeding_loop => $breeding_loop,
z3950_search_params => C4::Search::z3950_search_args($query),

View File

@ -29,6 +29,8 @@ use C4::Serials;
use C4::Koha;
use C4::Reserves qw/MergeHolds/;
use C4::Acquisition qw/ModOrder GetOrdersByBiblionumber/;
use Koha::BiblioFrameworks;
use Koha::MetadataRecord;
my $input = new CGI;
@ -245,18 +247,8 @@ if ($merge) {
records => \@records,
);
my $frameworks = getframeworks;
my @frameworkselect;
foreach my $thisframeworkcode ( keys %$frameworks ) {
my %row = (
value => $thisframeworkcode,
frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'},
);
push @frameworkselect, \%row;
}
$template->param(
frameworkselect => \@frameworkselect,
);
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
$template->param( frameworks => $frameworks );
}
}

View File

@ -74,12 +74,8 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color :
<li><label for="frameworkcode" >Select MARC framework:</label>
<select id="frameworkcode" name="frameworkcode" >
<option value="">Default</option>
[% FOREACH frameworkcodeloo IN frameworkcodeloop %]
[% IF ( frameworkcodeloo.active ) %]
<option value="[% frameworkcodeloo.value %]" selected="selected" >[% frameworkcodeloo.frameworktext %]</option>
[% ELSE %]
<option value="[% frameworkcodeloo.value %]" >[% frameworkcodeloo.frameworktext %]</option>
[% END %]
[% FOREACH framework IN frameworks %]
<option value="[% framework.frameworkcode %]" >[% framework.frameworktext %]</option>
[% END %]
</select>
</li>

View File

@ -25,26 +25,26 @@ $(document).ready(function() {
<div class="yui-b">
<h2>Keyword to MARC mapping</h2>
[% UNLESS ( fields ) %]
<div class="dialog message"><p>There are no mappings for the [% IF ( frameworktext ) %]<em>[% frameworktext %]</em>[% ELSE %]default[% END %] framework. </p></div>
<div class="dialog message"><p>There are no mappings for the [% IF framework.frameworktext %]<em>[% framework.frameworktext %]</em>[% ELSE %]default[% END %] framework. </p></div>
[% END %]
<form method="get" action="/cgi-bin/koha/admin/fieldmapping.pl" id="selectframework">
<label for="framework">Framework:</label>
<select name="framework" id="framework" style="width:20em;">
<option value="">Default</option>
[% FOREACH frameworkloo IN frameworkloop %]
[% IF ( frameworkloo.selected ) %]
<option selected="selected" value="[% frameworkloo.value %]">[% frameworkloo.frameworktext %]</option>
[% ELSE %]
<option value="[% frameworkloo.value %]">[% frameworkloo.frameworktext %]</option>
[% END %]
[% END %]
</select>
<select name="framework" id="framework" style="width:20em;">
<option value="">Default</option>
[% FOREACH f IN frameworks %]
[% IF f.frameworkcode == framework.frameworkcode %]
<option selected="selected" value="[% f.frameworkcode %]">[% f.frameworktext %]</option>
[% ELSE %]
<option value="[% f.frameworkcode %]">[% f.frameworktext %]</option>
[% END %]
[% END %]
</select>
<input type="submit" value="Go" />
</form>
<form method="post" action="" id="addfield">
<input type="hidden" name="framework" value="[% framework %]" />
<input type="hidden" name="framework" value="[% framework.frameworkcode %]" />
<fieldset class="rows">
<legend>Add a mapping</legend>
<ol>
@ -59,7 +59,7 @@ $(document).ready(function() {
</form>
[% IF ( fields ) %]<table>
<caption>Mappings for the [% IF ( frameworktext ) %]<em>[% frameworktext %]</em>[% ELSE %]default[% END %] framework</caption>
<caption>Mappings for the [% IF framework.frameworktext %]<em>[% framework.frameworktext %]</em>[% ELSE %]default[% END %] framework</caption>
<tr>
<th>Field</th>
<th>MARC field</th>

View File

@ -168,11 +168,11 @@ $(document).ready(function() {
<label for="frameworkcode"><strong>In framework:</strong> </label>
<select id="frameworkcode" name="frameworkcode">
<option value="">Default</option>
[% FOREACH frameworkloo IN frameworkloop %]
[% IF ( frameworkloo.selected ) %]
<option value="[% frameworkloo.value %]" selected="selected">[% frameworkloo.frameworktext %]</option>
[% FOREACH framework IN frameworks %]
[% IF framework.frameworkcode == frameworkcode %]
<option value="[% framework.frameworkcode %]" selected="selected">[% framework.frameworktext %]</option>
[% ELSE %]
<option value="[% frameworkloo.value %]">[% frameworkloo.frameworktext %]</option>
<option value="[% framework.frameworkcode %]">[% framework.frameworktext %]</option>
[% END %]
[% END %]
</select>

View File

@ -63,8 +63,12 @@ function Changefwk(FwkList) {
<p><b>With framework : <select name="Frameworks" id="Frameworks">
<option value="">Default</option>
[% FOREACH frameworkcodeloo IN frameworkcodeloop %]
[% IF ( frameworkcodeloo.selected ) %]<option value="[% frameworkcodeloo.value %]" selected="selected">[% frameworkcodeloo.frameworktext %]</option>[% ELSE %]<option value="[% frameworkcodeloo.value %]">[% frameworkcodeloo.frameworktext %]</option>[% END %]
[% FOREACH framework IN frameworks %]
[% IF framework.frameworkcode == frameworkcode %]
<option value="[% framework.frameworkcode %]" selected="selected">[% framework.frameworktext %]</option>
[% ELSE %]
<option value="[% framework.frameworkcode %]">[% framework.frameworktext %]</option>
[% END %]
[% END %]
</select> </b></p>
[% IF ( ocoins ) %]

View File

@ -100,8 +100,8 @@
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="fa fa-plus"></i> New record <span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=">Default framework</a></li>
[% FOREACH frameworkcodeloo IN frameworkcodeloop %]
<li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=[% frameworkcodeloo.value %]">[% frameworkcodeloo.frameworktext %]</a></li>
[% FOREACH framework IN frameworks %]
<li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=[% framework.frameworkcode %]">[% framework.frameworktext %]</a></li>
[% END %]
</ul>
</div>
@ -112,8 +112,8 @@
</button>
<ul class="dropdown-menu">
<li id="" class="z3950searchFw"><a href="#">Default framework</a></li>
[% FOREACH frameworkcodeloo IN frameworkcodeloop %]
<li id="[% frameworkcodeloo.value %]" class="z3950searchFw"><a href="#">[% frameworkcodeloo.frameworktext %]</a></li>
[% FOREACH framework IN frameworks %]
<li id="[% framework.frameworkcode %]" class="z3950searchFw"><a href="#">[% framework.frameworktext %]</a></li>
[% END %]
</ul>
</div>

View File

@ -219,23 +219,15 @@ $(document).ready(function(){
</li>
[% END %]
[% IF frameworkselect.size %]
<li>
<label for="frameworkcode">Using framework:</label>
<select name="frameworkcode" id="frameworkcode">
<option value="">Default</option>
[% FOREACH frameworkcode IN frameworkselect %]
[% IF ( frameworkcode.selected ) %]
<option value="[% frameworkcode.value %]" selected="selected">
[% ELSE %]
<option value="[% frameworkcode.value %]">
[% END %]
[% frameworkcode.frameworktext %]
</option>
[% FOREACH framework IN frameworks %]
<option value="[% framework.frameworkcode %]">[% framework.frameworktext %]</option>
[% END %]
</select>
</li>
[% END %]
</ol>
[% FOREACH record IN records %]

View File

@ -361,7 +361,7 @@ $(document).ready(function(){
<select name="framework" id="frameworks">
<option value="">Default</option>
[% FOREACH framework IN frameworks %]
<option value="[% framework.value %]">[% framework.label %]</option>
<option value="[% framework.frameworkcode %]">[% framework.frameworktext %]</option>
[% END %]
</select>
[% END %]

View File

@ -37,6 +37,7 @@ use C4::Reports::Guided; #_get_column_defs
use C4::Charset;
use Koha::DateUtils;
use Koha::AuthorisedValues;
use Koha::BiblioFrameworks;
use List::MoreUtils qw( none );
@ -67,11 +68,11 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
my @authorised_value_list;
my $authorisedvalue_categories = '';
my $frameworks = getframeworks();
$frameworks->{''} = {frameworkcode => ''}; # Add the default framework
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] })->unblessed;
unshift @$frameworks, { frameworkcode => '' };
for my $fwk (keys %$frameworks){
my $fwkcode = $frameworks->{$fwk}->{'frameworkcode'};
for my $fwk ( @$frameworks ){
my $fwkcode = $fwk->{frameworkcode};
my $mss = Koha::MarcSubfieldStructures->search({ frameworkcode => $fwkcode, kohafield => 'items.location', authorised_value => { not => undef } });
my $authcode = $mss->count ? $mss->next->authorised_value : undef;
if ($authcode && $authorisedvalue_categories!~/\b$authcode\W/){

View File

@ -36,6 +36,7 @@ use C4::ImportBatch;
use C4::Matcher;
use C4::BackgroundJob;
use C4::Labels::Batch;
use Koha::BiblioFrameworks;
my $script_name = "/cgi-bin/koha/tools/manage-marc-import.pl";
@ -62,15 +63,8 @@ my %cookies = parse CGI::Cookie($cookie);
our $sessionID = $cookies{'CGISESSID'}->value;
our $dbh = C4::Context->dbh;
# Frameworks selection loop
{
my $frameworks = getframeworks;
my $arrayref = [];
while ( my ($key, $value) = each %$frameworks ) {
push @$arrayref, { value => $key, label => $value->{frameworktext} };
}
$template->param( frameworks => $arrayref );
}
my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
$template->param( frameworks => $frameworks );
if ($op eq "create_labels") {
#create a batch of labels, then lose $op & $import_batch_id so we get back to import batch list.