Skip to content

Operaciones frecuentes

PabloDeAlbu edited this page Aug 25, 2021 · 11 revisions

Perfil de metadatos

Agregar un metadato

ADVERTENCIA IMPORTANTE: antes de realizar cualquier acción es importante hacer un BACKUP de la base de datos!!!!!!

Existen situaciones donde será necesario agregar un nuevo metadato al repositorio, y que no se encuentre en la base de datos. Generalmente, un metadato tiene la siguiente forma: <schema>.<element>.<qualifier>. El tercer elemento <qualifier> puede ser opcional.

1. Agregar el metadato a registries.

  1. Agregar todos los metadatos propios de la instancia de DSpace actual en config/registries/sedici-metadata.xml

  2. Si se trata de un schema nuevo, agregar los datos del mismo en una etiqueta <dc-schema> similar al siguiente fragmento de XML:

    <dc-schema>
        <name>{nombre_schema}</name>
        <namespace>{url_namespace}</namespace>
    </dc-schema>
  3. Agregar el metadato en cuestión utilizando una etiqueta <dc-type> similar al siguiente fragmento XML:

    <dc-type>
        <schema>{nombre_schema}</schema>
        <element>{nombre_element}</element>
        [<qualifier>{nombre_qualifier}</qualifier>]
        <scope_note>{texto descriptivo del metadato}</scope_note>
    </dc-type>

En éste caso, la presencia de corchetes en el elemento <qualifier> indica que, durante el agregado de un metadato, este elemento es optativo.

2. Agregar metadato en el formulario de Submission

  1. Abrir el archivo config/input-forms.xml.

  2. Ubicar la página (etiqueta <page>) en la que el campo debe mostrarse.

  3. Agregar el siguiente fragmento de código, completando u omitiendo según corresponda:

    <field>
        <dc-schema>{schema}</dc-schema>
        <dc-element>{element}</dc-element>
        [<dc-qualifier>{qualifier}</dc-qualifier>]
        <label>{Label para mostrar en el formulario}</label>
        <input-type [value-pairs-name="nombre_del_value_pair"]>{tipo de campo en el formulario}</input-type>
        [<hint>{Texto de ayuda al usuario, para que sepa qué debe cargar en este campo}</hint>]
        [<required>{Texto de error a mostrar si no se completa este campo}</required>]
        [<visibility>{workflow|submit}</visibility>]
        [<vocabulary>{nombre_del_xml_sin_la_extension}</vocabulary>]
        [<type-bind>{valor de dc.type al cual este campo se restringe}</type-bind>]
    </field>
  4. Si el metadato utiliza un <value-pairs>, agregar el atributo <input-type value-pairs-name="{value-pairs-name}">. Los <value-pairs> se definen en la sección <form-value-pairs> al final del archivo, usando la siguiente estructura:

    <value-pairs value-pairs-name="value-pairs-name">
        <pair>
            <displayed-value>{label a mostrar en el formulario}</displayed-value>
            <stored-value>{valor que se almacenará en el metadato}</stored-value>
        </pair>
        ...
        ...
    </value-pairs>

Para utilizar estos elementos es necesario que el metadato en cuestión este configurado como <dc-type value-pairs-name="...">dropdown</dc-type> o <dc-type value-pairs-name="...">qualdrop-value</dc-type>.

3. Verificar el uso de vocabularios controlados

Uso del plugin de DSpace

Si se utiliza un vocabulario controlado usando el plugin de DSpace (elemento ), asegurarse que exista el xml en el directorio config/controlled-vocabularies, con la estructura correspondiente.

Uso de Plungins personalizados

Si el metadato será controlado usando otros plugins (Autores, jerarquias, tesauros, etc), hay que configurarlo en el archivo config/dspace.cfg, en la sección Authority Control Settings

4. Editar la visualización del ítem

Ver Páginas de un item

  1. Agregar las traducciones necesarias (por lo menos el label del campo) en el archivo dspace/modules/xmlui/src/main/webapp/i18n/messages[_XX].xml correspondiente. El 'XX' indica el lenguaje en el que se encuentran los traducciones de un archivo en particular, p.e. 'messages_es.xml' contiene las traducciones en español.

5. Editar los mapeos o crosswalks de metadatos

Si corresponde, editar los archivos de mapeos ubicados en https://github.com/sedici/DSpace/tree/master/dspace/config/crosswalks para incluir el nuevo metadato en la lista de mapeos (OAI, Google Scholar, Sword, RSS/Atom/OpenSearch).

Ver Mapear un nuevo metadato

6. Agregar el metadato a la base de datos

  • Loguearse en DSpace como un administrador del sitio
  • Acceder a la opción @Formato de Metadatos@ del menú de administración
  • Si el schema a utilizar no existe, crearlo en esta pantalla
  • Seleccionar el schema a utilizar (haciendo click en su nombre)
  • Verificar que el metadato a ingresar no exista previamente en la base de datos
  • En el primer formulario que aparece (@Añadir nuevos campos de metadatos@) ingresar el nombre del elemento y el calificador, y en lo posible un nota descriptiva del metadato (su motivación y dominio)
  • Click sobre el boton @Añadir un nuevo campo de metadato@
  • Verificar que el nuevo metadato se encuentre cargado en el listado

Eliminar un metadato

ADVERTENCIA IMPORTANTE: antes de realizar cualquier acción es importante hacer un BACKUP de la base de datos!!!!!!

Eliminar un metadato implica básicamente 2 acciones a nivel de base de datos:

  • Eliminar cualquier metadato correspondiente en la tabla metadatavalue.
  • Eliminar el metadato de la tabla metadatafieldregistry.

Según la forma de eliminación que se utilice, estas acciones se pueden realizar automáticamente o manualmente.

Eliminación manual

1 - Primero se debe saber cuál es el metadata_field_id del metadato a eliminar (supongamos 'XY') y luego ejecutar la siguiente eliminación SQL:

DELETE FROM metadatavalue WHERE metadata_field_id  = 'XY';

2 - Luego eliminar el metadato de la tabla metadatafieldregistry:

DELETE FROM metadatafieldregistry WHERE metadata_field_id  = 'XY';

3 - Luego eliminar cada referencia al metadato en los archivos del sistema correspondientes a: registries, crosswalks, input-forms, y vista de XMLUI.

Eliminación automática mediante interfaz web (UI)

  1. Loguearse en DSpace como un administrador del sitio.
  2. Acceder a la opción Registros > Metadatos del menú de administración (URL admin/metadata-registry).
  3. Seguir el enlace sobre el schema correspondiente al metadato a eliminar.
  4. Seleccionar el checkbox correspondiente al metadato a eliminar en la tabla inferior y apretar el botón de borrado.
  5. Confirmar la eliminación.

La desventaja de este método es que no realiza las eliminaciones en los archivos del sistema como se realiza en el paso 3 de la eliminación manual.

Modificar metadatos del formulario de carga

Agregar un nuevo tipo de documento

Para agregar un nuevo tipo de documento, modificar input-forms.xml

Ejemplo donde se muestra como agregar el tipo "Documento de trabajo".

<value-pairs value-pairs-name="sedici_types" dc-term="dc_type">
	<pair>

		...

		<displayed-value>Documento de trabajo</displayed-value>
		<stored-value>sedici:types/articulo/documento_de_trabajo</stored-value>

		...

	</pair>
</value-pairs>

De ser necesario mapear en OAI, ver Agregar un nuevo tipo documento para OAI

Agregar campo

Agregar un campo para el metadato 'thesis.degree'

<field>:

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
</field>

Tener en cuenta que esta forma no tiene básicamente ninguna restricción sobre su visualización.

Restringir a una tipología documental en particular

Utilizar el tag <type-bind>.

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
</field>

Configurar obligatoriedad del campo

Utilizar el campo <required> (además podemos indicar qué mensaje mostrarle al usuario cuando no completa este campo).

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
  <required>¡Este campo no puede estar vacío! Debe indicar el grado correspondiente a la Tesis.</required>
</field>

Configurar carga para usuario de Submission y Workflow

Los formularios del input-forms.xml son utilizados tanto en el proceso de Submission como en el de Workflow.

Si quisiéramos ocultar el campo para el Submission configuramos para que sólo aparezca en el Workflow:

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
  <required>¡Este campo no puede estar vacío! Debe indicar el grado correspondiente a la Tesis.</required>
  <visibility>workflow</visibility>
</field>

Si quisiéramos que este campo sea visible para el usuario común pero utilizando un <hint> más sencillo, debemos agregar un campo adicional:

<!-- Sólo visible durante Submission-->
<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <!-- ... -->
  <hint>Indique el nivel de grado de su trabajo de Tesis.</hint>
  <!-- ... -->
  <visibility>submit</visibility>
</field>

<!-- Sólo visible durante Workflow-->
<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <!-- ... -->
  <hint>Indique el nivel de grado de su trabajo de Tesis. Utilice alguno de los valores especificados en el estándar de NDLTD para definir los niveles de educación relacionado a una Tesis.</hint>
  <!-- ... -->
  <visibility>workflow</visibility>
</field>

Configurar campo para que sea repetible

Utilizar el tag <repeatable>. Esta configuración acepta los valores true o false.

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
  <repeatable>true</repeatable>
  <required>¡Este campo no puede estar vacío! Debe indicar el grado correspondiente a la Tesis.</required>
  <visibility>workflow</visibility>
</field>

Permitir seleccionar el lenguaje relativo al metadato

Es común que a veces un metadato almacene texto en un lenguaje distinto al propio, por ejemplo en Portugués. DSpace permite indicar para cada metadato almacenado en la base de datos el lenguaje correspondiente al mismo. Para permitir la selección del lenguaje desde el formulario, es necesario agregar el tag <language> indicando en el mismo el value-pair que tendrá los lenguajes.

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type>onebox</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
  <repeatable>true</repeatable>
  <required>¡Este campo no puede estar vacío! Debe indicar el grado correspondiente a la Tesis.</required>
  <visibility>workflow</visibility>
  <language value-pairs-name="language_values">true</language>
</field>
<!-- ... -->
<form-value-pairs>
  <value-pairs value-pairs-name="language_values" dc-term="{cualquier_valor}">
    <pair>
      <displayed-value>Español</displayed-value>
      <stored-value>es</stored-value>
    </pair>  
    <pair>
      <displayed-value>Inglés</displayed-value>
      <stored-value>en</stored-value>
    </pair>
    <pair>
      <displayed-value>Portugués</displayed-value>
      <stored-value>pt</stored-value>
    </pair>
  </value-pairs>
</form-value-pairs>

Seleccionar valores de una lista desplegable

Podemos configurar el campo para que se visualice como un <select> HTML utilizando un tipo de campo dropdown y levante los valores necesarios de un <value-pairs>:

<field>
  <dc-schema>thesis</dc-schema>
  <dc-element>degree</dc-element>
  <dc-qualifier>level</dc-qualifier>
  <label>Nivel de grado de la Tesis</label>
  <input-type value-pairs-name="thesis_degree_levels">dropdown</input-type>
  <hint>Indique el nivel de grado de su trabajo de Tesis según los valores especificados en el estándar de NDLTD.</hint>
  <type-bind>Tesis</type-bind>
  <required>¡Este campo no puede estar vacío! Debe indicar el grado correspondiente a la Tesis.</required>
  <visibility>workflow</visibility>
</field>
<!-- ... -->
<form-value-pairs>
  <value-pairs value-pairs-name="thesis_degree_levels" dc-term="{cualquier_valor}">
    <pair>
      <displayed-value>Undergraduate (pre-masters)</displayed-value>
      <stored-value>0</stored-value>
    </pair>  
    <pair>
      <displayed-value>Masters (pre-doctoral)</displayed-value>
      <stored-value>1</stored-value>
    </pair>
    <pair>
      <displayed-value>Doctoral (includes post-doctoral)</displayed-value>
      <stored-value>2</stored-value>
    </pair>
  </value-pairs>
</form-value-pairs>

Hacer el campo controlado por autoridad

--> TODO <-- !!!!

Gestionar flujo de pasos en el Workflow y Submission

Índice


Definiremos un Workflow y Submission específicos para una colección en particular, ejemplificando con una colección ficticia llamada "Videos Institucionales", cuyo handle es "123456789/99".

Se realizarán:

  • cambios en el Submission: agregar paso que permita subir los subtítulos correspondientes al video que está subiendo.
  • cambios en el Workflow: agregar paso que permita revisar y añadir/editar subtítulos de los videos subidos.

Definir submission y workflow para una colección específica

Tanto para el Submission como para el Workflow, en cada uno de los procesos para la colección "123456789/99" reutilizaremos la mayoría de los pasos que vienen por defecto, pero realizaremos algunas modificaciones.

Submission específico

item-submission.xml

<submission-map>
  <name-map collection-handle="123456789/99" submission-name="videos" />
  <!-- ... -->
</submission-map>

<submission-process name="videos">
  <step>
    <processing-class>org.dspace.submit.step.SkipInitialQuestionsStep</processing-class>
  </step>
    
  <!--This Step will be to Describe the item.-->
  <step>
    <heading>submit.progressbar.describe</heading>
    <processing-class>org.dspace.submit.step.DescribeStep</processing-class>
    <jspui-binding>org.dspace.app.webui.submit.step.JSPDescribeStep</jspui-binding>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.DescribeStep</xmlui-binding>
    <workflow-editable>true</workflow-editable>
  </step>

  <!--This Step will be to Upload the item -->
  <step>
    <heading>submit.progressbar.upload</heading>
    <processing-class>org.dspace.submit.step.UploadStep</processing-class>
    <jspui-binding>org.dspace.app.webui.submit.step.JSPUploadStep</jspui-binding>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.UploadStep</xmlui-binding>
    <workflow-editable>true</workflow-editable>
  </step>
      
  <!--This Step will be to select a Creative Commons License-->
  <step>
    <heading>submit.progressbar.CClicense</heading>
    <processing-class>org.dspace.submit.step.CCLicenseStep</processing-class>
    <jspui-binding>org.dspace.app.webui.submit.step.JSPCCLicenseStep</jspui-binding>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.CCLicenseStep</xmlui-binding>
    <workflow-editable>false</workflow-editable>
  </step>
  
  <!--This Step will be to Verify/Review everything -->
  <step>
    <heading>submit.progressbar.verify</heading>
    <processing-class>org.dspace.submit.step.VerifyStep</processing-class>
    <jspui-binding>org.dspace.app.webui.submit.step.JSPVerifyStep</jspui-binding>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.ReviewStep</xmlui-binding>
    <workflow-editable>true</workflow-editable>
  </step>
