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 &lt;PageSchema&gt; tag';


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to