Bugzilla – Attachment 72010 Details for
Bug 9701
Configure default indicators
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 9701: Configure default indicator
Bug-9701-Configure-default-indicator.patch (text/plain), 15.70 KB, created by
Josef Moravec
on 2018-02-20 19:41:26 UTC
(
hide
)
Description:
Bug 9701: Configure default indicator
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2018-02-20 19:41:26 UTC
Size:
15.70 KB
patch
obsolete
>From dbdd217acc22286b48a27d291128b9a0529f715b Mon Sep 17 00:00:00 2001 >From: Joachim Ganseman <joachim.ganseman@student.ua.ac.be> >Date: Sat, 4 Jun 2016 12:58:36 +0000 >Subject: [PATCH] Bug 9701: Configure default indicator > >This patch adds the possibility to define default indicators in >the MARC frameworks. It adds 2 columns in the marc_tag_structure table in >the database in order to accomplish this. All files that reference this >table have also been updated to reflect these added fields. > >Test: Add or edit a MARC framework. In the Field list should be 2 extra >columns. It should be possible to add default indicators (1 character) > in these fields. Nothing else should have changed in the meantime. > The default indicator values are not yet visible in the cataloguing module. > >The default values are also loaded in the cataloguing form. > >Test: Define default values in some MARC framework. Go to cataloguing >and create a new record using this framework. Verify that the defined >defaults are visible when set. Verify the default is empty (as before) > if no default was set. Verify that if the default is changed, the > record is saved with the manually changed value. Verify that upon > changing such a new record, the manually set indicator value is used > and not the default one from the framework. > >Don't forget to run database and database schema update > >Signed-off-by: Eugene Jose Espinoza <eugenegf@yahoo.com> >--- > C4/Biblio.pm | 8 ++++--- > admin/marctagstructure.pl | 28 ++++++++++++++++------ > cataloguing/addbiblio.pl | 4 ++-- > .../bug_9701-add_default_indicators.sql | 3 +++ > installer/data/mysql/kohastructure.sql | 2 ++ > .../prog/en/modules/admin/marctagstructure.tt | 12 ++++++++++ > 6 files changed, 45 insertions(+), 12 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug_9701-add_default_indicators.sql > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index dac065608c..cb8639d7cc 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -982,19 +982,21 @@ sub GetMarcStructure { > > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare( >- "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable >+ "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable,ind1_defaultvalue,ind2_defaultvalue > FROM marc_tag_structure > WHERE frameworkcode=? > ORDER BY tagfield" > ); > $sth->execute($frameworkcode); >- my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable ); >+ my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue ); > >- while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable ) = $sth->fetchrow ) { >+ while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) { > $res->{$tag}->{lib} = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac; > $res->{$tag}->{tab} = ""; > $res->{$tag}->{mandatory} = $mandatory; > $res->{$tag}->{repeatable} = $repeatable; >+ $res->{$tag}->{ind1_defaultvalue} = $ind1_defaultvalue; >+ $res->{$tag}->{ind2_defaultvalue} = $ind2_defaultvalue; > } > > $sth = $dbh->prepare( >diff --git a/admin/marctagstructure.pl b/admin/marctagstructure.pl >index 3ca143b000..b900a28a30 100755 >--- a/admin/marctagstructure.pl >+++ b/admin/marctagstructure.pl >@@ -89,7 +89,7 @@ if ($op eq 'add_form') { > #---- if primkey exists, it's a modify action, so read values to modify... > my $data; > if ($searchfield) { >- $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where tagfield=? and frameworkcode=?"); >+ $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?"); > $sth->execute($searchfield,$frameworkcode); > $data=$sth->fetchrow_hashref; > } >@@ -108,6 +108,8 @@ if ($op eq 'add_form') { > repeatable => $data->{'repeatable'}, > mandatory => $data->{'mandatory'}, > authorised_value => $data->{authorised_value}, >+ ind1_defaultvalue => $data->{'ind1_defaultvalue'}, >+ ind2_defaultvalue => $data->{'ind2_defaultvalue'}, > frameworkcode => $frameworkcode, > ); # FIXME: move checkboxes to presentation layer > # END $OP eq ADD_FORM >@@ -120,21 +122,25 @@ if ($op eq 'add_form') { > my $repeatable = $input->param('repeatable') ? 1 : 0; > my $mandatory = $input->param('mandatory') ? 1 : 0; > my $authorised_value = $input->param('authorised_value'); >+ my $ind1_defaultvalue = $input->param('ind1_defaultvalue'); >+ my $ind2_defaultvalue = $input->param('ind2_defaultvalue'); > if ($input->param('modif')) { > $sth = $dbh->prepare( >- "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=? WHERE frameworkcode=? AND tagfield=?" >+ "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=?, ind1_defaultvalue=?, ind2_defaultvalue=? WHERE frameworkcode=? AND tagfield=?" > ); > $sth->execute( $liblibrarian, > $libopac, > $repeatable, > $mandatory, > $authorised_value, >+ $ind1_defaultvalue, >+ $ind2_defaultvalue, > $frameworkcode, > $tagfield > ); > } else { > $sth = $dbh->prepare( >- "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,frameworkcode) values (?,?,?,?,?,?,?)" >+ "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue,frameworkcode) values (?,?,?,?,?,?,?,?,?)" > ); > $sth->execute($tagfield, > $liblibrarian, >@@ -142,6 +148,8 @@ if ($op eq 'add_form') { > $repeatable, > $mandatory, > $authorised_value, >+ $ind1_defaultvalue, >+ $ind2_defaultvalue, > $frameworkcode > ); > } >@@ -155,7 +163,7 @@ if ($op eq 'add_form') { > ################## DELETE_CONFIRM ################################## > # called by default form, used to confirm deletion of data in DB > } elsif ($op eq 'delete_confirm') { >- $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where tagfield=? and frameworkcode=?"); >+ $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?"); > $sth->execute($searchfield, $frameworkcode); > my $data = $sth->fetchrow_hashref; > $template->param( >@@ -215,6 +223,8 @@ if ($op eq 'add_form') { > marc_tag_structure.repeatable as mts_repeatable, > marc_tag_structure.mandatory as mts_mandatory, > marc_tag_structure.authorised_value as mts_authorized_value, >+ marc_tag_structure.ind1_defaultvalue as mts_ind1_defaultvalue, >+ marc_tag_structure.ind1_defaultvalue as mts_ind2_defaultvalue, > marc_subfield_structure.* > FROM marc_tag_structure > LEFT JOIN marc_subfield_structure ON (marc_tag_structure.tagfield=marc_subfield_structure.tagfield AND marc_tag_structure.frameworkcode=marc_subfield_structure.frameworkcode) WHERE (marc_tag_structure.tagfield >= ? and marc_tag_structure.frameworkcode=?) AND marc_subfield_structure.tab>=0 ORDER BY marc_tag_structure.tagfield,marc_subfield_structure.tagsubfield"); >@@ -236,6 +246,8 @@ if ($op eq 'add_form') { > $row_data{repeatable} = $results[$i]->{'mts_repeatable'}; > $row_data{mandatory} = $results[$i]->{'mts_mandatory'}; > $row_data{authorised_value} = $results[$i]->{'mts_authorised_value'}; >+ $row_data{ind1_defaultvalue} = $results[$i]->{'mts_ind1_defaultvalue'}; >+ $row_data{ind2_defaultvalue} = $results[$i]->{'mts_ind2_defaultvalue'}; > $row_data{subfield_link} = "marc_subfields_structure.pl?op=add_form&tagfield=".$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; > $row_data{edit} = "$script_name?op=add_form&searchfield=" .$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; > $row_data{delete} = "$script_name?op=delete_confirm&searchfield=" .$results[$i]->{'mts_tagfield'}."&frameworkcode=".$frameworkcode; >@@ -281,6 +293,8 @@ if ($op eq 'add_form') { > $row_data{repeatable} = $results->[$i]{'repeatable'}; > $row_data{mandatory} = $results->[$i]{'mandatory'}; > $row_data{authorised_value} = $results->[$i]{'authorised_value'}; >+ $row_data{ind1_defaultvalue} = $results->[$i]{'ind1_defaultvalue'}; >+ $row_data{ind2_defaultvalue} = $results->[$i]{'ind2_defaultvalue'}; > $row_data{subfield_link} = "marc_subfields_structure.pl?tagfield=" .$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; > $row_data{edit} = "$script_name?op=add_form&searchfield=" .$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; > $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'tagfield'}."&frameworkcode=".$frameworkcode; >@@ -313,7 +327,7 @@ output_html_with_http_headers $input, $cookie, $template->output; > sub StringSearch { > my ($searchstring,$frameworkcode)=@_; > my $sth = C4::Context->dbh->prepare(" >- SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value >+ SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue > FROM marc_tag_structure > WHERE (tagfield >= ? and frameworkcode=?) > ORDER BY tagfield >@@ -329,8 +343,8 @@ sub StringSearch { > sub duplicate_framework { > my ($newframeworkcode,$oldframeworkcode) = @_; > my $dbh = C4::Context->dbh; >- $dbh->do(q|INSERT INTO marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode) >- SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value, ? from marc_tag_structure where frameworkcode=?|, undef, $newframeworkcode, $oldframeworkcode ); >+ $dbh->do(q|INSERT INTO marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, ind1_defaultvalue, ind2_defaultvalue, frameworkcode) >+ SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value, ind1_defaultvalue, ind2_defaultvalue, ? from marc_tag_structure where frameworkcode=?|, undef, $newframeworkcode, $oldframeworkcode ); > > $dbh->do(q|INSERT INTO marc_subfield_structure (frameworkcode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden) > SELECT ?,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,authorised_value,authtypecode,value_builder,seealso,hidden from marc_subfield_structure where frameworkcode=? >diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl >index 17557b47a7..bf7655960d 100755 >--- a/cataloguing/addbiblio.pl >+++ b/cataloguing/addbiblio.pl >@@ -663,8 +663,8 @@ sub build_tabs { > tag_lib => $tagslib->{$tag}->{lib}, > repeatable => $tagslib->{$tag}->{repeatable}, > mandatory => $tagslib->{$tag}->{mandatory}, >- indicator1 => $indicator1, >- indicator2 => $indicator2, >+ indicator1 => ( $indicator1 || $tagslib->{$tag}->{ind1_defaultvalue} ), #if not set, try to load the default value >+ indicator2 => ( $indicator2 || $tagslib->{$tag}->{ind2_defaultvalue} ), #use short-circuit operator for efficiency > subfield_loop => \@subfields_data, > tagfirstsubfield => $subfields_data[0], > fixedfield => $tag < 10?1:0, >diff --git a/installer/data/mysql/atomicupdate/bug_9701-add_default_indicators.sql b/installer/data/mysql/atomicupdate/bug_9701-add_default_indicators.sql >new file mode 100644 >index 0000000000..7cccd91fad >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_9701-add_default_indicators.sql >@@ -0,0 +1,3 @@ >+ALTER TABLE marc_tag_structure >+ADD COLUMN ind2_defaultvalue VARCHAR(1) NOT NULL DEFAULT '' AFTER authorised_value, >+ADD COLUMN ind1_defaultvalue VARCHAR(1) NOT NULL DEFAULT '' AFTER authorised_value; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 8151a2901c..5e9daf91af 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1139,6 +1139,8 @@ CREATE TABLE `marc_tag_structure` ( > `repeatable` tinyint(4) NOT NULL default 0, > `mandatory` tinyint(4) NOT NULL default 0, > `authorised_value` varchar(10) default NULL, >+ `ind1_defaultvalue` varchar(1) NOT NULL default '', >+ `ind2_defaultvalue` varchar(1) NOT NULL default '', > `frameworkcode` varchar(4) NOT NULL default '', > PRIMARY KEY (`frameworkcode`,`tagfield`) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt >index f4d8023da1..b2e94e8b15 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt >@@ -79,6 +79,12 @@ > <input type="checkbox" name="mandatory" id="mandatory" value="1" /> > [% END %] > </li> >+ <li><label for="ind1_defaultvalue">First indicator default value: </label> >+ <input id="ind1_defaultvalue" type="text" name="ind1_defaultvalue" value="[% ind1_defaultvalue |html %]" maxlength="1" size="1" /> >+ </li> >+ <li><label for="ind2_defaultvalue">Second indicator default value: </label> >+ <input id="ind2_defaultvalue" type="text" name="ind2_defaultvalue" value="[% ind2_defaultvalue |html %]" maxlength="1" size="1" /> >+ </li> > <li><label for="authorised_value">Authorized value: </label> > <select name="authorised_value" id="authorised_value" size="1"> > <option value=""></option> >@@ -170,6 +176,8 @@ > <th>Repeatable</th> > <th>Mandatory</th> > <th>Auth value</th> >+ <th>Indicator 1</th> >+ <th>Indicator 2</th> > <th> </th> > </tr> > </thead> >@@ -190,6 +198,8 @@ > <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td> > <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td> > <td>[% loo.authorised_value %]</td> >+ <td>[% loo.ind1_defaultvalue %]</td> >+ <td>[% loo.ind2_defaultvalue %]</td> > <td> > <div class="dropdown"> > <a class="btn btn-default btn-xs dropdown-toggle" id="marctagactions[% loo.tagfield %]" role="button" data-toggle="dropdown" href="#"> >@@ -211,6 +221,8 @@ > <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td> > <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td> > <td>[% loo.authorised_value %]</td> >+ <td>[% loo.ind1_defaultvalue %]</td> >+ <td>[% loo.ind2_defaultvalue %]</td> > <td> > <div class="dropdown"> > <a class="btn btn-default btn-xs dropdown-toggle" id="marctagactions[% loo.tagfield %]" role="button" data-toggle="dropdown" href="#"> >-- >2.14.1
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 9701
:
52054
|
52082
|
52161
|
52171
|
52172
|
52173
|
53403
|
53404
|
71929
|
71930
|
71931
|
72010
|
72011
|
72012
|
72986
|
73780
|
73781
|
73782
|
73783
|
73843
|
73844
|
73845