Extension:Page Forms/es

Descripción
Semantic Forms es una extensión de MediaWiki que permite a los usuarios añadir, editar y hacer peticiones de datos usando formularios. Está estrechamente vinculada a otra extensión llamada Semantic MediaWiki y está pensada para usar datos estructurados con notación semántica. Tener Semantic MediaWiki instalado es una pre-condición para usar la extensión Semantic Forms; el código no funcionará sin ella.

En pocas palabras, Semantic Forms permite disponer de formularios para añadir, editar y hacer peticiones de datos en tu wiki, sin tener que programar. Los formularios pueden ser creados y editados no sólo por los administradores, sino también por los propios usuarios.

Los componentes principales de la funcionalidad de Semantic Forms son las páginas de definición de formularios, que se inscriben en el nuevo espacio de nombres (namespace) 'Formulario:' (o 'Form:'). Son páginas que contienen un código de marcado que es parseado cuando un usuario añade o edita datos. Mientras que los formularios son definidos estrictamente a través de estás páginas de definición, los usuarios pueden por si mismos crear y editar formularios, sin necesidad de programar.

La extensión Semantic Forms aplica el uso de plantillas (templates) en la creación de datos semánticos. Esto hace innecesario el uso de marcado semántico en los contenidos de página; por el contrario, todo el marcado semántico es almacenado indirectamente mediante plantillas. Mediante un formulario un usuario puede rellenar una serie predefinida de plantillas para una página (automáticamente los datos se convertirán en propiedades semánticas una vez la página sea salvada).

Los Formularios también pueden ser usados para editar datos de una página ya existente. Puedes activar una pestaña de 'editar con formulario' que se mostrará en la parte superior de cualquier página; ver al respecto:

Forms can also be used to edit the data in an existing page, and you can enable an 'edit with form' tab to show Pestaña 'editar con formulario'.

Semantic Forms soporta también autocompletado de campos, de forma que los usuarios pueden ver los valores que previamente han sido introducidos en un determinado campo de entrada de datos. Esta funcionalidad ayuda sobremanera a descartar errores relacionados con la ambigüedad de términos, ortografía, etc.

Los contenidos de una página que no son introducidos mediante formulario, como por ejemplo un texto de descripción no previsto en las entradas del formulario, no son ignorados cuando una página es editada con un formulario; al contrario, ese contenido se mantiene a través de una caja de entrada de datos llamada «texto libre» que queda separada del resto.

Semantic Forms también proporciona otras características: un formulario para crear propiedades (también llamadas «atributos») semánticas, un formulario para crear plantillas, un formulario para crear formularios de usuario, páginas que generan listados de todas las plantillas y todos los formularios de usuario en el sitio wiki, y otros. Esta documentación cubre todas estas características, pero consulta especialmente la sección Páginas especiales.

Partes del desarrollo de este software fueron patrocinadas por ontoprise GmbH, Google (mediante Google Summer of Code) y otros.

Descarga
Puedes descargar el código de Semantic Forms en cualquiera de los siguientes formatos de compresión:


 * semantic_forms_2.1.tar.gz
 * semantic_forms_2.1.zip

También puedes descargar el código directamente vía SVN desde el repositorio de código fuente de Mediawiki, en http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SemanticForms/. Usando una línea de comandos puedes escribir lo siguiente para descargarlo:

svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SemanticForms/

Instalación
Recuerda que, antes de instalar Semantic Forms, tienes que tener instalado Semantic MediaWiki

Después que hayas creado un directorio llamado 'SemanticForms' (extrayendo uno de los ficheros de compresión o descargando vía SVN), sitúa dicho directorio dentro del directorio 'extensions' de MediaWiki. Luego, en el fichero LocalSettings.php en el directorio principal de MediaWiki, añade la línea siguiente debajo de la llamada a la extensión Semantic MediaWiki (atención: tanto de la principal línea 'include_once' como de la línea 'enableSemantics', si no está debajo de ellas no funcionará):

Puede que sea necesario incrementar también el límite de memoria (memory_limit) de PHP:

Autores
Semantic Forms fue creado, y mayoritariamente escrito, por Yaron Koren, que puedes contactar en yaron57 -- [arroba] -- gmail -- [dot] com. Buena parte de la funcionalidad jQuery y Javascript relacionado fue añadida por Sanyam Goyal como parte de la edición de 2010 del Google Summer of Code, que puedes contactar en goyalsanyam -- [arroba] -- gmail -- [dot] com. Incluye también importantes contribuciones de código realizadas por: Daniel Friesen, Eugene Mednikov, Harold Solbrig, Jayson Harshbarger, Jeffrey Stuckman, Louis Gerbarg, Matt Williamson, Nils Opperman, Sergey Chernyshev y wheresmytab.

