This shows you the differences between two versions of the page.
edicion_de_subcampos_codificados [30/04/2009 16:39] fernando |
edicion_de_subcampos_codificados [05/05/2009 00:00] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Edición de subcampos codificados en Catalis ====== | ||
- | 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//. | ||
- | |||
- | ATENCION: esto aún no fue testeado (10 nov. 2008). | ||
- | |||
- | |||
- | |||
- | === XML === | ||
- | |||
- | == foo.xml == | ||
- | |||
- | Creamos el archivo. | ||
- | |||
- | <code xml> | ||
- | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
- | |||
- | <fooCodes> | ||
- | |||
- | <foo code="a" name="..." /> | ||
- | <foo code="b" name="..." /> | ||
- | <foo code="c" name="..." /> | ||
- | <foo code="d" name="..." /> | ||
- | ... | ||
- | <foo code="z" name="..." /> | ||
- | |||
- | </fooCodes> | ||
- | </code> | ||
- | |||
- | |||
- | === HTML === | ||
- | |||
- | == editCodes.htm == | ||
- | |||
- | Agregamos un bloque. | ||
- | |||
- | <code javascript> | ||
- | 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; | ||
- | </code> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | === JavaScript === | ||
- | |||
- | == create-field-subfield.js == | ||
- | |||
- | Agregamos un bloque. | ||
- | |||
- | <code> | ||
- | // 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"; | ||
- | } | ||
- | </code> | ||
- | |||
- | == aux-windows.js == | ||
- | |||
- | Agregamos "foo" en un par de líneas. | ||
- | |||
- | <code> | ||
- | 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 { | ||
- | ... | ||
- | } | ||
- | </code> | ||
- | | ||
- | == catalis.js == | ||
- | |||
- | Agregamos dos líneas nuevas. | ||
- | |||
- | <code> | ||
- | URL_RELATOR_CODES = HTDOCS + "xml/relator.xml"; | ||
- | URL_FOO_CODES = HTDOCS + "xml/foo.xml"; | ||
- | | ||
- | xmlRelatorCodes = importXML(URL_RELATOR_CODES); | ||
- | xmlFooCodes = importXML(URL_FOO_CODES); | ||
- | </code> | ||
- | |||
- | |||
- | {{tag>catalis}} |