</submission-process>

El orden de ejecución de los pasos en el Submission es estrictamente igual al orden en que son declarados en este archivo.

Workflow específico

workflow.xml

<workflow-map>
   <name-map collection="123456789/99" workflow="videos"/>
</workflow-map>

<workflow start="VIDEO-ADMIN_review" id="videos">
  <roles>
    <role id="Administrador_Videos_Institucionales" name="VIDEO-ADMIN" scope="repository" description="Rol asigando para las personas encargadas de gestionar los videos institucionales, principalmente a partir de la carga en la colección de 'Videos Institucionales'."/>
  </roles>
  <step id="VIDEO-ADMIN_review" role="Administrador_Videos_Institucionales" userSelectionMethod="claimaction">
    <actions>
      <action id="editaction"/>
    </actions>
  </step>
</workflow>

Esta configuración de workflow para la colección "123456789/99" sólo consta de un único paso encargado de editar los metadatos y aprobar el item enviado para su publicación. Además, debe crearse un grupo del sistema llamado "VIDEO-ADMIN" para que el workflow asigne al conjunto de personas vinculadas a ese grupo la ejecución del mismo. Mediante el uso del userSelectionMethod="claimaction" se indica que se asigne las acciones de este paso a cualquier persona perteneciente al grupo "VIDEO-ADMIN".

Agregar nuevos pasos y alterar el flujo de ejecución

Supongamos que partimos de un flujo convencional de DSpace como el anterior, y que a éste queremos agregarle <step> adicionales que se encarguen de acciones específicas sobre los videos subidos, como la posibilidad de anexarle un archivo de subtítulos, verificación de contenido del video, etc.

Para agregar nuevos pasos y modificar el flujo de ejecución hay que tener en cuenta distintas consideraciones en cada situación.

Submission

En este caso modificaremos el flujo normal para permitir que el usuario pueda subir conjuntamente un video y sus respectivos subtítulos (éstos podrían ser optativos). Si sólo utilizamos XMLUI, será necesario crear un step XMLUI especial que reemplace al org.dspace.app.xmlui.aspect.submission.submit.UploadStep declarado más arriba. Para esto habría que crear , p.e., una nueva clase JAVA org.dspace.app.xmlui.aspect.submission.submit.VideoUploadStep que permita para los archivos de tipo video la posibilidad de anexarle un archivo de texto WebVVT en distintos idiomas. Además debemos crear otra clase JAVA org.dspace.app.xmlui.aspect.submission.submit.VideoUploadStep que procese los datos enviados por el usuario, genere los metadatos correspondientes y retorne algún código de estado (código que informa si la ejecución fue exitosa o no). En este paso, todos estos archivos que están relacionados podrían ser conjuntamente identificados nombrándolos de la siguiente forma:

  • el_video_original.mp4
  • el_video_original_es.mp4 (subtítulos en idioma Español) [se agrega un flag indicando que es el idioma original del video]
  • el_video_original_en.mp4 (subtítulos en idioma Inglés)
  • etc...
<submission-process name="videos">
  <!-- ... -->  

  <!--This Step will be to Upload the item -->
  <!-- <step>
    <heading>submit.progressbar.upload</heading>
    <processing-class>org.dspace.submit.step.UploadStep</processing-class>
    <jspui-binding>org.dspace.app.webui.submit.step.JSPUploadStep</jspui-binding>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.UploadStep</xmlui-binding>
    <workflow-editable>true</workflow-editable>
  </step>
  -->  

  <step>
    <heading>submit.progressbar.upload</heading>
    <processing-class>org.dspace.submit.step.VideoUploadStep</processing-class>
    <xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.VideoUploadStep</xmlui-binding>
    <workflow-editable>true</workflow-editable>
  </step>

  <!-- ... -->
</submission-process>

En este ejemplo no se específico ninguna clase JSPUI ya que no es necesario si utilizamos la interfaz web XMLUI. Además orden de ejecución de los pasos quedó exactamente igual, ya que simplemente realizamos un reemplazo del paso original poniendo el nuevo paso inmediatamente abajo.

Workflow

Se agregará pasos con acciones que permitan:

  • Verificar si el contenido de los videos son aptos para ser subidos al sitio (caso contrario rechazarlos)
  • Crear/corregir archivos WebVTT para los archivos de video subidos.

Para hacer ésto se definirá un flujo específico de ejecución.

workflow.xml

<workflow start="VIDEO-ADMIN_review" id="videos">
  <roles>
    <role id="Administrador_Videos_Institucionales" name="VIDEO-ADMIN" scope="repository" description="Rol asigando para las personas encargadas de gestionar los videos institucionales, principalmente a partir de la carga en la colección de 'Videos Institucionales'."/>
  </roles>
  <step id="VIDEO-ADMIN_review" role="Administrador_Videos_Institucionales" userSelectionMethod="claimaction">
    <alternativeOutcome>
        <step status="1234">reject_videos</step>
    </alternativeOutcome>
    <actions>
      <action id="videoreview"/>
      <action id="addvideosubtitles"/>
      <action id="editaction"/>
    </actions>
  </step>

  <step id="reject_videos" role="Administrador_Videos_Institucionales" userSelectionMethod="claimaction">
    <actions>
       <action id="videomarkandreject"/>
    </actions>
  </step>
</workflow>
Primer acción videoreview

Como primer acción definiremos una evaluación del contenido de los videos, de tal forma de que se rechace el envío si es que no cumple con las políticas de contenido del repositorio. Habrá que agregar una clase JAVA org.dspace.app.xmlui.aspect.xmlworkflow.actions.processingaction.VideoReviewAction que implemente la vista, y tendrá que permitir:

  • visualizar los distintos videos,
  • añadir botones que permitan "Aceptar contenido/Rechazar contenido/Cancelar revisión".

Agregar la siguiente configuración en el archivo de beans dspace/config/spring/xmlui/workflow-actions-xmlui.xml

  <bean id="videoreview_xmlui" class="org.dspace.app.xmlui.aspect.xmlworkflow.actions.processingaction.VideoReviewAction"/>

Además se tendrá que crear otra clase JAVA org.dspace.xmlworkflow.state.actions.processingaction.VideoReviewAction que procese los datos enviados por el revisor. Se añadirá la siguiente configuración en el archivo de beans dspace/config/spring/api/workflow-actions.xml

    <!-- Decalaramos la clase que implementa la acción de revisión de videos -->
    <bean id="videoreviewAPI" class="org.dspace.xmlworkflow.state.actions.processingaction.VideoReviewAction" scope="prototype"/>
  
    <!-- Instanciamos un WorkflowActionConfig para que "levante" nuestra acción cada vez que es invocada... -->
    <bean id="videoreview" class="org.dspace.xmlworkflow.state.actions.WorkflowActionConfig" scope="prototype">
         <constructor-arg type="java.lang.String" value="videoreview"/>
         <property name="processingAction" ref="videoreviewAPI"/>
         <property name="requiresUI" value="true"/>
    </bean>

