Bugzilla – Attachment 141565 Details for
Bug 23111
Setting a custom framework as the default for cataloguing is not possible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 23111: Set a custom framework as the default
Bug-23111-Set-a-custom-framework-as-the-default.patch (text/plain), 13.30 KB, created by
David Nind
on 2022-10-10 09:11:11 UTC
(
hide
)
Description:
Bug 23111: Set a custom framework as the default
Filename:
MIME Type:
Creator:
David Nind
Created:
2022-10-10 09:11:11 UTC
Size:
13.30 KB
patch
obsolete
>From f5d51308cec94f82202a503ed3dfd96f13562d65 Mon Sep 17 00:00:00 2001 >From: Aleisha Amohia <aleishaamohia@hotmail.com> >Date: Mon, 6 Apr 2020 23:53:08 +0000 >Subject: [PATCH] Bug 23111: Set a custom framework as the default > >when importing records or editing records with no framework mapped. > >To test: >1) Go to edit a biblio with no framework mapped >2) Click the Settings dropdown, notice that the 'Default' framework is >selected >3) Go to the Cataloguing home page. Click the main 'New from Z39.50/SRU' >button and notice the selected framework in the URL is 'Default' >4) Go to Tools -> Stage MARC records for import. Stage a bibliographic >record. Go to Staged MARC management for your newly imported batch. >Notice that the frameworks dropdown (above the 'Import this batch into >the catalog' button) has the 'Default' framework selected >5) Apply this patch and update the database. Apply the schema changes >patch or update your schema files. Restart memcached and plack. >6) Go to Administration -> MARC bibliographic frameworks. Edit one of >your custom frameworks. Set it as default by checking the checkbox and >saving. >7) Edit a different custom framework and set this one as the default >now. Confirm that the previous framework has been unset (the checkbox is >no longer checked) as the default. >8) Repeat steps 1-4 and confirm that the selected framework is your >newly set default framework, instead of the provided 'Default' >framework. >9) Go back to Administration -> MARC bibliographic frameworks. Edit your >default framework and unset it as default (uncheck the checkbox). Save. >10) Repeat steps 1-4 and confirm that the selected framework is the >provided 'Default' framework again, so we can have no default custom >framework if chosen. >11) Confirm the tests pass: t/db_dependent/Koha/BiblioFrameworks.t > >Sponsored-by: Catalyst IT >Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> > >Signed-off-by: David Nind <david@davidnind.com> >--- > Koha/BiblioFramework.pm | 35 +++++++++++++++++++ > Koha/BiblioFrameworks.pm | 15 ++++++++ > admin/biblio_framework.pl | 3 ++ > cataloguing/addbiblio.pl | 6 ++++ > cataloguing/addbooks.pl | 5 +++ > ...d-is_default-column-to-biblio_framework.pl | 16 +++++++++ > installer/data/mysql/kohastructure.sql | 1 + > .../prog/en/modules/admin/biblio_framework.tt | 8 +++++ > .../prog/en/modules/cataloguing/addbooks.tt | 6 +++- > .../en/modules/tools/manage-marc-import.tt | 6 +++- > t/db_dependent/Koha/BiblioFrameworks.t | 18 +++++++++- > 11 files changed, 116 insertions(+), 3 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug-23111_add-is_default-column-to-biblio_framework.pl > >diff --git a/Koha/BiblioFramework.pm b/Koha/BiblioFramework.pm >index 30367570ba..8d8e451206 100644 >--- a/Koha/BiblioFramework.pm >+++ b/Koha/BiblioFramework.pm >@@ -32,6 +32,41 @@ Koha::BiblioFramework - Koha BiblioFramework Object class > > =cut > >+=head3 set_default >+ >+ $framework->set_default; >+ >+Set this framework as the new default, and unset whichever framework is currently the default. >+ >+=cut >+ >+sub set_default { >+ my ( $self ) = @_; >+ >+ my $current_default = Koha::BiblioFrameworks->get_default; >+ if ( defined $current_default ){ >+ $current_default->unset_default; >+ } >+ >+ $self->update({ is_default => 1 })->store; >+ return $self; >+} >+ >+=head3 unset_default >+ >+ $framework->unset_default; >+ >+Unset this framework as the default. >+ >+=cut >+ >+sub unset_default { >+ my ( $self ) = @_; >+ >+ $self->update({ is_default => 0 })->store; >+ return $self; >+} >+ > =head3 type > > =cut >diff --git a/Koha/BiblioFrameworks.pm b/Koha/BiblioFrameworks.pm >index 7202d2fec5..e448850370 100644 >--- a/Koha/BiblioFrameworks.pm >+++ b/Koha/BiblioFrameworks.pm >@@ -34,6 +34,21 @@ Koha::BiblioFrameworks - Koha BiblioFramework Object set class > > =cut > >+=head3 get_default >+ >+ my $default_framework = Koha::BiblioFrameworks->get_default; >+ >+Get the allocated default framework. >+If returned undefined, then the current default framework is the Default framework (framework with no frameworkcode). >+ >+=cut >+ >+sub get_default { >+ my ( $self ) = @_; >+ >+ return $self->find({ is_default => 1 }); >+} >+ > =head3 type > > =cut >diff --git a/admin/biblio_framework.pl b/admin/biblio_framework.pl >index 4712f0ea72..16d49fb9f1 100755 >--- a/admin/biblio_framework.pl >+++ b/admin/biblio_framework.pl >@@ -52,11 +52,13 @@ if ( $op eq 'add_form' ) { > } elsif ( $op eq 'add_validate' ) { > my $frameworkcode = $input->param('frameworkcode'); > my $frameworktext = $input->param('frameworktext'); >+ my $is_default = $input->param('is_default'); > my $is_a_modif = $input->param('is_a_modif'); > > if ($is_a_modif) { > my $framework = Koha::BiblioFrameworks->find($frameworkcode); > $framework->frameworktext($frameworktext); >+ $is_default ? $framework->set_default : $framework->unset_default; > eval { $framework->store; }; > if ($@) { > push @messages, { type => 'error', code => 'error_on_update' }; >@@ -69,6 +71,7 @@ if ( $op eq 'add_form' ) { > frameworktext => $frameworktext, > } > ); >+ $is_default ? $framework->set_default : $framework->unset_default; > eval { $framework->store; }; > if ($@) { > push @messages, { type => 'error', code => 'error_on_insert' }; >diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl >index 5896de18f4..0b282fdaef 100755 >--- a/cataloguing/addbiblio.pl >+++ b/cataloguing/addbiblio.pl >@@ -1016,6 +1016,12 @@ if ( $record ne '-1' ) { > my $title = C4::Context->preference('marcflavour') eq "UNIMARC" ? $record->subfield('200', 'a') : $record->title; > $template->param( title => $title ); > } >+my $default_framework = Koha::BiblioFrameworks->get_default; >+if ( defined $default_framework >+ && defined $frameworkcode >+ && $frameworkcode eq '' ){ >+ $frameworkcode = $default_framework->frameworkcode; >+} > $template->param( > popup => $mode, > frameworkcode => $frameworkcode, >diff --git a/cataloguing/addbooks.pl b/cataloguing/addbooks.pl >index 2206c5e143..af13a64bf8 100755 >--- a/cataloguing/addbooks.pl >+++ b/cataloguing/addbooks.pl >@@ -135,5 +135,10 @@ $template->param( > z3950_search_params => C4::Search::z3950_search_args($query), > ); > >+my $default_framework = Koha::BiblioFrameworks->get_default; >+if ( $default_framework ){ >+ $template->param( default_frameworkcode => $default_framework->frameworkcode ); >+} >+ > output_html_with_http_headers $input, $cookie, $template->output; > >diff --git a/installer/data/mysql/atomicupdate/bug-23111_add-is_default-column-to-biblio_framework.pl b/installer/data/mysql/atomicupdate/bug-23111_add-is_default-column-to-biblio_framework.pl >new file mode 100644 >index 0000000000..ec7d24145b >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug-23111_add-is_default-column-to-biblio_framework.pl >@@ -0,0 +1,16 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "23111", >+ description => "Add is_default column to biblio_framework table", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh, $out) = @$args{qw(dbh out)}; >+ >+ if( !column_exists( 'biblio_framework', 'is_default' ) ) { >+ $dbh->do(q{ >+ ALTER TABLE biblio_framework ADD is_default TINYINT(1) DEFAULT 0 NOT NULL AFTER `frameworktext` >+ }); >+ } >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 7025f9bbf9..1185116539 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1034,6 +1034,7 @@ DROP TABLE IF EXISTS `biblio_framework`; > CREATE TABLE `biblio_framework` ( > `frameworkcode` varchar(4) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'the unique code assigned to the framework', > `frameworktext` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'the description/name given to the framework', >+ `is_default` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'indicates whether this framework is the default to be used when importing records or editing records with no framework mapped', > PRIMARY KEY (`frameworkcode`) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; > /*!40101 SET character_set_client = @saved_cs_client */; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/biblio_framework.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/biblio_framework.tt >index 728de1cafd..66bfa260f7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/biblio_framework.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/biblio_framework.tt >@@ -126,6 +126,14 @@ MARC frameworks › Administration › Koha > <input type="text" name="frameworktext" id="description" size="40" maxlength="80" value="[% framework.frameworktext | html %]" required="required" class="required" /> > <span class="required">Required</span> > </li> >+ <li> >+ <label for="default">Set as default: </label> >+ [% IF framework.is_default %] >+ <input type="checkbox" name="is_default" id="is_default" value="1" checked="checked"> >+ [% ELSE %] >+ <input type="checkbox" name="is_default" id="is_default" value="1"> >+ [% END %] >+ </li> > </ol> > </fieldset> > <fieldset class="action"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >index 126e49e524..f7625070e8 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt >@@ -283,7 +283,11 @@ > }); > > $("#z3950search").click(function(){ >- PopupZ3950("Default"); >+ [% IF default_frameworkcode %] >+ PopupZ3950('[% default_frameworkcode | html %]'); >+ [% ELSE %] >+ PopupZ3950("Default"); >+ [% END %] > return false; > }); > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >index 85e34fb091..3a14d85398 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >@@ -268,7 +268,11 @@ > <select name="framework" id="frameworks"> > <option value="">Default</option> > [% FOREACH framework IN frameworks %] >- <option value="[% framework.frameworkcode | html %]">[% framework.frameworktext | html %]</option> >+ [% IF framework.is_default %] >+ <option value="[% framework.frameworkcode | html %]" selected="selected">[% framework.frameworktext | html %]</option> >+ [% ELSE %] >+ <option value="[% framework.frameworkcode | html %]">[% framework.frameworktext | html %]</option> >+ [% END %] > [% END %] > </select> > [% END %] >diff --git a/t/db_dependent/Koha/BiblioFrameworks.t b/t/db_dependent/Koha/BiblioFrameworks.t >index d2e31d9149..a5bc29b391 100755 >--- a/t/db_dependent/Koha/BiblioFrameworks.t >+++ b/t/db_dependent/Koha/BiblioFrameworks.t >@@ -18,7 +18,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > > use Modern::Perl; >-use Test::More tests => 3; >+use Test::More tests => 7; > use Koha::BiblioFramework; > use Koha::BiblioFrameworks; > >@@ -40,6 +40,22 @@ is( Koha::BiblioFrameworks->search->count, $nb_of_frameworks + 2, 'The 2 biblio > my $retrieved_framework_1 = Koha::BiblioFrameworks->find( $new_framework_1->frameworkcode ); > is( $retrieved_framework_1->frameworktext, $new_framework_1->frameworktext, 'Find a biblio framework by frameworkcode should return the correct framework' ); > >+# testing of default frameworks >+$new_framework_1->set_default; >+my $default_framework = Koha::BiblioFrameworks->get_default; >+is( $default_framework->frameworkcode, $new_framework_1->frameworkcode, 'Successfully identified default framework' ); >+ >+$new_framework_2->set_default; >+$default_framework = Koha::BiblioFrameworks->get_default; >+is( $default_framework->frameworkcode, $new_framework_2->frameworkcode, 'Successfully changed default framework' ); >+$new_framework_1 = Koha::BiblioFrameworks->find( $new_framework_1->frameworkcode ); >+is( $new_framework_1->is_default, 0, 'Old default framework has been unset' ); >+ >+$default_framework->unset_default; >+my $nb_of_defaults = Koha::BiblioFrameworks->search({ is_default => 1 })->count; >+is( $nb_of_defaults, 0, 'No default framework is set' ); >+# end of default frameworks testing >+ > $retrieved_framework_1->delete; > is( Koha::BiblioFrameworks->search->count, $nb_of_frameworks + 1, 'Delete should have deleted the biblio framework' ); > $schema->storage->txn_rollback; >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 23111
:
90550
|
90587
|
90588
|
91039
|
91040
|
91791
|
92184
|
102602
|
102603
|
104058
|
104059
|
104060
|
104061
|
104062
|
106560
|
112354
|
112468
|
138766
|
138767
|
138768
|
138769
|
138770
|
141565
|
141566
|
141567
|
141568
|
141569
|
157717
|
157718
|
157719
|
157720
|
157721
|
157722
|
157723