Ir al contenido

Metadata Script

El campo Script permite ejecutar código JavaScript personalizado para implementar comportamientos dinámicos en los formularios de metadatos.

Este campo puede interactuar con elementos de formulario como:

  • Input
  • CheckBox
  • Select
  • TextArea
Atributo Descripción Obligatorio
label El texto que se muestra como etiqueta en la interfaz de usuario.
Aunque este campo tiene un atributo label, normalmente no se muestra en la interfaz ya que los scripts se ejecutan en segundo plano. Sin embargo, es útil para fines administrativos y de documentación.
true
name Identificador único del campo.
Dos elementos de metadatos no pueden tener el mismo name. El name debe ser único.
El name debe empezar por “okp:”.
Es buena práctica usar el nombre del grupo de metadatos como base para el nombre del campo de metadatos. Por ejemplo, usando “okg:consulting” como nombre de grupo se obtiene el nombre de campo “okp:consulting.script” cambiando “okg” por “okp”. Eso ayuda a encontrar el grupo de metadatos a partir del nombre del campo de metadatos.
Use solo letras, números y guiones bajos: “0-9a-zA-Z_”.
true
source Ruta al fichero JavaScript que se va a ejecutar. El fichero debe estar ubicado en el directorio de plugins.
El fichero JavaScript debe colocarse en el directorio plugins de la instalación de OpenKM. Por ejemplo: /opt/openkm/tomcat/plugins/metadata_script.js
El script se carga y ejecuta después de renderizar el formulario, lo que le permite acceder y manipular los elementos del formulario.
true
value Un valor inicial opcional o datos pasados al script. Accesible dentro del script en tiempo de ejecución. false
  • Interacción con los campos del formulario:
  • El script puede interactuar con otros campos de metadatos usando sus nombres como IDs de elemento. Los campos de formulario a los que se puede acceder incluyen:
  • Además, se puede acceder a cada fila de campo de formulario usando el prefijo “row-” seguido del nombre del campo.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN"
"http://www.openkm.com/dtd/property-groups-3.15.dtd">
<property-groups>
<property-group label="Consulting" name="okg:consulting">
<input label="Input label" name="okp:consulting.input1" />
<separator label="Separator label" name="okp:consulting.separator" />
<input label="Input label" name="okp:consulting.input2" />
<script label="Script label" name="okp:consulting.script" source="metadata_script.js" />
</property-group>
</property-groups>

Ejemplo de un fichero script (metadata_script.js) que muestra la interacción con los campos del formulario:

(function() {
alert('loading');
const input = document.getElementById('okp:consulting.input1');
const row = document.getElementById('row-okp:consulting.input1');
if (input) {
input.value = 'modified';
// Trigger the input event so Vue detects the change
input.dispatchEvent(new Event('input', { bubbles: true }));
// Add event listener to detect changes
input.addEventListener('input', function(event) {
if (event.target.value.length === 10) {
alert('Text length greater than 10 characters');
} else if (event.target.value.length === 11) {
row.style.display = 'none'; // hide the field
}
});
}
alert('loaded');
})();