Esta acción retornará distintos códigos de estado según la ejecución: "0" si se aprobaron todos los videos, "1234" si se verifica que algunos de los videos no es apto y se debe rechazar.

Segunda acción addvideosubtitles

Como segunda acción se definirá una página que brinde la posibilidad de: reproducir los videos subidos, crear o corregir subtítulos en distintos idiomas, verificar que los subtítulos estén correctamente alineados en el tiempo. Para realizar ésto podríamos usar la librería JavaScript video.js para manipular fácilmente video y subtítulos en una página HTML (como se ve en este ejemplo).

Para ésto se realizarán las configuraciones necesarias en los archivos correspondientes:

workflow-actions-xmlui.xml

  <bean id="addvideosubtitles_xmlui" class="org.dspace.app.xmlui.aspect.xmlworkflow.actions.processingaction.AddVideoSubtitles"/>

workflow-actions.xml

    <!-- Decalaramos la clase que implementa la acción de revisión de videos -->
    <bean id="addvideosubtitlesAPI" class="org.dspace.xmlworkflow.state.actions.processingaction.AddVideoSubtitles" scope="prototype"/>
  
    <!-- Instanciamos un WorkflowActionConfig para que "levante" nuestra acción cada vez que es invocada... -->
    <bean id="addvideosubtitles" class="org.dspace.xmlworkflow.state.actions.WorkflowActionConfig" scope="prototype">
         <constructor-arg type="java.lang.String" value="addvideosubtitles"/>
         <property name="processingAction" ref="addvideosubtitlesAPI"/>
         <property name="requiresUI" value="true"/>
    </bean>
Tercer acción editaction

Si los dos pasos anteriores se ejecutaron sin problemas, sigue el paso de editar el item. Esta es una acción nativa en DSpace y permite:

  • editar los metadatos del item,
  • aprobar el item para continuar con el workflow,
  • ó rechazar el item por algún motivo.

Luego de la exitosa ejecución de este paso, el item se archivará en el repositorio y quedará accesible al público.

Modificar mensajes de la aplicación

Plantillas de correo

DSpace envía emails a los usuarios pertinentes, ante determinados eventos (archivo de una publicación en el repositorio, rechazo de un envío, etc.), a través una cuenta de correo institucional configurada desde la aplicación en el archivo dspace.cfg. Los mensajes enviados desde la aplicación son internacionalizables y reciben parámetros dependiendo del contexto de ejecución.

Los archivos de configuración de los emails se encuentran bajo el directorio dspace/config/emails. Para cada mensaje de email existente (originalmente están en inglés), hay varios derivados en otros idiomas (p.e. en español):

  • change_password --> change_password_es
  • feedback --> feedback_es

Los parámetros se escriben entre llaves:

# Item Archived email message
#
# {0}  Title of submission
# {1}  Name of collection
# {2}  handle
#
Subject: sedici: Envío aprobado y archivado

Usted ha enviado: {0}

A la Colección: {1}

Tu envío ha sido aceptado y archivado en sedici,
y éste se le ha asignado el siguiente identificador:
{2}

Por favor, utilice este identificador cuando realiza una cita del material enviado.

Muchas Gracias.

sedici

Personalizar change_password_es

  • Abrir en editor el archivo dspace/config/emails/change_password_es
  • Cambiar el mensaje por el siguiente texto:
# Email sent to DSpace users when they forget their password.
#
# Parameters: {0} is expanded to a special URL
#
# See org.dspace.core.Email for information on the format of this file.
#
Subject: Solicitud de cambio de contraseña
Para cambiar la contraseña de tu cuenta en sedici, por favor haz click en el link inferior:

  {0}

Si necesita asistencia con su cuenta, por favor comuniquese con el repositorio.

Si usted no ha solicitado un cambio de contraseña, ignore este mensaje. Disculpe las molestias.

sedici
  • Recompilar la aplicación.

Cambiar mensajes del formulario de carga

Ver Editar la visualización del ítem

Mensajes en XMLUI

Los archivos de internacionalización se encuentran en dspace/modules/xmlui/src/main/webapp/i18n.

Por ejemplo, en el archivo dspace/modules/xmlui/src/main/webapp/i18n/messages_es.xml uno podría cambiar el valor para la calve xmlui.general.dspace_home modificando:

<message key="xmlui.general.dspace_home">Inicio</message>

Mensajes en Discovery

Modificar mensajes en aspects/Discovery/i18n/messages_es.xml

Mensajes en páginas estáticas

Para internacionalizar los páginas estáticas se debe agregar un xhtml para cada páginas con su respectivo idioma. Ver en https://github.com/sedici/DSpace/tree/master/dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/page los archivos que-es-sedici_en.xhtml y que-es-sedici_es.xhtml donde al final del nombre del archivo se indica el lenguage con _es para español y _en para ingles.

Discovery

Ejemplos de configuraciones en discovery.xml.

No indexar ciertos metadatos.

Como excluir los metadatos dc.description.provenance para items y dc.rights para comunidades/colecciones:

<property name="toIgnoreMetadataFields">
    <map>
        <entry>
            <key><util:constant static-field="org.dspace.core.Constants.COMMUNITY"/></key>
            <list>
                <value>dc.rights</value>
            </list>
        </entry>
        <entry>
            <key><util:constant static-field="org.dspace.core.Constants.COLLECTION"/></key>
            <list>
                <value>dc.rights</value>
            </list>
        </entry>
        <entry>
            <key><util:constant static-field="org.dspace.core.Constants.ITEM"/></key>
            <list>
                <value>dc.description.provenance</value>
            </list>
        </entry>
    </map>
</property>

Cambiar facets

Configurar un filtro de búsqueda que no está incluido como facet:

<bean id="searchFilterTitle" class="org.dspace.discovery.configuration.DiscoverySearchFilter">
    <property name="indexFieldName" value="title"/>
    <property name="metadataFields">
        <list>
            <value>dc.title</value>
        </list>
    </property>
</bean>

Las siguiente propiedades tienen como objetivo:

  • indexFieldName: Nombre del filtro de búsqueda con el que solr indexara el metadato.
  • metadataFields: Lista de los metadatos que deben ser incluidos en el facet.

Los facets extienden de los filtros de búsqueda agregando algunas propiedades como se muestra a continuación:

<bean id="searchFilterAuthor" class="org.dspace.discovery.configuration.DiscoverySearchFilterFacet">
    <property name="indexFieldName" value="author"/>
    <property name="metadataFields">
        <list>
            <value>dcterms.creator.author</value>
            <value>dcterms.creator.compilator</value>
            <value>dcterms.creator.corporate</value>
            <value>dcterms.creator.editor</value>
        </list>
    </property>
    <property name="facetLimit" value="10"/>
    <property name="sortOrderSidebar" value="COUNT"/>
    <property name="sortOrderFilterPage" value="COUNT"/>
