Bugzilla – Attachment 178506 Details for
Bug 35288
ApplyFrameworkDefaults add plugin to add more fine grained defaults handling
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 35288: ApplyFrameworkDefaults add plugin to add more fine grained defaults handling
Bug-35288-ApplyFrameworkDefaults-add-plugin-to-add.patch (text/plain), 3.86 KB, created by
Mark Hofstetter
on 2025-02-21 15:10:37 UTC
(
hide
)
Description:
Bug 35288: ApplyFrameworkDefaults add plugin to add more fine grained defaults handling
Filename:
MIME Type:
Creator:
Mark Hofstetter
Created:
2025-02-21 15:10:37 UTC
Size:
3.86 KB
patch
obsolete
>From dae6f124aa1f7a19dfdd50e11dca083adf3734ba Mon Sep 17 00:00:00 2001 >From: Mark Hofstetter <mark@hofstetter.at> >Date: Fri, 21 Feb 2025 16:06:56 +0100 >Subject: [PATCH] Bug 35288: ApplyFrameworkDefaults add plugin to add more fine > grained defaults handling > >The "new" ApplyFrameworkDefaults option is to coarse sometimes >ie quite often you also want to apply default values even if then field wasn't empty before >e.g. on duplicating a new controlnumber should be generated etc > >This patch adds a new plugin call 'framework_defaults_override' and tidies up the code a little > >Plugin call: >Koha::Plugins->call( 'framework_defaults_override', $tag, $subfield, $value, $form_mode ); > >ie marc tag, marc subfield, the "before value", the action which triggered the change >possible actions are new, duplicate, changed (Framework), imported (via SRU) > >the plugin has to return a hashref containing two keys > >apply_override - undef or a true if the default value from the framework should be applied >override_default_value - a completly new derived value > >sub framework_defaults_override { > my ( $self, $tag, $subfield, $value, $form_mode ) = @_; > # $framework_override->{override_default_value} > # $framework_override->{apply_override} > my $r = {override_default_value => undef, apply_override => undef}; > if ($tag eq '245' && $subfield eq 'a') { > $r->{apply_override} = 1; > $r->{override_default_value} = $value .' added'; > } > return $r; >} > >for a demo implementation please see >https://github.com/HKS3/hks3-munde-framework-defaults-demo/blob/main/hks3-munde-framework-defaults-demo.kpz > >To test: >1) apply patch >2) install demo plugin (and don't enable it yet) >3) create a record with a 245a field set to a value eg "My Title" >4) enable ApplyFrameworkDefaults for all 4 cases "Select all" >5) in Cataloging Edit the previously generated record >6) change framework via settings >7) nothing should happen to the title in 245a >8) enable plugin >9) repeat point 5+6 >10) the title in 245a should change to "My Title added" >11) please sign off > >Sponsored-by: Styrian State Library >Co-authored-by: Thomas Klausner <domm@plix.at> >Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> >--- > Koha/UI/Form/Builder/Biblio.pm | 26 ++++++++++++++++++-------- > 1 file changed, 18 insertions(+), 8 deletions(-) > >diff --git a/Koha/UI/Form/Builder/Biblio.pm b/Koha/UI/Form/Builder/Biblio.pm >index ffd0397653..0d205b4f0c 100644 >--- a/Koha/UI/Form/Builder/Biblio.pm >+++ b/Koha/UI/Form/Builder/Biblio.pm >@@ -91,15 +91,25 @@ sub generate_subfield_form { > # based on the ApplyFrameworkDefaults setting. > # Substitute date parts, user name > my $applydefaults = C4::Context->preference('ApplyFrameworkDefaults'); >- if ( >- $value eq '' >- && ( ( $applydefaults =~ /new/ && !$self->{biblionumber} ) >- || ( $applydefaults =~ /duplicate/ && $op eq 'duplicate' ) >- || ( $applydefaults =~ /changed/ && $changed_framework ) >- || ( $applydefaults =~ /imported/ && $breedingid ) ) >- ) >+ >+ my $form_mode = ''; >+ if ( $op eq '' ) { >+ $form_mode = 'new'; >+ } elsif ( $op eq 'duplicate' ) { >+ $form_mode = 'duplicate'; >+ } elsif ($changed_framework) { >+ $form_mode = 'changed'; >+ } elsif ($breedingid) { >+ $form_mode = 'imported'; >+ } >+ >+ my ($framework_override) = >+ Koha::Plugins->call( 'framework_defaults_override', $tag, $subfield, $value, $form_mode ); >+ >+ if ( ( $value eq '' || $framework_override->{apply_override} ) >+ && ( $applydefaults =~ /$form_mode/ ) ) > { >- $value = $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{}; >+ $value = $framework_override->{override_default_value} // $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{}; > > # get today date & replace <<YYYY>>, <<YY>>, <<MM>>, <<DD>> if provided in the default value > my $today_dt = dt_from_string; >-- >2.39.5
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 35288
:
158710
|
176105
| 178506