Bug 19096: Do not allow changes to kohafield within MARC frameworks
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Mon, 7 Aug 2017 13:02:10 +0000 (15:02 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 7 Dec 2017 17:44:15 +0000 (14:44 -0300)
This patch makes two changes in the script for managing the MARC
frameworks in order to support making the Default authoritative
as for Koha to MARC mappings:

[1] Disable the kohafield select combo. Add a hidden input to save value.
[2] When a new subfield is added, the kohafield is still empty and should
    be overwritten with its Default counterpart.
    Note: Although we could leave the field empty, since Koha looks at the
    Default framework only, it does not cost much to keep these fields in
    sync with Default and perhaps catch a bug when someone somewhere looks
    in the wrong framework.

Note: The description of Koha to MARC mapping on admin-home has been
adjusted accordingly (removing last two lines).

Test plan:
[1] Add a new tag and subfield in Default.
[2] Map it to a kohafield in koha2marclinks.pl
[3] Add the same tag and subfield in another framework.
    Verify that the kohafield is updated after you saved the subfield.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
admin/marc_subfields_structure.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt

index ebec042..9b478fa 100755 (executable)
@@ -310,6 +310,11 @@ elsif ( $op eq 'add_validate' ) {
                         ),
                     );
                 } else {
+                    if( $frameworkcode ne q{} ) {
+                        # BZ 19096: Overwrite kohafield from Default when adding a new record
+                         my $rec = Koha::MarcSubfieldStructures->find( q{}, $tagfield, $tagsubfield );
+                        $kohafield = $rec->kohafield if $rec;
+                    }
                     $sth_insert->execute(
                         $tagfield,
                         $tagsubfield,
index 0d43e6f..71341c1 100644 (file)
@@ -70,7 +70,7 @@
                     <dt><a href="/cgi-bin/koha/admin/biblio_framework.pl">MARC bibliographic framework</a></dt>
                     <dd>Create and manage Bibliographic frameworks that define the characteristics of your MARC Records (field and subfield definitions) as well as templates for the MARC editor.</dd>
                     <dt><a href="/cgi-bin/koha/admin/koha2marclinks.pl">Koha to MARC mapping</a></dt>
-                    <dd>Define the mapping between the Koha transactional database (SQL) and the MARC Bibliographic records. Note that the mapping can be defined through MARC Bibliographic Framework. This tool is just a shortcut to speed up linkage.</dd>
+                    <dd>Define the mapping between the Koha transactional database (SQL) and the MARC Bibliographic records.</dd>
                     <dt><a href="/cgi-bin/koha/admin/fieldmapping.pl">Keywords to MARC mapping</a></dt>
                     <dd>Define the mapping between keywords and MARC fields. The keywords are used to find some data independently of the framework.</dd>
                     <dt><a href="/cgi-bin/koha/admin/checkmarc.pl">MARC Bibliographic framework test</a></dt>
index efdac8d..65d8624 100644 (file)
                 <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>
                 <li>
                     <label for="kohafield[% loo.row %]">Koha link:</label>
-                    <select name="kohafield" id="kohafield[% loo.row %]" size="1">
+                    <!-- This select should be DISABLED; value is submitted by the following hidden input -->
+                    <select name="kohafield" id="kohafield[% loo.row %]" size="1" disabled>
                     [% FOREACH value IN loo.kohafields %]
                       [% IF ( value == loo.kohafield ) %]
                         <option value="[% value %]" selected="selected">[% value %]</option>
                       [% END %]
                     [% END %]
                     </select>
+                    <!-- Do NOT remove this next hidden input! We need it to save kohafield. -->
+                    <input type="hidden" name="kohafield" value="[% loo.kohafield %]"/>
                 </li>
                        </ol>
             </fieldset>