</bean>

Despues de modificar sidebarFacets o searchFilters, es necesario reindexar items existentes corriendo [dspace]/bin/dspace index-discovery -b, sino los cambios no apareceran

Facets jerárquicos (basados en taxonomías)

Para implementar esta funcionalidad el valor del metadato debe estar compuesto por los términos divididos por un divisor. Por ejemplo "CARTOGRAPHY::PHOTOGRAMMETRY", donde Cartography y Photogrammetry son términos, dividos por "::".

El facet mostrará el nivel superior, y al cliquear en él el resto de los facets serán visualizados.

<bean id="searchFilterSubject" class="org.dspace.discovery.configuration.HierarchicalSidebarFacetConfiguration">
    <property name="indexFieldName" value="subject"/>
    <property name="metadataFields">
        <list>
            <value>dc.subject</value>
        </list>
    </property>
    <property name="sortOrder" value="COUNT"/>
    <property name="splitter" value="::"/>
    <property name="skipFirstNodeLevel" value="false"/>
</bean>

Notar que la clase SidebarFacetConfiguration cambió a HierarchicalSidebarFacetConfiguration.

Propiedades:

  • splitter: el divisor utilizado para separar nodos.
  • skipFirstNodeLevel (opcional): Toma como valores "true" o "false" para no visualizar el nodo de nivel superior. Por defecto se selecciona "true".

Despues de modificar sidebarFacets o searchFilters, es necesario reindexar items existentes corriendo [dspace]/bin/dspace index-discovery -b, sino los cambios no apareceran

Para más información, ir a la página de Discovery en el wiki de DSpace.

Cambiar cantidad de items listados en resultados de búsqueda

Modificar el valor en discovery.xml de la siguiente propiedad

  <property name="defaultRpp" value="10" />

Personalizar filtros y facets.

Configurar un filtro de búsqueda que no está incluido como facet:

<bean id="searchFilterTitle" class="org.dspace.discovery.configuration.DiscoverySearchFilter">
    <property name="indexFieldName" value="title"/>
    <property name="metadataFields">
        <list>
            <value>dc.title</value>
        </list>
    </property>
</bean>

Las siguiente propiedades tienen como objetivo:

  • indexFieldName: Nombre del filtro de búsqueda con el que solr indexara el metadato.
  • metadataFields: Lista de los metadatos que deben ser incluidos en el facet.

Los facets extienden de los filtros de búsqueda agregando algunas propiedades como se muestra a continuación:

<bean id="searchFilterAuthor" class="org.dspace.discovery.configuration.DiscoverySearchFilterFacet">
    <property name="indexFieldName" value="author"/>
    <property name="metadataFields">
        <list>
            <value>dcterms.creator.author</value>
            <value>dcterms.creator.compilator</value>
            <value>dcterms.creator.corporate</value>
            <value>dcterms.creator.editor</value>
        </list>
    </property>
    <property name="facetLimit" value="10"/>
    <property name="sortOrderSidebar" value="COUNT"/>
    <property name="sortOrderFilterPage" value="COUNT"/>
</bean>

Facets jerárquicos (basados en taxonomías)

Para implementar esta funcionalidad el valor del metadato debe estar compuesto por los términos divididos por un divisor. Por ejemplo "CARTOGRAPHY::PHOTOGRAMMETRY", donde Cartography y Photogrammetry son términos, dividos por "::".

El facet mostrará el nivel superior, y al cliquear en él el resto de los facets serán visualizados.

<bean id="searchFilterSubject" class="org.dspace.discovery.configuration.HierarchicalSidebarFacetConfiguration">
    <property name="indexFieldName" value="subject"/>
    <property name="metadataFields">
        <list>
            <value>dc.subject</value>
        </list>
    </property>
    <property name="sortOrder" value="COUNT"/>
    <property name="splitter" value="::"/>
    <property name="skipFirstNodeLevel" value="false"/>
</bean>

Notar que la clase SidebarFacetConfiguration cambió a HierarchicalSidebarFacetConfiguration.

Propiedades:

  • splitter: el divisor utilizado para separar nodos.
  • skipFirstNodeLevel (opcional): Toma como valores "true" o "false" para no visualizar el nodo de nivel superior. Por defecto se selecciona "true".

Personalizar orden de los resultados de búsqueda

Agregar opción de ordenamiento basada en el metadato dc.title

<bean id="sortTitle" class="org.dspace.discovery.configuration.DiscoverySortFieldConfiguration">
        <property name="metadataField" value="dc.title"/>
        <property name="type" value="text"/>
</bean>

Configuración específica por colección

DSpace permite configurar una GUI Discovery específica por colección. Para esto, es necesario crear una configuración distinta a la default.

    <bean id="org.dspace.discovery.configuration.DiscoveryConfigurationService" class="org.dspace.discovery.configuration.DiscoveryConfigurationService">
        <property name="map">
            <map>
                <!--The map containing all the settings,
                    the key is used to refer to the page (the "site" or a community/collection handle)
                    the value-ref is a reference to an identifier of the DiscoveryConfiguration format
                    -->
                <!--The default entry, DO NOT REMOVE the system requires this-->
               <entry key="default" value-ref="defaultConfiguration" />
               <!-- Configuracion para la comunidad/colección 7621 -->
               <entry key="123456789/7621" value-ref="configuracionEspecífica7621"/>
            </map>
       </property>
   <!-- ... -->
   </bean>

   <bean id="configuracionEspecífica7621" class="org.dspace.discovery.configuration.DiscoveryConfiguration" scope="prototype">
        <!-- Poner configuración específica de Discovery para la colección 7621 -->
   </bean>

Para más información, ir a la página de Discovery en el wiki de DSpace.

OAI

Mapear un nuevo metadato

Los campos en OAI se mapean a un determinado metadataFormat. Los metadataFormat se encuentran en [dspace]/config/crosswalks/oai/metadataFormats

Previamente los campos pueden ser formateados para un contexto en particular en los transformers. Los transformers se encuentran en [dspace]/config/crosswalks/oai/transformers

Ejemplo donde el metadato se formatea el campo dc.identifier.uri para snrd:

	<!-- Formatting dc.identifier.uri-->
	<xsl:template match="/doc:metadata/doc:element[@name='dc']/doc:element[@name='identifier']/doc:element[@name='uri']/doc:element/doc:field[@name='value']/text()">
		<xsl:variable name="handle" select="/doc:metadata/doc:element[@name='others']/doc:field[@name='handle']"/>
			<xsl:value-of select="."/>
	</xsl:template>

Una vez transformado los metadatos necesarios, se mapean los campos.

Ejemplo donde se mapea un campo dc.identifier.uri(formateado para driver) con dc:identifier en cic_oai_dc.xsl:

