{"id":360,"date":"2013-10-17T09:26:10","date_gmt":"2013-10-17T08:26:10","guid":{"rendered":"http:\/\/www.arvo.es\/dspace\/?p=360"},"modified":"2013-10-16T21:35:42","modified_gmt":"2013-10-16T20:35:42","slug":"incorporar-javascript-en-dspace","status":"publish","type":"post","link":"https:\/\/www.arvo.es\/dspace\/incorporar-javascript-en-dspace\/","title":{"rendered":"Incorporar javascript en DSpace"},"content":{"rendered":"<p>Alguna vez se nos ha ocurrido introducir algo de comportamiento din\u00e1mico en nuestro repositorio DSpace, ya sea para cambiar el comportamiento de la p\u00e1gina sin necesidad de cargar una nueva, o por el hecho de introducir efectos que solo javascript nos puede proporcionar.<\/p>\n<p>Si cumples las anteriores condiciones,  entonces contin\u00faa leyendo esta mini gu\u00eda en la cual explico de una forma muy simple como introducir un fichero javascript para modificar el comportamiento en XMLUI.<\/p>\n<p>Antes de nada, es recomendable tener un conocimiento b\u00e1sico en lo referente a la creaci\u00f3n de temas en XMLUI, puesto que, para insertar un comportamiento javascript a DSpace vamos a tener que usar los temas ya definidos por DSpace (el m\u00e9todo recomendado es crear un tema nuevo copiando el existente  y a partir de ah\u00ed,  aplicar los cambios)<\/p>\n<p>Los ficheros que vamos a tener presentes son varios:<\/p>\n<p>[dspace-instalaci\u00f3n]\/webapss\/xmlui\/themes\/[nombre_del_tema]\/[nombre_del_tema].xsl<\/p>\n<p>[dspace-instalaci\u00f3n]\/webapss\/xmlui\/themes\/[nombre_del_tema]\/sitemap.xmap<\/p>\n<p>[dspace-instalaci\u00f3n]\/webapss\/xmlui\/themes\/[nombre_del_tema]\/lib\/fichero.js<\/p>\n<p>Para que no suene tan abstractas las rutas,  vamos a tomar de ejemplo el tema Classic y hacer las modificaciones sobre \u00e9l, por lo que el primer fichero descrito antes ser\u00eda&#8230;  (suponiendo que el dspace-instalaci\u00f3n est\u00e9 ubicado en el directorio ra\u00edz con nombre dspace)<\/p>\n<p><strong>Classic.xsl<\/strong><\/p>\n<p><em>Ruta: \/dspace\/webapps\/themes\/Classic\/Classic.xsl<\/em><\/p>\n<p>En este fichero hemos de coger la informaci\u00f3n pertinente para luego poderle a\u00f1adir el comportamiento javascript. Por ejemplo si queremos que en el men\u00fa aparezca un icono * que al hacer click sobre \u00e9l nos despligue nueva informaci\u00f3n, hemos de coger el template correspondiente de la carpeta DRI que controla la zona del men\u00fa, pegarlo en nuestro fichero Classic.xsl y ah\u00ed lo editamos a\u00f1adiendo el icono *.(Insisto, esta parte requiere un conocimiento base sobre c\u00f3mo editar un tema en XMLUI)<\/p>\n<p>Una vez introducido el componente por el cual nos comunicaremos con el javascript, solo nos falta a\u00f1adir el fichero javascript que controlar\u00e1 la funcionalidad. Este fichero se ha de colocar dentro de la carpeta del tema en cualquier ubicaci\u00f3n, aunque lo recomendable es usar la carpeta lib de cada tema.<\/p>\n<p>Este fichero javascript una vez creado por el desarrollador, y ubicado en la posici\u00f3n del tema que queramos, lo \u00fanico que necesitamos para que funcione es relacionarlo con la informaci\u00f3n a\u00f1adida en el fichero XSL. Para hacer esto debemos de hacer la llamada a nuestro javascript desde el fichero XMAP, de tal forma que al pinchar sobre el icono *, este llame al javascript ubicado en la carpeta de nuestro tema a trav\u00e9s del fichero XMAP.<\/p>\n<p>Esta llamada va a tener un aspecto tal que as\u00ed<\/p>\n<p><em>&lt;map:parameter name=\u00bbjavascript#2&#8243; value=\u00bblib\/fichero.js\u00bb\/&gt;<\/em><\/p>\n<p>En el ejemplo se llama a un fichero llamado fichero.js que est\u00e1 ubicado dentro de\u00a0 la carpeta lib de nuestro tema. He de decir que el name que se da en la llamada tiene que ser \u00fanico,  si no, DSpace nos generar\u00e1 un error.<\/p>\n<p>NOTA: En el ejemplo hemos puesto javascript#2 puesto que ya hay una declaraci\u00f3n posterior que es javascript (Esta hace referencia a jquery). El nombre que se le d\u00e9 siempre es conveniente que siga el patr\u00f3n siguiente: javascript#numero. El porqu\u00e9 hacerlo as\u00ed es muy simple: DSpace a la hora de montar la p\u00e1gina Web va a incluir esas llamadas a los javascript en el meta\u00a0 y est\u00e1s han de tener un orden l\u00f3gico (este orden coincide con el orden alfab\u00e9tico de las peticiones) puesto que si no, DSpace va a tener problemas a la hora de hacer llamadas a Javascript.<\/p>\n<p>Vamos a ver un ejemplo del fichero Classic.xmap<\/p>\n<p><em><em>&lt;map:parameter name=\u00bbjavascript\u00bb value=\u00bblib\/jquery.js\u00bb\/&gt;<\/em><\/em><\/p>\n<p><em>&lt;map:parameter name=\u00bbjavascript#2&#8243; value=\u00bblib\/fichero.js\u00bb\/&gt;<\/em><\/p>\n<p>Este fragmento de c\u00f3digo se ha de introducir dentro de de una etiqueta del XMAP llamada<\/p>\n<p><em>&lt;map:transform type=\u00bbIncludePageMeta\u00bb&gt;<\/em><\/p>\n<p>Ojo, que esta etiqueta viene definida dos veces dentro del fichero, ya que este fichero antes de aplicar nada, tiene que verificar en qu\u00e9 navegador se est\u00e1 trabajando, (diferencia entre IE6 y el resto de navegadores, por lo que se ha de incluir el fragmento de c\u00f3digo antedicho en ambas etiquetas)<\/p>\n<p>Con todo esto ya podemos insertar de forma elegante c\u00f3digo DSpace dentro de un tema dado en XMLUI.<\/p>\n<p>Ya para acabar, simplemente decir que si quer\u00e9is ver un ejemplo de c\u00f3digo javascript incluido dentro de un tema, pod\u00e9is consultar el c\u00f3digo fuente incluido en el tema Mirage, en el cual hay algo del comportamiento javascript montado tal y como acabo de relatar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alguna vez se nos ha ocurrido introducir algo de comportamiento din\u00e1mico en nuestro repositorio DSpace, ya sea para cambiar el comportamiento de la p\u00e1gina sin necesidad de cargar una nueva, o por el hecho de introducir efectos que solo javascript &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/www.arvo.es\/dspace\/incorporar-javascript-en-dspace\/\">Leer m\u00e1s &raquo;<\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[66,13],"class_list":["post-360","post","type-post","status-publish","format-standard","hentry","category-documentacion_no_tecnica","category-documentacion_tecnica","tag-javascript","tag-xmlui"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/comments?post=360"}],"version-history":[{"count":5,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/360\/revisions"}],"predecessor-version":[{"id":1160,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/posts\/360\/revisions\/1160"}],"wp:attachment":[{"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/media?parent=360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/categories?post=360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.arvo.es\/dspace\/wp-json\/wp\/v2\/tags?post=360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}