Versión
La versión actual de Semantic Forms es la 2.0 Ver el historial de versiones completo.

Idiomas soportados
Semantic Forms tiene soporte para más de 100 idiomas, entre los cuales el Inglés, Árabe, Catalán, Chino de Taiwan, Chino continental, Holandés, Francés, Alemán, Hebreo, Persa, Portugués de Brasil, Castellano y otras lenguas; y soporte parcial para Afrikaans, Bieloruso, Bengali, Búlgaro, Catalán, Croata, Checo, Danés, Finés, Griego, Gujarati, Hebreo, Hindi, Húngaro, Indonesio, Italiano, Japonés, Khmer, Lituano, Marathi, Pastú, Polonés, Portugués, Rumano, Ruso, Cirílico Serbio, Eslovaco, Sueco, Tagalog, Tajik, Ucraniano, Vietnamita y muchos otros.

Estructura del código
Para una lista completa de ficheros en Semantic Forms y una breve descripción de cada uno de ellos, véase Extension:Semantic Forms/Code structure.

Para ver el código en línea, incluyendo historial de versiones para cada fichero, puedes acceder aquí.

Páginas especiales
La extensión define algunas páginas «especiales» de Mediawiki:


 * Special:AddData (Agregar dato) — permite a un usuario añadir una página usando un formulario definido por los propios usuarios. (Ver un ejemplo de página).
 * Special:AddPage (Agregar página con formulario) — permita a un usuario especificar un nombre de página, tanto para añadirla como para editarla, dependiendo de si existe o no. (Ver un ejemplo de página). Este ejemplo puede no funcionar totalmente.
 * Special:CreateForm (Crear un formulario) — permite a un usuario crear un nuevo formulario para añadir o editar datos. (Ver un ejemplo de página).
 * Special:CreateTemplate (Crear una plantilla) — permite a un usuario crear una nueva plantilla. (Ver un ejemplo de página).
 * Special:CreateProperty (Crear una propiedad) — permite a un usuario crear una nueva propiedad o atributo semántico. (Ver un ejemplo de página).
 * Special:CreateCategory (Crear una categoría) — permite a un usuario crear una nueva categoría de MediaWiki. (Ver un ejemplo de página).
 * Special:CreateClass — una página que crea todos los elementos para una única «clase» ('class') al mismo tiempo — propiedades, plantillas, formulario y categoría. (Ver un ejemplo de página).
 * Special:EditData (Editar datos) — permite a un usuario editar una página existente usando un formulario definido por los propios usuarios. (Ver un ejemplo de página). Este ejemplo puede no funcionar totalmente.
 * Special:Forms (Formularios) — proporciona un listado de todos los formularios de ese wiki. (Ver un ejemplo de página).
 * Special:RunQuery — permite a un usuario ejecutar una petición, usando un formulario. (Ver un ejemplo de página).
 * Special:Templates (Plantillas) — proporciona un listado de todas las plantillas de ese wiki. (Ver un ejemplo de página).
 * Special:UploadWindow — permite a un usuario cargar un fichero; muy similar a la página estándar Special:Upload (Especial:SubirArchivo), pero sin la skin. (Ver un ejemplo de página). Esta página es llamada desde dentro de un formulario, no debería haber acceso directo a ella para los usuarios.