<xsl:stylesheet
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:doc="http://www.lyncode.com/xoai"
	version="1.0">
	<xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />

	<xsl:template match="/">
		<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"

			...

			<!-- dc.identifier.uri -->
			<xsl:for-each select="doc:metadata/doc:element[@name='dc']/doc:element[@name='identifier']/doc:element[@name='uri']/doc:element/doc:field[@name='value']">
				<dc:identifier><xsl:value-of select="." /></dc:identifier>
			</xsl:for-each>

			...


		</oai_dc:dc>
	</xsl:template>
</xsl:stylesheet>

Uso del prefix OAI

Para poder ver revisar los datos que están siendo indexados en el core OAI de solr, utilizar el prefix OAI

Ejemplo:

http://sedici.unlp.edu.ar/oai/snrd?verb=ListRecords&metadataPrefix=xoai

Ejemplo para exponer un nuevo tipo de documento en OAI

Para exponer un nuevo tipo de documento a OAI, modificar el archivo xoai.xml

Primero filtrar en el filtro correspondiente el campo dc.type a exponer. En este caso se lo expondra en el contexto dedicado al SNRD:

<CustomCondition id="snrdDocumentsubtypeFilter">
	<Class>org.dspace.xoai.filter.DSpaceAtLeastOneMetadataFilter</Class>
	<Configuration>
		<string name="field">dc.type</string>
		<string name="operator">equal</string>
		<list name="values">

                        ...

			<string>Artículo</string>

			...

		</list>
	</Configuration>			
</CustomCondition>

Después de haberse ejecutado los filtros, los campos pueden ser formateados para un contexto en particular en los transformers. Los transformers se encuentran en [dspace]/config/crosswalks/oai/transformers

Ejemplo donde el metadato dc.type se formatea para driver y para snrd:

	<!-- Formatting dc.type-->  
	<xsl:template match="/doc:metadata/doc:element[@name='dc']/doc:element[@name='type']">
		<xsl:variable name="type" select="./doc:element/doc:field[@name='value']/text()"/>
		<xsl:call-template name="type-driver">
			<xsl:with-param name="theValue" select="$type"/>				
		</xsl:call-template>
		<xsl:call-template name="type-snrd">
			<xsl:with-param name="theValue" select="$type"/>
		</xsl:call-template>
	</xsl:template>

	<xsl:template name="type-driver">
		<xsl:param name="theValue" />

		<xsl:variable name="finalValue">
			<xsl:choose>

				...

				<xsl:when test="$theValue ='Artículo'">
					article
				</xsl:when>
				<xsl:when test="$theValue ='Comunicación'">
					article
				</xsl:when>

				...

			</xsl:choose>
		</xsl:variable>
		<doc:element name="type">
			<doc:element name='driver'>
				<doc:field name="value"><xsl:value-of select="normalize-space($finalValue)"/></doc:field>							
			</doc:element>
		</doc:element>
	</xsl:template>

Una vez transformado los metadatos necesarios, se mapean los campos a través de los formats.

Ejemplo donde se mapea un campo dc.type(formateado para driver) a dc:type en cic_oai_dc.xsl:

<xsl:stylesheet
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:doc="http://www.lyncode.com/xoai"
	version="1.0">
	<xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />

	<xsl:template match="/">
		<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"

			...

			<!-- dc.type driver -->
			<xsl:for-each select="doc:metadata/doc:element[@name='dc']/doc:element[@name='type']/doc:element[@name='driver']/doc:field[@name='value']">
				<dc:type><xsl:value-of select="concat('info:eu-repo/semantics/',.)" /></dc:type>
			</xsl:for-each>

			...


		</oai_dc:dc>
	</xsl:template>
</xsl:stylesheet>

Agregar un formato en OAI

Para agregar un nuevo formato en OAI es necesario agregar en en [dspace]/config/crosswalks/oai/metadataFormats el siguiente bloque de código.

<Format id="[IDENTIFICADOR]">
  <Prefix>[PREFIJO]</Prefix>
  <XSLT>metadataFormats/[XSLT]</XSLT>
  <Namespace>[NAMESPACE]</Namespace>
  <SchemaLocation>[SCHEMA_LOCATION]</SchemaLocation>
</Format>
Parametro Descripción
IDENTIFICADOR El identificador utilizado en el contexto de las configuraciones para referenciar un formato específico
PREFIJO Prefijo usado en en la interface OAI
NAMESPACE XML Namespace del schema creado
SCHEMA_LOCATION URI del XSD del schema

Ejemplo:

        <Format id="xoai">
            <Prefix>xoai</Prefix>
            <XSLT>metadataFormats/xoai.xsl</XSLT>
            <Namespace>http://www.lyncode.com/xoai</Namespace>
            <SchemaLocation>http://www.lyncode.com/schemas/xoai.xsd</SchemaLocation>
        </Format>

Agregar un contexto en OAI

Para agregar un nuevo contexto en OAI (p.e.el contexto 'snrd') es necesario agregar en el archivo [dspace]/config/crosswalks/oai/xoai.xml lo siguiente:

<Context baseurl="snrd" name="srnd context">
    <Transformer ref="snrdTransformer"/>
    <Filter ref="snrdFilter"/>
    <Set ref="snrdSet"/>
    <Format ref="oaidc"/>
    <Format ref="xoai"/>
    	
    <Description>
    	This context complies with SNRD rules.
    </Description>
</Context>

Validar perfil de metadatos ante el SNRD

Para validar ante el SNRD ingresar en repositoriosdigitales.mincyt.gob.ar:8080/snrd-dnet.web/pages/login.faces

Ingresar Email y clave:

1

Click en Nueva solicitud e ingresar el set a validar:

2

Para ver el detalle de la consulta, click en Consulta resumida

3

Para ver el detalle de un error, click sobre el nombre del metadato. Ejemplo: dc:rights

4

Estadísticas

Activar/desactivar estadísticas al público

Modificar la propiedad usage-statistics.authorization.admin.usage en usage-statistics.cfg con true o false

Agregar direcciones de IPs de bots/spiders a la lista de direcciones que deben ser omitidas en las estadísticas

Los archivos en de ips a filtrar se encuentran en dspace/config/spiders/

Para agregar nuevos archivos, es necesario modificar solr-statistics.cfg agregando una url con ips a filtrar a solr-statistics.spiderips.urls

Como se registran todos los accesos es necesario correr los siguientes comandos para filtrar las ips con el flag de bot.

[dspace]/bin/dspace stats-util -m (para marcar el flag de bot)

[dspace]/bin/dspace stats-util -f (para eliminar las ips con el flag de bot)

Modificar la visualización de la página de estadísticas

Realizar las modificiaciones necesarias en statistics.xsl

Reindexar el core statistics

Existen algunas situaciones en las que sería necesario reindexar todos los datos del core 'statistics' (p.e. cuando cambia el schema.xml y se configura un field como docValues). Para realizar esto, DSpace dispone de un comando espacífico:

./dspace solr-reindex-statistics -k

Esta herramienta exporta archivos csv correspondientes a los accesos mensuales de registros estadísticos, los cuales posteriormente serán importados nuevamente en el core para causar su "reindexación". Mientras este proceso se está realizando, los registros estadísticos que se van produciendo son registrados en un core temporal creado para tal fin. Al finalizar la reindexación, los registros mencionados anteriormente también estarán incluidos en el core reindexado.

