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

(-)a/C4/Biblio.pm (-2 / +5 lines)
Lines 958-964 sub GetMarcStructure { Link Here
958
    }
958
    }
959
959
960
    $sth = $dbh->prepare(
960
    $sth = $dbh->prepare(
961
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue 
961
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength 
962
         FROM   marc_subfield_structure 
962
         FROM   marc_subfield_structure 
963
         WHERE  frameworkcode=? 
963
         WHERE  frameworkcode=? 
964
         ORDER BY tagfield,tagsubfield
964
         ORDER BY tagfield,tagsubfield
Lines 977-986 sub GetMarcStructure { Link Here
977
    my $isurl;
977
    my $isurl;
978
    my $link;
978
    my $link;
979
    my $defaultvalue;
979
    my $defaultvalue;
980
    my $maxlength;
980
981
981
    while (
982
    while (
982
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
983
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
983
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue
984
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue,
985
            $maxlength
984
        )
986
        )
985
        = $sth->fetchrow
987
        = $sth->fetchrow
986
      ) {
988
      ) {
Lines 997-1002 sub GetMarcStructure { Link Here
997
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
999
        $res->{$tag}->{$subfield}->{isurl}            = $isurl;
998
        $res->{$tag}->{$subfield}->{'link'}           = $link;
1000
        $res->{$tag}->{$subfield}->{'link'}           = $link;
999
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1001
        $res->{$tag}->{$subfield}->{defaultvalue}     = $defaultvalue;
1002
        $res->{$tag}->{$subfield}->{maxlength}        = $maxlength;
1000
    }
1003
    }
1001
1004
1002
    $marc_structure_cache->{$forlibrarian}->{$frameworkcode} = $res;
1005
    $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 (-16 / +9 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 475-481 sub create_input { Link Here
475
                    class=\"input_marceditor\"
468
                    class=\"input_marceditor\"
476
                    tabindex=\"1\"
469
                    tabindex=\"1\"
477
                    size=\"67\"
470
                    size=\"67\"
478
                    maxlength=\"$max_length\"
471
                    maxlength=\"".$subfield_data{maxlength}."\"
479
                    value=\"$value\"
472
                    value=\"$value\"
480
            \/>";
473
            \/>";
481
474
Lines 510-516 sub create_input { Link Here
510
                        value=\"$value\"
503
                        value=\"$value\"
511
                        tabindex=\"1\"
504
                        tabindex=\"1\"
512
                        size=\"67\"
505
                        size=\"67\"
513
                        maxlength=\"$max_length\"
506
                        maxlength=\"".$subfield_data{maxlength}."\"
514
                        class=\"input_marceditor\"
507
                        class=\"input_marceditor\"
515
                \/>
508
                \/>
516
                ";
509
                ";
(-)a/cataloguing/additem.pl (-1 / +2 lines)
Lines 119-124 sub generate_subfield_form { Link Here
119
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
119
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
120
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
120
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
121
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
121
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
122
        $subfield_data{maxlength}  = $subfieldlib->{maxlength};
122
        
123
        
123
        $value =~ s/"/&quot;/g;
124
        $value =~ s/"/&quot;/g;
124
        if ( ! defined( $value ) || $value eq '')  {
125
        if ( ! defined( $value ) || $value eq '')  {
Lines 149-155 sub generate_subfield_form { Link Here
149
	    my $input = new CGI;
150
	    my $input = new CGI;
150
	    $value = $input->param('barcode');
151
	    $value = $input->param('barcode');
151
	}
152
	}
152
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" );
153
        my $attributes_no_value = qq(tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="$subfield_data{maxlength}" );
153
        my $attributes          = qq($attributes_no_value value="$value" );
154
        my $attributes          = qq($attributes_no_value value="$value" );
154
        
155
        
155
        if ( $subfieldlib->{authorised_value} ) {
156
        if ( $subfieldlib->{authorised_value} ) {
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 1197-1202 CREATE TABLE `marc_subfield_structure` ( Link Here
1197
  `seealso` varchar(1100) default NULL,
1197
  `seealso` varchar(1100) default NULL,
1198
  `link` varchar(80) default NULL,
1198
  `link` varchar(80) default NULL,
1199
  `defaultvalue` text default NULL,
1199
  `defaultvalue` text default NULL,
1200
  `maxlength` int(4) NOT NULL DEFAULT '9999',
1200
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1201
  PRIMARY KEY  (`frameworkcode`,`tagfield`,`tagsubfield`),
1201
  KEY `kohafield_2` (`kohafield`),
1202
  KEY `kohafield_2` (`kohafield`),
1202
  KEY `tab` (`frameworkcode`,`tab`),
1203
  KEY `tab` (`frameworkcode`,`tab`),
(-)a/installer/data/mysql/updatedatabase.pl (+16 lines)
Lines 4578-4583 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
4578
    SetVersion($DBversion);
4578
    SetVersion($DBversion);
4579
}
4579
}
4580
4580
4581
$DBversion = "3.06.00.XXX";
4582
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
4583
    $dbh->do("
4584
       ALTER TABLE  `marc_subfield_structure` ADD  `maxlength` INT( 4 ) NOT NULL DEFAULT  '9999';
4585
       ");
4586
       $dbh->do("
4587
       UPDATE `marc_subfield_structure` SET maxlength=24 WHERE tagfield='000';
4588
       ");
4589
       $dbh->do("
4590
       UPDATE `marc_subfield_structure` SET maxlength=40 WHERE tagfield='008';
4591
       ");
4592
    print "Upgrade to $DBversion done (Add new field maxlength to marc_subfield_structure)\n";
4593
    SetVersion($DBversion);
4594
}
4595
4596
4581
=head1 FUNCTIONS
4597
=head1 FUNCTIONS
4582
4598
4583
=head2 DropAllForeignKeys($table)
4599
=head2 DropAllForeignKeys($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt (-1 / +2 lines)
Lines 108-114 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="hidden[% loo.row %]">hidden</label><input type="text" id="hidden[% loo.row %]" name="hidden" value="[% loo.hidden %]" size="2" /> (see online help)</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>
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>
114
                <li><label for="kohafield[% loo.row %]">Koha link:</label>[% loo.kohafield %]</li>
115
                <li><label for="kohafield[% loo.row %]">Koha link:</label>[% loo.kohafield %]</li>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/marc_subfields_structure.tt (-1 / +10 lines)
Lines 83-88 To edit the subfields associated with the tag, click 'Subfields' to the right of Link Here
83
</ul>
83
</ul>
84
</li>
84
</li>
85
</ul>
85
</ul>
86
87
<ul>
88
	<li>Max length
89
<ul>
90
	<li>Define the max characters to fill.</li>
91
</ul>
92
</li>
93
</ul>
94
86
<ul>
95
<ul>
87
	<li>Is a url
96
	<li>Is a url
88
<ul>
97
<ul>
Lines 90-95 To edit the subfields associated with the tag, click 'Subfields' to the right of Link Here
90
</ul>
99
</ul>
91
</li>
100
</li>
92
</ul>
101
</ul>
102
93
<ul>
103
<ul>
94
	<li>Link
104
	<li>Link
95
<ul>
105
<ul>
96
- 

Return to bug 7263