This patch ensures that the 008 field, when maintained by the web staff
MARC editor, is kept at its proper length. In particular, this solves a
problem where input can get messed up if the user selects the entire
contents of the 008 field and replaces it with a shorter string.
To test
------
[1] Create a new bib record. Ensure that the MARC record editor is
/not/ in flat text mode.
[2] Edit the 008 field by selecting its entire contents and replacing it
with a subset. For example, this might be done when the first action
that a cataloger takes is to set the 008/00-05.
[3] Enter value in the individual fixed-field inputs at the top of the
MARC editor form. For example, enter 'eng' in the Lang field.
[4] Note that the results are wrong; e.g., the text ends up as
"080419en en eng".
[5] Apply the patch and repeat steps #1-#4. This time, the results
should be correct.
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Cesar Velez <cesar.velez@equinoxinitiative.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
value = value.substr(0, MARC21.Record._ff_pos[field]._8[rtype].len);
while (value.length < MARC21.Record._ff_pos[field]._8[rtype].len)
value += MARC21.Record._ff_pos[field]._8[rtype].def;
+
+ // first ensure that 008 is padded to appropriate length
+ var f008_length = (rtype in MARC21.Record._ff_lengths['008']) ?
+ MARC21.Record._ff_lengths['008'][rtype] :
+ MARC21.Record._ff_lengths['008']['default'];
+ if (_8.length < f008_length) {
+ for (var i = _8.length; i < f008_length; i++) {
+ _8 += ' ';
+ }
+ }
this.field('008').update(
_8.substring(0, MARC21.Record._ff_pos[field]._8[rtype].start) +
value +
MFHD : { Type : /[uvxy]{1}/, BLvl : /.{1}/ }
};
+MARC21.Record._ff_lengths = {
+ '008' : {
+ default : 40,
+ MFHD : 32
+ }
+}
+
MARC21.Record._ff_pos = {
AccM : {
_8 : {