Bug fix for the MARC editor:
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Oct 2009 15:41:44 +0000 (15:41 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Oct 2009 15:41:44 +0000 (15:41 +0000)
When we add a <controlfield> element we need to set it to be 40 characters
long, and full of spaces, otherwise the Fixed Field editor cannot properly
set the positions.

Additionally, when a Fixed Field is edited but there is no backing
<controlfield> element (say, trying to set the Audn when there is no 008)
then we will add the needed <controlfield>.

git-svn-id: svn://svn.open-ils.org/ILS/trunk@14305 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/server/cat/marcedit.js

index f7e0e2b..c12a720 100644 (file)
@@ -525,13 +525,13 @@ function createMARCTextbox (element,attrs) {
                                        return false;
                                }
                        } else if (event.keyCode == 64 && event.ctrlKey) { // ctrl + F6
-                               createControlField('006','');
+                               createControlField('006','                                        ');
                                loadRecord(xml_record);
                        } else if (event.keyCode == 65 && event.ctrlKey) { // ctrl + F7
-                               createControlField('007','');
+                               createControlField('007','                                        ');
                                loadRecord(xml_record);
                        } else if (event.keyCode == 66 && event.ctrlKey) { // ctrl + F8
-                               createControlField('008','');
+                               createControlField('008','                                        ');
                                loadRecord(xml_record);
                        }
                        return true;
@@ -1168,7 +1168,18 @@ function updateFixedFields (element) {
        for (var i in ff_pos[name]) {
 
                if (!ff_pos[name][i][rtype]) continue;
-               if (!parts[i]) continue;
+               if (!parts[i]) {
+                       // we're missing the required field.  Add it now.
+
+                       var newfield;
+                       if (i == '_6') newfield = '006';
+                       else if (i == '_7') newfield = '007';
+                       else if (i == '_8') newfield = '008';
+                       else continue;
+
+                       createControlField(newfield,'                                        ');
+                       parts[i] = _record.controlfield.(@tag==newfield);
+               }
 
                var before = parts[i].substr(0, ff_pos[name][i][rtype].start);
                var after = parts[i].substr(ff_pos[name][i][rtype].start + ff_pos[name][i][rtype].len);