Bugzilla – Attachment 8361 Details for
Bug 7263
Determine maximum length of some fields or subfields when cataloguing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch to apply in current master
Bug-7263-Determine-maximum-length-of-some-fields-or-.patch (text/plain), 15.39 KB, created by
Juan Romay Sieira
on 2012-03-20 15:22:03 UTC
(
hide
)
Description:
Patch to apply in current master
Filename:
MIME Type:
Creator:
Juan Romay Sieira
Created:
2012-03-20 15:22:03 UTC
Size:
15.39 KB
patch
obsolete
>From d8d0225c1c77b559771dc223d64f9a97deab47e4 Mon Sep 17 00:00:00 2001 >From: Juan Romay Sieira <juan.sieira@xercode.es> >Date: Tue, 20 Mar 2012 16:17:27 +0100 >Subject: [PATCH] Bug 7263 - Determine maximum length of some fields or > subfields when cataloguing a biblio or an item. >Content-Type: text/plain; charset="utf-8" > >--- > C4/Biblio.pm | 7 ++++- > admin/marc_subfields_structure.pl | 11 +++++++-- > cataloguing/addbiblio.pl | 23 +++++++------------- > cataloguing/additem.pl | 3 +- > installer/data/mysql/kohastructure.sql | 1 + > installer/data/mysql/updatedatabase.pl | 17 ++++++++++++++ > .../en/modules/admin/marc_subfields_structure.tt | 1 + > .../modules/help/admin/marc_subfields_structure.tt | 7 ++++++ > 8 files changed, 49 insertions(+), 21 deletions(-) > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index 7b090cf..523f46a 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -1073,7 +1073,7 @@ sub GetMarcStructure { > } > > $sth = $dbh->prepare( >- "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue >+ "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength > FROM marc_subfield_structure > WHERE frameworkcode=? > ORDER BY tagfield,tagsubfield >@@ -1092,10 +1092,12 @@ sub GetMarcStructure { > my $isurl; > my $link; > my $defaultvalue; >+ my $maxlength; > > while ( > ( $tag, $subfield, $liblibrarian, $libopac, $tab, $mandatory, $repeatable, $authorised_value, >- $authtypecode, $value_builder, $kohafield, $seealso, $hidden, $isurl, $link, $defaultvalue >+ $authtypecode, $value_builder, $kohafield, $seealso, $hidden, $isurl, $link, $defaultvalue, >+ $maxlength > ) > = $sth->fetchrow > ) { >@@ -1112,6 +1114,7 @@ sub GetMarcStructure { > $res->{$tag}->{$subfield}->{isurl} = $isurl; > $res->{$tag}->{$subfield}->{'link'} = $link; > $res->{$tag}->{$subfield}->{defaultvalue} = $defaultvalue; >+ $res->{$tag}->{$subfield}->{maxlength} = $maxlength; > } > > $marc_structure_cache->{$forlibrarian}->{$frameworkcode} = $res; >diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl >index 2c69733..f837644 100755 >--- a/admin/marc_subfields_structure.pl >+++ b/admin/marc_subfields_structure.pl >@@ -179,6 +179,7 @@ if ( $op eq 'add_form' ) { > while ( $data = $sth->fetchrow_hashref ) { > my %row_data; # get a fresh hash for the row data > $row_data{defaultvalue} = $data->{defaultvalue}; >+ $row_data{maxlength} = $data->{maxlength}; > $row_data{tab} = CGI::scrolling_list( > -name => 'tab', > -id => "tab$i", >@@ -386,11 +387,11 @@ elsif ( $op eq 'add_validate' ) { > # values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" > # ); > my $sth_insert = $dbh->prepare(qq{ >- insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) >- values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) >+ insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue,maxlength) >+ values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) > }); > my $sth_update = $dbh->prepare(qq{ >- update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=? >+ update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=?, maxlength=? > where tagfield=? and tagsubfield=? and frameworkcode=? > }); > my @tagsubfield = $input->param('tagsubfield'); >@@ -405,6 +406,7 @@ elsif ( $op eq 'add_validate' ) { > my @value_builder = $input->param('value_builder'); > my @link = $input->param('link'); > my @defaultvalue = $input->param('defaultvalue'); >+ my @maxlength = $input->param('maxlength'); > > for ( my $i = 0 ; $i <= $#tagsubfield ; $i++ ) { > my $tagfield = $input->param('tagfield'); >@@ -425,6 +427,7 @@ elsif ( $op eq 'add_validate' ) { > my $isurl = $input->param("isurl$i") ? 1 : 0; > my $link = $link[$i]; > my $defaultvalue = $defaultvalue[$i]; >+ my $maxlength = $maxlength[$i]; > > if (defined($liblibrarian) && $liblibrarian ne "") { > unless ( C4::Context->config('demo') eq 1 ) { >@@ -447,6 +450,7 @@ elsif ( $op eq 'add_validate' ) { > $frameworkcode, > $link, > $defaultvalue, >+ $maxlength, > ( > $tagfield, > $tagsubfield, >@@ -472,6 +476,7 @@ elsif ( $op eq 'add_validate' ) { > $frameworkcode, > $link, > $defaultvalue, >+ $maxlength, > ); > } > } >diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl >index 7fabb77..939d67e 100755 >--- a/cataloguing/addbiblio.pl >+++ b/cataloguing/addbiblio.pl >@@ -293,14 +293,6 @@ sub create_input { > > $value =~ s/"/"/g; > >- # determine maximum length; 9999 bytes per ISO 2709 except for leader and MARC21 008 >- my $max_length = 9999; >- if ($tag eq '000') { >- $max_length = 24; >- } elsif ($tag eq '008' and C4::Context->preference('marcflavour') eq 'MARC21') { >- $max_length = 40; >- } >- > # if there is no value provided but a default value in parameters, get it > if ( $value eq '' ) { > $value = $tagslib->{$tag}->{$subfield}->{defaultvalue}; >@@ -335,6 +327,7 @@ sub create_input { > index => $index_tag, > id => "tag_".$tag."_subfield_".$id_subfield."_".$index_tag."_".$index_subfield, > value => $value, >+ maxlength => $tagslib->{$tag}->{$subfield}->{maxlength}, > random => CreateKey(), > ); > >@@ -374,7 +367,7 @@ sub create_input { > class=\"input_marceditor readonly\" > tabindex=\"1\" > size=\"5\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > readonly=\"readonly\" > \/>"; > >@@ -390,7 +383,7 @@ sub create_input { > class=\"input_marceditor readonly\" > tabindex=\"1\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > \/> > <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\" > onclick=\"openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span> >@@ -404,7 +397,7 @@ sub create_input { > class=\"input_marceditor readonly\" > tabindex=\"1\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > readonly=\"readonly\" > \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\" > onclick=\"openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'".$tagslib->{$tag}->{$subfield}->{authtypecode}."'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span> >@@ -435,7 +428,7 @@ sub create_input { > class=\"input_marceditor\" > onfocus=\"Focus$function_name($index_tag)\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > onblur=\"Blur$function_name($index_tag); \" \/> > <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'); return false;\" tabindex=\"1\" title=\"Tag Editor\"><img src=\"/intranet-tmpl/prog/img/edit-tag.png\" alt=\"Tag Editor\" /></a></span> > $javascript"; >@@ -449,7 +442,7 @@ sub create_input { > value=\"$value\" > tabindex=\"1\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > class=\"input_marceditor\" > \/> > "; >@@ -463,7 +456,7 @@ sub create_input { > id=\"".$subfield_data{id}."\" > name=\"".$subfield_data{id}."\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > value=\"$value\" \/> > "; > } >@@ -497,7 +490,7 @@ sub create_input { > value=\"$value\" > tabindex=\"1\" > size=\"67\" >- maxlength=\"$max_length\" >+ maxlength=\"".$subfield_data{maxlength}."\" > class=\"input_marceditor\" > \/> > "; >diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl >index 4bf06b5..7e20429 100755 >--- a/cataloguing/additem.pl >+++ b/cataloguing/additem.pl >@@ -120,6 +120,7 @@ sub generate_subfield_form { > $subfield_data{marc_lib} ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>"; > $subfield_data{mandatory} = $subfieldlib->{mandatory}; > $subfield_data{repeatable} = $subfieldlib->{repeatable}; >+ $subfield_data{maxlength} = $subfieldlib->{maxlength}; > > $value =~ s/"/"/g; > if ( ! defined( $value ) || $value eq '') { >@@ -150,7 +151,7 @@ sub generate_subfield_form { > my $input = new CGI; > $value = $input->param('barcode'); > } >- my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" ); >+ my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="$subfield_data{maxlength}" ); > my $attributes = qq($attributes_no_value value="$value" ); > > if ( $subfieldlib->{authorised_value} ) { >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 288dc05..30ac6a5 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1200,6 +1200,7 @@ CREATE TABLE `marc_subfield_structure` ( > `seealso` varchar(1100) default NULL, > `link` varchar(80) default NULL, > `defaultvalue` text default NULL, >+ `maxlength` int(4) NOT NULL DEFAULT '9999', > PRIMARY KEY (`frameworkcode`,`tagfield`,`tagsubfield`), > KEY `kohafield_2` (`kohafield`), > KEY `tab` (`frameworkcode`,`tab`), >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 4f21435..a857cdf 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -4943,6 +4943,23 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > SetVersion($DBversion); > } > >+$DBversion = "3.07.00.XXX"; >+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >+ $dbh->do(" >+ ALTER TABLE `marc_subfield_structure` ADD `maxlength` INT( 4 ) NOT NULL DEFAULT '9999'; >+ "); >+ $dbh->do(" >+ UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000'; >+ "); >+ $dbh->do(" >+ UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='MARC21','40','9999') WHERE tagfield='008'; >+ "); >+ $dbh->do(" >+ UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='UNIMARC','36','9999') WHERE tagfield='100'; >+ "); >+ print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n"; >+ SetVersion($DBversion); >+} > > =head1 FUNCTIONS > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt >index c196300..b2551e3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt >@@ -108,6 +108,7 @@ > <legend>Advanced constraints:</legend> > <ol><li><label for="defaultvalue[% loo.row %]">Default value:</label> > <input type="text" name="defaultvalue" id="defaultvalue[% loo.row %]" value="[% loo.defaultvalue %]" /></li> >+ <li><label for="maxlength[% loo.row %]">Max length:</label><input type="text" id="maxlength[% loo.row %]" name="maxlength" value="[% loo.maxlength %]" size="4" /> (see online help)</li> > <li><label for="hidden[% loo.row %]">hidden</label><input type="text" id="hidden[% loo.row %]" name="hidden" value="[% loo.hidden %]" size="2" /> (see online help)</li> > <li><label for="isurl[% loo.row %]">Is a url:</label>[% loo.isurl %] (if checked, it means that the subfield is a url and can be clicked)</li> > <li><label for="link[% loo.row %]">Link:</label><input type="text" id="link[% loo.row %]" name="link" value="[% loo.link %]" size="10" maxlength="80" /> (e.g., Title or Local-Number) <span class="error"><em>NOTE: If you change this value you must ask your administrator to run misc/batchRebuildBiblioTables.pl.</em></span></li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt >index 2a8801c..0fba909 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt >@@ -84,6 +84,13 @@ To edit the subfields associated with the tag, click 'Subfields' to the right of > </li> > </ul> > <ul> >+ <li>Max length >+<ul> >+ <li>Define the max characters to fill.</li> >+</ul> >+</li> >+</ul> >+<ul> > <li>Is a url > <ul> > <li>if checked, it means that the subfield is a url and can be clicked</li> >-- >1.7.5.4 >
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 7263
:
6395
|
6864
|
7537
|
8361
|
8454
|
8561