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

(-)a/C4/Biblio.pm (-5 / +7 lines)
Lines 906-930 sub GetMarcStructure { Link Here
906
906
907
    my $dbh = C4::Context->dbh;
907
    my $dbh = C4::Context->dbh;
908
    my $sth = $dbh->prepare(
908
    my $sth = $dbh->prepare(
909
        "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable,ind1_defaultvalue,ind2_defaultvalue
909
        "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable,important,ind1_defaultvalue,ind2_defaultvalue
910
        FROM marc_tag_structure 
910
        FROM marc_tag_structure 
911
        WHERE frameworkcode=? 
911
        WHERE frameworkcode=? 
912
        ORDER BY tagfield"
912
        ORDER BY tagfield"
913
    );
913
    );
914
    $sth->execute($frameworkcode);
914
    $sth->execute($frameworkcode);
915
    my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue );
915
    my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue );
916
916
917
    while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) {
917
    while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) {
918
        $res->{$tag}->{lib}        = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
918
        $res->{$tag}->{lib}        = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
919
        $res->{$tag}->{tab}        = "";
919
        $res->{$tag}->{tab}        = "";
920
        $res->{$tag}->{mandatory}  = $mandatory;
920
        $res->{$tag}->{mandatory}  = $mandatory;
921
        $res->{$tag}->{important}  = $important;
921
        $res->{$tag}->{repeatable} = $repeatable;
922
        $res->{$tag}->{repeatable} = $repeatable;
922
    $res->{$tag}->{ind1_defaultvalue} = $ind1_defaultvalue;
923
    $res->{$tag}->{ind1_defaultvalue} = $ind1_defaultvalue;
923
    $res->{$tag}->{ind2_defaultvalue} = $ind2_defaultvalue;
924
    $res->{$tag}->{ind2_defaultvalue} = $ind2_defaultvalue;
924
    }
925
    }