Empezando
Y bien, ya tienes apunto todo el software en tu sitio web. Ahora qué? Ahora es el momento de crear las estructuras que sostengan, muestren y permitan añadir y editar tus datos; por suerte todo esto se puede hacer con sólo crear algunas páginas del wiki. Para hacerlo tendrás que seguir los pasos siguientes:


 * Planifica tu estructura de datos. Qué tipo de páginas tendrá tu sitio? Qué datos contendrán cada uno de ellos? Luego puedes cambiarlo todo si fuera necesario, pero es bueno tener un plan de partida.


 * Crea propiedades. (o atributos) Las piezas básicas de construcción de un sitio web semántico son las conexiones entre datos, que en Semantic MediaWiki son conocidas como propiedades (atributos en su traducción al castellano). Una propiedad es usada para especificar un fragmento concreto de información sobre el tema de esa página; el valor de una propiedad tanto puede ser un valor independiente como el nombre de una página del propio wiki. Cualquier propiedad puede ser definida en tu wiki con una página en el campo de nombres (namespace) "Property:" (en la versión castellana «Atributo:»). La forma más fácil de hacerlo es usando la página especial 'CreateProperty' (ver más arriba).


 * Crear plantillas. Una plantilla define la visualización de los datos en una página, posee el marcado para convertir los datos en información semántica real, y (a menudo) incluye la página en una determinada categoría y, por lo tanto, dentro de un determinado tipo de página. En general, habrá una plantilla por tipo de página, aunque a veces un solo tipo de página puede contener varias plantillas. Una plantilla también puede ser utilizada para la agregación, mostrando una lista de todas las otras páginas que tienen una cierta relación con esta página (ver la documentación sobre inline queries en el sitio web de Semantic MediaWiki para obtener más información al respecto). La forma más fácil para crear plantillas es utilizar la página especial «CreateTemplate», Crear plantilla (véase más arriba).


 * Crear formularios. Ahora se pueden crear formularios que permitan a los usuarios editar fácilmente diversos tipos de páginas. Debería haber un formulario para cada tipo de página, un formulario debe rellenar la plantilla o plantillas que este tipo de página contiene. Hay también una página especial para crear nuevos formularios: «CreateForm» (véase más arriba). Ver más abajo la información sobre el lenguaje de marcado específico que se usa para definir los formularios. Una petición común es que estas tres páginas especiales ('CreateProperty', 'CreateTemplate' y 'CreateForm') puedan ser usadas para editar propiedades/plantillas/formularios ya existentes, no sólo para crearlos nuevos. Sin embargo, esto es mucho más difícil de implementar a nivel de programación que crear nuevas páginas, porque requiere parsear las páginas existentes. Por ahora y en el futuro inmediato, la modificación de las propiedades, plantillas y formularios existentes tendrá que seguir haciéndose a mano. En otras palabras, ir a las páginas de propiedades, plantillas o formularios (que se enumeran en las respectivas páginas especiales) y seleccionar lo que se desee modificar. Haciendo clic en la pestaña Editar se pueden hacer los cambios que se deseen editando el código fuente.


 * Crear categorías. Una de las plantillas incluidas en cada formulario debe establecer que cada artículo creado por él esté en una categoría determinada. Hay que crear una página para esa categoría y, en ella, especificar un formulario por defecto de manera que los artículos puedan ser editados con el mismo formulario con el que han sido creados. La manera más fácil de hacerlo es usando la página especial 'CreateCategory' (ver más arriba).


 * Activar enlaces a formularios Además de crear categorías que tengan un formulario por defecto, hay otros pasos a seguir para que los usuarios puedan acceder a los formularios creados. Estos incluyen la adición de enlaces para agregar datos en el menú lateral (sidebar) y en otros lugares, así como el establecimiento de formularios predeterminados y formularios alternativos en las páginas de propiedades que permitan tener enlaces rojos a páginas inexistentes apuntando a un formulario para crearlas. Éstas acciones se explican más adelante.


 * Añadir datos. Habrá que agregar datos al sitio, usando los nuevos formularios que se han creado, para asegurarse que los formularios, plantillas y categorías están funcionando de la manera deseada.


 * Añadir datos en el menú lateral y en otras partes. El menú lateral (que en los wikis en inglés y otras lenguas, también en castellano, se puede editar desde la página «MediaWiki:Sidebar») debería contener enlaces a los formularios para incorporar todos los tipos de datos y también a las categorías de cada uno de estos tipos de datos. También se pueden incorporar estos enlaces en la página principal y en otras partes del wiki.


 * Personalizar Una vez la estructura ha sido creada, puede ser personalizada tanto como se quiera — cambiar el aspecto (look&feel) de todo el wiki, de varias plantillas y de los formularios, añadiendo y cambiando campos y añadiendo o cambiando las consultas en línea (inline queries) para las peticiones semánticas.

... Otra posibilidad, en vez de crear propiedades, plantillas, formularios y categorías por separado, es crearlo todo de una sola vez, utilizando la página especial 'CreateClass' (ver arriba). Esta página no permite tanta flexibilidad como la creación de todas estas páginas de forma independiente, pero se puede ejecutar mucho más rápido.

Ejemplo
Para ver este proceso en acción, ver el ejemplo de como estos pasos pueden ser seguidos para un wiki real.

