====== Edición de subcampos codificados ======
A raíz de una [[http://groups.google.com/group/catalis/browse_thread/thread/4c31389fd6c6a857|consulta en el grupo Catalis]], acá va una receta para lograr que un subcampo con valores codificados se pueda editar de manera análoga al subcampo $4 de los campos 700 (relator code). Es decir, que se abra una ventanita emergente que ofrezca la lista de códigos disponibles.
A modo de ejemplo consideremos un elemento ficticio denominado "Foo", almacenado en un subcampo $q del campo 999.
Para clarificar el contexto dentro de cada archivo a modificar, se muestran las líneas correspondientes a los //relator codes//.
(Esto fue testeado exitosamente por Evangelina y Omar, de la Biblioteca Virtual de la UNR, el 11/nov/08.)
=== XML ===
== foo.xml ==
Creamos el archivo.
...
=== HTML ===
== editCodes.htm ==
Agregamos un bloque.
case "relator" :
// TO-DO: pensar de qué manera se puede acotar la larga lista, en función del tipo
// de documento (video, musica, libro, etc.)
xmlCodes = callingWindowObject.xmlRelatorCodes;
Codes = xmlCodes.selectNodes("/" + "/relator");
title = "Relator codes";
break;
case "foo" :
xmlCodes = callingWindowObject.xmlFooCodes;
Codes = xmlCodes.selectNodes("/" + "/foo");
title = "Foo codes";
break;
=== JavaScript ===
== create-field-subfield.js ==
Agregamos un bloque.
// Subcampos cuyos valores se toman de tablas
if ( "4" == code ) { // Relator code
newSubfieldBox.readOnly = true; // ATENCION: esta propiedad produce un bug al subir/bajar un subcampo $4 vacío
newSubfieldBox.onclick = function() {
editCodedData("relator");
}
newSubfieldBox.style.fontFamily = "lucida console";
newSubfieldBox.style.fontSize = "14px";
newSubfieldBox.style.lineHeight = "17px";
}
else if ( tag_code.search(/999q/) != -1 ) { // Foo code
newSubfieldBox.readOnly = true;
newSubfieldBox.onclick = function() {
editCodedData("foo");
}
newSubfieldBox.style.fontFamily = "lucida console";
newSubfieldBox.style.fontSize = "14px";
newSubfieldBox.style.lineHeight = "17px";
}
== aux-windows.js ==
Agregamos "foo" en un par de líneas.
function editCodedData(dataElement)
{
if ( dataElement.search(/relator|foo|f041|f044/) != -1 ) {
var srcObject = event.srcElement;
var activeCode = srcObject.value; // TO-DO: evt for mozilla
var codeType = "single";
var dialogLeft = event.clientX - 70;
var dialogTop = event.clientY - 130;
var URL = URL_EDIT_CODES;
} else if (
...
if ( dataElement.search(/relator|foo|f041|f044/) != -1 ) {
srcObject.value = newCode.value;
//displayPermanentTitle(srcObject,newCode.description.substr(6),40,0);
} else {
...
}
== catalis.js ==
Agregamos dos líneas nuevas.
URL_RELATOR_CODES = HTDOCS + "xml/relator.xml";
URL_FOO_CODES = HTDOCS + "xml/foo.xml";
xmlRelatorCodes = importXML(URL_RELATOR_CODES);
xmlFooCodes = importXML(URL_FOO_CODES);
{{tag>catalis admin}}