View | Details | Raw Unified | Return to bug 7263
Collapse All | Expand All

(-)a/C4/Biblio.pm (-2 / +5 lines)
Lines 1081-1087 sub GetMarcStructure { Link Here
1081
    }
1081
    }
1082
1082
1083
    $sth = $dbh->prepare(
1083
    $sth = $dbh->prepare(
1084
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue 
1084
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength 
1085
         FROM   marc_subfield_structure 
1085
         FROM   marc_subfield_structure 
1086
         WHERE  frameworkcode=? 
1086
         WHERE  frameworkcode=? 
1087
         ORDER BY tagfield,tagsubfield
1087
         ORDER BY tagfield,tagsubfield
Lines 1100-1109 sub GetMarcStructure { Link Here
1100
    my $isurl;
1100
    my $isurl;
1101
    my $link;
1101
    my $link;
1102
    my $defaultvalue;
1102
    my $defaultvalue;
1103
    my $maxlength;
1103
1104
1104
    while (
1105
    while (
1105
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
1106
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
1106
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue
1107
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue,
1108
            $maxlength
1107
        )
1109
        )
1108
        = $sth->fetchrow
1110
        = $sth->fetchrow
1109
      ) {
1111
      ) {
Lines 1120-1125 sub GetMarcStructure { Link Here
1120
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
1122
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
1121
        $res->{$tag}->{$subfield}->{'link'}           = $link;
1123
        $res->{$tag}->{$subfield}->{'link'}           = $link;
1122
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1124
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1125
        $res->{$tag}->{$subfield}->{maxlength}        = $maxlength;
1123
    }
1126
    }
1124
1127
1125
    $marc_structure_cache->{$forlibrarian}->{$frameworkcode} = $res;
1128
    $marc_structure_cache->{$forlibrarian}->{$frameworkcode} = $res;
(-)a/admin/marc_subfields_structure.pl (-3 / +8 lines)
Lines 179-184 if ( $op eq 'add_form' ) { Link Here
179
    while ( $data = $sth->fetchrow_hashref ) {
179
    while ( $data = $sth->fetchrow_hashref ) {
180
        my %row_data;    # get a fresh hash for the row data
180
        my %row_data;    # get a fresh hash for the row data
181
        $row_data{defaultvalue} = $data->{defaultvalue};
181
        $row_data{defaultvalue} = $data->{defaultvalue};
182
        $row_data{maxlength} = $data->{maxlength};
182
        $row_data{tab} = CGI::scrolling_list(
183
        $row_data{tab} = CGI::scrolling_list(
183
            -name   => 'tab',
184
            -name   => 'tab',
184
            -id     => "tab$i",
185
            -id     => "tab$i",
Lines 386-396 elsif ( $op eq 'add_validate' ) { Link Here
386
#                                     values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
387
#                                     values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
387
#     );
388
#     );
388
    my $sth_insert = $dbh->prepare(qq{
389
    my $sth_insert = $dbh->prepare(qq{
389
        insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue)
390
        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)
390
        values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
391
        values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
391
    });
392
    });
392
    my $sth_update = $dbh->prepare(qq{
393
    my $sth_update = $dbh->prepare(qq{
393
        update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?,  link=?, defaultvalue=?
394
        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=?
394
        where tagfield=? and tagsubfield=? and frameworkcode=?
395
        where tagfield=? and tagsubfield=? and frameworkcode=?
395
    });
396
    });
396
    my @tagsubfield       = $input->param('tagsubfield');
397
    my @tagsubfield       = $input->param('tagsubfield');
Lines 405-410 elsif ( $op eq 'add_validate' ) { Link Here
405
    my @value_builder     = $input->param('value_builder');
406
    my @value_builder     = $input->param('value_builder');
406
    my @link              = $input->param('link');
407
    my @link              = $input->param('link');
407
    my @defaultvalue      = $input->param('defaultvalue');
408
    my @defaultvalue      = $input->param('defaultvalue');
409
    my @maxlength         = $input->param('maxlength');
408
    
410
    
409
    for ( my $i = 0 ; $i <= $#tagsubfield ; $i++ ) {
411
    for ( my $i = 0 ; $i <= $#tagsubfield ; $i++ ) {
410
        my $tagfield    = $input->param('tagfield');
412
        my $tagfield    = $input->param('tagfield');
Lines 425-430 elsif ( $op eq 'add_validate' ) { Link Here
425
        my $isurl  = $input->param("isurl$i") ? 1 : 0;
427
        my $isurl  = $input->param("isurl$i") ? 1 : 0;
426
        my $link   = $link[$i];
428
        my $link   = $link[$i];
427
        my $defaultvalue = $defaultvalue[$i];
429
        my $defaultvalue = $defaultvalue[$i];
430
        my $maxlength = $maxlength[$i];
428
        
431
        
429
        if (defined($liblibrarian) && $liblibrarian ne "") {
432
        if (defined($liblibrarian) && $liblibrarian ne "") {
430
            unless ( C4::Context->config('demo') eq 1 ) {
433
            unless ( C4::Context->config('demo') eq 1 ) {
Lines 447-452 elsif ( $op eq 'add_validate' ) { Link Here
447
                        $frameworkcode,
450
                        $frameworkcode,
448
                        $link,
451
                        $link,
449
                        $defaultvalue,
452
                        $defaultvalue,
453
                        $maxlength,
450
                        (
454
                        (
451
                            $tagfield,
455
                            $tagfield,
452
                            $tagsubfield,
456
                            $tagsubfield,
Lines 472-477 elsif ( $op eq 'add_validate' ) { Link Here
472
                        $frameworkcode,
476
                        $frameworkcode,
473
                        $link,
477
                        $link,
474
                        $defaultvalue,
478
                        $defaultvalue,
479
                        $maxlength,
475
                    );
480
                    );
476
                }
481
                }
477
            }
482
            }
(-)a/cataloguing/addbiblio.pl (-15 / +8 lines)
Lines 293-306 sub create_input { Link Here
293
293
294
    $value =~ s/"/&quot;/g;
294
    $value =~ s/"/&quot;/g;
295
295
296
    # determine maximum length; 9999 bytes per ISO 2709 except for leader and MARC21 008
297
    my $max_length = 9999;
298
    if ($tag eq '000') {
299
        $max_length = 24;
300
    } elsif ($tag eq '008' and C4::Context->preference('marcflavour') eq 'MARC21')  {
301
        $max_length = 40;
302
    }
303
304
    # if there is no value provided but a default value in parameters, get it
296
    # if there is no value provided but a default value in parameters, get it
305
    if ( $value eq '' ) {
297
    if ( $value eq '' ) {
306
        $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
298
        $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
Lines 335-340 sub create_input { Link Here
335
        index          => $index_tag,
327
        index          => $index_tag,
336
        id             => "tag_".$tag."_subfield_".$id_subfield."_".$index_tag."_".$index_subfield,
328
        id             => "tag_".$tag."_subfield_".$id_subfield."_".$index_tag."_".$index_subfield,
337
        value          => $value,
329
        value          => $value,
330
        maxlength      => $tagslib->{$tag}->{$subfield}->{maxlength},
338
        random         => CreateKey(),
331
        random         => CreateKey(),
339
    );
332
    );
340
333
Lines 374-380 sub create_input { Link Here
374
                    class=\"input_marceditor readonly\"
367
                    class=\"input_marceditor readonly\"
375
                    tabindex=\"1\"
368
                    tabindex=\"1\"
376
                    size=\"5\"
369
                    size=\"5\"
377
                    maxlength=\"$max_length\"
370
                    maxlength=\"".$subfield_data{maxlength}."\"
378
                    readonly=\"readonly\"
371
                    readonly=\"readonly\"
379
                    \/>";
372
                    \/>";
380
373
Lines 390-396 sub create_input { Link Here
390
                    class=\"input_marceditor readonly\"
383
                    class=\"input_marceditor readonly\"
391
                    tabindex=\"1\"
384
                    tabindex=\"1\"
392
                    size=\"67\"
385
                    size=\"67\"
393
                    maxlength=\"$max_length\"
386
                    maxlength=\"".$subfield_data{maxlength}."\"
394
                    \/>
387
                    \/>
395
                    <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
388
                    <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
396
                       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>
389
                       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>
Lines 404-410 sub create_input { Link Here
404
                    class=\"input_marceditor readonly\"
397
                    class=\"input_marceditor readonly\"
405
                    tabindex=\"1\"
398
                    tabindex=\"1\"
406
                    size=\"67\"
399
                    size=\"67\"
407
                    maxlength=\"$max_length\"
400
                    maxlength=\"".$subfield_data{maxlength}."\"
408
                    readonly=\"readonly\"
401
                    readonly=\"readonly\"
409
                    \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
402
                    \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
410
                        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>
403
                        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>
Lines 435-441 sub create_input { Link Here
435
                            class=\"input_marceditor\"
428
                            class=\"input_marceditor\"
436
                            onfocus=\"Focus$function_name($index_tag)\"
429
                            onfocus=\"Focus$function_name($index_tag)\"
437
                            size=\"67\"
430
                            size=\"67\"
438
                            maxlength=\"$max_length\"
431
                            maxlength=\"".$subfield_data{maxlength}."\"
439
                            onblur=\"Blur$function_name($index_tag); \" \/>
432
                            onblur=\"Blur$function_name($index_tag); \" \/>
440
                            <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>
433
                            <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>
441
                    $javascript";
434
                    $javascript";
Lines 449-455 sub create_input { Link Here
449
                        value=\"$value\"
442
                        value=\"$value\"
450
                        tabindex=\"1\"
443
                        tabindex=\"1\"
451
                        size=\"67\"
444
                        size=\"67\"
452
                        maxlength=\"$max_length\"
445
                        maxlength=\"".$subfield_data{maxlength}."\"
453
                        class=\"input_marceditor\"
446
                        class=\"input_marceditor\"
454
                \/>
447
                \/>
455
                ";
448
                ";
Lines 463-469 sub create_input { Link Here
463
                    id=\"".$subfield_data{id}."\"
456
                    id=\"".$subfield_data{id}."\"
464
                    name=\"".$subfield_data{id}."\"
457
                    name=\"".$subfield_data{id}."\"
465
                    size=\"67\"
458
                    size=\"67\"
466
                    maxlength=\"$max_length\"
459
                    maxlength=\"".$subfield_data{maxlength}."\"
467
                    value=\"$value\" \/>
460
                    value=\"$value\" \/>
468
            ";
461
            ";
469
    }
462
    }
Lines 497-503 sub create_input { Link Here
497
                        value=\"$value\"
490
                        value=\"$value\"
498
                        tabindex=\"1\"
491
                        tabindex=\"1\"
499
                        size=\"67\"
492
                        size=\"67\"
500
                        maxlength=\"$max_length\"
493
                        maxlength=\"".$subfield_data{maxlength}."\"
501
                        class=\"input_marceditor\"
494
                        class=\"input_marceditor\"
502
                \/>
495
                \/>
503
                ";
496
                ";
(-)a/cataloguing/additem.pl (-1 / +2 lines)
Lines 120-125 sub generate_subfield_form { Link Here
120
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
120
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
121
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
121
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
122
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
122
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
123
        $subfield_data{maxlength}  = $subfieldlib->{maxlength};
123
        
124
        
124
        $value =~ s/"/&quot;/g;
125
        $value =~ s/"/&quot;/g;
125
        if ( ! defined( $value ) || $value eq '')  {
126
        if ( ! defined( $value ) || $value eq '')  {
Lines 150-156 sub generate_subfield_form { Link Here
150
	    my $input = new CGI;
151
	    my $input = new CGI;
151
	    $value = $input->param('barcode');
152
	    $value = $input->param('barcode');
152
	}
153
	}
153
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
154
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="$subfield_data{maxlength}" );
154
        my $attributes          = qq($attributes_no_value value="$value" );
155
        my $attributes          = qq($attributes_no_value value="$value" );
155
        
156
        
156
        if ( $subfieldlib->{authorised_value} ) {
157
        if ( $subfieldlib->{authorised_value} ) {
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 1207-1212 CREATE TABLE `marc_subfield_structure` ( Link Here
1207
  `seealso` varchar(1100) default NULL,
1207
  `seealso` varchar(1100) default NULL,
1208
  `link` varchar(80) default NULL,
1208
  `link` varchar(80) default NULL,
1209
  `defaultvalue` text default NULL,
1209
  `defaultvalue` text default NULL,
1210
  `maxlength` int(4) NOT NULL DEFAULT '9999',
1210
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1211
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1211
  KEY `kohafield_2` (`kohafield`),
1212
  KEY `kohafield_2` (`kohafield`),
1212
  KEY `tab` (`frameworkcode`,`tab`),
1213
  KEY `tab` (`frameworkcode`,`tab`),
(-)a/installer/data/mysql/updatedatabase.pl (+18 lines)
Lines 5036-5041 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
5036
    SetVersion($DBversion);
5036
    SetVersion($DBversion);
5037
}
5037
}
5038
5038
5039
$DBversion = "3.07.00.XXX";
5040
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5041
    $dbh->do("
5042
       ALTER TABLE  `marc_subfield_structure` ADD  `maxlength` INT( 4 ) NOT NULL DEFAULT  '9999';
5043
       ");
5044
       $dbh->do("
5045
       UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000';
5046
       ");
5047
       $dbh->do("
5048
       UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='MARC21','40','9999') WHERE tagfield='008';
5049
       ");
5050
       $dbh->do("
5051
       UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='UNIMARC','36','9999') WHERE tagfield='100';
5052
       ");
5053
    print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n";
5054
    SetVersion($DBversion);
5055
}
5056
5039
=head1 FUNCTIONS
5057
=head1 FUNCTIONS
5040
5058
5041
=head2 DropAllForeignKeys($table)
5059
=head2 DropAllForeignKeys($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt (+1 lines)
Lines 110-115 $(document).ready(function() { Link Here
110
				<legend>Advanced constraints:</legend>
110
				<legend>Advanced constraints:</legend>
111
                <ol><li><label for="defaultvalue[% loo.row %]">Default value:</label>
111
                <ol><li><label for="defaultvalue[% loo.row %]">Default value:</label>
112
                    <input type="text" name="defaultvalue" id="defaultvalue[% loo.row %]" value="[% loo.defaultvalue %]" /></li>
112
                    <input type="text" name="defaultvalue" id="defaultvalue[% loo.row %]" value="[% loo.defaultvalue %]" /></li>
113
				<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>
113
                <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>
114
                <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>
114
                <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>
115
                <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>
115
                <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>
116
                <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>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt (-1 / +7 lines)
Lines 84-89 To edit the subfields associated with the tag, click 'Subfields' to the right of Link Here
84
</li>
84
</li>
85
</ul>
85
</ul>
86
<ul>
86
<ul>
87
	<li>Max length
88
<ul>
89
	<li>Define the max characters to fill.</li>
90
</ul>
91
</li>
92
</ul>
93
<ul>
87
	<li>Is a url
94
	<li>Is a url
88
<ul>
95
<ul>
89
	<li>if checked, it means that the subfield is a url and can be clicked</li>
96
	<li>if checked, it means that the subfield is a url and can be clicked</li>
90
- 

Return to bug 7263