Bugzilla – Attachment 53403 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), 16.32 KB, created by
Katrin Fischer
on 2016-07-14 23:53:28 UTC
(
hide
)
Description:
Bug 9701 - Configure default indicator
Filename:
MIME Type:
Creator:
Katrin Fischer
Created:
2016-07-14 23:53:28 UTC
Size:
16.32 KB
patch
obsolete
>From 56922951cb2c68013d9738831aeeaf6320929496 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. > >Signed-off-by: Eugene Jose Espinoza <eugenegf@yahoo.com> >--- > C4/Biblio.pm | 8 +++-- > admin/marctagstructure.pl | 36 +++++++++++++++------- > 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, 49 insertions(+), 16 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 2798325..1f8ac2c 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -1129,19 +1129,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 27d9592..e7560df 100755 >--- a/admin/marctagstructure.pl >+++ b/admin/marctagstructure.pl >@@ -98,7 +98,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; > } >@@ -121,9 +121,11 @@ if ($op eq 'add_form') { > $template->param('use_heading_flags_p' => 1); > $template->param(liblibrarian => $data->{'liblibrarian'}, > libopac => $data->{'libopac'}, >- repeatable => $data->{'repeatable'}, >- mandatory => $data->{'mandatory'}, >+ repeatable => $data->{'repeatable'}, >+ mandatory => $data->{'mandatory'}, > authorised_value => $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 >@@ -136,22 +138,26 @@ 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'); > unless (C4::Context->config('demo')) { > 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, >@@ -159,6 +165,8 @@ if ($op eq 'add_form') { > $repeatable, > $mandatory, > $authorised_value, >+ $ind1_defaultvalue, >+ $ind2_defaultvalue, > $frameworkcode > ); > } >@@ -173,7 +181,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( >@@ -236,6 +244,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"); >@@ -257,6 +267,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; >@@ -296,6 +308,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; >@@ -328,7 +342,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 >@@ -344,11 +358,11 @@ sub StringSearch { > sub duplicate_framework { > my ($newframeworkcode,$oldframeworkcode) = @_; > my $dbh = C4::Context->dbh; >- my $sth = $dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value from marc_tag_structure where frameworkcode=?"); >+ my $sth = $dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaulvalue from marc_tag_structure where frameworkcode=?"); > $sth->execute($oldframeworkcode); >- my $sth_insert = $dbh->prepare("insert into marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, frameworkcode) values (?,?,?,?,?,?,?)"); >- while ( my ($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value) = $sth->fetchrow) { >- $sth_insert->execute($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value,$newframeworkcode); >+ my $sth_insert = $dbh->prepare("insert into marc_tag_structure (tagfield, liblibrarian, libopac, repeatable, mandatory, authorised_value, ind1_defaultvalue, ind2_defaultvalue, frameworkcode) values (?,?,?,?,?,?,?,?,?)"); >+ while ( my ($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value,$ind1_defaultvalue,$ind2_defaultvalue) = $sth->fetchrow) { >+ $sth_insert->execute($tagfield,$liblibrarian,$libopac,$repeatable,$mandatory,$authorised_value,$ind1_defaultvalue,$ind2_defaultvalue,$newframeworkcode); > } > > $sth = $dbh->prepare("select frameworkcode,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 1e7cb61..3b391dc 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 0000000..7cccd91 >--- /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 ded442c..e7c8e63 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1135,6 +1135,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=utf8 COLLATE=utf8_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 1f0a5d8..e493495 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt >@@ -93,6 +93,12 @@ $(document).ready(function() { > <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"> > [% FOREACH value IN authorised_value.values %] >@@ -189,6 +195,8 @@ $(document).ready(function() { > <th>Repeatable</th> > <th>Mandatory</th> > <th>Auth value</th> >+ <th>Indic1</th> >+ <th>Indic2</th> > <th>Subfields</th> > <th>Edit</th> > <th>Delete</th> >@@ -211,6 +219,8 @@ $(document).ready(function() { > <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><a href="[% loo.subfield_link %]">subfields</a></td> > <td><a href="[% loo.edit %]">Edit</a></td> > <td><a href="[% loo.delete %]">Delete</a></td> >@@ -224,6 +234,8 @@ $(document).ready(function() { > <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><a href="[% loo.subfield_link %]">Subfields</a></td> > <td><a href="[% loo.edit %]">Edit</a></td> > <td><a href="[% loo.delete %]">Delete</a></td> >-- >1.9.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