Indicando el parámetro -k, todos los csv's que fueron exportados serán guardados en el directorio "install/solr-export". Caso contrario, son eliminados.

Importante: Tener en cuenta que esta proceso puede llegar a durar varias horas, por lo que si se ejecuta en un servidor, es recomendable dejar corriendo el comando en modo screen de tal forma que la ejecución siga corriendo aunque nosotros nos desconectemos del servidor.

Problemas si el servidor Solr no se encuentra localmente, es decir, es remoto

Durante la reindexación se crea un core temporal llamado statistics-temp, el cual garantiza que todos los registros de acceso nuevos producidos durante la reindexación no se pierdan. Para crear este core, la tarea de reindexación le dice a Solr (especificamente al componente CoreAdmin) que este core temporal tendrá como directorio de instancia o instanceDir el directorio $DSPACE_INSTALL_DIR/solr/statistics, y como directorio dataDir el directorio $DSPACE_INSTALL_DIR/temp/solr-data. El problema es que estos directorio son "locales" al servidor donde la instancia de DSpace está ejecutando.

Si la webapp Solr se encuentra corriendo en un servidor externo al servidor donde está ejecutando DSpace, entonces la tarea de reindexación va a fallar. Por lo tanto, es necesario hacer una especie de "engaño" a la tarea, y crear estos directorios en el servidor Solr antes de su ejecución.

En el servidor Solr

#Crear un enlace simbólico al instanceDir del core 'statistics'
ln -s $PATH_TO_SOLR_STATISTICS_INSTANCE_DIR $DSPACE_INSTALL_DIR/solr/statistics
#Crea directorio vacío
mkdir $DSPACE_INSTALL_DIR/temp/solr-data

Modificar la vista

Páginas de un item

  1. Abrir el archivo dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/xsl/aspect/artifactbrowser/item-view.xsl

  2. Ubicar el template con nombre itemSummaryView-DIM

  3. Si no se requiere ninguna visualización especial para el metadato, entonces agregar el siguiente fragmento de código en el lugar correspondiente. Ojo de no romper el XSL

    <xsl:call-template name="render-normal-field">
        <xsl:with-param name="name" select="'{class-name}'"/>
        <xsl:with-param name="elements"    select="dim:field[@schema='{schema}' and @element='{element}' and @qualifier='{qualifier}'] "/>
    </xsl:call-template>

    NOTA: si no aplica, puede omitirse el @qualifier.

Modificación de la vista

Cambiar layout: header, footer, etc

Para realizar modificaciones en el layout, modificar el archivo page-structure.xsl

Observar que en este último archivo se encuentran los templates builHead, buildFooter entre otros.

Home

Las modificaciones en el home se realizan en:

Community list

Para modificar la Community list, modificar el archivo community-list.xsl en xsl/aspect/artifactBrowser/community-list.xsl

Vista de un ítem

La de vista de un item puede ser modificada en dspace/modules/xmlui/src/main/webapp/themes/sedici/lib/xsl/aspect/artifactbrowser/item-view.xsl.

Visualizar nuevo metadato

Para visualizar un nuevo metadato (ejemplo dcterms.isFormatOf), primero hay que localizar en qué parte de la página HTML queremos ponerlo.

Una vez localizada esta parte dentro del item-view.xsl, agregar el siguiente fragmento de código:

<xsl:call-template name="render-metadata">
    <xsl:with-param name="field" select="'dcterms.isFormatOf'"/>
    <xsl:with-param name="container" select="'li'"/>
</xsl:call-template>

Y luego configurar el messages_es.xml y messages.xml para que se visualice el label del metadato en español e inglés respectivamente: messages_es.xml

<message key="xmlui.dri2xhtml.METS-1.0.item-dcterms_isFormatOf">Es formato de</message>

messages.xml

<message key="xmlui.dri2xhtml.METS-1.0.item-dcterms_isFormatOf">Is format of</message>

Páginas estáticas

Las páginas estáticas se encuentran bajo el directorio dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/page. En el final del nombre del archivo se agrega un sufijo indicando el idioma, por ejemplo _es (español), _en (inglés).

Agregar una página estática

  1. Crear un archivo XHTML bajo el directorio /dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/page. Por ej., agregamos la página 'hello_world_es.xhtml'
<?xml version="1.0" encoding="UTF-8" ?>

<div>
    <h4>¡Hola Mundo!</h4>
</div>

Y también en inglés en la página 'hello_world_en.xhtml'

<?xml version="1.0" encoding="UTF-8" ?>

<div>
    <h4>¡Hello world!</h4>
</div>

Visualización de listados de discovery

Los resultados de Discovery se visualizan al realizar una búsqueda en /discovery?query=<término de búsqueda>.

Visualización de los resultados

Los visualización de los resultados de Discovery es realizada por el archivo dspace/modules/xmlui-mirage2/src/main/webapp/themes/Mirage2/xsl/aspect/discovery/discovery.xsl.

Agregar un metadato a los resultados

Para agregar un metadato a los resultados de búsqueda debemos:

  1. Localizar el <xsl:template name="itemSummaryList"> en el archivo discovery.xsl de nuestro tema .
  2. Agregar el campo en cuestión respetando la estructura del grid-system.

P.e. agregaremos el metadato thesis.degree.grantor agregando en el template el siguiente código:

  <xsl:template name="itemSummaryList">
        <!-- ... --->
        <div class="col-md-12">
            	<!-- thesis.degree.grantor -->
            	<div class="row discovery-metadata-thesis-degree-grantor">
	                <xsl:if test="dri:list[@n=(concat($handle, ':thesis.degree.grantor')) and descendant::text()]">
	                    <xsl:call-template name="renderDiscoveryField">
	            	        <xsl:with-param name="value">
	                            <xsl:value-of select="dri:list[@n=(concat($handle, ':thesis.degree.grantor'))]/dri:item[position()=1]/text()" />
	        	            </xsl:with-param>
	    	                <xsl:with-param name="classname" select="'metadata-thesis-degree-grantor'"/>
		                </xsl:call-template>
	                </xsl:if>
                </div>
            </div>
   </xsl:template>       

Ver DRI relativo a una página

Existen 2 formas para ver como se compone el DRI de un página en particular. La primera es agregando 'DRI/' antes de la URL de la página.

Ejemplo:

De esta forma vemos el DRI antes de pasar por el transformer de Internacionalización.

La otra forma es agregar '?XML' al final de la URL.

Ejemplo:

Así, podremos ver el DRI luego de pasar por el transformer de internacionalización.

Ver DRI

Configuraciones frecuentes

Configuraciones personalizadas del servidor

Las configuraciones del servidor se encuentran en el archivo local.cfg. Se puede tomar como referencia local.cfg.EXAMPLE

Cambiar hostname

Modificar en local.cfg la propiedad dspace.hostname

Cambiar URL del servidor

Modificar en local.cfg la propiedad dspace.baseUrl

Configuración de base de datos.

Modificar en local.cfg las propiedades

  • URL de la BD

    • db.url
  • JDBC Driver:

    • db.driver
  • Database dialect

    • db.dialect
  • Usuario de la base de datos y password:

    • db.username
    • db.password

Configuración de emails salientes

Las siguientes son configuraciones que deben modificarse para que funcione la salida de correos desde la aplicación DSpace:

dspace.cfg

##### Email settings ######

mail.server.disabled = false

# SMTP mail server (allows DSpace to send email notifications)
mail.server = smtp.gmail.com

# SMTP mail server authentication username and password (if required)
mail.server.username = dspace@gmail.com
mail.server.password = DSp4c31nst4nc3

mail.charset = UTF-8

# SMTP mail server alternate port (defaults to 25)
mail.server.port = 465

# Pass extra settings to the Java mail library. Comma-separated, equals sign between
# the key and the value. For example:
mail.extraproperties = mail.smtp.socketFactory.port=465, \
                       mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
                       mail.smtp.socketFactory.fallback=false

# From address for mail
# All mail from the DSpace site will use this 'from' address
mail.from.address = dspace-noreply@myu.edu

# When feedback is submitted via the Feedback form, it is sent to this address
# Currently limited to one recipient!
feedback.recipient = dspace-help@myu.edu

# General site administration (Webmaster) e-mail
# System notifications/reports and other sysadmin emails are sent to this address
mail.admin = dspace-help@myu.edu

# Recipient for server errors and alerts (defaults to mail.admin)
alert.recipient = ${mail.admin}

# A comma-separated list of hostnames that are allowed to refer browsers to email forms.
# Default behaviour is to accept referrals only from dspace.hostname
mail.allowed.referrers = ${dspace.hostname}

Configuraciones generales del repositorio

Las configuraciones generales se ubican en el archivo local_custom.cfg. En el se encuentran las configuraciones independientes del entorno de desarrollo.

Agregar un idioma

Modificar la propiedad webui.supported.locales en local_custom.cfg

Google Analytics

Para utilizar google analytics se deben seguir los siguientes pasos:

  • Registrar una cuenta cuenta de Google analytics desde https://analytics.google.com/analytics
  • Una vez completados los datos obtenemos el ID de seguimiento (UA-XXXXXXXX-X)
  • Habilitar el uso de Google analytics desde la propiedad xmlui.google.analytics.key, el valor de la propiedad es el ID de seguimiento obtenido anteriormente
  • Ingresar en https://console.developers.google.com/project utilizando la misma cuenta utilizada en Google analytics
  • Crear un proyecto nuevo
  • desde el menu de la izquierda ir a la sección de administracion de API's y habilitar la API de analytics para el proyecto creado, para esto seleccionar Analytics API -> habilitar
  • En la barra de la izquierda ir a la sección credenciales
    • crear credenciales -> ID decliente de OAuth -> configurar pantalla de autorizacion
    • Completar los datos y guardar
    • Completar el siguiente formulario y Crear
  • Descargar el archivo P12 key y ubicarlo en algun lugar donde la aplicacion DSpace pueda accederlo y referenciarlo, para esto:
    • crear credenciales -> clave de cuenta de servicio
    • Seleccionar el tipo de clave P12 y descargar el archivo generado
    • Es importante anotar la clave que nos provee ya que es la clave de acceso del archivo que descargamos
Configuración GA

En el archivo {dspace.dir}/config/modules/google-analytics.cfg asegurarse que las siguientes configuraciones esten descomentadas

  • application.name = Dummy project (la documentación de DSpace hace la siguiente aclaracion con respecto a este valor: "Not sure if this property is required but it was in the example code provided by Google. Please do not delete.", por lo que no deberia modificarse ese valor)

  • table.id = ga:12345678

    • loguear en el dashboard de google analytics
    • ir a la sección de admin
    • seleccionar la opción ver configuración en la columna que dice "ver todos los datos del sitio web"
    • La propiedad es ID de vista (a pesar de la confusión que podrían generar los nombres) este valor debe reemplazar la parte numerica del ejemplo de arriba
  • account.email = El email que se genera automáticamente cuando se crea el proyecto en https://console.developers.google.com/project

  • certificate.location = La ruta al archivo P12 que descargamos previamente

  • authorization.admin.usage = true

Otras acciones frecuentes

Agregar otro administrador del sistema

  • Nuevo Administrador del sistema
./bin/dspace create-administrator
  • Nuevo usuario común
./bin/dspace user --add -l es -g Nombre -s Apellido -m email@dominio.com -p <password>

Ver el valor actual de una propiedad de configuración

Ejecutar ./dspace dsprop -p pasando como parametro el nombre de la propiedada a consultar Ejemplo:

./dspace dsprop -p db.schema

Mantenimiento del índice de búsqueda

Ante cambios en la configuración de Discovery, es necesario reconstruir todo el índice...

./bin/dspace index-discovery -bos

Sino simplemente basta con actualizarlo (sin parámetros -bos)

./bin/dspace index-discovery

Mantenimiento del índice de OAI

./bin/dspace oai import -co

Sino simplemente basta con actualizarlo (sin los parámetros -co)

./bin/dspace oai import

Cargar nuevos metadatos al sistema

Para modificar la registry de metadatos en DSpace

./bin/dspace registry-loader -metadata /path/to/new-metadata.xml

Testear configuración de email

./bin/dspace test-email

Cómo modificar los mensajes de email

DSpace envía emails a los usuarios pertinentes, ante determinados eventos (archivo de una publicación en el repositorio, rechazo de un envío, etc.), a través una cuenta de correo institucional configurada desde la aplicación. Los mensajes enviados desde la aplicación son internacionalizables y reciben parámetros dependiendo del contexto de ejecución.

Los archivos de configuración de los emails se encuentran bajo el directorio dspace/config/emails. Para cada mensaje de email existente (originalmente están en inglés), hay varios derivados en otros idiomas (p.e. en español):

  • change_password --> change_password_es
  • feedback --> feedback_es

Los parámetros se escriben entre llaves:

# Item Archived email message
#
# {0}  Title of submission
# {1}  Name of collection
# {2}  handle 
#
Subject: CIC-Digital: Envío aprobado y archivado 

Usted ha enviado: {0}

A la Colección: {1}

Tu envío ha sido aceptado y archivado en CIC-Digital,
y éste se le ha asignado el siguiente identificador:
{2}

Por favor, utilice este identificador cuando realiza una cita del material enviado.

Muchas Gracias.

CIC-Digital

Personalizar change_password_es

  • Abrir en editor el archivo dspace/config/emails/change_password_es
  • Cambiar el mensaje por el siguiente texto:
# Email sent to DSpace users when they forget their password.
#
# Parameters: {0} is expanded to a special URL
#
# See org.dspace.core.Email for information on the format of this file.
#
Subject: Solicitud de cambio de contraseña
Para cambiar la contraseña de tu cuenta en CIC-Digital, por favor haz click en el link inferior:

  {0}

Si necesita asistencia con su cuenta, por favor comuniquese con el repositorio.

Si usted no ha solicitado un cambio de contraseña, ignore este mensaje. Disculpe las molestias.

SEDICI
  • Recompilar la aplicación.
Clone this wiki locally