From facadbd751f1c06698b088286079146d7e7c4914 Mon Sep 17 00:00:00 2001 From: pines Date: Fri, 25 Aug 2006 20:06:34 +0000 Subject: [PATCH] adding fixed field editing git-svn-id: svn://svn.open-ils.org/ILS/trunk@5680 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/xul/staff_client/server/cat/marcedit.css | 6 +- Open-ILS/xul/staff_client/server/cat/marcedit.js | 284 ++++++++++++--------- .../xul/staff_client/server/patron/display.xul | 1 + 3 files changed, 166 insertions(+), 125 deletions(-) diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.css b/Open-ILS/xul/staff_client/server/cat/marcedit.css index 0ae4a3d34a..4cc5ac0bad 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.css +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.css @@ -6,11 +6,15 @@ input:focus { background-color: lightcyan; } -.marcSubfieldDelimiter, .marcSubfieldCode, .marcInd1, .marcInd2, .marcTag, .marcSubfield, .marcControlfield, .marcLeader { +.marcSubfieldDelimiter, .marcSubfieldCode, .marcInd1, .marcInd2, .marcTag, .marcEditableControlfield, .marcSubfield, .marcControlfield, .marcLeader { font-family: fixed, monospace; margin: 0; } +.marcEditableControlfield { + text-align: left; +} + .marcSubfieldCode, .marcInd1, .marcInd2, .marcTag { width: 1em; } diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.js b/Open-ILS/xul/staff_client/server/cat/marcedit.js index 5b13f37921..9bc7a43cf1 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.js +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.js @@ -18,19 +18,19 @@ function mangle_005() { var y = now.getUTCFullYear(); var m = now.getUTCMonth() + 1; - m = '0' + m if (m < 10); + if (m < 10) m = '0' + m; var d = now.getUTCDate(); - d = '0' + d if (d < 10); + if (d < 10) d = '0' + d; var H = now.getUTCHours(); - H = '0' + H if (H < 10); + if (H < 10) H = '0' + H; var M = now.getUTCMinutes(); - M = '0' + M if (M < 10); + if (M < 10) M = '0' + M; var S = now.getUTCSeconds(); - S = '0' + S if (S < 10); + if (S < 10) S = '0' + S; var stamp = '' + y + m + d + H + M + S + '.0'; @@ -38,8 +38,7 @@ function mangle_005() { var new_005 = { stamp }; // first, remove the old field, if any; - var edit_field = xml_record.controlfield.(@tag == '005'); - for (var i in edit_field) xml_record.removeChild(edit_field[i]); + for (var i in xml_record.controlfield.(@tag == '005')) delete xml_record.controlfield.(@tag == '005')[i]; // then, find the right position and insert it @@ -47,12 +46,12 @@ function mangle_005() { var cfields = xml_record.controfield; for (var i in cfields) { if (Number(cfield[i].@tag) > 5) { - xml_record.insertBefore( new_005, cfields[i]); + xml_record.insertChildBefore( cfields[i], new_005 ); done = 1 break; } } - if (!done) xml_record.insertBefore( new_005, xml_record.datafield[0] ); + if (!done) xml_record.insertChildBefore( xml_record.datafield[0], new_005 ); } @@ -78,7 +77,7 @@ function my_init() { // End faking part... document.getElementById('save-button').setAttribute('label', window.xulG.save.label); - document.getElementById('save-button').setAttribute('oncommand', 'mangle_005(); window.xulG.save.func(xml_record.toXMLString());'); + document.getElementById('save-button').setAttribute('oncommand', 'mangle_005(); window.xulG.save.func(xml_record.toXMLString()); window.xulG.record.marc = xml_record.toXMLString(); window.xulG.record.url = null; my_init()'); if (window.xulG.record.url) { var req = new XMLHttpRequest(); @@ -210,112 +209,93 @@ function createMARCTextbox (element,attrs) { if (element.nodeKind() == 'attribute') element[0]=box.value; else element.setChildren( box.value ); - if (event.charCode == 100 && event.ctrlKey) { // ctrl+d + if (element.localName() != 'controlfield') { + if (event.charCode == 100 && event.ctrlKey) { // ctrl+d - var index_sf, target, move_data; - if (element.localName() == 'subfield') { - index_sf = element; - target = event.target.parentNode; + var index_sf, target, move_data; + if (element.localName() == 'subfield') { + index_sf = element; + target = event.target.parentNode; - var start = event.target.selectionStart; - var end = event.target.selectionEnd - event.target.selectionStart ? - event.target.selectionEnd : - event.target.value.length; + var start = event.target.selectionStart; + var end = event.target.selectionEnd - event.target.selectionStart ? + event.target.selectionEnd : + event.target.value.length; - move_data = event.target.value.substring(start,end); - event.target.value = event.target.value.substring(0,start) + event.target.value.substring(end); - event.target.setAttribute('size', event.target.value.length + 2); - - element.setChildren( event.target.value ); - - } else if (element.localName() == 'code') { - index_sf = element.parent(); - target = event.target.parentNode; - } else if (element.localName() == 'tag' || element.localName() == 'ind1' || element.localName() == 'ind2') { - index_sf = element.parent().children()[element.parent().children().length() - 1]; - target = event.target.parentNode.lastChild.lastChild; - } - - var sf = { move_data }; - - index_sf.parent().insertChildAfter( index_sf, sf ); - - var new_sf = marcSubfield(sf); - - if (target === target.parentNode.lastChild) { - target.parentNode.appendChild( new_sf ); - } else { - target.parentNode.insertBefore( new_sf, target.nextSibling ); - } - - new_sf.firstChild.nextSibling.focus(); - - event.preventDefault(); - return false; - - } else if (event.keyCode == 13 || event.keyCode == 77) { - if (event.ctrlKey) { // ctrl+enter - - var index; - if (element.localName() == 'subfield') index = element.parent(); - if (element.localName() == 'code') index = element.parent().parent(); - if (element.localName() == 'tag') index = element.parent(); - if (element.localName() == 'ind1') index = element.parent(); - if (element.localName() == 'ind2') index = element.parent(); + move_data = event.target.value.substring(start,end); + event.target.value = event.target.value.substring(0,start) + event.target.value.substring(end); + event.target.setAttribute('size', event.target.value.length + 2); + + element.setChildren( event.target.value ); + + } else if (element.localName() == 'code') { + index_sf = element.parent(); + target = event.target.parentNode; + } else if (element.localName() == 'tag' || element.localName() == 'ind1' || element.localName() == 'ind2') { + index_sf = element.parent().children()[element.parent().children().length() - 1]; + target = event.target.parentNode.lastChild.lastChild; + } - var df = ; + var sf = { move_data }; - index.parent().insertChildAfter( index, df ); + index_sf.parent().insertChildAfter( index_sf, sf ); - var new_df = marcDatafield(df); + var new_sf = marcSubfield(sf); - if (row.parentNode.lastChild === row) { - row.parentNode.appendChild( new_df ); + if (target === target.parentNode.lastChild) { + target.parentNode.appendChild( new_sf ); } else { - row.parentNode.insertBefore( new_df, row.nextSibling ); + target.parentNode.insertBefore( new_sf, target.nextSibling ); } - new_df.firstChild.focus(); + new_sf.firstChild.nextSibling.focus(); event.preventDefault(); return false; - } else if (event.shiftKey) { - if (row.previousSibling.className.match('marcDatafieldRow')) - row.previousSibling.firstChild.focus(); - } else { - row.nextSibling.firstChild.focus(); - } + } else if (event.keyCode == 13 || event.keyCode == 77) { + if (event.ctrlKey) { // ctrl+enter - } else if (event.keyCode == 46 && event.ctrlKey) { // ctrl+del + var index; + if (element.localName() == 'subfield') index = element.parent(); + if (element.localName() == 'code') index = element.parent().parent(); + if (element.localName() == 'tag') index = element.parent(); + if (element.localName() == 'ind1') index = element.parent(); + if (element.localName() == 'ind2') index = element.parent(); - var index; - if (element.localName() == 'subfield') index = element.parent(); - if (element.localName() == 'code') index = element.parent().parent(); - if (element.localName() == 'tag') index = element.parent(); - if (element.localName() == 'ind1') index = element.parent(); - if (element.localName() == 'ind2') index = element.parent(); + var df = ; - for (var i in index.parent().children()) { - if (index === index.parent().children()[i]) { - delete index.parent().children()[i]; - break; - } - } + index.parent().insertChildAfter( index, df ); + + var new_df = marcDatafield(df); + + if (row.parentNode.lastChild === row) { + row.parentNode.appendChild( new_df ); + } else { + row.parentNode.insertBefore( new_df, row.nextSibling ); + } - row.previousSibling.firstChild.focus(); - row.parentNode.removeChild(row); + new_df.firstChild.focus(); - event.preventDefault(); - return false; + event.preventDefault(); + return false; - } else if (event.keyCode == 46 && event.shiftKey) { // shift+del + } else if (event.shiftKey) { + if (row.previousSibling.className.match('marcDatafieldRow')) + row.previousSibling.firstChild.focus(); + } else { + row.nextSibling.firstChild.focus(); + } - var index; - if (element.localName() == 'subfield') index = element; - if (element.localName() == 'code') index = element.parent(); + } else if (event.keyCode == 46 && event.ctrlKey) { // ctrl+del + + var index; + if (element.localName() == 'subfield') index = element.parent(); + if (element.localName() == 'code') index = element.parent().parent(); + if (element.localName() == 'tag') index = element.parent(); + if (element.localName() == 'ind1') index = element.parent(); + if (element.localName() == 'ind2') index = element.parent(); - if (index) { for (var i in index.parent().children()) { if (index === index.parent().children()[i]) { delete index.parent().children()[i]; @@ -323,19 +303,41 @@ function createMARCTextbox (element,attrs) { } } - if (event.target.parentNode === event.target.parentNode.parentNode.lastChild) { - event.target.parentNode.previousSibling.lastChild.focus(); - } else { - event.target.parentNode.nextSibling.firstChild.nextSibling.focus(); - } - - event.target.parentNode.parentNode.removeChild(event.target.parentNode); + row.previousSibling.firstChild.focus(); + row.parentNode.removeChild(row); event.preventDefault(); return false; + + } else if (event.keyCode == 46 && event.shiftKey) { // shift+del + + var index; + if (element.localName() == 'subfield') index = element; + if (element.localName() == 'code') index = element.parent(); + + if (index) { + for (var i in index.parent().children()) { + if (index === index.parent().children()[i]) { + delete index.parent().children()[i]; + break; + } + } + + if (event.target.parentNode === event.target.parentNode.parentNode.lastChild) { + event.target.parentNode.previousSibling.lastChild.focus(); + } else { + event.target.parentNode.nextSibling.firstChild.nextSibling.focus(); + } + + event.target.parentNode.parentNode.removeChild(event.target.parentNode); + + event.preventDefault(); + return false; + } } + return true; } - return true; + if (element.localName() == 'controlfield') fillFixedFields(xml_record); }; box.addEventListener( @@ -343,6 +345,7 @@ function createMARCTextbox (element,attrs) { function () { if (element.nodeKind() == 'attribute') element[0]=box.value; else element.setChildren( box.value ); + if (element.localName() == 'controlfield') fillFixedFields(xml_record); return true; }, false @@ -353,6 +356,7 @@ function createMARCTextbox (element,attrs) { function () { if (element.nodeKind() == 'attribute') element[0]=box.value; else element.setChildren( box.value ); + if (element.localName() == 'controlfield') fillFixedFields(xml_record); return true; }, false @@ -363,6 +367,7 @@ function createMARCTextbox (element,attrs) { function () { if (element.nodeKind() == 'attribute') element[0]=box.value; else element.setChildren( box.value ); + if (element.localName() == 'controlfield') fillFixedFields(xml_record); return true; }, true @@ -808,28 +813,59 @@ function marcLeader (leader) { function marcControlfield (field) { tagname = field.@tag.toString().substr(2); - var row = createRow( - { class : 'marcControlfieldRow', - tag : '_' + tagname }, - createLabel( - { value : field.@tag, - class : 'marcTag', - onmouseover : 'getTooltip(this, "tag");', - tooltipid : 'tag' + field.@tag } ), - createLabel( - { value : field.@ind1, - class : 'marcInd1', - onmouseover : 'getTooltip(this, "ind1");', - tooltipid : 'tag' + field.@tag + 'ind1val' + field.@ind1 } ), - createLabel( - { value : field.@ind2, - class : 'marcInd2', - onmouseover : 'getTooltip(this, "ind2");', - tooltipid : 'tag' + field.@tag + 'ind2val' + field.@ind2 } ), - createLabel( - { value : field.text(), - class : 'marcControlfield' } ) - ); + var row; + if (tagname == '6' || tagname == '7' || tagname == '8') { + row = createRow( + { class : 'marcControlfieldRow', + tag : '_' + tagname }, + createLabel( + { value : field.@tag, + class : 'marcTag', + onmouseover : 'getTooltip(this, "tag");', + tooltipid : 'tag' + field.@tag } ), + createLabel( + { value : field.@ind1, + class : 'marcInd1', + onmouseover : 'getTooltip(this, "ind1");', + tooltipid : 'tag' + field.@tag + 'ind1val' + field.@ind1 } ), + createLabel( + { value : field.@ind2, + class : 'marcInd2', + onmouseover : 'getTooltip(this, "ind2");', + tooltipid : 'tag' + field.@tag + 'ind2val' + field.@ind2 } ), + createMARCTextbox( + field, + { value : field.text(), + class : 'plain marcEditableControlfield', + name : 'CONTROL' + tagname, + oncontext : 'return false();', + size : 50, + maxlength : 50 } ) + ); + } else { + row = createRow( + { class : 'marcControlfieldRow', + tag : '_' + tagname }, + createLabel( + { value : field.@tag, + class : 'marcTag', + onmouseover : 'getTooltip(this, "tag");', + tooltipid : 'tag' + field.@tag } ), + createLabel( + { value : field.@ind1, + class : 'marcInd1', + onmouseover : 'getTooltip(this, "ind1");', + tooltipid : 'tag' + field.@tag + 'ind1val' + field.@ind1 } ), + createLabel( + { value : field.@ind2, + class : 'marcInd2', + onmouseover : 'getTooltip(this, "ind2");', + tooltipid : 'tag' + field.@tag + 'ind2val' + field.@ind2 } ), + createLabel( + { value : field.text(), + class : 'marcControlfield' } ) + ); + } return row; } diff --git a/Open-ILS/xul/staff_client/server/patron/display.xul b/Open-ILS/xul/staff_client/server/patron/display.xul index 503b4ef88e..cfd899fbdd 100644 --- a/Open-ILS/xul/staff_client/server/patron/display.xul +++ b/Open-ILS/xul/staff_client/server/patron/display.xul @@ -65,6 +65,7 @@ function default_focus() { setTimeout( function() { + alert('HERE'); try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var node = g.patron.right_deck.node.selectedPanel; -- 2.11.0