925
926
926
    $sth = $dbh->prepare(
927
    $sth = $dbh->prepare(
927
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength
928
        "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength,important
928
         FROM   marc_subfield_structure 
929
         FROM   marc_subfield_structure 
929
         WHERE  frameworkcode=? 
930
         WHERE  frameworkcode=? 
930
         ORDER BY tagfield,tagsubfield
931
         ORDER BY tagfield,tagsubfield
Lines 948-960 sub GetMarcStructure { Link Here
948
    while (
949
    while (
949
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
950
        (   $tag,          $subfield,      $liblibrarian, $libopac, $tab,    $mandatory, $repeatable, $authorised_value,
950
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue,
951
            $authtypecode, $value_builder, $kohafield,    $seealso, $hidden, $isurl,     $link,       $defaultvalue,
951
            $maxlength
952
            $maxlength, $important
952
        )
953
        )
953
        = $sth->fetchrow
954
        = $sth->fetchrow
954
      ) {
955
      ) {
955
        $res->{$tag}->{$subfield}->{lib}              = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
956
        $res->{$tag}->{$subfield}->{lib}              = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
956
        $res->{$tag}->{$subfield}->{tab}              = $tab;
957
        $res->{$tag}->{$subfield}->{tab}              = $tab;
957
        $res->{$tag}->{$subfield}->{mandatory}        = $mandatory;
958
        $res->{$tag}->{$subfield}->{mandatory}        = $mandatory;
959
        $res->{$tag}->{$subfield}->{important}        = $important;
958
        $res->{$tag}->{$subfield}->{repeatable}       = $repeatable;
960
        $res->{$tag}->{$subfield}->{repeatable}       = $repeatable;
959
        $res->{$tag}->{$subfield}->{authorised_value} = $authorised_value;
961
        $res->{$tag}->{$subfield}->{authorised_value} = $authorised_value;
960
        $res->{$tag}->{$subfield}->{authtypecode}     = $authtypecode;
962
        $res->{$tag}->{$subfield}->{authtypecode}     = $authtypecode;
(-)a/admin/marc_subfields_structure.pl (-3 / +9 lines)
Lines 191-196 if ( $op eq 'add_form' ) { Link Here
191
        $row_data{isurl}             = $data->{isurl};
191
        $row_data{isurl}             = $data->{isurl};
192
        $row_data{row}               = $i;
192
        $row_data{row}               = $i;
193
        $row_data{link}              = $data->{'link'};
193
        $row_data{link}              = $data->{'link'};
194
        $row_data{important}         = $data->{important};
194
        push( @loop_data, \%row_data );
195
        push( @loop_data, \%row_data );
195
        $i++;
196
        $i++;
196
    }
197
    }
Lines 215-220 if ( $op eq 'add_form' ) { Link Here
215
    $row_data{authtypes}         = \@authtypes;
216
    $row_data{authtypes}         = \@authtypes;
216
    $row_data{link}              = "";
217
    $row_data{link}              = "";
217
    $row_data{row}               = $i;
218
    $row_data{row}               = $i;
219
    $row_data{important}         = "";
218
    push( @loop_data, \%row_data );
220
    push( @loop_data, \%row_data );
219
221
220
    $template->param( 'use_heading_flags_p'      => 1 );
222
    $template->param( 'use_heading_flags_p'      => 1 );
Lines 238-248 elsif ( $op eq 'add_validate' ) { Link Here
238
#                                     values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
240
#                                     values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
239
#     );
241
#     );
240
    my $sth_insert = $dbh->prepare(qq{
242
    my $sth_insert = $dbh->prepare(qq{
241
        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)
243
        insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,important,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue,maxlength)
242
        values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
244
        values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
243
    });
245
    });
244
    my $sth_update = $dbh->prepare(qq{
246
    my $sth_update = $dbh->prepare(qq{
245
        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=?
247
        update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, important=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?,  link=?, defaultvalue=?, maxlength=?
246
        where tagfield=? and tagsubfield=? and frameworkcode=?
248
        where tagfield=? and tagsubfield=? and frameworkcode=?
247
    });
249
    });
248
    my @tagsubfield       = $input->multi_param('tagsubfield');
250
    my @tagsubfield       = $input->multi_param('tagsubfield');
Lines 268-273 elsif ( $op eq 'add_validate' ) { Link Here
268
        my $libopac          = $libopac[$i];
270
        my $libopac          = $libopac[$i];
269
        my $repeatable       = $input->param("repeatable$i") ? 1 : 0;
271
        my $repeatable       = $input->param("repeatable$i") ? 1 : 0;
270
        my $mandatory        = $input->param("mandatory$i") ? 1 : 0;
272
        my $mandatory        = $input->param("mandatory$i") ? 1 : 0;
273
        my $important        = $input->param("important$i") ? 1 : 0;
271
        my $kohafield        = $kohafield[$i];
274
        my $kohafield        = $kohafield[$i];
272
        my $tab              = $tab[$i];
275
        my $tab              = $tab[$i];
273
        my $seealso          = $seealso[$i];
276
        my $seealso          = $seealso[$i];
Lines 289-294 elsif ( $op eq 'add_validate' ) { Link Here
289
                    $libopac,
292
                    $libopac,
290
                    $repeatable,
293
                    $repeatable,
291
                    $mandatory,
294
                    $mandatory,
295
                    $important,
292
                    $kohafield,
296
                    $kohafield,
293
                    $tab,
297
                    $tab,
294
                    $seealso,
298
                    $seealso,
Lines 320-325 elsif ( $op eq 'add_validate' ) { Link Here
320
                    $libopac,
324
                    $libopac,
321
                    $repeatable,
325
                    $repeatable,
322
                    $mandatory,
326
                    $mandatory,
327
                    $important,
323
                    $kohafield,
328
                    $kohafield,
324
                    $tab,
329
                    $tab,
325
                    $seealso,
330
                    $seealso,
Lines 402-407 else { # DEFAULT Link Here
402
        $row_data{kohafield}        = $results->[$i]{'kohafield'};
407
        $row_data{kohafield}        = $results->[$i]{'kohafield'};
403
        $row_data{repeatable}       = $results->[$i]{'repeatable'};
408
        $row_data{repeatable}       = $results->[$i]{'repeatable'};
404
        $row_data{mandatory}        = $results->[$i]{'mandatory'};
409
        $row_data{mandatory}        = $results->[$i]{'mandatory'};
410
        $row_data{important}        = $results->[$i]{'important'};
405
        $row_data{tab}              = $results->[$i]{'tab'};
411
        $row_data{tab}              = $results->[$i]{'tab'};
406
        $row_data{seealso}          = $results->[$i]{'seealso'};
412
        $row_data{seealso}          = $results->[$i]{'seealso'};
407
        $row_data{authorised_value} = $results->[$i]{'authorised_value'};
413
        $row_data{authorised_value} = $results->[$i]{'authorised_value'};
(-)a/admin/marctagstructure.pl (-4 / +12 lines)
Lines 89-95 if ($op eq 'add_form') { Link Here
89
	#---- if primkey exists, it's a modify action, so read values to modify...
89
	#---- if primkey exists, it's a modify action, so read values to modify...
90
	my $data;
90
	my $data;
91
	if ($searchfield) {
91
	if ($searchfield) {
92
        $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?");
92
        $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,important,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?");
93
		$sth->execute($searchfield,$frameworkcode);
93
		$sth->execute($searchfield,$frameworkcode);
94
		$data=$sth->fetchrow_hashref;
94
		$data=$sth->fetchrow_hashref;
95
	}
95
	}
Lines 108-113 if ($op eq 'add_form') { Link Here
108
            repeatable => $data->{'repeatable'},
108
            repeatable => $data->{'repeatable'},
109
            mandatory => $data->{'mandatory'},
109
            mandatory => $data->{'mandatory'},
110
            authorised_value => $data->{authorised_value},
110
            authorised_value => $data->{authorised_value},
111
            important => $data->{'important'},
111
            ind1_defaultvalue => $data->{'ind1_defaultvalue'},
112
            ind1_defaultvalue => $data->{'ind1_defaultvalue'},
112
            ind2_defaultvalue => $data->{'ind2_defaultvalue'},
113
            ind2_defaultvalue => $data->{'ind2_defaultvalue'},
113
			frameworkcode => $frameworkcode,
114
			frameworkcode => $frameworkcode,
Lines 121-137 if ($op eq 'add_form') { Link Here
121
	my $libopac          = $input->param('libopac');
122
	my $libopac          = $input->param('libopac');
122
	my $repeatable       = $input->param('repeatable') ? 1 : 0;
123
	my $repeatable       = $input->param('repeatable') ? 1 : 0;
123
	my $mandatory        = $input->param('mandatory')  ? 1 : 0;
124
	my $mandatory        = $input->param('mandatory')  ? 1 : 0;
125
	my $important        = $input->param('important')  ? 1 : 0;
124
	my $authorised_value = $input->param('authorised_value');
126
	my $authorised_value = $input->param('authorised_value');
125
    my $ind1_defaultvalue = $input->param('ind1_defaultvalue');
127
    my $ind1_defaultvalue = $input->param('ind1_defaultvalue');
126
    my $ind2_defaultvalue = $input->param('ind2_defaultvalue');
128
    my $ind2_defaultvalue = $input->param('ind2_defaultvalue');
127
    if ($input->param('modif')) {
129
    if ($input->param('modif')) {
128
        $sth = $dbh->prepare(
130
        $sth = $dbh->prepare(
129
        "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=?, ind1_defaultvalue=?, ind2_defaultvalue=? WHERE frameworkcode=? AND tagfield=?"
131
        "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,important=? ,authorised_value=?, ind1_defaultvalue=?, ind2_defaultvalue=? WHERE frameworkcode=? AND tagfield=?"
130
        );
132
        );
131
        $sth->execute(  $liblibrarian,
133
        $sth->execute(  $liblibrarian,
132
                        $libopac,
134
                        $libopac,
133
                        $repeatable,
135
                        $repeatable,
134
                        $mandatory,
136
                        $mandatory,
137
                        $important,
135
                        $authorised_value,
138
                        $authorised_value,
136
                        $ind1_defaultvalue,
139
                        $ind1_defaultvalue,
137
                        $ind2_defaultvalue,
140
                        $ind2_defaultvalue,
Lines 140-152 if ($op eq 'add_form') { Link Here
140
        );
143
        );
141
    } else {
144
    } else {
142
        $sth = $dbh->prepare(
145
        $sth = $dbh->prepare(
143
        "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue,frameworkcode) values (?,?,?,?,?,?,?,?,?)"
146
        "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,important,authorised_value,ind1_defaultvalue,ind2_defaultvalue,frameworkcode) values (?,?,?,?,?,?,?,?,?,?)"
144
        );
147
        );
145
        $sth->execute($tagfield,
148
        $sth->execute($tagfield,
146
                      $liblibrarian,
149
                      $liblibrarian,
147
                      $libopac,
150
                      $libopac,
148
                      $repeatable,
151
                      $repeatable,
149
                      $mandatory,
152
                      $mandatory,
153
                      $important,
150
                      $authorised_value,
154
                      $authorised_value,
151
                      $ind1_defaultvalue,
155
                      $ind1_defaultvalue,
152
                      $ind2_defaultvalue,
156
                      $ind2_defaultvalue,
Lines 222-227 if ($op eq 'add_form') { Link Here
222
		              marc_tag_structure.libopac as mts_libopac,
226
		              marc_tag_structure.libopac as mts_libopac,
223
		              marc_tag_structure.repeatable as mts_repeatable,
227
		              marc_tag_structure.repeatable as mts_repeatable,
224
		              marc_tag_structure.mandatory as mts_mandatory,
228
		              marc_tag_structure.mandatory as mts_mandatory,
229
                      marc_tag_structure.important as mts_important,
225
		              marc_tag_structure.authorised_value as mts_authorized_value,
230
		              marc_tag_structure.authorised_value as mts_authorized_value,
226
                  marc_tag_structure.ind1_defaultvalue as mts_ind1_defaultvalue,
231
                  marc_tag_structure.ind1_defaultvalue as mts_ind1_defaultvalue,
227
                  marc_tag_structure.ind1_defaultvalue as mts_ind2_defaultvalue,
232
                  marc_tag_structure.ind1_defaultvalue as mts_ind2_defaultvalue,
Lines 245-250 if ($op eq 'add_form') { Link Here
245
			$row_data{liblibrarian}     = $results[$i]->{'mts_liblibrarian'};
250
			$row_data{liblibrarian}     = $results[$i]->{'mts_liblibrarian'};
246
			$row_data{repeatable}       = $results[$i]->{'mts_repeatable'};
251
			$row_data{repeatable}       = $results[$i]->{'mts_repeatable'};
247
			$row_data{mandatory}        = $results[$i]->{'mts_mandatory'};
252
			$row_data{mandatory}        = $results[$i]->{'mts_mandatory'};
253
            $row_data{important}        = $results[$i]->{'mts_important'};
248
			$row_data{authorised_value} = $results[$i]->{'mts_authorised_value'};
254
			$row_data{authorised_value} = $results[$i]->{'mts_authorised_value'};
249
            $row_data{ind1_defaultvalue} = $results[$i]->{'mts_ind1_defaultvalue'};
255
            $row_data{ind1_defaultvalue} = $results[$i]->{'mts_ind1_defaultvalue'};
250
            $row_data{ind2_defaultvalue} = $results[$i]->{'mts_ind2_defaultvalue'};
256
            $row_data{ind2_defaultvalue} = $results[$i]->{'mts_ind2_defaultvalue'};
Lines 260-265 if ($op eq 'add_form') { Link Here
260
				$subfield_data{kohafield}        = $results[$j]->{'kohafield'};
266
				$subfield_data{kohafield}        = $results[$j]->{'kohafield'};
261
				$subfield_data{repeatable}       = $results[$j]->{'repeatable'};
267
				$subfield_data{repeatable}       = $results[$j]->{'repeatable'};
262
				$subfield_data{mandatory}        = $results[$j]->{'mandatory'};
268
				$subfield_data{mandatory}        = $results[$j]->{'mandatory'};
269
                $subfield_data{important}        = $results[$j]->{'important'};
263
				$subfield_data{tab}              = $results[$j]->{'tab'};
270
				$subfield_data{tab}              = $results[$j]->{'tab'};
264
				$subfield_data{seealso}          = $results[$j]->{'seealso'};
271
				$subfield_data{seealso}          = $results[$j]->{'seealso'};
265
				$subfield_data{authorised_value} = $results[$j]->{'authorised_value'};
272
				$subfield_data{authorised_value} = $results[$j]->{'authorised_value'};
Lines 292-297 if ($op eq 'add_form') { Link Here
292
			$row_data{liblibrarian}     = $results->[$i]{'liblibrarian'};
299
			$row_data{liblibrarian}     = $results->[$i]{'liblibrarian'};
293
			$row_data{repeatable}       = $results->[$i]{'repeatable'};
300
			$row_data{repeatable}       = $results->[$i]{'repeatable'};
294
			$row_data{mandatory}        = $results->[$i]{'mandatory'};
301
			$row_data{mandatory}        = $results->[$i]{'mandatory'};
302
            $row_data{important}        = $results->[$i]{'important'};
295
			$row_data{authorised_value} = $results->[$i]{'authorised_value'};
303
			$row_data{authorised_value} = $results->[$i]{'authorised_value'};
296
            $row_data{ind1_defaultvalue} = $results->[$i]{'ind1_defaultvalue'};
304
            $row_data{ind1_defaultvalue} = $results->[$i]{'ind1_defaultvalue'};
297
            $row_data{ind2_defaultvalue} = $results->[$i]{'ind2_defaultvalue'};
305
            $row_data{ind2_defaultvalue} = $results->[$i]{'ind2_defaultvalue'};
Lines 327-333 output_html_with_http_headers $input, $cookie, $template->output; Link Here
327
sub StringSearch  {
335
sub StringSearch  {
328
	my ($searchstring,$frameworkcode)=@_;
336
	my ($searchstring,$frameworkcode)=@_;
329
	my $sth = C4::Context->dbh->prepare("
337
	my $sth = C4::Context->dbh->prepare("
330
    SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue
338
    SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,important,ind1_defaultvalue,ind2_defaultvalue
331
     FROM  marc_tag_structure
339
     FROM  marc_tag_structure
332
     WHERE (tagfield >= ? and frameworkcode=?)
340
     WHERE (tagfield >= ? and frameworkcode=?)
333
    ORDER BY tagfield
341
    ORDER BY tagfield
(-)a/cataloguing/addbiblio.pl (-2 / +7 lines)
Lines 312-317 sub create_input { Link Here
312
        marc_lib       => $tagslib->{$tag}->{$subfield}->{lib},
312
        marc_lib       => $tagslib->{$tag}->{$subfield}->{lib},
313
        tag_mandatory  => $tagslib->{$tag}->{mandatory},
313
        tag_mandatory  => $tagslib->{$tag}->{mandatory},
314
        mandatory      => $tagslib->{$tag}->{$subfield}->{mandatory},
314
        mandatory      => $tagslib->{$tag}->{$subfield}->{mandatory},
315
        important      => $tagslib->{$tag}->{$subfield}->{important},
315
        repeatable     => $tagslib->{$tag}->{$subfield}->{repeatable},
316
        repeatable     => $tagslib->{$tag}->{$subfield}->{repeatable},
316
        kohafield      => $tagslib->{$tag}->{$subfield}->{kohafield},
317
        kohafield      => $tagslib->{$tag}->{$subfield}->{kohafield},
317
        index          => $index_tag,
318
        index          => $index_tag,
Lines 325-337 sub create_input { Link Here
325
        $subfield_data{z3950_mandatory} = $mandatory_z3950->{$tag.$subfield};
326
        $subfield_data{z3950_mandatory} = $mandatory_z3950->{$tag.$subfield};
326
    }
327
    }
327
    # Subfield is hidden depending of hidden and mandatory flag, and is always
328
    # Subfield is hidden depending of hidden and mandatory flag, and is always
328
    # shown if it contains anything or if its field is mandatory.
329
    # shown if it contains anything or if its field is mandatory or important.
329
    my $tdef = $tagslib->{$tag};
330
    my $tdef = $tagslib->{$tag};
330
    $subfield_data{visibility} = "display:none;"
331
    $subfield_data{visibility} = "display:none;"
331
        if $tdef->{$subfield}->{hidden} % 2 == 1 &&
332
        if $tdef->{$subfield}->{hidden} % 2 == 1 &&
332
           $value eq '' &&
333
           $value eq '' &&
333
           !$tdef->{$subfield}->{mandatory} &&
334
           !$tdef->{$subfield}->{mandatory} &&
334
           !$tdef->{mandatory};
335
           !$tdef->{mandatory} &&
336
           !$tdef->{$subfield}->{important} &&
337
           !$tdef->{important};
335
    # expand all subfields of 773 if there is a host item provided in the input
338
    # expand all subfields of 773 if there is a host item provided in the input
336
    $subfield_data{visibility} ="" if ($tag eq 773 and $cgi->param('hostitemnumber'));
339
    $subfield_data{visibility} ="" if ($tag eq 773 and $cgi->param('hostitemnumber'));
337
340
Lines 611-616 sub build_tabs { Link Here
611
                            tag_lib       => $tagslib->{$tag}->{lib},
614
                            tag_lib       => $tagslib->{$tag}->{lib},
612
                            repeatable       => $tagslib->{$tag}->{repeatable},
615
                            repeatable       => $tagslib->{$tag}->{repeatable},
613
                            mandatory       => $tagslib->{$tag}->{mandatory},
616
                            mandatory       => $tagslib->{$tag}->{mandatory},
617
                            important       => $tagslib->{$tag}->{important},
614
                            subfield_loop => \@subfields_data,
618
                            subfield_loop => \@subfields_data,
615
                            fixedfield    => $tag < 10?1:0,
619
                            fixedfield    => $tag < 10?1:0,
616
                            random        => CreateKey,
620
                            random        => CreateKey,
Lines 657-662 sub build_tabs { Link Here
657
                        tag_lib          => $tagslib->{$tag}->{lib},
661
                        tag_lib          => $tagslib->{$tag}->{lib},
658
                        repeatable       => $tagslib->{$tag}->{repeatable},
662
                        repeatable       => $tagslib->{$tag}->{repeatable},
659
                        mandatory       => $tagslib->{$tag}->{mandatory},
663
                        mandatory       => $tagslib->{$tag}->{mandatory},
664
                        important       => $tagslib->{$tag}->{important},
660
                        indicator1       => ( $indicator1 || $tagslib->{$tag}->{ind1_defaultvalue} ), #if not set, try to load the default value
665
                        indicator1       => ( $indicator1 || $tagslib->{$tag}->{ind1_defaultvalue} ), #if not set, try to load the default value
661
                        indicator2       => ( $indicator2 || $tagslib->{$tag}->{ind2_defaultvalue} ), #use short-circuit operator for efficiency
666
                        indicator2       => ( $indicator2 || $tagslib->{$tag}->{ind2_defaultvalue} ), #use short-circuit operator for efficiency
662
                        subfield_loop    => \@subfields_data,
667
                        subfield_loop    => \@subfields_data,
(-)a/installer/data/mysql/kohastructure.sql (+2 lines)
Lines 1110-1115 CREATE TABLE `marc_subfield_structure` ( Link Here
1110
  `libopac` varchar(255) NOT NULL default '',
1110
  `libopac` varchar(255) NOT NULL default '',
1111
  `repeatable` tinyint(4) NOT NULL default 0,
1111
  `repeatable` tinyint(4) NOT NULL default 0,
1112
  `mandatory` tinyint(4) NOT NULL default 0,
1112
  `mandatory` tinyint(4) NOT NULL default 0,
1113
  `important` tinyint(4) NOT NULL DEFAULT '0',
1113
  `kohafield` varchar(40) default NULL,
1114
  `kohafield` varchar(40) default NULL,
1114
  `tab` tinyint(1) default NULL,
1115
  `tab` tinyint(1) default NULL,
1115
  `authorised_value` varchar(32) default NULL,
1116
  `authorised_value` varchar(32) default NULL,
Lines 1144-1149 CREATE TABLE `marc_tag_structure` ( Link Here
1144
  `ind1_defaultvalue` varchar(1) NOT NULL default '',
1145
  `ind1_defaultvalue` varchar(1) NOT NULL default '',
1145
  `ind2_defaultvalue` varchar(1) NOT NULL default '',
1146
  `ind2_defaultvalue` varchar(1) NOT NULL default '',
1146
  `frameworkcode` varchar(4) NOT NULL default '',
1147
  `frameworkcode` varchar(4) NOT NULL default '',
1148
  `important` tinyint(4) NOT NULL DEFAULT '0',
1147
  PRIMARY KEY  (`frameworkcode`,`tagfield`)
1149
  PRIMARY KEY  (`frameworkcode`,`tagfield`)
1148
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1150
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1149
1151
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt (+9 lines)
Lines 87-92 Link Here
87
                                <input type="checkbox" id="mandatory[% loo.row %]" name="mandatory[% loo.row %]" value="1" />
87
                                <input type="checkbox" id="mandatory[% loo.row %]" name="mandatory[% loo.row %]" value="1" />
88
                            [% END %]
88
                            [% END %]
89
                        </li>
89
                        </li>
90
                        <li>
91
                            <label for="important[% loo.row %]">Important: </label>
92
                            [% IF loo.important %]
93
                                <input type="checkbox" id="important[% loo.row %]" name="important[% loo.row %]" checked="checked" value="1" />
94
                            [% ELSE %]
95
                                <input type="checkbox" id="important[% loo.row %]" name="important[% loo.row %]" value="1" />
96
                            [% END %]
97
                        </li>
90
                        <li><label for="tab[% loo.row %]">Managed in tab: </label>
98
                        <li><label for="tab[% loo.row %]">Managed in tab: </label>
91
                            <select name="tab" tabindex="" size="1" id="tab[% loo.row %]">
99
                            <select name="tab" tabindex="" size="1" id="tab[% loo.row %]">
92
                            [%- IF ( loo.tab ==  -1 ) -%]
100
                            [%- IF ( loo.tab ==  -1 ) -%]
Lines 281-286 Link Here
281
            [% IF ( loo.kohafield ) %] | Koha field: [% loo.kohafield %], [% END %]
289
            [% IF ( loo.kohafield ) %] | Koha field: [% loo.kohafield %], [% END %]
282
            [% IF ( loo.repeatable ) %]Repeatable, [% ELSE %]Not repeatable,[% END %]
290
            [% IF ( loo.repeatable ) %]Repeatable, [% ELSE %]Not repeatable,[% END %]
283
            [% IF ( loo.mandatory ) %]Mandatory, [% ELSE %]Not mandatory,[% END %]
291
            [% IF ( loo.mandatory ) %]Mandatory, [% ELSE %]Not mandatory,[% END %]
292
            [% IF ( loo.important ) %]Important, [% ELSE %]Not important,[% END %]
284
            [% IF ( loo.seealso ) %] | See Also: [% loo.seealso %],[% END %]
293
            [% IF ( loo.seealso ) %] | See Also: [% loo.seealso %],[% END %]
285
            [% IF ( loo.hidden ) %]hidden,[% END %]
294
            [% IF ( loo.hidden ) %]hidden,[% END %]
286
            [% IF ( loo.isurl ) %]is a URL,[% END %]
295
            [% IF ( loo.isurl ) %]is a URL,[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt (+21 lines)
Lines 92-97 Link Here
92
            [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value ) %]
92
            [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value ) %]
93
        </select>
93
        </select>
94
        (if you select a value here, the indicators will be limited to the authorized value list)</li>
94
        (if you select a value here, the indicators will be limited to the authorized value list)</li>
95
    <li><label for="important">Important: </label>
96
        [% IF ( important ) %]
97
            <input type="checkbox" name="important" id="important" value="1" checked="checked" />
98
        [% ELSE %]
99
            <input type="checkbox" name="important" id="important" value="1" />
100
        [% END %]
101
    </li>
102
    <li><label for="authorised_value">Authorized value: </label>[% authorised_value %] (if you select a value here, the indicators will be limited to the authorized value list)</li>
95
</ol></fieldset> 
103
</ol></fieldset> 
96
    <fieldset class="action">
104
    <fieldset class="action">
97
        <input type="submit" value="Save changes" />
105
        <input type="submit" value="Save changes" />
Lines 176-181 Link Here
176
        <th>Lib</th>
184
        <th>Lib</th>
177
        <th>Repeatable</th>
185
        <th>Repeatable</th>
178
        <th>Mandatory</th>
186
        <th>Mandatory</th>
187
        <th>Important</th>
179
        <th>Auth value</th>
188
        <th>Auth value</th>
180
        <th>Indicator 1</th>
189
        <th>Indicator 1</th>
181
        <th>Indicator 2</th>
190
        <th>Indicator 2</th>
Lines 198-203 Link Here
198
            </td>
207
            </td>
199
            <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
208
            <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
200
            <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
209
            <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
210
            <td>[% IF ( loo.important ) %]Yes[% ELSE %]No[% END %]</td>
201
            <td>[% loo.authorised_value %]</td>
211
            <td>[% loo.authorised_value %]</td>
202
            <td>[% loo.ind1_defaultvalue %]</td>
212
            <td>[% loo.ind1_defaultvalue %]</td>
203
            <td>[% loo.ind2_defaultvalue %]</td>
213
            <td>[% loo.ind2_defaultvalue %]</td>
Lines 213-218 Link Here
213
                </div>
223
                </div>
214
            </td>
224
            </td>
215
        </tr>
225
        </tr>
226
        [% IF ( loop.odd ) %]<tr>[% ELSE %]<tr class="highlight">[% END %]
227
            <td>&nbsp;</td>
228
            <td colspan="7">
229
                [% FOREACH subfield IN loo.subfields %]
230
                    <p style="text-indent: 5em">Tab:[% subfield.tab %] | $[% subfield.tagsubfield %]
231
                            [% subfield.liblibrarian %] [% IF ( subfield.kohafield ) %][% subfield.kohafield %][% END %][% IF ( subfield.repeatable ) %], repeatable[% END %][% IF ( subfield.mandatory ) %], Mandatory[% END %][% IF ( subfield.important ) %], Important[% END %][% IF ( subfield.seealso ) %], See [% subfield.seealso %][% END %][% IF ( subfield.authorised_value ) %], [% subfield.authorised_value %][% END %][% IF ( subfield.authtypecode ) %], [% subfield.authtypecode %][% END %][% IF ( subfield.value_builder ) %], [% subfield.value_builder %][% END %]
232
                    </p>
233
                [% END %]
234
            </td>
235
        </tr>
216
        [% END %]
236
        [% END %]
217
    [% ELSE %]
237
    [% ELSE %]
218
    [% FOREACH loo IN loop %]
238
    [% FOREACH loo IN loop %]
Lines 221-226 Link Here
221
        <td>[% loo.liblibrarian %]</td>
241
        <td>[% loo.liblibrarian %]</td>
222
        <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
242
        <td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
223
        <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
243
        <td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
244
        <td>[% IF ( loo.important ) %]Yes[% ELSE %]No[% END %]</td>
224
        <td>[% loo.authorised_value %]</td>
245
        <td>[% loo.authorised_value %]</td>
225
        <td>[% loo.ind1_defaultvalue %]</td>
246
        <td>[% loo.ind1_defaultvalue %]</td>
226
        <td>[% loo.ind2_defaultvalue %]</td>
247
        <td>[% loo.ind2_defaultvalue %]</td>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt (-4 / +121 lines)
Lines 247-253 function AreMandatoriesNotOk(){ Link Here
247
    var flag=0;
247
    var flag=0;
248
    var tabflag= new Array();  
248
    var tabflag= new Array();  
249
    [% FOREACH BIG_LOO IN BIG_LOOP %]
249
    [% FOREACH BIG_LOO IN BIG_LOOP %]
250
    	[% FOREACH innerloo IN BIG_LOO.innerloop %]
250
        [% FOREACH innerloo IN BIG_LOO.innerloop %]
251
	        [% IF ( innerloo.mandatory ) %]
251
	        [% IF ( innerloo.mandatory ) %]
252
    	    	mandatoriesfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
252
    	    	mandatoriesfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
253
        	[% END %]
253
        	[% END %]
Lines 333-339 function AreMandatoriesNotOk(){ Link Here
333
    	
333
    	
334
    	if(isempty){
334
    	if(isempty){
335
    		flag = 1;
335
    		flag = 1;
336
                StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
336
            StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
337
    	}
337
    	}
338
    	
338
    	
339
    }
339
    }
Lines 352-357 function AreMandatoriesNotOk(){ Link Here
352
function Check(){
352
function Check(){
353
    var StrAlert = AreMandatoriesNotOk();
353
    var StrAlert = AreMandatoriesNotOk();
354
    if( ! StrAlert ){
354
    if( ! StrAlert ){
355
        var StrWarning = AreImportantsNotOk();
356
        if (StrWarning){
357
            var r=confirm(StrWarning);
358
            if (! r){
359
                return false;
360
            }
361
        }
355
        document.f.submit();
362
        document.f.submit();
356
        return true;
363
        return true;
357
    } else {
364
    } else {
Lines 361-366 function Check(){ Link Here
361
}
368
}
362
369
363
/** 
370
/** 
371
 * check if mandatory subfields are written
372
 */
373
function AreImportantsNotOk(){
374
    var importants = new Array();
375
    var importantsfields = new Array();
376
    var tab = new Array();
377
    var label = new Array();
378
    var flag=0;
379
    var tabflag= new Array();
380
    [% FOREACH BIG_LOO IN BIG_LOOP %]
381
    [% FOREACH innerloo IN BIG_LOO.innerloop %]
382
        [% IF ( innerloo.important ) %]
383
           importantsfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
384
        [% END %]
385
        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
386
            [% IF ( subfield_loo.important ) %]importants.push("[% subfield_loo.id %]");
387
                tab.push("[% subfield_loo.number %]");
388
                label.push("[% subfield_loo.marc_lib %]");
389
                [% END %]
390
            [% END %]
391
        [% END %]
392
    [% END %]
393
    var StrWarning = _("A few important fields are not filled:");
394
    StrWarning += "\n\n";
395
    for(var i=0,len=importants.length; i<len ; i++){
396
        var tag=importants[i].substr(4,3);
397
        var subfield=importants[i].substr(17,1);
398
        var tagnumber=importants[i].substr(19,importants[i].lastIndexOf("_")-19);
399
        tabflag[tag+subfield+tagnumber]=new Array();
400
        tabflag[tag+subfield+tagnumber][0]=0;
401
        if( ! document.getElementById(importants[i]).value){
402
            tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
403
            document.getElementById(importants[i]).setAttribute('class','subfield_not_filled');
404
            document.getElementById(importants[i]).focus();
405
            tabflag[tag+subfield+tagnumber][1]=label[i];
406
            tabflag[tag+subfield+tagnumber][2]=tab[i];
407
        } else {
408
            tabflag[tag+subfield+tagnumber][0] = 1;
409
        }
410
    }
411
    for (var tagsubfieldid in tabflag){
412
      if (tabflag[tagsubfieldid][0]==0){
413
        var tag=tagsubfieldid.substr(0,3);
414
        var subfield=tagsubfieldid.substr(3,1);
415
        StrWarning += "\t* "+_("tag ")+tag+_(" subfield ")+subfield+" "+tabflag[tagsubfieldid][1]+_(" in tab ")+tabflag[tagsubfieldid][2]+"\n";
416
        //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
417
        flag=1;
418
      }
419
    }
420
421
    /* Check for mandatories field(not subfields) */
422
    for(var i=0,len=importantsfields.length; i<len; i++){
423
        isempty  = true;
424
        arr      = importantsfields[i];
425
        divid    = "tag_" + arr[0] + "_" + arr[1];
426
        varegexp = new RegExp("^tag_" + arr[0] + "_code_");
427
428
        if(parseInt(arr[0]) >= 10){
429
           elem = document.getElementById(divid);
430
           eleminputs = elem.getElementsByTagName('input');
431
           for(var j=0,len2=eleminputs.length; j<len2; j++){
432
433
              if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
434
                 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
435
436
                   for( var k=0; k<len2; k++){
437
                        if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
438
                            isempty = false
439
                        }
440
                    }
441
442
                    elemselect = elem.getElementsByTagName('select');
443
                    for( var k=0; k<elemselect.length; k++){
444
                        if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
445
                           isempty = false
446
                        }
447
                    }
448
              }
449
           }
450
451
           elemtextareas = elem.getElementsByTagName('textarea');
452
           for(var j=0,len2=elemtextareas.length; j<len2; j++){
453
                // this bit assumes that the only textareas in this context would be for subfields
454
               if (elemtextareas[j].value) {
455
                   isempty = false;
456
               }
457
           }
458
       }else{
459
          isempty = false;
460
       }
461
462
       if(isempty){
463
          flag = 1;
464
          StrWarning += _("\t* Field ") + arr[0] + _(" is important, at least one of its subfields should be filled.") + "\n";
465
       }
466
    }
467
468
    StrWarning += "\n" + _("Are you sure you want to save?");
469
470
    if(flag){
471
        return StrWarning;
472
    } else {
473
        return flag;
474
    }
475
}
476
477
/**
364
 * check if z3950 mandatories are set or not
478
 * check if z3950 mandatories are set or not
365
 */
479
 */
366
function GetZ3950Terms(){
480
function GetZ3950Terms(){
Lines 671-677 function Changefwk() { Link Here
671
                [% UNLESS advancedMARCEditor %]
785
                [% UNLESS advancedMARCEditor %]
672
                    [% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
786
                    [% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
673
                        [% subfield_loo.marc_lib %]
787
                        [% subfield_loo.marc_lib %]
674
                        [% IF ( subfield_loo.mandatory ) %]<span class="mandatory_marker" title="This field is mandatory">*</span>[% END %]
788
                        [% IF ( subfield_loo.mandatory ) %]
789
                        <span class="mandatory_marker" title="This field is mandatory">*</span>
790
                        [% ELSIF ( subfield_loo.important ) %]
791
                        <span style="color:black" title="This field is important">*</span>
792
                        [% END %]
675
                    </span>
793
                    </span>
676
                    </label>
794
                    </label>
677
                [% END %]
795
                [% END %]
678
- 

Return to bug 8643