Skip to content

Plugins_es

sonsoleslp edited this page Aug 22, 2018 · 3 revisions

Los plugins son componentes especiales que permiten a Ediphy contar con distintos tipos de contenido. Son desarrollos separados que tienen que cumplir una serie de requisitos para ser integrados en Ediphy. Consulta la sección de la documentación titulada API de Plugins para desarrollar tu propio plugin.

Las siguientes funciones permiten importar y hacer uso de los plugins en Ediphy.

Ediphy.Plugins

Este objeto contiene los métodos necesarios para cargar los plugins y obtener las definiciones y las instancias de los mismos, además de una serie de propiedades y funciones internas.

  • pluginInstancesList: este objeto contiene las instancias de los plugins.
  • plugins: este array contiene los nombres de todos los plugins que se quieren cargar en la aplicación.
  • loadPluginFile: dado el nombre de un plugin, esta función hace una llamada AJAX para cargar el fichero del plugin, tanto el del modo "editor" como el del modo "visor" (si lo tuviera). Por el formato que tienen los plugins, al ser cargados se añaden automáticamente a los objetos Ediphy.Plugins y Ediphy.Visor.Plugins. Esto se hace dentro de un Promise, para que al finalizar la llamada AJAX se puedan resolver y ejecutar el código que se desee (en este caso, instanciar los plugins). Hasta aquí eran propiedades privadas. Las siguientes están accesibles.
  • get: dado el nombre de un plugin, devuelve su instancia.
  • getAll: devuelve las instancias de todos los plugins.
  • getPluginsInView: dado el identificador de una vista y un parámetro booleano, este método hace una llamada a la API para obtener los plugins añadidos a la vista indicada. Si el booleano es positivo, entonces sólo se devolverán aquellos que hayan especificado un alias. Funciona de manera asíncrona.
  • getPluginsInCurrentView: esta función hace una llamada al método getPluginsInView sin especificar de qué vista se quieren obtener los plugins.
  • loadAllAsync: esta función crea un Promise por cada uno de los plugins declarados en el array plugins mencionado más arriba, llama a loadPluginFile y al finalizar añade a la lista pluginInstancesList la instancia del plugin. Debido a la interrelación existente entre BasePlugin y la definición del plugin (se hacen llamadas a los métodos del otro desde ambas partes) el procedimiento es instanciar un Ediphy.Plugin, instanciar la definición del plugin seleccionado pasando como parámetro el Ediphy.Plugin anterior, asignar la nueva instancia al Ediphy.Plugin original usando el método create y finalmente, asignarla a la lista de instancias pluginInstancesList. Se puede ver el código a continuación:
var plugin = new Ediphy.Plugin();
plugin.create(Ediphy.Plugins[name](plugin));
pluginInstancesList[name] = plugin;

Esta función devuelve una nueva Promise que con la lista de Promises creadas anteriormente, lo que hace que todo el método sea asíncrono.

Ediphy.Visor.Plugins

Este objeto expone los métodos para trabajar con la lista de instancias de los plugins adecuadas al formato requerido por el visor y por el exportador (definición "modo visor"). Estos son:

  • get: devuelve la instancia del plugin cuyo nombre es pasado como parámetro.

  • getAll: devuelve las instancias de todos los plugins.

  • add: crea una instancia de nueva de un plugin y la añade a la lista. En todo momento sólo va a haber una instancia de un plugin; si por alguna razón este método fuera llamado dos veces para el mismo plugin, la anterior instancia es sobreescrita. Recibe como parámetro el nombre del plugin. Si encuentra la definición del plugin específica para el "modo visor", usa esta para instanciar el plugin, en caso contrario, usa la definición del "modo editor". Esto se hace del mismo modo que los Ediphy.Plugin.

Además, al cargar los plugins, sus definiciones se van guardando en este objeto.

##Mejoras futuras# Compilar todos los archivos de plugins en uno solo para evitar tener que hacer una petición por plugin al servidor

Clone this wiki locally