http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89665
Revision: 89665
Author: ankitgarg833
Date: 2011-06-07 17:54:09 +0000 (Tue, 07 Jun 2011)
Log Message:
-----------
INITIAL COMMIT OF PAGE SCHEMAS.
Added Paths:
-----------
trunk/extensions/PageSchemas/
trunk/extensions/PageSchemas/ApiQueryPageSchemas.php
trunk/extensions/PageSchemas/PageSchemas.classes.php
trunk/extensions/PageSchemas/PageSchemas.css
trunk/extensions/PageSchemas/PageSchemas.hooks.php
trunk/extensions/PageSchemas/PageSchemas.i18n.php
trunk/extensions/PageSchemas/PageSchemas.php
Added: trunk/extensions/PageSchemas/ApiQueryPageSchemas.php
===================================================================
--- trunk/extensions/PageSchemas/ApiQueryPageSchemas.php
(rev 0)
+++ trunk/extensions/PageSchemas/ApiQueryPageSchemas.php 2011-06-07
17:54:09 UTC (rev 89665)
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Adds the 'PageSchema' action to the MediaWiki API.
+ *
+ * @author Ankit Garg
+ */
+
+/**
+ * Protect against register_globals vulnerabilities.
+ * This line must be present before any global variable is referenced.
+ */
+if (!defined('MEDIAWIKI')) die();
+
+/**
+ * @ingroup API
+ */
+class APIQueryPageSchemas extends ApiQueryBase {
+
+ public function __construct( $query, $moduleName ) {
+ parent :: __construct( $query, $moduleName, 'ti' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $titles = $this->getPageSet()->getGoodTitles();
+ if (count($titles) == 0)
+ return;
+
+ $this->addTables( 'page_props' );
+ $this->addFields( array( 'pp_page', 'pp_value' ) );
+ $this->addWhere( array(
+ 'pp_page' => array_keys( $titles ),
+ 'pp_propname' => 'PageSchema'
+ ) );
+ if ( !is_null( $params['continue'] ) )
+ {
+ $fromid = intval( $params['continue'] );
+ $this->addWhere( "pp_page >= $fromid" );
+ }
+ $this->addOption( 'ORDER BY', 'pp_page' );
+
+ $res = $this->select(__METHOD__);
+ while ( $row = $this->getDB()->fetchObject( $res ) ) {
+ $vals = array( );
+ $template_info = $row->pp_value;
+ // determine whether this is actual XML or an error
+ // message by checking whether the first character
+ // is '<' - this is an interim solution until there's
+ // a better storage format in place
+ if (substr($template_info, 0, 1) == '<')
+ ApiResult::setContent( $vals, $row->pp_value );
+ else
+ // add error message as an "error=" attribute
+ $vals['error'] = $row->pp_value;
+ $fit = $this->addPageSubItems( $row->pp_page, $vals );
+ if( !$fit ) {
+ $this->setContinueEnumParameter( 'continue',
$row->pp_page );
+ break;
+ }
+ }
+ }
+
+ public function getAllowedParams() {
+ return array (
+ 'continue' => null,
+ );
+ }
+
+ public function getParamDescription() {
+ return array (
+ 'continue' => 'When more results are available, use
this to continue',
+ );
+ }
+
+ public function getDescription() {
+ return 'Template information, defined by the Template Info
extension (http://www.mediawiki.org/Extension:Template_Info)';
+ }
+
+ protected function getExamples() {
+ return array (
+
'api.php?action=query&prop=PageSchema&titles=Template:Foo|Template:Bar',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id$';
+ }
+
+}
Added: trunk/extensions/PageSchemas/PageSchemas.classes.php
===================================================================
--- trunk/extensions/PageSchemas/PageSchemas.classes.php
(rev 0)
+++ trunk/extensions/PageSchemas/PageSchemas.classes.php 2011-06-07
17:54:09 UTC (rev 89665)
@@ -0,0 +1,201 @@
+<?php
+/**
+ * Classes for PageSchemas extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class PageSchemas {
+
+ /* Functions */
+
+
+ public static function validateXML( $xml, &$error_msg ) {
+
+
+ $xmlDTD =<<<END
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE PageSchema [
+<!ELEMENT PageSchema (Template*)>
+<!ATTLIST PageSchema name CDATA #REQUIRED>
+<!ELEMENT Template (Field*)>
+<!ATTLIST Template name CDATA #REQUIRED>
+<!ATTLIST Field name CDATA #REQUIRED>
+]>
+
+END;
+ // we are using the SimpleXML library to do the XML validation
+ // for now - this may change later
+ // hide parsing warnings
+ libxml_use_internal_errors(true);
+ $xml_success = simplexml_load_string($xmlDTD . $xml);
+ $errors = libxml_get_errors();
+ $error_msg = $errors[0]->message;
+ return $xml_success;
+ }
+
+ static function tableRowHTML($css_class, $data_type, $value = null) {
+ $data_type = htmlspecialchars($data_type);
+ if (is_null($value)) {
+ $content = $data_type;
+ } else {
+ $content = "$data_type: " . HTML::element('span',
array('class' => 'rowValue'), $value);
+ }
+ $cell = HTML::rawElement('td', array('colspan' => 2, 'class' =>
$css_class), $content);
+ $text = HTML::rawElement('tr', null, $cell);
+ $text .= "\n";
+ return $text;
+ }
+
+ static function tableMessageRowHTML( $css_class, $name, $value ) {
+ $cell1 = HTML::element('td', array('class' => $css_class),
$name);
+ $cell2 = HTML::element('td', array('class' => 'msg'), $value);
+ $text = HTML::rawElement('tr', null, $cell1 . "\n" . $cell2);
+ $text .= "\n";
+ return $text;
+ }
+
+ static function parsePageSchemas($class_schema_xml) {
+
+ global $wgTitle;
+
+ if($wgTitle->getNamespace() == NS_CATEGORY){
+ $text = "<p>Schema description:</p>\n";
+ $text .= "<table class=\"pageSchema\">\n";
+ $name = $class_schema_xml->attributes()->name;
+ $text = self::tableRowHTML('template_class', 'PageSchema',
$name);
+ foreach ( $class_schema_xml->children() as $tag => $child ) {
+ if ($tag == 'Template') {
+ $text .= self::parseTemplate($child);
+ } else{
+ echo "Code to be added by other extension\n";
+ }
+ }
+ $text .= "</table>\n";
+ }else{
+ $text = "";
+ }
+ return $text;
+ }
+
+ static function parseTemplate ( $template_xml ) {
+ $name = $template_xml->attributes()->name;
+ $text = self::tableRowHTML('template_class', 'Template', $name);
+ foreach ($template_xml->children() as $child) {
+ $text .= self::parseField($child);
+ }
+ return $text;
+ }
+
+
+
+ static function parseField ( $field_xml ) {
+ $name = $field_xml->attributes()->name;
+ $text = self::tableMessageRowHTML('paramDataField', $name,
$field_xml);
+ return $text;
+ }
+
+}
+
+/*class holds the PageScheme tag equivalent object */
+
+class PageSchema {
+
+ $categoryName = "";
+ $pageId=0;
+ $pageXml="";
+ $pageName="";
+
+ /* Stores the templte objects */
+ $PSTemplates = array();
+
+ function __construct ( $category_name ) {
+
+ $pageName = $pageXml->attributes()->name;
+ $this->categoryName = $category_name;
+ $title = Title::newFromText( $categoryName, NS_CATEGORY );
+ $pageId = $title->getArticleID();
+ /* get the database instance */
+ $dbr = wfGetDB( DB_SLAVE );
+ /*get the result set, query : slect page_props*/
+ $res = $dbr->select( 'page_props',
+ array(
+ 'pp_page',
+ 'pp_propname',
+ 'pp_value'
+ ),
+ array(
+ 'pp_page' => $pageId,
+ 'pp_propname' => 'PageSchema'
+ )
+ );
+
+ /*first row of the result set */
+ $row = $dbr->fetchRow( $res );
+
+ /* retrievimg the third attribute which is pp_value */
+ $pageXml = $row[2];
+
+ /* index for template objects */
+ $i = 0 ;
+ foreach ( $pageXml->children() as $tag => $child ) {
+ if ( $tag == 'Template' ) {
+ $templateObj = new PSTemplate($child);
+ $PSTemplates[$i++]= $templateObj;
+ }
+ }
+ }
+
+
+ /*return an array of PSTemplate Objects */
+ static function getTemplates () {
+ return PSTemplates;
+ }
+
+ /*returns the name of the PageSchema object */
+ function getName(){
+ return $pageName;
+ }
+}
+class PSTemplate {
+ /* Stores the field objects */
+ $PSFields = array();
+ $templateName ="";
+ $templateXml ="";
+ function __construct( $template_xml ) {
+ $templateXml = $template_xml;
+ $templateName = $templateXml->attributes()->name;
+ /* index for template objects */
+ $i = 0 ;
+ foreach ($templateXml->children() as $child) {
+ $fieldObj = new PSTemplateField($child);
+ $PSFields[$i++]= $fieldObj;
+ }
+ }
+ function getName(){
+ return $templateName;
+ }
+ static function getFields(){
+ return $PSFields;
+ }
+}
+
+class PSTemplateField {
+
+ $fieldName ="";
+ $fieldXml= "";
+
+ function __construct( $field_xml ) {
+ $fieldXml = $field_xml;
+ $fieldXml = $templateXml->attributes()->name;
+ }
+ function getName(){
+ return $fieldName;
+ }
+ public function getObject( $objectName ) {
+ $object = null;
+ wfRunHooks( 'PageSchemasGetObject', array( $objectName,
$this->fieldXml, $object ) );
+ return $object;
+ }
+}
Added: trunk/extensions/PageSchemas/PageSchemas.css
===================================================================
--- trunk/extensions/PageSchemas/PageSchemas.css
(rev 0)
+++ trunk/extensions/PageSchemas/PageSchemas.css 2011-06-07 17:54:09 UTC
(rev 89665)
@@ -0,0 +1,124 @@
+.pageSchema td {
+ padding-right: 5px;
+}
+
+body.rtl .pageSchema td {
+ padding-right: auto;
+ padding-left: 5px;
+}
+
+.pageSchema .template_class {
+ background: #bbaa88;
+ padding-left: 5px;
+}
+
+body.rtl .pageSchema .template_class {
+ padding-left: auto;
+ padding-right: 5px;
+}
+
+.pageSchema .template_class span.rowValue {
+ font-weight: bold;
+}
+
+.pageSchema .param {
+ background: #d3c2a0;
+ padding-left: 20px;
+}
+
+body.rtl .pageSchema .param {
+ padding-left: auto;
+ padding-right: 20px;
+}
+
+.pageSchema .param span.rowValue {
+ font-weight: bold;
+}
+
+.pageSchema .paramAttr {
+ background: #eeddbb;
+ padding-left: 35px;
+}
+
+body.rtl .pageSchema .paramAttr {
+ padding-left: auto;
+ padding-right: 35px;
+}
+
+.pageSchema .paramAttrMsg {
+ background: #ffeecc;
+ padding-left: 50px;
+}
+
+body.rtl .pageSchema .paramAttrMsg {
+ padding-left: auto;
+ padding-right: 50px;
+}
+
+.pageSchema .paramOptions {
+ padding-left: 20px;
+ background: #ffff77;
+}
+
+body.rtl .pageSchema .paramOptions {
+ padding-left: auto;
+ padding-right: 20px;
+}
+
+.pageSchema .paramOption {
+ padding-left: 35px;
+ background: #ffff99;
+}
+
+body.rtl .pageSchema .paramOption {
+ padding-left: auto;
+ padding-right: 35px;
+}
+
+.pageSchema .paramOption span.rowValue {
+ font-weight: bold;
+}
+
+.pageSchema .paramOptionMsg {
+ padding-left: 50px;
+ background: #ffffbb;
+}
+
+body.rtl .pageSchema .paramOptionMsg {
+ padding-left: auto;
+ padding-right: 50px;
+}
+
+.pageSchema .paramData {
+ padding-left: 20px;
+ background: #77dd77;
+}
+
+body.rtl .pageSchema .paramData {
+ padding-left: auto;
+ padding-right: 20px;
+}
+
+.pageSchema .paramData span.rowValue {
+ font-weight: bold;
+}
+
+.pageSchema .paramDataField {
+ background: #99ff99;
+ padding-left: 35px;
+}
+
+body.rtl .pageSchema .paramDataField {
+ padding-left: auto;
+ padding-right: 35px;
+}
+
+.pageSchema .msg {
+ padding-left: 5px;
+ background: white;
+}
+
+body.rtl .pageSchema .msg {
+ padding-left: auto;
+ padding-right: 5px;
+}
Added: trunk/extensions/PageSchemas/PageSchemas.hooks.php
===================================================================
--- trunk/extensions/PageSchemas/PageSchemas.hooks.php
(rev 0)
+++ trunk/extensions/PageSchemas/PageSchemas.hooks.php 2011-06-07 17:54:09 UTC
(rev 89665)
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Hooks for PageSchemas extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class PageSchemasHooks {
+
+ /* Functions */
+
+ // Initialization
+ public static function register( &$parser ) {
+ // Register the hook with the parser
+ $parser->setHook( 'PageSchema', array( 'PageSchemasHooks',
'render' ) );
+ // add the CSS
+ global $wgOut, $wgScriptPath;
+ $wgOut->addStyle($wgScriptPath .
'/extensions/PageSchemas/PageSchemas.css');
+
+ // Continue
+ return true;
+ }
+
+
+ // Render the displayed XML, if any
+ public static function render( $input, $args, $parser, $frame ) {
+ // if this call is contained in a transcluded page or template,
+ // or if the input is empty, display nothing
+ if ( !$frame->title->equals( $parser->getTitle() ) || $input ==
'' )
+ return;
+
+
+ // TODO: Do processing here, like parse to an array
+ $error_msg = null;
+
+ // recreate the top-level <PageSchema> tag, with whatever
+ // attributes it contained, because that was actually a tag-
+ // function call, as opposed to a real XML tag
+ $input = Xml::tags('PageSchema', $args, $input);
+
+ // if 'type=' was specified, and it wasn't set to one of the
+ // allowed values (currently just 'auto'), don't validate -
+ // just display the XML
+ if (array_key_exists('type', $args) && $args['type'] != 'auto')
{
+ // Store XML in the page_props table - the Javascript
+ // can figure out on its own whether or not to handle it
+ $parser->getOutput()->setProperty( 'PageSchema', $input
);
+ // TODO - a hook should be called here, to allow other
+ // XML handlers to parse and display this
+ $text = Html::element('p', null, "The (unhandled) XML
definition for this Schema is:") . "\n";
+ $text .= Html::element('pre', null, $input);
+ return $text;
+ }
+
+ if ( $xml_object = PageSchemas::validateXML( $input, $error_msg
) ) {
+ // Store XML in the page_props table
+ $parser->getOutput()->setProperty( 'PageSchema', $input
);
+ $text = PageSchemas::parsePageSchemas($xml_object);
+ } else {
+ // Store error message in the page_props table
+ $parser->getOutput()->setProperty( 'PageSchema',
$error_msg );
+ $text = Html::element('p', null, "The (incorrect) XML
definition for this template is:") . "\n";
+ $text .= Html::element('pre', null, $input);
+ }
+
+ // return output
+ return $text;
+ }
+}
Added: trunk/extensions/PageSchemas/PageSchemas.i18n.php
===================================================================
--- trunk/extensions/PageSchemas/PageSchemas.i18n.php
(rev 0)
+++ trunk/extensions/PageSchemas/PageSchemas.i18n.php 2011-06-07 17:54:09 UTC
(rev 89665)
@@ -0,0 +1,394 @@
+<?php
+
+/**
+ * Messages file for the PageSchemas extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+/**
+ * Get all extension messages
+ *
+ * @return array
+ */
+$messages = array();
+
+$messages['en'] = array(
+ 'pageschemas-desc' => 'Supports templates defining their data structure
via XML markup',
+ 'pageschemas-header' => 'The XML definition for this template is:',
+);
+
+/** Message documentation (Message documentation)
+ * @author The Evil IP address
+ * @author Ankit Garg
+ */
+$messages['qqq'] = array(
+ 'pageschemas-desc' => '{{desc}}',
+ 'pageschemas-header' => 'Header to display XML definition in template
page',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'pageschemas-desc' => 'Ondersteun sjablone waarvoor die datastruktuur
via XML gedefinieer is',
+ 'pageschemas-header' => 'Die XML-definisie vir die sjabloon is:',
+);
+
+/** Arabic (العربية)
+ * @author Meno25
+ */
+$messages['ar'] = array(
+ 'pageschemas-desc' => 'يدعم القوالب التي تعرف هيكل بياناتها من خلال
علامات XML',
+ 'pageschemas-header' => 'تعريف XML لهذا القالب هو:',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Dudi
+ * @author Ghaly
+ */
+$messages['arz'] = array(
+ 'pageschemas-desc' => 'بيدعم القوالب اللى بتعرّف هيكل الداتا بتاعتها عن
طريق علامات XML',
+ 'pageschemas-header' => 'تعريف XML للقالب ده هو:',
+);
+
+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
+ * @author EugeneZelenko
+ * @author Jim-by
+ */
+$messages['be-tarask'] = array(
+ 'pageschemas-desc' => 'Падтрымлівае шаблёны вызначаючы іх будову
зьвестак праз меткі XML',
+ 'pageschemas-header' => 'XML-вызначэньне гэтага шаблёну:',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'pageschemas-desc' => 'Skorañ a ra ar patromoù dre dermeniñ o framm
roadennoù gant balizennoù XML',
+ 'pageschemas-header' => 'Setu an termenadur XML evit ar patrom-mañ :',
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'pageschemas-desc' => 'Podržava šablone koji definiraju svoju strukturu
podataka preko XML opisnog jezika',
+ 'pageschemas-header' => 'XML definicija za ovaj šablon je:',
+);
+
+/** German (Deutsch)
+ * @author Imre
+ */
+$messages['de'] = array(
+ 'pageschemas-desc' => 'Unterstützt Vorlagen, die ihre Datenstruktur
über XML auszeichnen',
+ 'pageschemas-header' => 'Die XML-Definition für diese Vorlage ist:',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'pageschemas-desc' => 'Pódpěra pśedłogi, kótarež definěruju datowu
strukturu pśez XML-wobznamjenjenja',
+ 'pageschemas-header' => 'XML-definicija za toś tu pśedłogu jo:',
+);
+
+/** Greek (Ελληνικά)
+ * @author Περίεργος
+ */
+$messages['el'] = array(
+ 'pageschemas-desc' => 'Υποστηρίζει πρότυπα που καθορίζουν τη δομή των
δεδομένων τους μέσω της σήμανσης XML',
+ 'pageschemas-header' => 'Ο προσδιορισμός XML για αυτό το πρότυπο
είναι:',
+);
+
+/** Spanish (Español)
+ * @author Translationista
+ */
+$messages['es'] = array(
+ 'pageschemas-desc' => 'Admite plantillas que definen su estructura de
datos a través de XML',
+ 'pageschemas-header' => 'La definición XML para esta plantilla es:',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ */
+$messages['fi'] = array(
+ 'pageschemas-desc' => 'Tukee mallineiden tietorakenteiden määrittelyä
XML-merkkauskielen kautta.',
+ 'pageschemas-header' => 'XML-määritelmä tälle mallineelle on:',
+);
+
+/** French (Français)
+ * @author PieRRoMaN
+ */
+$messages['fr'] = array(
+ 'pageschemas-desc' => 'Supporte les modèle en définissant leur
structure de données via des balises XML',
+ 'pageschemas-header' => 'La définition XML pour ce modèle est :',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'pageschemas-desc' => 'Recognêt los modèlos en dèfenéssent lor
structura de balyês avouéc des balises XML.',
+ 'pageschemas-header' => 'La dèfinicion XML por ceti modèlo est :',
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'pageschemas-desc' => 'Soporta modelos que definen a súa estrutura de
datos a través do formato XML',
+ 'pageschemas-header' => 'A definición XML para este modelo é:',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'pageschemas-desc' => 'Unterstitzt Vorlage, wu ihri Datestruktur iber
XML-Markup definiere',
+ 'pageschemas-header' => 'D XML-Definition fir die Vorlag isch:',
+);
+
+/** Hebrew (עברית)
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'pageschemas-desc' => 'תומכת בתבניות המגדירות את מבנה הנתונים שלהן
באמצעות תחביר XML',
+ 'pageschemas-header' => 'הגדרת ה־XML עבור תבנית זו היא:',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'pageschemas-desc' => 'Podpěruje předłohi, kotrež datowu strukturu přez
XML-woznamjenjenja definuja',
+ 'pageschemas-header' => 'XML-definicija za tutu předłohu je:',
+);
+
+/** Hungarian (Magyar)
+ * @author Dani
+ */
+$messages['hu'] = array(
+ 'pageschemas-desc' => 'Lehetővé teszi, hogy a sablonok XML-jelölőnyelv
segítségével definiálják az adatstruktúrájukat',
+ 'pageschemas-header' => 'A sablon XML-definíciója:',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'pageschemas-desc' => 'Supporta patronos que defini lor structura de
datos per medio del notation XML',
+ 'pageschemas-header' => 'Le definition XML pro iste patrono es:',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author IvanLanin
+ */
+$messages['id'] = array(
+ 'pageschemas-desc' => 'Mendukung templat untuk dapat mendefinisikan
struktur data mereka melalui markah XML',
+ 'pageschemas-header' => 'Definisi XML untuk templat ini adalah:',
+);
+
+/** Igbo (Igbo)
+ * @author Ukabia
+ */
+$messages['ig'] = array(
+ 'pageschemas-desc' => 'Në nyé ike maka mkpurụ ihü, në nyé úchè maka ázú
omárí ha nke shi édé XML',
+ 'pageschemas-header' => 'Úchè XML maka mkpurụ ihü nka bu:',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ */
+$messages['it'] = array(
+ 'pageschemas-header' => 'La definizione XML per questo template è:',
+);
+
+/** Japanese (日本語)
+ * @author Fryed-peach
+ */
+$messages['ja'] = array(
+ 'pageschemas-desc' => '自身のデータ構造を XML マークアップで定義するテンプレートをサポートする',
+ 'pageschemas-header' => 'このテンプレートの XML 定義は以下のようになっています:',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'pageschemas-desc' => 'Ongerschtöz, dat mer de Dateschtruktur vun
Schablone övver en <i lang="en">XML</i> Fommaat beschrieve kann.',
+ 'pageschemas-header' => 'Di Schablon met <i lang="en">XML</i>
beschrevve:',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'pageschemas-desc' => "Ënnerstëtzt d'Schablounen déi hir Datestruktur
iwwer XML-Tagen definéieren",
+ 'pageschemas-header' => "D'XML-Definitioun fir dës Schabloun ass:",
+);
+
+/** Macedonian (Македонски)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'pageschemas-desc' => 'Поддржува шаблони кои ја определуваат нивната
податочна структура по пат на XML ознаки',
+ 'pageschemas-header' => 'XML-определбата за овој шаблон е:',
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'pageschemas-desc' => 'Ondersteunt sjablonen waarvoor de
gegevensstructuur is gedefinieerd via XML',
+ 'pageschemas-header' => 'De XML-definitie voor dit sjabloon luidt als
volgt:',
+);
+
+/** Norwegian Nynorsk (Norsk (nynorsk))
+ * @author Harald Khan
+ */
+$messages['nn'] = array(
+ 'pageschemas-desc' => 'Støttar malar som definerer datastrukturen sin
gjennom XML-markering.',
+ 'pageschemas-header' => 'XML-definisjonen til denne malen er:',
+);
+
+/** Norwegian (bokmål) (Norsk (bokmål))
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'pageschemas-desc' => 'Støtter maler som definerer datastrukturen sin
gjennom XML-markering',
+ 'pageschemas-header' => 'XML-definisjonen for denne malen er:',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'pageschemas-desc' => 'Supòrta los modèls en definissent lor estructura
de donadas via de balisas XML',
+ 'pageschemas-header' => 'La definicion XML per aqueste modèl es :',
+);
+
+/** Polish (Polski)
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'pageschemas-desc' => 'Obsługa definiowania struktury szablonów z
wykorzystaniem znaczników XML',
+ 'pageschemas-header' => 'Definicja XML dla tego szablonu:',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'pageschemas-desc' => "A manten jë stamp ch'a definisso soa strutura
dij dat via markup XML",
+ 'pageschemas-header' => "La definission XML për sto stamp-sì a l'é:",
+);
+
+/** Portuguese (Português)
+ * @author Hamilton Abreu
+ */
+$messages['pt'] = array(
+ 'pageschemas-desc' => 'Define a estrutura de dados das predefinições em
XML',
+ 'pageschemas-header' => 'A definição XML para esta predefinição é:',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Daemorris
+ */
+$messages['pt-br'] = array(
+ 'pageschemas-desc' => 'Suporta predefinições definindo suas estruturas
de dados via marcação XML',
+ 'pageschemas-header' => 'A definição XML para esta predefinição é:',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'pageschemas-desc' => "Le template de supporte definiscene 'a struttura
lore ausanne l'XML",
+ 'pageschemas-header' => "'A definizione XML pe st'esembie jè:",
+);
+
+/** Russian (Русский)
+ * @author Александр Сигачёв
+ */
+$messages['ru'] = array(
+ 'pageschemas-desc' => 'Поддерживает шаблоны с определением их структуры
данных постредством XML-разметки',
+ 'pageschemas-header' => 'XML-определение этого шаблона:',
+);
+
+/** Slovenian (Slovenščina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'pageschemas-desc' => 'Podpira predloge, ki opredelujejo svojo zgradbo
podatkov preko označevanja XML',
+ 'pageschemas-header' => 'Opredelitev XML predloge je:',
+);
+
+/** Serbian Cyrillic ekavian (Српски (ћирилица))
+ * @author Rancher
+ */
+$messages['sr-ec'] = array(
+ 'pageschemas-desc' => 'Подршка шаблонима који дефинишу структуру
података преко XML означавања',
+ 'pageschemas-header' => 'XML дефиниција овог шаблона:',
+);
+
+/** Swedish (Svenska)
+ * @author Per
+ */
+$messages['sv'] = array(
+ 'pageschemas-desc' => 'Stödjer mallar som definierar datastrukturen med
XML-markering',
+ 'pageschemas-header' => 'XML-definitionen för denna mall är:',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'pageschemas-desc' => 'Tumatangkilik sa mga suleras na nagbibigay
kahulugan sa kanilang kayarian ng dato sa pamamagitan ng pagmarkang XML',
+ 'pageschemas-header' => 'Ang kahulugang XML para sa suleras na ito ay:',
+);
+
+/** Turkish (Türkçe)
+ * @author Vito Genovese
+ */
+$messages['tr'] = array(
+ 'pageschemas-desc' => 'XML işaretlemesi ile veri yapılarını tanımlayan
şablonları destekler',
+ 'pageschemas-header' => 'Bu şablon için XML tanımı şu şekilde:',
+);
+
+/** Ukrainian (Українська)
+ * @author NickK
+ * @author Prima klasy4na
+ * @author Тест
+ */
+$messages['uk'] = array(
+ 'pageschemas-desc' => 'Підтримує визначення структури даних шаблонів за
допомогою розмітки XML',
+ 'pageschemas-header' => 'XML-визначення для цього шаблону:',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ */
+$messages['vi'] = array(
+ 'pageschemas-desc' => 'Cho phép định nghĩa cấu trúc dữ liệu của bản mẫu
dùng mã XML',
+ 'pageschemas-header' => 'Định nghĩa XML của bản mẫu này là:',
+);
+
+/** Simplified Chinese (中文(简体))
+ * @author Chenxiaoqino
+ */
+$messages['zh-hans'] = array(
+ 'pageschemas-desc' => '支持的模版已将其数据结构用XML代码声明。',
+ 'pageschemas-header' => '此模版的XML定义是:',
+);
+
+/** Traditional Chinese (中文(繁體))
+ * @author Mark85296341
+ */
+$messages['zh-hant'] = array(
+ 'pageschemas-desc' => '支援的模版已將其資料結構用 XML 代碼聲明。',
+ 'pageschemas-header' => '此模版的 XML 定義是:',
+);
+
Added: trunk/extensions/PageSchemas/PageSchemas.php
===================================================================
--- trunk/extensions/PageSchemas/PageSchemas.php
(rev 0)
+++ trunk/extensions/PageSchemas/PageSchemas.php 2011-06-07 17:54:09 UTC
(rev 89665)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * PageSchemas extension
+ *
+ * @file
+ * @ingroup Extensions
+ *
+ * This file contains the main include file for the PageSchemas extension of
+ * MediaWiki.
+ *
+ * Usage: Add the following line in LocalSettings.php:
+ * require_once( "$IP/extensions/PageSchemas/PageSchemas.php" );
+ *
+ * @version 0.0.1
+ */
+
+// Check environment
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo( "This is an extension to the MediaWiki package and cannot be run
standalone.\n" );
+ die( -1 );
+}
+
+/* Configuration */
+
+// Credits
+$wgExtensionCredits['parserhook'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Page Schemas',
+ 'author' => array( 'Ankit Garg' ),
+ 'version' => '0.0.1',
+ 'url' =>
'http://www.mediawiki.org/wiki/Extension:PageSchemas',
+ 'descriptionmsg' => 'PageSchema-desc',
+);
+
+// Shortcut to this extension directory
+$dir = dirname( __FILE__ ) . '/';
+
+// Internationalization
+$wgExtensionMessagesFiles['PageSchemas'] = $dir . 'PageSchemas.i18n.php';
+
+// Register auto load for the special page class
+$wgAutoloadClasses['PageSchemasHooks'] = $dir . 'PageSchemas.hooks.php';
+$wgAutoloadClasses['PageSchemas'] = $dir . 'PageSchemas.classes.php';
+$wgAutoloadClasses['ApiQueryPageSchemas'] = $dir . 'ApiQueryPageSchemas.php';
+
+// Register parser hook
+$wgHooks['ParserFirstCallInit'][] = 'PageSchemasHooks::register';
+
+// Register API action
+$wgAPIPropModules['PageSchema'] = 'ApiQueryPageSchemas';
+
+// Register page_props usage
+$wgPageProps['PageSchema'] = 'Content of <PageSchema> tag';
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs