2010-09-11 13 views
9

¿Cómo implementa Wikipedia la función "editar esta sección" para sus artículos, en donde un usuario puede editar solo una sección de un artículo, en lugar de todo el artículo? He intentado rastrear el código de mediawiki por mi cuenta, pero es un poco denso para mí entenderlo. Aquí está mi conjetura (pero solo una suposición):¿Cómo funciona la función "editar sección" en la Wikipedia?

El usuario hace clic en [editar] en un artículo. Esto vincula a la página de edición regular, pero con un parámetro adicional pasado a través de GET en la URL que especifica qué sección editar. Sin este parámetro adicional, Mediawiki normalmente solo presentaría al usuario un formulario para editar toda la página. Pero al especificar una sección para editar, Mediawiki extrae SOLAMENTE esa sección y la presenta para su edición.

Lo que me sorprende es cómo analiza Mediawiki las secciones individuales? Por lo que entiendo, MW no almacena las secciones individualmente: almacena cada VERSIÓN COMPLETA de cada versión de la página como un bloque grande de texto (además de montones de metadatos). ¿MW simplemente busca las etiquetas H1, H2, H3, ... y las utiliza para dividir el texto en regiones cuando representa la página? Y cuando un usuario guarda una sección revisada, ¿mira la versión actual, vuelve a analizar el texto en secciones y simplemente "inyecta" la nueva versión en una copia de la versión actual, que luego guarda como una NUEVA versión?

Supongo que mi comprensión de MediaWiki está muy simplificada, pero solo estoy tratando de tener una idea aproximada.

Gracias!

+0

Excelente pregunta. –

Respuesta

3

Esto podría ser una pista - desde http://en.wikipedia.org/wiki/Help:Section. Las secciones utilizan un formato específico como tal:

==Section== 

===Subsection=== 

====Sub-subsection==== 
  • Usando la misma partida más de una vez en una página causa problemas.
  • Cuando se edita una sección con un nombre duplicado, el historial de edición y el resumen serán ambiguos en cuanto a qué sección se editó.
  • Al guardar la página después de editar una sección, el navegador del editor puede navegar a la sección incorrecta.

Las secciones se pueden editar por separado haciendo clic en los enlaces de edición especial etiquetados "[editar]" por el encabezado, o haciendo clic derecho en el encabezado de la sección, dependiendo de las preferencias establecidas. Esto se llama "función de edición de sección" (Preferencias -> Edición -> "Habilitar edición de sección a través de [editar] enlaces"). función de edición de la sección le llevará a una página de edición mediante un enlace como

http://en.wikipedia.org/w/index.php?title=Help:Section&action=edit&section=2

Tenga en cuenta que se utilizan aquí los números de sección, no títulos de las secciones; las subsecciones tienen un solo número, p. la sección 2.1 puede estar numerada como 3, la sección 3 como 4, etc. También puede ingresar directamente tales URL en la barra de direcciones de su navegador.

Parece que el analizador tiene un recuento de secciones en el TOC y luego usa la etiqueta = para colocar el texto específico en el editor.

Estas son algunas de las tablas utilizadas:

tabla de páginas - (http://www.mediawiki.org/wiki/Manual:Page_table) - Cada página en una instalación de MediaWiki tiene una entrada aquí, que lo identifica por título

tabla de revisiones mantiene metadatos para cada modificación Listo a una página dentro de la wiki.Cada edición de una página crea una fila de revisión, que contiene información como el usuario que realizó la edición, la hora en que se realizó la edición y una referencia al nuevo texto en la tabla de texto

Text Table - holds el texto de wikitexto de las revisiones de página individuales.

El contenido de las páginas se almacena como BLOB. Por lo tanto, debe analizar en binario.

Espero que esto ayude.

Cuestiones relacionadas