Guía de referencia rápida
Existe una referencia rápida en dos páginas, una «hoja de trucos» o cheat sheet, para Semantic MediaWiki, Semantic Forms y una variedad de otras extensiones, apunto para ser impresa. Se encuentra disponible (en inglés) aquí, en formato PNG (imagen), PDF y SVG.

Lenguaje de marcado de formularios
Los formularios se definen usando un conjunto de etiquetas (tags) que especifican las plantillas a incluir y los campos dentro de dichas plantillas. Se puede añadir Wikitext y algo de HTML libremente en cualquier sitio fuera de las etiquetas. Las etiquetas disponibles son las siguientes:


 * — Contiene información especial sobre el formulario. Esta etiqueta es opcional, pero puede situarse en la parte superior del formulario si estuviera presente. Los parámetros disponibles para esta etiqueta son los siguientes:
 * - Indica que este formulario es un formulario parcial; ver "Formularios parciales", más abajo.
 * título - Define el títolo para la página 'FormEdit', cuando el formulario se usa para creat una página nueva.
 * título - Define el título para la página 'FormEdit', cuando el formulario se usa para editar una página ya existente.
 * fórmula - Define la fórmula para definir automáticamente el título de la página a añadir; ver sobre ello "Proceso en un solo paso, más abajo.
 * - Indica que el texto libre (free text) en la página generada desde el formulario quede dentro de la etiqueta " ", de forma que las páginas creadas desde el formulario puedan ser transcluidas en otras páginas sin afectar las propiedades semánticas de las mismas.


 * - Especifica un nombre de plantilla (template) y declara que todos los campos siguientes (hasta llegar a end template) estarán en esa plantilla. El nombre que sigue a la declaración for template es el nombre de la plantilla. Los parámetros disponibles para esta etiqueta son los siguientes:
 * texto del rótulo - Especifica el rótulo o texto descriptivo que se mostrará sobre el rectángulo que rodea el conjunto de campos de esta plantilla en el formulario.
 * - Especifica que el ususario puede cambiar el número de instancias de esta plantilla en el formulario, seguido de múltiples (o ninguna) de ellas; ver Plantillas con múltiples instancias", más abajo.
 * - Especifica que sólo los campos del formulario que correspondan con campos usados en la plantilla puedan convertirse en elementos del formulario.


 * - Cierra la declaración de una plantilla. No hay parámetros para esta etiqueta.


 * - Especifica el campo (field), correspondiente a un campo de plantilla, para ser ubicado en el formulario. El nombre escrito inmediatamente a continuación de la declaración field es el nombre de dicho campo en la plantilla. Esta etiqueta dispone de los parámetros siguientes:
 * tipo de entrada - Especifica el tipo de entrada de datos que este campo tendrá en el formulario. Los valores permitidos son: text, textarea, combobox, date, datetime, datetime with timezone</tt>, radiobutton</tt>, checkbox</tt>, checkboxes</tt>, dropdown</tt> and listbox</tt>. Si el campo corresponde un atributo (propiedad) semántico, el formulario tendrá normalmente el tipo de entrada de datos correcto por defecto; sino el tipo por defecto es text</tt>. Si la propiedad semántica a la que corresponde no puede ser determinada automáticamente (por ejemplo si esta está en una subplantilla), se puede usar el parámetro "property" para especificarla manualmente (ver abajo).
 * tamaño - Usado para entradas de tipo text, combobox (combinación de entrada de usuario y lista predefinida) y listbox (lista de opciones predefinida). Especifica el ancho de una entrada de texto o combobox o bien, en su caso, la altura de una listbox.
 * extensión máxima - Usado para campos tipo text y textarea. Especifica la extensión máxima permitida (en nº de caracteres).
 * nº filas - Usado en campos tipo textarea. Especifica el número de filas.
 * nº columnas - Usado para campos tipo textarea. Especifica el número de columnas.
 * - Usado para campos tipo textarea. Define el campo textarea para auto-expandir (auto-grow) su altura para hacerla coincidir con su contenido, de forma que la barra de scroll no sea necesaria.
 * - Especifica que ese campo sea de rellenado obligatorio por parte del usuario. Hay que tener en cuenta que  no se puede usar conjuntamente con el parámetro  . Su uso conjunto en cualquier campo causará un fallo en la comprobación del rellenado obligatorio en el momento de salvar el formulario.
 * - Especifica que ese campo quedará oculto en el formulario. Se suele usar para preservar valores en la edición de páginas.

Página en proceso de traducción — edítala para colaborar — véase Project:Translation/es.

Ver también

 * Semantic MediaWiki
 * SemanticSignup
 * Simple Forms