From 192d75a995727e0055d4d385e10bfad327378282 Mon Sep 17 00:00:00 2001
From: simith <simith@inlibro.com>
Date: Fri, 8 Aug 2014 15:04:49 -0400
Subject: [PATCH] Bug 8643: Add important constraint to marc subfields
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fix permits to add an "Important" option to the marc structure pages.
Testing:
I Apply the patch
II Run updatedatabase.pl
0) Define 100 as an "important" field ( Administration » MARC bibliographic framework » MARC structure ( Default Frameword) » Edit )
1) Define 100$a as an "important" subfield (Administration » MARC bibliographic framework » MARC structure (Default Frameword) » Subfield » Onglet a)
2) Edit a record to clear the field 100
3) Save the record.
4) Validate the following message:
A few important fields are not filled:
* tag 100 subfield a Nom de personne in tab
* Field 100 is important, at least one of its subfields should be filled.
Are you sure you want to save?
sponsored by the CCSR ( http://www.ccsr.qc.ca )
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Work as described. Fixed small conflict
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
---
C4/Biblio.pm | 12 +-
admin/marc_subfields_structure.pl | 12 +-
admin/marctagstructure.pl | 16 ++-
cataloguing/addbiblio.pl | 9 +-
installer/data/mysql/kohastructure.sql | 2 +
.../en/modules/admin/marc_subfields_structure.tt | 9 ++
.../prog/en/modules/admin/marctagstructure.tt | 21 ++++
.../prog/en/modules/cataloguing/addbiblio.tt | 124 ++++++++++++++++++++-
8 files changed, 188 insertions(+), 17 deletions(-)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index eaff256..e3dcb37 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -906,25 +906,26 @@ sub GetMarcStructure {
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare(
- "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable,ind1_defaultvalue,ind2_defaultvalue
+ "SELECT tagfield,liblibrarian,libopac,mandatory,repeatable,important,ind1_defaultvalue,ind2_defaultvalue
FROM marc_tag_structure
WHERE frameworkcode=?
ORDER BY tagfield"
);
$sth->execute($frameworkcode);
- my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue );
+ my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue );
- while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) {
+ while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) {
$res->{$tag}->{lib} = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
$res->{$tag}->{tab} = "";
$res->{$tag}->{mandatory} = $mandatory;
+ $res->{$tag}->{important} = $important;
$res->{$tag}->{repeatable} = $repeatable;
$res->{$tag}->{ind1_defaultvalue} = $ind1_defaultvalue;
$res->{$tag}->{ind2_defaultvalue} = $ind2_defaultvalue;
}
$sth = $dbh->prepare(
- "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength
+ "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength,important
FROM marc_subfield_structure
WHERE frameworkcode=?
ORDER BY tagfield,tagsubfield
@@ -948,13 +949,14 @@ sub GetMarcStructure {
while (
( $tag, $subfield, $liblibrarian, $libopac, $tab, $mandatory, $repeatable, $authorised_value,
$authtypecode, $value_builder, $kohafield, $seealso, $hidden, $isurl, $link, $defaultvalue,
- $maxlength
+ $maxlength, $important
)
= $sth->fetchrow
) {
$res->{$tag}->{$subfield}->{lib} = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
$res->{$tag}->{$subfield}->{tab} = $tab;
$res->{$tag}->{$subfield}->{mandatory} = $mandatory;
+ $res->{$tag}->{$subfield}->{important} = $important;
$res->{$tag}->{$subfield}->{repeatable} = $repeatable;
$res->{$tag}->{$subfield}->{authorised_value} = $authorised_value;
$res->{$tag}->{$subfield}->{authtypecode} = $authtypecode;
diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl
index eeef468..a23f25a 100755
--- a/admin/marc_subfields_structure.pl
+++ b/admin/marc_subfields_structure.pl
@@ -191,6 +191,7 @@ if ( $op eq 'add_form' ) {
$row_data{isurl} = $data->{isurl};
$row_data{row} = $i;
$row_data{link} = $data->{'link'};
+ $row_data{important} = $data->{important};
push( @loop_data, \%row_data );
$i++;
}
@@ -215,6 +216,7 @@ if ( $op eq 'add_form' ) {
$row_data{authtypes} = \@authtypes;
$row_data{link} = "";
$row_data{row} = $i;
+ $row_data{important} = "";
push( @loop_data, \%row_data );
$template->param( 'use_heading_flags_p' => 1 );
@@ -238,11 +240,11 @@ elsif ( $op eq 'add_validate' ) {
# values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
# );
my $sth_insert = $dbh->prepare(qq{
- insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue,maxlength)
- values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
+ 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)
+ values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
});
my $sth_update = $dbh->prepare(qq{
- update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=?, maxlength=?
+ 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=?
where tagfield=? and tagsubfield=? and frameworkcode=?
});
my @tagsubfield = $input->multi_param('tagsubfield');
@@ -268,6 +270,7 @@ elsif ( $op eq 'add_validate' ) {
my $libopac = $libopac[$i];
my $repeatable = $input->param("repeatable$i") ? 1 : 0;
my $mandatory = $input->param("mandatory$i") ? 1 : 0;
+ my $important = $input->param("important$i") ? 1 : 0;
my $kohafield = $kohafield[$i];
my $tab = $tab[$i];
my $seealso = $seealso[$i];
@@ -289,6 +292,7 @@ elsif ( $op eq 'add_validate' ) {
$libopac,
$repeatable,
$mandatory,
+ $important,
$kohafield,
$tab,
$seealso,
@@ -320,6 +324,7 @@ elsif ( $op eq 'add_validate' ) {
$libopac,
$repeatable,
$mandatory,
+ $important,
$kohafield,
$tab,
$seealso,
@@ -402,6 +407,7 @@ else { # DEFAULT
$row_data{kohafield} = $results->[$i]{'kohafield'};
$row_data{repeatable} = $results->[$i]{'repeatable'};
$row_data{mandatory} = $results->[$i]{'mandatory'};
+ $row_data{important} = $results->[$i]{'important'};
$row_data{tab} = $results->[$i]{'tab'};
$row_data{seealso} = $results->[$i]{'seealso'};
$row_data{authorised_value} = $results->[$i]{'authorised_value'};
diff --git a/admin/marctagstructure.pl b/admin/marctagstructure.pl
index 43de4fb..ea2a82f 100755
--- a/admin/marctagstructure.pl
+++ b/admin/marctagstructure.pl
@@ -89,7 +89,7 @@ if ($op eq 'add_form') {
#---- if primkey exists, it's a modify action, so read values to modify...
my $data;
if ($searchfield) {
- $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?");
+ $sth=$dbh->prepare("select tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,important,ind1_defaultvalue,ind2_defaultvalue from marc_tag_structure where tagfield=? and frameworkcode=?");
$sth->execute($searchfield,$frameworkcode);
$data=$sth->fetchrow_hashref;
}
@@ -108,6 +108,7 @@ if ($op eq 'add_form') {
repeatable => $data->{'repeatable'},
mandatory => $data->{'mandatory'},
authorised_value => $data->{authorised_value},
+ important => $data->{'important'},
ind1_defaultvalue => $data->{'ind1_defaultvalue'},
ind2_defaultvalue => $data->{'ind2_defaultvalue'},
frameworkcode => $frameworkcode,
@@ -121,17 +122,19 @@ if ($op eq 'add_form') {
my $libopac = $input->param('libopac');
my $repeatable = $input->param('repeatable') ? 1 : 0;
my $mandatory = $input->param('mandatory') ? 1 : 0;
+ my $important = $input->param('important') ? 1 : 0;
my $authorised_value = $input->param('authorised_value');
my $ind1_defaultvalue = $input->param('ind1_defaultvalue');
my $ind2_defaultvalue = $input->param('ind2_defaultvalue');
if ($input->param('modif')) {
$sth = $dbh->prepare(
- "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,authorised_value=?, ind1_defaultvalue=?, ind2_defaultvalue=? WHERE frameworkcode=? AND tagfield=?"
+ "UPDATE marc_tag_structure SET liblibrarian=? ,libopac=? ,repeatable=? ,mandatory=? ,important=? ,authorised_value=?, ind1_defaultvalue=?, ind2_defaultvalue=? WHERE frameworkcode=? AND tagfield=?"
);
$sth->execute( $liblibrarian,
$libopac,
$repeatable,
$mandatory,
+ $important,
$authorised_value,
$ind1_defaultvalue,
$ind2_defaultvalue,
@@ -140,13 +143,14 @@ if ($op eq 'add_form') {
);
} else {
$sth = $dbh->prepare(
- "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue,frameworkcode) values (?,?,?,?,?,?,?,?,?)"
+ "INSERT INTO marc_tag_structure (tagfield,liblibrarian,libopac,repeatable,mandatory,important,authorised_value,ind1_defaultvalue,ind2_defaultvalue,frameworkcode) values (?,?,?,?,?,?,?,?,?,?)"
);
$sth->execute($tagfield,
$liblibrarian,
$libopac,
$repeatable,
$mandatory,
+ $important,
$authorised_value,
$ind1_defaultvalue,
$ind2_defaultvalue,
@@ -222,6 +226,7 @@ if ($op eq 'add_form') {
marc_tag_structure.libopac as mts_libopac,
marc_tag_structure.repeatable as mts_repeatable,
marc_tag_structure.mandatory as mts_mandatory,
+ marc_tag_structure.important as mts_important,
marc_tag_structure.authorised_value as mts_authorized_value,
marc_tag_structure.ind1_defaultvalue as mts_ind1_defaultvalue,
marc_tag_structure.ind1_defaultvalue as mts_ind2_defaultvalue,
@@ -245,6 +250,7 @@ if ($op eq 'add_form') {
$row_data{liblibrarian} = $results[$i]->{'mts_liblibrarian'};
$row_data{repeatable} = $results[$i]->{'mts_repeatable'};
$row_data{mandatory} = $results[$i]->{'mts_mandatory'};
+ $row_data{important} = $results[$i]->{'mts_important'};
$row_data{authorised_value} = $results[$i]->{'mts_authorised_value'};
$row_data{ind1_defaultvalue} = $results[$i]->{'mts_ind1_defaultvalue'};
$row_data{ind2_defaultvalue} = $results[$i]->{'mts_ind2_defaultvalue'};
@@ -260,6 +266,7 @@ if ($op eq 'add_form') {
$subfield_data{kohafield} = $results[$j]->{'kohafield'};
$subfield_data{repeatable} = $results[$j]->{'repeatable'};
$subfield_data{mandatory} = $results[$j]->{'mandatory'};
+ $subfield_data{important} = $results[$j]->{'important'};
$subfield_data{tab} = $results[$j]->{'tab'};
$subfield_data{seealso} = $results[$j]->{'seealso'};
$subfield_data{authorised_value} = $results[$j]->{'authorised_value'};
@@ -292,6 +299,7 @@ if ($op eq 'add_form') {
$row_data{liblibrarian} = $results->[$i]{'liblibrarian'};
$row_data{repeatable} = $results->[$i]{'repeatable'};
$row_data{mandatory} = $results->[$i]{'mandatory'};
+ $row_data{important} = $results->[$i]{'important'};
$row_data{authorised_value} = $results->[$i]{'authorised_value'};
$row_data{ind1_defaultvalue} = $results->[$i]{'ind1_defaultvalue'};
$row_data{ind2_defaultvalue} = $results->[$i]{'ind2_defaultvalue'};
@@ -327,7 +335,7 @@ output_html_with_http_headers $input, $cookie, $template->output;
sub StringSearch {
my ($searchstring,$frameworkcode)=@_;
my $sth = C4::Context->dbh->prepare("
- SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,ind1_defaultvalue,ind2_defaultvalue
+ SELECT tagfield,liblibrarian,libopac,repeatable,mandatory,authorised_value,important,ind1_defaultvalue,ind2_defaultvalue
FROM marc_tag_structure
WHERE (tagfield >= ? and frameworkcode=?)
ORDER BY tagfield
diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl
index 0f40ecd..2c2464f 100755
--- a/cataloguing/addbiblio.pl
+++ b/cataloguing/addbiblio.pl
@@ -312,6 +312,7 @@ sub create_input {
marc_lib => $tagslib->{$tag}->{$subfield}->{lib},
tag_mandatory => $tagslib->{$tag}->{mandatory},
mandatory => $tagslib->{$tag}->{$subfield}->{mandatory},
+ important => $tagslib->{$tag}->{$subfield}->{important},
repeatable => $tagslib->{$tag}->{$subfield}->{repeatable},
kohafield => $tagslib->{$tag}->{$subfield}->{kohafield},
index => $index_tag,
@@ -325,13 +326,15 @@ sub create_input {
$subfield_data{z3950_mandatory} = $mandatory_z3950->{$tag.$subfield};
}
# Subfield is hidden depending of hidden and mandatory flag, and is always
- # shown if it contains anything or if its field is mandatory.
+ # shown if it contains anything or if its field is mandatory or important.
my $tdef = $tagslib->{$tag};
$subfield_data{visibility} = "display:none;"
if $tdef->{$subfield}->{hidden} % 2 == 1 &&
$value eq '' &&
!$tdef->{$subfield}->{mandatory} &&
- !$tdef->{mandatory};
+ !$tdef->{mandatory} &&
+ !$tdef->{$subfield}->{important} &&
+ !$tdef->{important};
# expand all subfields of 773 if there is a host item provided in the input
$subfield_data{visibility} ="" if ($tag eq 773 and $cgi->param('hostitemnumber'));
@@ -611,6 +614,7 @@ sub build_tabs {
tag_lib => $tagslib->{$tag}->{lib},
repeatable => $tagslib->{$tag}->{repeatable},
mandatory => $tagslib->{$tag}->{mandatory},
+ important => $tagslib->{$tag}->{important},
subfield_loop => \@subfields_data,
fixedfield => $tag < 10?1:0,
random => CreateKey,
@@ -657,6 +661,7 @@ sub build_tabs {
tag_lib => $tagslib->{$tag}->{lib},
repeatable => $tagslib->{$tag}->{repeatable},
mandatory => $tagslib->{$tag}->{mandatory},
+ important => $tagslib->{$tag}->{important},
indicator1 => ( $indicator1 || $tagslib->{$tag}->{ind1_defaultvalue} ), #if not set, try to load the default value
indicator2 => ( $indicator2 || $tagslib->{$tag}->{ind2_defaultvalue} ), #use short-circuit operator for efficiency
subfield_loop => \@subfields_data,
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 6842eb5..eedafd6 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -1110,6 +1110,7 @@ CREATE TABLE `marc_subfield_structure` (
`libopac` varchar(255) NOT NULL default '',
`repeatable` tinyint(4) NOT NULL default 0,
`mandatory` tinyint(4) NOT NULL default 0,
+ `important` tinyint(4) NOT NULL DEFAULT '0',
`kohafield` varchar(40) default NULL,
`tab` tinyint(1) default NULL,
`authorised_value` varchar(32) default NULL,
@@ -1144,6 +1145,7 @@ CREATE TABLE `marc_tag_structure` (
`ind1_defaultvalue` varchar(1) NOT NULL default '',
`ind2_defaultvalue` varchar(1) NOT NULL default '',
`frameworkcode` varchar(4) NOT NULL default '',
+ `important` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`frameworkcode`,`tagfield`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt
index 199bbe8..1cfbbbe 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt
@@ -87,6 +87,14 @@
<input type="checkbox" id="mandatory[% loo.row %]" name="mandatory[% loo.row %]" value="1" />
[% END %]
</li>
+ <li>
+ <label for="important[% loo.row %]">Important: </label>
+ [% IF loo.important %]
+ <input type="checkbox" id="important[% loo.row %]" name="important[% loo.row %]" checked="checked" value="1" />
+ [% ELSE %]
+ <input type="checkbox" id="important[% loo.row %]" name="important[% loo.row %]" value="1" />
+ [% END %]
+ </li>
<li><label for="tab[% loo.row %]">Managed in tab: </label>
<select name="tab" tabindex="" size="1" id="tab[% loo.row %]">
[%- IF ( loo.tab == -1 ) -%]
@@ -281,6 +289,7 @@
[% IF ( loo.kohafield ) %] | Koha field: [% loo.kohafield %], [% END %]
[% IF ( loo.repeatable ) %]Repeatable, [% ELSE %]Not repeatable,[% END %]
[% IF ( loo.mandatory ) %]Mandatory, [% ELSE %]Not mandatory,[% END %]
+ [% IF ( loo.important ) %]Important, [% ELSE %]Not important,[% END %]
[% IF ( loo.seealso ) %] | See Also: [% loo.seealso %],[% END %]
[% IF ( loo.hidden ) %]hidden,[% END %]
[% IF ( loo.isurl ) %]is a URL,[% END %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt
index 0d0431f..bfd3b4f 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marctagstructure.tt
@@ -92,6 +92,14 @@
[% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value ) %]
</select>
(if you select a value here, the indicators will be limited to the authorized value list)</li>
+ <li><label for="important">Important: </label>
+ [% IF ( important ) %]
+ <input type="checkbox" name="important" id="important" value="1" checked="checked" />
+ [% ELSE %]
+ <input type="checkbox" name="important" id="important" value="1" />
+ [% END %]
+ </li>
+ <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>
</ol></fieldset>
<fieldset class="action">
<input type="submit" value="Save changes" />
@@ -176,6 +184,7 @@
<th>Lib</th>
<th>Repeatable</th>
<th>Mandatory</th>
+ <th>Important</th>
<th>Auth value</th>
<th>Indicator 1</th>
<th>Indicator 2</th>
@@ -198,6 +207,7 @@
</td>
<td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
<td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
+ <td>[% IF ( loo.important ) %]Yes[% ELSE %]No[% END %]</td>
<td>[% loo.authorised_value %]</td>
<td>[% loo.ind1_defaultvalue %]</td>
<td>[% loo.ind2_defaultvalue %]</td>
@@ -213,6 +223,16 @@
</div>
</td>
</tr>
+ [% IF ( loop.odd ) %]<tr>[% ELSE %]<tr class="highlight">[% END %]
+ <td> </td>
+ <td colspan="7">
+ [% FOREACH subfield IN loo.subfields %]
+ <p style="text-indent: 5em">Tab:[% subfield.tab %] | $[% subfield.tagsubfield %]
+ [% 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 %]
+ </p>
+ [% END %]
+ </td>
+ </tr>
[% END %]
[% ELSE %]
[% FOREACH loo IN loop %]
@@ -221,6 +241,7 @@
<td>[% loo.liblibrarian %]</td>
<td>[% IF ( loo.repeatable ) %]Yes[% ELSE %]No[% END %]</td>
<td>[% IF ( loo.mandatory ) %]Yes[% ELSE %]No[% END %]</td>
+ <td>[% IF ( loo.important ) %]Yes[% ELSE %]No[% END %]</td>
<td>[% loo.authorised_value %]</td>
<td>[% loo.ind1_defaultvalue %]</td>
<td>[% loo.ind2_defaultvalue %]</td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt
index b2e3b03..1f528c8 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt
@@ -247,7 +247,7 @@ function AreMandatoriesNotOk(){
var flag=0;
var tabflag= new Array();
[% FOREACH BIG_LOO IN BIG_LOOP %]
- [% FOREACH innerloo IN BIG_LOO.innerloop %]
+ [% FOREACH innerloo IN BIG_LOO.innerloop %]
[% IF ( innerloo.mandatory ) %]
mandatoriesfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
[% END %]
@@ -333,7 +333,7 @@ function AreMandatoriesNotOk(){
if(isempty){
flag = 1;
- StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
+ StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
}
}
@@ -352,6 +352,13 @@ function AreMandatoriesNotOk(){
function Check(){
var StrAlert = AreMandatoriesNotOk();
if( ! StrAlert ){
+ var StrWarning = AreImportantsNotOk();
+ if (StrWarning){
+ var r=confirm(StrWarning);
+ if (! r){
+ return false;
+ }
+ }
document.f.submit();
return true;
} else {
@@ -361,6 +368,113 @@ function Check(){
}
/**
+ * check if mandatory subfields are written
+ */
+function AreImportantsNotOk(){
+ var importants = new Array();
+ var importantsfields = new Array();
+ var tab = new Array();
+ var label = new Array();
+ var flag=0;
+ var tabflag= new Array();
+ [% FOREACH BIG_LOO IN BIG_LOOP %]
+ [% FOREACH innerloo IN BIG_LOO.innerloop %]
+ [% IF ( innerloo.important ) %]
+ importantsfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
+ [% END %]
+ [% FOREACH subfield_loo IN innerloo.subfield_loop %]
+ [% IF ( subfield_loo.important ) %]importants.push("[% subfield_loo.id %]");
+ tab.push("[% subfield_loo.number %]");
+ label.push("[% subfield_loo.marc_lib %]");
+ [% END %]
+ [% END %]
+ [% END %]
+ [% END %]
+ var StrWarning = _("A few important fields are not filled:");
+ StrWarning += "\n\n";
+ for(var i=0,len=importants.length; i<len ; i++){
+ var tag=importants[i].substr(4,3);
+ var subfield=importants[i].substr(17,1);
+ var tagnumber=importants[i].substr(19,importants[i].lastIndexOf("_")-19);
+ tabflag[tag+subfield+tagnumber]=new Array();
+ tabflag[tag+subfield+tagnumber][0]=0;
+ if( ! document.getElementById(importants[i]).value){
+ tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
+ document.getElementById(importants[i]).setAttribute('class','subfield_not_filled');
+ document.getElementById(importants[i]).focus();
+ tabflag[tag+subfield+tagnumber][1]=label[i];
+ tabflag[tag+subfield+tagnumber][2]=tab[i];
+ } else {
+ tabflag[tag+subfield+tagnumber][0] = 1;
+ }
+ }
+ for (var tagsubfieldid in tabflag){
+ if (tabflag[tagsubfieldid][0]==0){
+ var tag=tagsubfieldid.substr(0,3);
+ var subfield=tagsubfieldid.substr(3,1);
+ StrWarning += "\t* "+_("tag ")+tag+_(" subfield ")+subfield+" "+tabflag[tagsubfieldid][1]+_(" in tab ")+tabflag[tagsubfieldid][2]+"\n";
+ //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
+ flag=1;
+ }
+ }
+
+ /* Check for mandatories field(not subfields) */
+ for(var i=0,len=importantsfields.length; i<len; i++){
+ isempty = true;
+ arr = importantsfields[i];
+ divid = "tag_" + arr[0] + "_" + arr[1];
+ varegexp = new RegExp("^tag_" + arr[0] + "_code_");
+
+ if(parseInt(arr[0]) >= 10){
+ elem = document.getElementById(divid);
+ eleminputs = elem.getElementsByTagName('input');
+ for(var j=0,len2=eleminputs.length; j<len2; j++){
+
+ if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
+ inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
+
+ for( var k=0; k<len2; k++){
+ if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
+ isempty = false
+ }
+ }
+
+ elemselect = elem.getElementsByTagName('select');
+ for( var k=0; k<elemselect.length; k++){
+ if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
+ isempty = false
+ }
+ }
+ }
+ }
+
+ elemtextareas = elem.getElementsByTagName('textarea');
+ for(var j=0,len2=elemtextareas.length; j<len2; j++){
+ // this bit assumes that the only textareas in this context would be for subfields
+ if (elemtextareas[j].value) {
+ isempty = false;
+ }
+ }
+ }else{
+ isempty = false;
+ }
+
+ if(isempty){
+ flag = 1;
+ StrWarning += _("\t* Field ") + arr[0] + _(" is important, at least one of its subfields should be filled.") + "\n";
+ }
+ }
+
+ StrWarning += "\n" + _("Are you sure you want to save?");
+
+ if(flag){
+ return StrWarning;
+ } else {
+ return flag;
+ }
+}
+
+/**
* check if z3950 mandatories are set or not
*/
function GetZ3950Terms(){
@@ -671,7 +785,11 @@ function Changefwk() {
[% UNLESS advancedMARCEditor %]
[% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
[% subfield_loo.marc_lib %]
- [% IF ( subfield_loo.mandatory ) %]<span class="mandatory_marker" title="This field is mandatory">*</span>[% END %]
+ [% IF ( subfield_loo.mandatory ) %]
+ <span class="mandatory_marker" title="This field is mandatory">*</span>
+ [% ELSIF ( subfield_loo.important ) %]
+ <span style="color:black" title="This field is important">*</span>
+ [% END %]
</span>
</label>
[% END %]
--
2.7.4