Siguiente tutorial: Developing Discourse Plugins - Part 2 - Connect to a plugin outlet
Ajustes del Sitio
Si visitas /admin/site_settings en un Discourse donde tienes capacidades de administrador, verás una lista de ajustes de configuración. Recién instalado, proporcionamos lo que creemos que son los mejores ajustes para una instalación de Discourse, pero también entendemos que la gente quiere modificar sus instalaciones para que su foro sea exactamente como lo desean.
Es probable que, a menos que tu plugin sea muy simple, desees agregar ajustes que los usuarios de tu plugin puedan cambiar y usar para configurar la funcionalidad. ¡Afortunadamente, esto es bastante fácil de hacer!
config/settings.yml
Lo primero que necesitarás hacer es crear config/settings.yml dentro de la carpeta de tu plugin. Este archivo describirá todos los ajustes que tu plugin necesitará. Aquí hay un archivo de ejemplo:
plugins:
awesomeness_enabled:
default: true
client: true
awesomeness_max_volume:
default: 10
client: true
El archivo debe estar en formato YAML. YAML puede ser bastante quisquilloso, así que si Discourse tiene problemas para cargar tus ajustes, te sugiero que intentes validar tu YAML con una herramienta como YAMLint.
Explicaré el archivo de ejemplo en detalle. El nivel superior es plugins y eso le dice a Discourse que queremos que estos ajustes aparezcan bajo “Plugins” en los ajustes del sitio.
Después de eso, se declaran dos ajustes, awesomeness_enabled y awesomeness_max_volume. Discourse deduce el tipo de los ajustes a partir del valor predeterminado, por lo que awesomeness_enabled es un booleano y awesomeness_max_volume es un número.
El client: true es importante de entender. Discourse se compone de dos aplicaciones principales, la API del lado del servidor escrita en Ruby on Rails, y la aplicación del lado del cliente escrita en Ember.js. Por defecto, no exponemos los ajustes a la aplicación cliente de Ember.js a menos que agregues client: true. Hacemos esto porque algunos ajustes son privados, como las claves API, y no deben enviarse a los usuarios finales. Además, si enviáramos todos los ajustes al cliente, podría ser una gran cantidad para que los usuarios finales descarguen.
En nuestro caso de ejemplo, queremos que ambos ajustes sean accesibles en el mundo de JavaScript, así como en el mundo del lado del servidor.
Un segundo paso importante
Antes de poder usar tus ajustes de sitio recién agregados, necesitas agregar traducciones para ellos. Dado que Discourse admite muchos idiomas, cualquier texto que agregues deberá ser compatible con la traducción a otros idiomas.
Creemos las traducciones para nuestros ajustes en inglés:
config/locales/server.en.yml
en:
site_settings:
awesomeness_enabled: "¿Es genial este plugin?"
awesomeness_max_volume: "¿Cuál es el volumen máximo posible?"
Las etiquetas que agregamos en ese archivo se mostrarán en la sección de administración. Es una buena idea ser lo más claro posible sobre lo que logra el ajuste.
Declarar el ajuste como el ‘ajuste habilitado’
Ahora que tenemos nuestro ajuste de sitio, debemos decirle a Discourse que es el que activa y desactiva nuestras características.
Abre tu archivo plugin.rb y agrega la siguiente línea debajo de los comentarios de metadatos:
enabled_site_setting :awesomeness_enabled
Asegúrate de comenzar todos tus otros ajustes con “awesomeness_” para que el botón de ajustes en /admin/plugins funcione correctamente.
Accediendo a tus nuevos Ajustes
Primero, necesitarás reiniciar tu servidor de desarrollo para que los ajustes surtan efecto. Una vez que lo hagas, los ajustes deberían estar disponibles para tu código del lado del servidor y del lado del cliente.
Inyectamos automáticamente los ajustes del sitio en la mayoría de los objetos de JavaScript, por lo que si estás declarando un Component, Controller, Route, View o Model, deberías poder acceder al ajuste del sitio simplemente usando this.siteSettings.awesomeness_enabled. En la mayoría de las plantillas handlebars también deberías poder decir {{siteSettings.awesomeness_enabled}} y se mostrará el valor del ajuste.
Aún no hemos cubierto mucho sobre Ruby en esta serie, pero si deseas acceder a los ajustes del sitio en la aplicación Ruby, puedes hacerlo a través de: SiteSetting.awesomeness_enabled
¡Ahora ve y agrega ajustes personalizados a tus plugins!
Más en la serie
Parte 1: Conceptos básicos de Plugins
Parte 2: Salidas de Plugins
Parte 3: Este tema
Parte 4: Configuración de git
Parte 5: Interfaces de Administración
Parte 6: Pruebas de Aceptación
Parte 7: Publica tu plugin
Este documento está controlado por versiones - sugiere cambios en github.




