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

(-)a/C4/Biblio.pm (-2 / +5 lines)
Lines 1073-1079 sub GetMarcStructure { Link Here
1073
    }
1073
    }
1074
1074
1075
    $sth = $dbh->prepare(
1075
    $sth = $dbh->prepare(
1076
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue 
1076
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength 
1077
         FROM   marc_subfield_structure 
1077
         FROM   marc_subfield_structure 
1078
         WHERE  frameworkcode=? 
1078
         WHERE  frameworkcode=? 
1079
         ORDER BY tagfield,tagsubfield
1079
         ORDER BY tagfield,tagsubfield
Lines 1092-1101 sub GetMarcStructure { Link Here
1092
    my $isurl;
1092
    my $isurl;
1093
    my $link;
1093
    my $link;
1094
    my $defaultvalue;
1094
    my $defaultvalue;
1095
    my $maxlength;
1095
1096
1096
    while (
1097
    while (
1097
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
1098
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
1098
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue
1099
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue,
1100
            $maxlength
1099
        )
1101
        )
1100
        = $sth->fetchrow
1102
        = $sth->fetchrow
1101
      ) {
1103
      ) {
Lines 1112-1117 sub GetMarcStructure { Link Here
1112
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
1114
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
1113
        $res->{$tag}->{$subfield}->{'link'}           = $link;
1115
        $res->{$tag}->{$subfield}->{'link'}           = $link;
1114
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1116
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1117
        $res->{$tag}->{$subfield}->{maxlength}        = $maxlength;
1115
    }
1118
    }
1116
1119
1117
    $marc_structure_cache->{$forlibrarian}->{$frameworkcode} = $res;
1120
    $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 294-307 sub create_input { Link Here
294
294
295
    $value =~ s/"/&quot;/g;
295
    $value =~ s/"/&quot;/g;
296
296
297
    # determine maximum length; 9999 bytes per ISO 2709 except for leader and MARC21 008
298
    my $max_length = 9999;
299
    if ($tag eq '000') {
300
        $max_length = 24;
301
    } elsif ($tag eq '008' and C4::Context->preference('marcflavour') eq 'MARC21')  {
302
        $max_length = 40;
303
    }
304
305
    # if there is no value provided but a default value in parameters, get it
297
    # if there is no value provided but a default value in parameters, get it
306
    if ( $value eq '' ) {
298
    if ( $value eq '' ) {
307
        $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
299
        $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
Lines 336-341 sub create_input { Link Here
336
        index          => $index_tag,
328
        index          => $index_tag,
337
        id             => "tag_".$tag."_subfield_".$id_subfield."_".$index_tag."_".$index_subfield,
329
        id             => "tag_".$tag."_subfield_".$id_subfield."_".$index_tag."_".$index_subfield,
338
        value          => $value,
330
        value          => $value,
331
        maxlength      => $tagslib->{$tag}->{$subfield}->{maxlength},
339
        random         => CreateKey(),
332
        random         => CreateKey(),
340
    );
333
    );
341
334
Lines 375-381 sub create_input { Link Here
375
                    class=\"input_marceditor readonly\"
368
                    class=\"input_marceditor readonly\"
376
                    tabindex=\"1\"
369
                    tabindex=\"1\"
377
                    size=\"5\"
370
                    size=\"5\"
378
                    maxlength=\"$max_length\"
371
                    maxlength=\"".$subfield_data{maxlength}."\"
379
                    readonly=\"readonly\"
372
                    readonly=\"readonly\"
380
                    \/>";
373
                    \/>";
381
374
Lines 391-397 sub create_input { Link Here
391
                    class=\"input_marceditor readonly\"
384
                    class=\"input_marceditor readonly\"
392
                    tabindex=\"1\"
385
                    tabindex=\"1\"
393
                    size=\"67\"
386
                    size=\"67\"
394
                    maxlength=\"$max_length\"
387
                    maxlength=\"".$subfield_data{maxlength}."\"
395
                    \/>
388
                    \/>
396
                    <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
389
                    <span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
397
                       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>
390
                       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 405-411 sub create_input { Link Here
405
                    class=\"input_marceditor readonly\"
398
                    class=\"input_marceditor readonly\"
406
                    tabindex=\"1\"
399
                    tabindex=\"1\"
407
                    size=\"67\"
400
                    size=\"67\"
408
                    maxlength=\"$max_length\"
401
                    maxlength=\"".$subfield_data{maxlength}."\"
409
                    readonly=\"readonly\"
402
                    readonly=\"readonly\"
410
                    \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
403
                    \/><span class=\"subfield_controls\"><a href=\"#\" class=\"buttonDot\"
411
                        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
                        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 436-442 sub create_input { Link Here
436
                            class=\"input_marceditor\"
429
                            class=\"input_marceditor\"
437
                            onfocus=\"Focus$function_name($index_tag)\"
430
                            onfocus=\"Focus$function_name($index_tag)\"
438
                            size=\"67\"
431
                            size=\"67\"
439
                            maxlength=\"$max_length\"
432
                            maxlength=\"".$subfield_data{maxlength}."\"
440
                            onblur=\"Blur$function_name($index_tag); \" \/>
433
                            onblur=\"Blur$function_name($index_tag); \" \/>
441
                            <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>
434
                            <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>
442
                    $javascript";
435
                    $javascript";
Lines 450-456 sub create_input { Link Here
450
                        value=\"$value\"
443
                        value=\"$value\"
451
                        tabindex=\"1\"
444
                        tabindex=\"1\"
452
                        size=\"67\"
445
                        size=\"67\"
453
                        maxlength=\"$max_length\"
446
                        maxlength=\"".$subfield_data{maxlength}."\"
454
                        class=\"input_marceditor\"
447
                        class=\"input_marceditor\"
455
                \/>
448
                \/>
456
                ";
449
                ";
Lines 464-470 sub create_input { Link Here
464
                    id=\"".$subfield_data{id}."\"
457
                    id=\"".$subfield_data{id}."\"
465
                    name=\"".$subfield_data{id}."\"
458
                    name=\"".$subfield_data{id}."\"
466
                    size=\"67\"
459
                    size=\"67\"
467
                    maxlength=\"$max_length\"
460
                    maxlength=\"".$subfield_data{maxlength}."\"
468
                    value=\"$value\" \/>
461
                    value=\"$value\" \/>
469
            ";
462
            ";
470
    }
463
    }
Lines 498-504 sub create_input { Link Here
498
                        value=\"$value\"
491
                        value=\"$value\"
499
                        tabindex=\"1\"
492
                        tabindex=\"1\"
500
                        size=\"67\"
493
                        size=\"67\"
501
                        maxlength=\"$max_length\"
494
                        maxlength=\"".$subfield_data{maxlength}."\"
502
                        class=\"input_marceditor\"
495
                        class=\"input_marceditor\"
503
                \/>
496
                \/>
504
                ";
497
                ";
(-)a/cataloguing/additem.pl (-1 / +2 lines)
Lines 121-126 sub generate_subfield_form { Link Here
121
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
121
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
122
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
122
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
123
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
123
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
124
        $subfield_data{maxlength}  = $subfieldlib->{maxlength};
124
        
125
        
125
        $value =~ s/"/&quot;/g;
126
        $value =~ s/"/&quot;/g;
126
        if ( ! defined( $value ) || $value eq '')  {
127
        if ( ! defined( $value ) || $value eq '')  {
Lines 151-157 sub generate_subfield_form { Link Here
151
	    my $input = new CGI;
152
	    my $input = new CGI;
152
	    $value = $input->param('barcode');
153
	    $value = $input->param('barcode');
153
	}
154
	}
154
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
155
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="$subfield_data{maxlength}" );
155
        my $attributes          = qq($attributes_no_value value="$value" );
156
        my $attributes          = qq($attributes_no_value value="$value" );
156
        
157
        
157
        if ( $subfieldlib->{authorised_value} ) {
158
        if ( $subfieldlib->{authorised_value} ) {
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 1200-1205 CREATE TABLE `marc_subfield_structure` ( Link Here
1200
  `seealso` varchar(1100) default NULL,
1200
  `seealso` varchar(1100) default NULL,
1201
  `link` varchar(80) default NULL,
1201
  `link` varchar(80) default NULL,
1202
  `defaultvalue` text default NULL,
1202
  `defaultvalue` text default NULL,
1203
  `maxlength` int(4) NOT NULL DEFAULT '9999',
1203
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1204
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1204
  KEY `kohafield_2` (`kohafield`),
1205
  KEY `kohafield_2` (`kohafield`),
1205
  KEY `tab` (`frameworkcode`,`tab`),
1206
  KEY `tab` (`frameworkcode`,`tab`),
(-)a/installer/data/mysql/updatedatabase.pl (+17 lines)
Lines 4943-4948 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
4943
    SetVersion($DBversion);
4943
    SetVersion($DBversion);
4944
}
4944
}
4945
4945
4946
$DBversion = "3.07.00.XXX";
4947
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4948
    $dbh->do("
4949
       ALTER TABLE  `marc_subfield_structure` ADD  `maxlength` INT( 4 ) NOT NULL DEFAULT  '9999';
4950
       ");
4951
       $dbh->do("
4952
       UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000';
4953
       ");
4954
       $dbh->do("
4955
       UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='MARC21','40','9999') WHERE tagfield='008';
4956
       ");
4957
       $dbh->do("
4958
       UPDATE marc_subfield_structure SET maxlength = IF ((SELECT value FROM systempreferences WHERE variable = 'marcflavour')='UNIMARC','36','9999') WHERE tagfield='100';
4959
       ");
4960
    print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n";
4961
    SetVersion($DBversion);
4962
}
4946
4963
4947
$DBversion = "3.07.00.030";
4964
$DBversion = "3.07.00.030";
4948
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4965
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt (+1 lines)
Lines 108-113 Link Here
108
				<legend>Advanced constraints:</legend>
108
				<legend>Advanced constraints:</legend>
109
                <ol><li><label for="defaultvalue[% loo.row %]">Default value:</label>
109
                <ol><li><label for="defaultvalue[% loo.row %]">Default value:</label>
110
                    <input type="text" name="defaultvalue" id="defaultvalue[% loo.row %]" value="[% loo.defaultvalue %]" /></li>
110
                    <input type="text" name="defaultvalue" id="defaultvalue[% loo.row %]" value="[% loo.defaultvalue %]" /></li>
111
				<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>
111
                <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>
112
                <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>
112
                <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>
113
                <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>
113
                <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>
114
                <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