r93414 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r93413‎ | r93414 | r93415 >
Date:19:17, 28 July 2011
Author:emufarmers
Status:ok
Tags:
Comment:
Revert r93336 and r93332. The extension appears to work fine. Upstream support would be nice, but the extension is self-contained. I know Wikia and the WMF are working on new rich text editors, but in the meantime, many third-party users would like something that works, and this is the best option at the moment.
Modified paths:
  • /trunk/extensions/FCKeditor (added) (history)
  • /trunk/extensions/FCKeditor/plugins/mediawiki (modified) (history)

Diff [purge]

Index: trunk/extensions/FCKeditor/FCKeditor.popup.html
@@ -0,0 +1,99 @@
 2+<html xmlns="http://www.w3.org/1999/xhtml">
 3+<head>
 4+ <title>FCKeditor</title>
 5+ <script type="text/javascript">
 6+// #### URLParams: holds all URL passed parameters (like ?Param1=Value1&Param2=Value2)
 7+var FCKURLParams = new Object() ;
 8+
 9+var aParams = document.location.search.substr(1).split('&') ;
 10+for ( var i = 0 ; i < aParams.length ; i++ )
 11+{
 12+ var aParam = aParams[i].split('=') ;
 13+ var sParamName = aParam[0] ;
 14+ var sParamValue = aParam[1] ;
 15+
 16+ FCKURLParams[ sParamName ] = sParamValue ;
 17+}
 18+
 19+// It is preferable to have the oFCKeditor object defined in the opener window,
 20+// so all the configurations will be there. In this way the popup doesn't need
 21+// to take care of the configurations "clonning".
 22+var popup = window.opener;
 23+var oFCKeditor = window.opener[ FCKURLParams[ 'var' ] ] ;
 24+oFCKeditor.Width = '100%' ;
 25+oFCKeditor.Height = '100%' ;
 26+oFCKeditor.Value = popup.document.getElementById( FCKURLParams[ 'el' ] ).value ;
 27+
 28+function Ok()
 29+{
 30+ var oEditor = FCKeditorAPI.GetInstance( oFCKeditor.InstanceName ) ;
 31+ if ( oEditor.IsDirty() )
 32+ {
 33+ if ((window.opener.firstLoad == false) && (popup.FCKeditorAPI)) { //already loaded
 34+ var parentOEditor = popup.FCKeditorAPI.GetInstance(FCKURLParams[ 'el' ]);
 35+ var parentIsWysiwyg = ( parentOEditor.EditMode == FCK_EDITMODE_WYSIWYG ) ;
 36+ var IsWysiwyg = ( oEditor.EditMode == FCK_EDITMODE_WYSIWYG ) ;
 37+ if ( !IsWysiwyg && parentIsWysiwyg ) //copy from PLAIN (popup) to WYSIWIG (parent)
 38+ {
 39+ parentOEditor.SwitchEditMode(); //switch to plain
 40+ var text = oEditor.GetData(parentOEditor.Config.FormatSource);
 41+ parentOEditor.SetHTML( text );
 42+ }
 43+ else if ( parentIsWysiwyg )
 44+ {
 45+ var text = oEditor.EditorDocument.documentElement.innerHTML;
 46+ parentOEditor.EditingArea.Start( text );
 47+ }
 48+ else
 49+ {
 50+ var text = oEditor.GetData(parentOEditor.Config.FormatSource);
 51+ parentOEditor.SetHTML( text );
 52+ }
 53+ }
 54+ window.opener.document.getElementById( FCKURLParams[ 'el' ] ).value = oEditor.GetData( true ) ; // "true" means you want it formatted.
 55+ }
 56+ window.opener.focus() ;
 57+ window.close() ;
 58+ return true;
 59+}
 60+
 61+function Cancel()
 62+{
 63+ var oEditor = FCKeditorAPI.GetInstance( oFCKeditor.InstanceName ) ;
 64+ if ( oEditor.IsDirty() )
 65+ {
 66+ if ( !confirm( 'Are you sure you want to cancel? Your changes will be lost.' ) )
 67+ return ;
 68+ }
 69+
 70+ window.close() ;
 71+ return true;
 72+}
 73+
 74+ </script>
 75+</head>
 76+<body style="margin:0px 0px 10px;">
 77+ <table width="100%" cellspacing=0 cellpadding=0 height="100%">
 78+ <tr>
 79+ <td height="100%">
 80+ <div id="FCKdiv" style='width:100%;height:100%'></div>
 81+ <script type="text/javascript">
 82+document.write( '<input type="hidden" id="' + oFCKeditor.InstanceName + '" name="' + oFCKeditor.InstanceName + '" value="' + oFCKeditor._HTMLEncode( 'nic' ) + '" style="width:100%;display:none" />' ) ;
 83+
 84+popup.window.parent.FCK_sajax('wfSajaxWikiToHTML', [oFCKeditor.Value], function ( result ){
 85+ var FCKinput = document.getElementById( oFCKeditor.InstanceName );
 86+ FCKinput.value = (result.responseText);
 87+ document.getElementById( 'FCKdiv' ).innerHTML = oFCKeditor._GetConfigHtml() + oFCKeditor._GetIFrameHtml();
 88+});
 89+ </script>
 90+ </td>
 91+ </tr>
 92+ <tr valign="middle" height="40">
 93+ <td align="center" >
 94+ <input type="button" value="Ok" onclick="Ok();" style="width:120px" />
 95+ <input type="button" value="Cancel" onclick="Cancel();" />
 96+ </td>
 97+ </tr>
 98+ </table>
 99+</body>
 100+</html>
Property changes on: trunk/extensions/FCKeditor/FCKeditor.popup.html
___________________________________________________________________
Added: svn:eol-style
1101 + native
Index: trunk/extensions/FCKeditor/FCKeditorEditPage.body.php
@@ -0,0 +1,78 @@
 2+<?php
 3+
 4+class FCKeditorEditPage extends EditPage {
 5+ /**
 6+ * Should we show a preview when the edit form is first shown?
 7+ *
 8+ * @return bool
 9+ */
 10+ public function previewOnOpen() {
 11+ global $wgRequest, $wgUser;
 12+ if ( !$wgUser->getOption( 'riched_disable' ) ) {
 13+ return false;
 14+ }
 15+ if( $wgRequest->getVal( 'preview' ) == 'yes' ) {
 16+ // Explicit override from request
 17+ return true;
 18+ } elseif( $wgRequest->getVal( 'preview' ) == 'no' ) {
 19+ // Explicit override from request
 20+ return false;
 21+ } elseif( $this->section == 'new' ) {
 22+ // Nothing *to* preview for new sections
 23+ return false;
 24+ } elseif( ( $wgRequest->getVal( 'preload' ) !== '' || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
 25+ // Standard preference behaviour
 26+ return true;
 27+ } elseif( !$this->mTitle->exists() && $this->mTitle->getNamespace() == NS_CATEGORY ) {
 28+ // Categories are special
 29+ return true;
 30+ } else {
 31+ return false;
 32+ }
 33+ }
 34+
 35+ function getPreviewText() {
 36+ if( !$this->isCssJsSubpage ) {
 37+ wfRunHooks( 'EditPageBeforePreviewText', array( &$this, $this->previewOnOpen() ) );
 38+ $result = parent::getPreviewText();
 39+ wfRunHooks( 'EditPagePreviewTextEnd', array( &$this, $this->previewOnOpen() ) );
 40+ } else {
 41+ $result = parent::getPreviewText();
 42+ }
 43+ return $result;
 44+ }
 45+
 46+ function getContent( $def_text = '' ) {
 47+ $t = parent::getContent( $def_text );
 48+ if( !$this->isConflict ) {
 49+ return $t;
 50+ }
 51+ $options = new FCKeditorParserOptions();
 52+ $options->setTidy( true );
 53+ $parser = new FCKeditorParser();
 54+ $parser->setOutputType( OT_HTML );
 55+ $pa = $parser->parse( $t, $this->mTitle, $options );
 56+ return $pa->mText;
 57+ }
 58+
 59+ function getWikiContent(){
 60+ return $this->mArticle->getContent();
 61+ }
 62+
 63+ /**
 64+ * This is a hack to fix
 65+ * http://dev.fckeditor.net/ticket/1174
 66+ * If RTE is enabled, diff must be performed on WikiText, not on HTML
 67+ */
 68+ function showDiff() {
 69+ global $wgFCKWikiTextBeforeParse;
 70+ if( isset( $wgFCKWikiTextBeforeParse ) ) {
 71+ $_textbox1 = $this->textbox1;
 72+ $this->textbox1 = $wgFCKWikiTextBeforeParse;
 73+ }
 74+ $result = parent::showDiff();
 75+ if( isset( $wgFCKWikiTextBeforeParse ) ) {
 76+ $this->textbox1 = $_textbox1;
 77+ }
 78+ }
 79+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorEditPage.body.php
___________________________________________________________________
Added: svn:eol-style
180 + native
Index: trunk/extensions/FCKeditor/FCKeditor.php
@@ -0,0 +1,115 @@
 2+<?php
 3+/**
 4+ * FCKeditor extension - a WYSIWYG editor for MediaWiki
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ * @version 1.0
 9+ * @author Frederico Caldeira Knabben
 10+ * @author Wiktor Walc <w.walc(at)fckeditor(dot)net>
 11+ * @copyright Copyright © Frederico Caldeira Knabben, Wiktor Walc, other FCKeditor team members and other contributors
 12+ * @license GNU Lesser General Public License 2.1 or later
 13+ */
 14+/*
 15+This library is free software; you can redistribute it and/or
 16+modify it under the terms of the GNU Lesser General Public
 17+License as published by the Free Software Foundation; either
 18+version 2.1 of the License, or (at your option) any later version.
 19+
 20+This library is distributed in the hope that it will be useful,
 21+but WITHOUT ANY WARRANTY; without even the implied warranty of
 22+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 23+Lesser General Public License for more details.
 24+
 25+You should have received a copy of the GNU Lesser General Public
 26+License along with this library; if not, write to the Free Software
 27+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 28+*/
 29+
 30+# Not a valid entry point, skip unless MEDIAWIKI is defined
 31+if( !defined( 'MEDIAWIKI' ) ) {
 32+ echo <<<HEREDOC
 33+To install FCKeditor extension, put the following line in LocalSettings.php:
 34+require_once( "\$IP/extensions/FCKeditor/FCKeditor.php" );
 35+HEREDOC;
 36+ exit( 1 );
 37+}
 38+
 39+# Configuration variables
 40+// Path to this extension
 41+$wgFCKEditorExtDir = 'extensions/FCKeditor';
 42+
 43+// Path to the actual editor
 44+$wgFCKEditorDir = 'extensions/FCKeditor/fckeditor/';
 45+
 46+$wgFCKEditorToolbarSet = 'Wiki';
 47+
 48+// '0' for automatic ('300' minimum).
 49+$wgFCKEditorHeight = '0';
 50+
 51+// Array of namespaces that FCKeditor is disabled for. Use constants like NS_MEDIAWIKI here.
 52+$wgFCKEditorExcludedNamespaces = array();
 53+
 54+/**
 55+ * Enable use of AJAX features.
 56+ */
 57+require_once('FCKeditorSajax.body.php');
 58+$wgAjaxExportList[] = 'wfSajaxSearchImageFCKeditor';
 59+$wgAjaxExportList[] = 'wfSajaxSearchArticleFCKeditor';
 60+$wgAjaxExportList[] = 'wfSajaxSearchCategoryFCKeditor';
 61+$wgAjaxExportList[] = 'wfSajaxWikiToHTML';
 62+$wgAjaxExportList[] = 'wfSajaxGetImageUrl';
 63+$wgAjaxExportList[] = 'wfSajaxGetMathUrl';
 64+$wgAjaxExportList[] = 'wfSajaxSearchTemplateFCKeditor';
 65+$wgAjaxExportList[] = 'wfSajaxSearchSpecialTagFCKeditor';
 66+$wgAjaxExportList[] = 'wfSajaxToggleFCKeditor';
 67+
 68+// Extension credits that will show up on Special:Version
 69+$wgExtensionCredits['other'][] = array(
 70+ 'path' => __FILE__,
 71+ 'name' => 'FCKeditor',
 72+ 'author' => array( 'Frederico Caldeira Knabben', 'Wiktor Walc', 'Jack Phoenix', '...' ),
 73+ 'version' => '1.0.1',
 74+ 'url' => 'http://www.mediawiki.org/wiki/Extension:FCKeditor_(Official)',
 75+ 'descriptionmsg' => 'fckeditor-desc',
 76+);
 77+
 78+// Autoloadable classes
 79+$dir = dirname( __FILE__ ) . '/';
 80+$wgAutoloadClasses['FCKeditor'] = $dir . 'fckeditor/fckeditor.php';
 81+$wgAutoloadClasses['FCKeditorParser'] = $dir . 'FCKeditorParser.body.php';
 82+$wgAutoloadClasses['FCKeditorParserOptions'] = $dir . 'FCKeditorParserOptions.body.php';
 83+$wgAutoloadClasses['FCKeditorParserWrapper'] = $dir . 'FCKeditorParserWrapper.body.php';
 84+$wgAutoloadClasses['FCKeditorSkin'] = $dir . 'FCKeditorSkin.body.php';
 85+$wgAutoloadClasses['FCKeditorEditPage'] = $dir . 'FCKeditorEditPage.body.php';
 86+$wgAutoloadClasses['FCKeditor_MediaWiki'] = $dir . 'FCKeditor.body.php';
 87+
 88+// Path to internationalization file
 89+$wgExtensionMessagesFiles['FCKeditor'] = $dir . 'FCKeditor.i18n.php';
 90+
 91+// Initialize FCKeditor and the MediaWiki extension
 92+$fckeditor = new FCKeditor('fake');
 93+$wgFCKEditorIsCompatible = $fckeditor->IsCompatible();
 94+
 95+$oFCKeditorExtension = new FCKeditor_MediaWiki();
 96+
 97+// Hooked functions
 98+$wgHooks['ParserAfterTidy'][] = array( $oFCKeditorExtension, 'onParserAfterTidy' );
 99+$wgHooks['EditPage::showEditForm:initial'][] = array( $oFCKeditorExtension, 'onEditPageShowEditFormInitial' );
 100+$wgHooks['EditPage::showEditForm:fields'][] = array( $oFCKeditorExtension, 'onEditPageShowEditFormFields' );
 101+$wgHooks['EditPageBeforePreviewText'][] = array( $oFCKeditorExtension, 'onEditPageBeforePreviewText' );
 102+$wgHooks['EditPagePreviewTextEnd'][] = array( $oFCKeditorExtension, 'onEditPagePreviewTextEnd' );
 103+$wgHooks['CustomEditor'][] = array( $oFCKeditorExtension, 'onCustomEditor' );
 104+$wgHooks['LanguageGetMagic'][] = 'FCKeditor_MediaWiki::onLanguageGetMagic';
 105+$wgHooks['ParserBeforeStrip'][] = 'FCKeditor_MediaWiki::onParserBeforeStrip';
 106+$wgHooks['ParserBeforeInternalParse'][] = 'FCKeditor_MediaWiki::onParserBeforeInternalParse';
 107+$wgHooks['EditPageBeforeConflictDiff'][] = 'FCKeditor_MediaWiki::onEditPageBeforeConflictDiff';
 108+$wgHooks['SanitizerAfterFixTagAttributes'][] = 'FCKeditor_MediaWiki::onSanitizerAfterFixTagAttributes';
 109+$wgHooks['MakeGlobalVariablesScript'][] = 'FCKeditor_MediaWiki::onMakeGlobalVariablesScript';
 110+$wgHooks['GetPreferences'][] = 'FCKeditor_MediaWiki::onGetPreferences';
 111+
 112+// Defaults for new preferences options
 113+$wgDefaultUserOptions['riched_use_toggle'] = 1;
 114+$wgDefaultUserOptions['riched_start_disabled'] = 1;
 115+$wgDefaultUserOptions['riched_use_popup'] = 1;
 116+$wgDefaultUserOptions['riched_toggle_remember_state'] = 1;
Property changes on: trunk/extensions/FCKeditor/FCKeditor.php
___________________________________________________________________
Added: svn:keywords
1117 + LastChangedRevision LastChangedDate
Added: svn:eol-style
2118 + native
Index: trunk/extensions/FCKeditor/FCKeditorSkin.body.php
@@ -0,0 +1,308 @@
 2+<?php
 3+
 4+class FCKeditorSkin {
 5+ private $skin;
 6+
 7+ /**
 8+ * Create image link in MediaWiki 1.10
 9+ *
 10+ * @param Title $nt
 11+ * @param string $label label text
 12+ * @param string $alt alt text
 13+ * @param string $align horizontal alignment: none, left, center, right)
 14+ * @param array $params Parameters to be passed to the media handler
 15+ * @param boolean $framed shows image in original size in a frame
 16+ * @param boolean $thumb shows image as thumbnail in a frame
 17+ * @param string $manual_thumb image name for the manual thumbnail
 18+ * @param string $valign vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
 19+ * @return string *
 20+ */
 21+ function makeImageLinkObj( $nt, $label, $alt, $align = '', $params = array(), $framed = false,
 22+ $thumb = false, $manual_thumb = '', $valign = '' ) {
 23+ $orginal = $nt->getText();
 24+ $img = wfFindFile( $nt );
 25+ $found = $img->getURL();
 26+
 27+ if( !is_null( $alt ) && ( $alt == 'RTENOTITLE' ) ) { // 2223
 28+ $alt = '';
 29+ }
 30+
 31+ if( $found ) {
 32+ // trick to get real URL for image:
 33+ $frameParams = array(
 34+ 'alt' => $alt,
 35+ 'caption' => $label,
 36+ 'align' => $align,
 37+ 'framed' => $framed,
 38+ 'thumbnail' => $thumb,
 39+ 'manualthumb' => $manual_thumb,
 40+ 'valign' => $valign
 41+ );
 42+
 43+ $originalLink = strip_tags( Linker::makeImageLink2( $nt, $img, $frameParams, $params ), '<img>' );
 44+ $srcPart = substr( $originalLink, strpos( $originalLink, "src=" ) + 5 );
 45+ $url = strtok( $srcPart, '"' );
 46+ }
 47+
 48+ $ret = '<img ';
 49+
 50+ if( $found ) {
 51+ $ret .= "src=\"{$url}\" ";
 52+ } else {
 53+ $ret .= "_fck_mw_valid=\"false"."\" ";
 54+ }
 55+ $ret .= "_fck_mw_filename=\"{$orginal}\" ";
 56+
 57+ if( $align ) {
 58+ $ret .= "_fck_mw_location=\"" . strtolower( $align ) . "\" ";
 59+ }
 60+ if( !empty( $params ) ) {
 61+ if( isset( $params['width'] ) ) {
 62+ $ret .= "_fck_mw_width=\"" . $params['width'] . "\" ";
 63+ }
 64+ if( isset( $params['height'] ) ) {
 65+ $ret .= "_fck_mw_height=\"" . $params['height'] . "\" ";
 66+ }
 67+ }
 68+ $class = '';
 69+ if( $thumb ) {
 70+ $ret .= "_fck_mw_type=\"thumb"."\" ";
 71+ $class .= "fck_mw_frame";
 72+ } elseif( $framed ) {
 73+ $ret .= "_fck_mw_type=\"frame"."\" ";
 74+ $class .= "fck_mw_frame";
 75+ }
 76+
 77+ if( $align == 'right' ) {
 78+ $class .= ( $class ? ' ' : '' ) . 'fck_mw_right';
 79+ } elseif( $align == 'center' ) {
 80+ $class .= ( $class ? ' ' : '' ) . 'fck_mw_center';
 81+ } elseif( $align == 'left' ) {
 82+ $class .= ( $class ? ' ' : '' ) . 'fck_mw_left';
 83+ } elseif( $framed || $thumb ) {
 84+ $class .= ( $class ? ' ' : '' ) . 'fck_mw_right';
 85+ }
 86+
 87+ if( !$found ) {
 88+ $class .= ( $class ? ' ' : '' ) . 'fck_mw_notfound';
 89+ }
 90+
 91+ if( !is_null( $alt ) && !empty( $alt ) && false !== strpos( FCKeditorParser::$fkc_mw_makeImage_options, $alt ) && $alt != 'Image:' . $orginal ) {
 92+ $ret .= "alt=\"" . htmlspecialchars( $alt ) . "\" ";
 93+ } else {
 94+ $ret .= "alt=\"\" ";
 95+ }
 96+
 97+ if( $class ) {
 98+ $ret .= "class=\"$class\" ";
 99+ }
 100+
 101+ $ret .= '/>';
 102+
 103+ return $ret;
 104+ }
 105+
 106+ function makeLinkObj( $nt, $text= '', $query = '', $trail = '', $prefix = '' ) {
 107+ wfProfileIn( __METHOD__ );
 108+ if ( $nt->isExternal() ) {
 109+ $args = '';
 110+ $u = $nt->getFullURL();
 111+ $link = $nt->getPrefixedURL();
 112+ if ( '' == $text ) {
 113+ $text = $nt->getPrefixedText();
 114+ }
 115+ $style = $this->getInterwikiLinkAttributes( $link, $text, 'extiw' );
 116+
 117+ $inside = '';
 118+ if ( '' != $trail ) {
 119+ $m = array();
 120+ if ( preg_match( '/^([a-z]+)(.*)$$/sD', $trail, $m ) ) {
 121+ $inside = $m[1];
 122+ $trail = $m[2];
 123+ }
 124+ }
 125+ if( $text == 'RTENOTITLE' ) { // 2223
 126+ $text = $u = $link;
 127+ $args .= '_fcknotitle="true" ';
 128+ }
 129+ $t = "<a {$args}href=\"{$u}\"{$style}>{$text}{$inside}</a>";
 130+
 131+ wfProfileOut( __METHOD__ );
 132+ return $t;
 133+ }
 134+
 135+ return Linker::makeLinkObj( $nt, $text, $query, $trail, $prefix );
 136+ }
 137+
 138+ function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
 139+ if( $colour != '' ){
 140+ $style = $this->getInternalLinkAttributesObj( $nt, $text, $colour );
 141+ } else $style = '';
 142+ return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
 143+ }
 144+
 145+ function makeKnownLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = '' ) {
 146+ wfProfileIn( __METHOD__ );
 147+
 148+ $args = '';
 149+ if ( !is_object( $nt ) ) {
 150+ wfProfileOut( __METHOD__ );
 151+ return $text;
 152+ }
 153+
 154+ $u = $nt->getFullText();
 155+ //#Updating links tables -> #Updating_links_tables
 156+ $u = str_replace( "#" . $nt->getFragment(), $nt->getFragmentForURL(), $u );
 157+
 158+ if ( $nt->getFragment() != '' ) {
 159+ if( $nt->getPrefixedDBkey() == '' ) {
 160+ $u = '';
 161+ if ( '' == $text ) {
 162+ $text = htmlspecialchars( $nt->getFragment() );
 163+ }
 164+ }
 165+
 166+ /**
 167+ * See tickets 1386 and 1690 before changing anything
 168+ */
 169+ if( $nt->getPartialUrl() == '' ) {
 170+ $u .= $nt->getFragmentForURL();
 171+ }
 172+ }
 173+ if ( $text == '' ) {
 174+ $text = htmlspecialchars( $nt->getPrefixedText() );
 175+ }
 176+
 177+ if( $nt->getNamespace() == NS_CATEGORY ) {
 178+ $u = ':' . $u;
 179+ }
 180+
 181+ list( $inside, $trail ) = Linker::splitTrail( $trail );
 182+ $title = "{$prefix}{$text}{$inside}";
 183+
 184+ $u = preg_replace( "/^RTECOLON/", ":", $u ); // change 'RTECOLON' => ':'
 185+ if( substr( $text, 0, 10 ) == 'RTENOTITLE' ){ // starts with RTENOTITLE
 186+ $args .= '_fcknotitle="true" ';
 187+ $title = $u;
 188+ $trail = substr( $text, 10 ) . $trail;
 189+ }
 190+
 191+ $r = "<a {$args}href=\"{$u}\">{$title}</a>{$trail}";
 192+ wfProfileOut( __METHOD__ );
 193+ return $r;
 194+ }
 195+
 196+ function makeBrokenLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
 197+ # Fail gracefully
 198+ if ( !isset( $nt ) ) {
 199+ # throw new MWException();
 200+ return "<!-- ERROR -->{$prefix}{$text}{$trail}";
 201+ }
 202+ $args = '';
 203+
 204+ wfProfileIn( __METHOD__ );
 205+
 206+ $u = $nt->getFullText();
 207+ //#Updating links tables -> #Updating_links_tables
 208+ $u = str_replace( "#" . $nt->getFragment(), $nt->getFragmentForURL(), $u );
 209+
 210+ if ( '' == $text ) {
 211+ $text = htmlspecialchars( $nt->getPrefixedText() );
 212+ }
 213+ if( $nt->getNamespace() == NS_CATEGORY ) {
 214+ $u = ':' . $u;
 215+ }
 216+
 217+ list( $inside, $trail ) = Linker::splitTrail( $trail );
 218+ $title = "{$prefix}{$text}{$inside}";
 219+
 220+ $u = preg_replace( "/^RTECOLON/", ":", $u ); // change 'RTECOLON' => ':'
 221+ if( substr( $text, 0, 10 ) == 'RTENOTITLE' ){ // starts with RTENOTITLE
 222+ $args .= '_fcknotitle="true" ';
 223+ $title = $u;
 224+ $trail = substr( $text, 10 ) . $trail;
 225+ }
 226+ $s = "<a {$args}href=\"{$u}\">{$title}</a>{$trail}";
 227+
 228+ wfProfileOut( __METHOD__ );
 229+ return $s;
 230+ }
 231+
 232+ function makeSelfLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
 233+ $args = '';
 234+ if ( '' == $text ) {
 235+ $text = $nt->mDbkeyform;
 236+ }
 237+ list( $inside, $trail ) = Linker::splitTrail( $trail );
 238+ $title = "{$prefix}{$text}";
 239+ if( $text == 'RTENOTITLE' ){ // 2223
 240+ $args .= '_fcknotitle="true" ';
 241+ $title = $nt->mDbkeyform;
 242+ }
 243+ return "<a {$args}href=\"".$nt->mDbkeyform."\" class=\"selflink\">{$title}</a>{$inside}{$trail}";
 244+ }
 245+
 246+ /**
 247+ * Create a direct link to a given uploaded file.
 248+ *
 249+ * @param $title Title object.
 250+ * @param $text String: pre-sanitized HTML
 251+ * @return string HTML
 252+ *
 253+ * @todo Handle invalid or missing images better.
 254+ */
 255+ public function makeMediaLinkObj( $title, $text = '' ) {
 256+ if( is_null( $title ) ) {
 257+ ### HOTFIX. Instead of breaking, return empty string.
 258+ return $text;
 259+ } else {
 260+ $args = '';
 261+ $orginal = $title->getPartialURL();
 262+ $img = wfFindFile( $title );
 263+ if( $img ) {
 264+ $url = $img->getURL();
 265+ $class = 'internal';
 266+ } else {
 267+ $upload = SpecialPage::getTitleFor( 'Upload' );
 268+ $url = $upload->getLocalUrl( 'wpDestFile=' . urlencode( $title->getDBkey() ) );
 269+ $class = 'new';
 270+ }
 271+ $alt = htmlspecialchars( $title->getText() );
 272+ if( $text == '' ) {
 273+ $text = $alt;
 274+ }
 275+ $orginal = preg_replace( "/^RTECOLON/", ":", $orginal ); // change 'RTECOLON' => ':'
 276+ if( $text == 'RTENOTITLE' ){ // 2223
 277+ $args .= '_fcknotitle="true" ';
 278+ $text = $orginal;
 279+ $alt = $orginal;
 280+ }
 281+ return "<a href=\"{$orginal}\" class=\"$class\" {$args} _fck_mw_filename=\"{$orginal}\" _fck_mw_type=\"media\" title=\"{$alt}\">{$text}</a>";
 282+ }
 283+ }
 284+
 285+ function makeExternalLink( $url, $text, $escape = true, $linktype = '', $ns = null ) {
 286+ $url = htmlspecialchars( $url );
 287+ if( $escape ) {
 288+ $text = htmlspecialchars( $text );
 289+ }
 290+ $url = preg_replace( "/^RTECOLON/", ":", $url ); // change 'RTECOLON' => ':'
 291+ if( $linktype == 'autonumber' ) {
 292+ return '<a href="' . $url . '">[n]</a>';
 293+ }
 294+ $args = '';
 295+ if( $text == 'RTENOTITLE' ){ // 2223
 296+ $args .= '_fcknotitle="true" ';
 297+ $text = $url;
 298+ }
 299+ return '<a ' . $args . 'href="' . $url . '">' . $text . '</a>';
 300+ }
 301+
 302+ function __call( $m, $a ) {
 303+ return call_user_func_array( array( $this->skin, $m ), $a );
 304+ }
 305+
 306+ function __construct( $skin ) {
 307+ $this->skin = $skin;
 308+ }
 309+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorSkin.body.php
___________________________________________________________________
Added: svn:eol-style
1310 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/sv.js
@@ -0,0 +1,178 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Swedish (Svenska) language file.
 6+ */
 7+
 8+FCKLang.wikiTabEdit = 'Editera';
 9+FCKLang.wikiTabManual = 'Manual';
 10+
 11+FCKLang.wikiBtnTemplate = 'Infoga/Ändra Mall';
 12+FCKLang.wikiBtnReference = 'Infoga/Ändra Reference';
 13+FCKLang.wikiBtnReferences = 'Infoga <references /> tag';
 14+FCKLang.wikiBtnFormula = 'Infoga/Ändra Formel';
 15+FCKLang.wikiBtnSpecial = 'Infoga/Ändra Special Tag';
 16+FCKLang.wikiBtnSourceCode = 'Infoga/Ändra Source Kod';
 17+FCKLang.wikiBtnSignature = 'Infoga signatur';
 18+FCKLang.wikiCmdTemplate = 'Mall Egenskaper';
 19+FCKLang.wikiCmdReference = 'Reference egenskaper';
 20+FCKLang.wikiCmdFormula = 'Formel';
 21+FCKLang.wikiCmdCategories = 'Kategorier';
 22+FCKLang.wikiLoadingWikitext = 'Laddar Wikitext. vänligen vänta...';
 23+FCKLang.wikiLoadingCategories = 'Laddar kategorier...';
 24+FCKLang.wikiSearchCategory = 'sök kategori';
 25+FCKLang.wikiSelectedCategories = 'Valda kategorier';
 26+FCKLang.wikiBtnCategories = 'Infoga/Ändra kategorier';
 27+FCKLang.wikiAddNewCategory = 'Lägg till ny';
 28+FCKLang.wikiCategoryTree = 'Kategoriträd';
 29+FCKLang.wikiMnuTemplate = 'Mall Egenskaper';
 30+FCKLang.wikiMnuMagicWord = 'Modifiera Magic Word';
 31+FCKLang.wikiMnuReference = 'Reference Egenskaper';
 32+FCKLang.wikiMnuFormula = 'Ändra Formel';
 33+FCKLang.wikiCmdSpecial = 'Special Tag egenskaper';
 34+FCKLang.wikiCmdSourceCode = 'Source Kod egenskaper';
 35+FCKLang.wikiMnuSpecial = 'Special Tag Properties';
 36+FCKLang.wikiMnuSourceCode = 'Ändra source kod';
 37+FCKLang.wikiSourceCode = 'Source Kod';
 38+FCKLang.wikiSourceLanguage = 'Source Språk';
 39+
 40+FCKLang.wikiImgFileName = 'Bildens filnamn';
 41+FCKLang.wikiImgNotice1 = 'Bilden måste laddas upp först';
 42+FCKLang.wikiImgNotice2 = 'använd "Ladda upp fil" i vänsterkanten av skärmen';
 43+FCKLang.wikiImgCaption = 'Caption';
 44+FCKLang.wikiImgType = 'Special Type';
 45+FCKLang.wikiImgTypeThumb = 'Tumnagel';
 46+FCKLang.wikiImgTypeFrame = 'Ram';
 47+FCKLang.wikiImgTypeBorder = 'Kant';
 48+FCKLang.wikiImgAlignCenter = 'Center';
 49+
 50+FCKLang.wikiImgAutomatic = 'Automatiska sökresultat';
 51+FCKLang.wikiImgTooShort = 'För kort... skriv mer';
 52+FCKLang.wikiImgStartTyping = 'Börja skriv i fältet ovan';
 53+FCKLang.wikiImgStopTyping = 'Sluta skriv för att söka';
 54+FCKLang.wikiImgSearching = 'söker...';
 55+FCKLang.wikiImgSearchNothing = 'Inga bilder funna';
 56+FCKLang.wikiImgSearch1Found = 'en bild funnen';
 57+FCKLang.wikiImgSearchSeveral = '%1 bilder funna ';
 58+FCKLang.wikiImgSearchALot = '%1 bilder funan ';
 59+
 60+FCKLang.wikiLnk = 'Länk';
 61+FCKLang.wikiLnkAutomatic = 'Automatiska sökresultat';
 62+FCKLang.wikiLnkNoSearchAnchor = 'förankra länk... ingen sökning';
 63+FCKLang.wikiLnkNoSearchMail = 'e-post länk... ingen sökning';
 64+FCKLang.wikiLnkNoSearchExt = 'external link... ingan sökning';
 65+FCKLang.wikiLnkTooShort = 'för kort... skriv mer';
 66+FCKLang.wikiLnkStartTyping = 'Börja skriv i fältet ovan';
 67+FCKLang.wikiLnkStopTyping = 'Sluta skriv för att söka';
 68+FCKLang.wikiLnkSearching = 'söker...';
 69+FCKLang.wikiLnkSearchNothing = 'Inga sidor funna';
 70+FCKLang.wikiLnkSearch1Found = 'En sida funnen';
 71+FCKLang.wikiLnkSearchSeveral = '%1 sidor funna';
 72+FCKLang.wikiLnkSearchALot = '%1 sidor funna';
 73+
 74+FCKLang.wikiTeX = 'Formel (TeX markup)';
 75+FCKLang.wikiTeXEmpty = 'Skriv formeln';
 76+
 77+FCKLang.wikiSpTag = 'Vald Special Tag';
 78+FCKLang.wikiSpParam = 'Special tag parametrar';
 79+
 80+FCKLang.wikiRef = 'Reference text (Wikitext)';
 81+FCKLang.wikiRefName = 'Reference namn (frivilligt)';
 82+
 83+FCKLang.wikiTmpl = 'Raw mall definiering (från {{ till }})';
 84+FCKLang.wikiTmplEmpty = 'Mallar måste börja med {{ och sluta med }}. vänligen kontrollera.';
 85+FCKLang.wikiTmpsel = '(Hämta manualen till en mall här)';
 86+
 87+FCKLang.wikiUnsupportedLanguage = 'Ej supporerat språk: %1';
 88+
 89+FCKLang.DplHelp = 'DPL står för Dynamic Page List, DPL används för att generera listor på sidor baserat på sökkriterier. Se %link för mer info';
 90+FCKLang.inputboxHelp = 'Inputbox är en extension för att skapa formulär i wiki. Nya sidor kan bli för-definierade via en mall. Se %link för mer info';
 91+/*
 92+ * mediaWiki FCKeditor plugin
 93+ *
 94+ * Swedish language file.
 95+ */
 96+
 97+FCKLang.wikiTabEdit = 'Editera';
 98+FCKLang.wikiTabManual = 'Manual';
 99+
 100+FCKLang.wikiBtnTemplate = 'Infoga/Ändra Mall';
 101+FCKLang.wikiBtnReference = 'Infoga/Ändra Reference';
 102+FCKLang.wikiBtnReferences = 'Infoga <references /> tag';
 103+FCKLang.wikiBtnFormula = 'Infoga/Ändra Formel';
 104+FCKLang.wikiBtnSpecial = 'Infoga/Ändra Special Tag';
 105+FCKLang.wikiBtnSourceCode = 'Infoga/Ändra Source Kod';
 106+FCKLang.wikiBtnSignature = 'Infoga signatur';
 107+FCKLang.wikiCmdTemplate = 'Mall Egenskaper';
 108+FCKLang.wikiCmdReference = 'Reference egenskaper';
 109+FCKLang.wikiCmdFormula = 'Formel';
 110+FCKLang.wikiCmdCategories = 'Kategorier';
 111+FCKLang.wikiLoadingWikitext = 'Laddar Wikitext. vänligen vänta...';
 112+FCKLang.wikiLoadingCategories = 'Laddar kategorier...';
 113+FCKLang.wikiSearchCategory = 'sök kategori';
 114+FCKLang.wikiSelectedCategories = 'Valda kategorier';
 115+FCKLang.wikiBtnCategories = 'Infoga/Ändra kategorier';
 116+FCKLang.wikiAddNewCategory = 'Lägg till ny';
 117+FCKLang.wikiCategoryTree = 'Kategoriträd';
 118+FCKLang.wikiMnuTemplate = 'Mall Egenskaper';
 119+FCKLang.wikiMnuMagicWord = 'Modifiera Magic Word';
 120+FCKLang.wikiMnuReference = 'Reference Egenskaper';
 121+FCKLang.wikiMnuFormula = 'Ändra Formel';
 122+FCKLang.wikiCmdSpecial = 'Special Tag egenskaper';
 123+FCKLang.wikiCmdSourceCode = 'Source Kod egenskaper';
 124+FCKLang.wikiMnuSpecial = 'Special Tag Properties';
 125+FCKLang.wikiMnuSourceCode = 'Ändra source kod';
 126+FCKLang.wikiSourceCode = 'Source Kod';
 127+FCKLang.wikiSourceLanguage = 'Source Språk';
 128+
 129+FCKLang.wikiImgFileName = 'Bildens filnamn';
 130+FCKLang.wikiImgNotice1 = 'Bilden måste laddas upp först';
 131+FCKLang.wikiImgNotice2 = 'använd "Ladda upp fil" i vänsterkanten av skärmen';
 132+FCKLang.wikiImgCaption = 'Caption';
 133+FCKLang.wikiImgType = 'Special Type';
 134+FCKLang.wikiImgTypeThumb = 'Tumnagel';
 135+FCKLang.wikiImgTypeFrame = 'Ram';
 136+FCKLang.wikiImgTypeBorder = 'Kant';
 137+FCKLang.wikiImgAlignCenter = 'Center';
 138+
 139+FCKLang.wikiImgAutomatic = 'Automatiska sökresultat';
 140+FCKLang.wikiImgTooShort = 'För kort... skriv mer';
 141+FCKLang.wikiImgStartTyping = 'Börja skriv i fältet ovan';
 142+FCKLang.wikiImgStopTyping = 'Sluta skriv för att söka';
 143+FCKLang.wikiImgSearching = 'söker...';
 144+FCKLang.wikiImgSearchNothing = 'Inga bilder funna';
 145+FCKLang.wikiImgSearch1Found = 'en bild funnen';
 146+FCKLang.wikiImgSearchSeveral = '%1 bilder funna ';
 147+FCKLang.wikiImgSearchALot = '%1 bilder funan ';
 148+
 149+FCKLang.wikiLnk = 'Länk';
 150+FCKLang.wikiLnkAutomatic = 'Automatiska sökresultat';
 151+FCKLang.wikiLnkNoSearchAnchor = 'förankra länk... ingen sökning';
 152+FCKLang.wikiLnkNoSearchMail = 'e-post länk... ingen sökning';
 153+FCKLang.wikiLnkNoSearchExt = 'external link... ingan sökning';
 154+FCKLang.wikiLnkTooShort = 'för kort... skriv mer';
 155+FCKLang.wikiLnkStartTyping = 'Börja skriv i fältet ovan';
 156+FCKLang.wikiLnkStopTyping = 'Sluta skriv för att söka';
 157+FCKLang.wikiLnkSearching = 'söker...';
 158+FCKLang.wikiLnkSearchNothing = 'Inga sidor funna';
 159+FCKLang.wikiLnkSearch1Found = 'En sida funnen';
 160+FCKLang.wikiLnkSearchSeveral = '%1 sidor funna';
 161+FCKLang.wikiLnkSearchALot = '%1 sidor funna';
 162+
 163+FCKLang.wikiTeX = 'Formel (TeX markup)';
 164+FCKLang.wikiTeXEmpty = 'Skriv formeln';
 165+
 166+FCKLang.wikiSpTag = 'Vald Special Tag';
 167+FCKLang.wikiSpParam = 'Special tag parametrar';
 168+
 169+FCKLang.wikiRef = 'Reference text (Wikitext)';
 170+FCKLang.wikiRefName = 'Reference namn (frivilligt)';
 171+
 172+FCKLang.wikiTmpl = 'Raw mall definiering (från {{ till }})';
 173+FCKLang.wikiTmplEmpty = 'Mallar måste börja med {{ och sluta med }}. vänligen kontrollera.';
 174+FCKLang.wikiTmpsel = '(Hämta manualen till en mall här)';
 175+
 176+FCKLang.wikiUnsupportedLanguage = 'Ej supporerat språk: %1';
 177+
 178+FCKLang.DplHelp = 'DPL står för Dynamic Page List, DPL används för att generera listor på sidor baserat på sökkriterier. Se %link för mer info';
 179+FCKLang.inputboxHelp = 'Inputbox är en extension för att skapa formulär i wiki. Nya sidor kan bli för-definierade via en mall. Se %link för mer info';
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/sv.js
___________________________________________________________________
Added: svn:eol-style
1180 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/ko.js
@@ -0,0 +1,89 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Korean (한국어) language file.
 6+ */
 7+
 8+FCKLang.wikiTabEdit = '편집';
 9+FCKLang.wikiTabManual = '매뉴얼';
 10+
 11+FCKLang.wikiBtnTemplate = '삽입/편집 틀';
 12+FCKLang.wikiBtnReference = '삽입/편집 참조';
 13+FCKLang.wikiBtnReferences = '삽입 <references /> 태그';
 14+FCKLang.wikiBtnFormula = '삽입/편집 수식';
 15+FCKLang.wikiBtnSpecial = '삽입/편집 특수기능 태그';
 16+FCKLang.wikiBtnSourceCode = '삽입/편집 소스 코드';
 17+FCKLang.wikiBtnSignature = '삽입 signature';
 18+FCKLang.wikiCmdTemplate = '틀 속성';
 19+FCKLang.wikiCmdReference = '참조 속성';
 20+FCKLang.wikiCmdFormula = '수식';
 21+FCKLang.wikiCmdCategories = '분류 목록';
 22+FCKLang.wikiLoadingWikitext = '위키텍스트를 적재하는 중입니다. 기다려주세요...';
 23+FCKLang.wikiLoadingCategories = '분류 목록을 적재하는 중입니다...';
 24+FCKLang.wikiSearchCategory = '검색 분류';
 25+FCKLang.wikiSelectedCategories = '선택한 분류 목록';
 26+FCKLang.wikiBtnCategories = '삽입/편집 분류 목록';
 27+FCKLang.wikiAddNewCategory = '새로 추가';
 28+FCKLang.wikiCategoryTree = '분류 트리';
 29+FCKLang.wikiMnuTemplate = '틀 속성';
 30+FCKLang.wikiMnuMagicWord = '주문 수정하기';
 31+FCKLang.wikiMnuReference = '참조 속성';
 32+FCKLang.wikiMnuFormula = '수식 편집하기';
 33+FCKLang.wikiCmdSpecial = '특수 태그 속성';
 34+FCKLang.wikiCmdSourceCode = '소스 코드 속성';
 35+FCKLang.wikiMnuSpecial = '특수 태그 속성';
 36+FCKLang.wikiMnuSourceCode = '소스 코드 편집하기';
 37+FCKLang.wikiSourceCode = '소스 코드';
 38+FCKLang.wikiSourceLanguage = '소스 언어';
 39+
 40+FCKLang.wikiImgFileName = '이미지 파일 이름';
 41+FCKLang.wikiImgNotice1 = '이미지를 먼저 올려야 합니다';
 42+FCKLang.wikiImgNotice2 = '화면 좌측의 "파일 올리기"를 이용하세요';
 43+FCKLang.wikiImgCaption = '캡션';
 44+FCKLang.wikiImgType = '특수 형';
 45+FCKLang.wikiImgTypeThumb = '썸네일';
 46+FCKLang.wikiImgTypeFrame = '프레임';
 47+FCKLang.wikiImgTypeBorder = '두께';
 48+FCKLang.wikiImgAlignCenter = '중앙';
 49+
 50+FCKLang.wikiImgAutomatic = '자동 검색 결과';
 51+FCKLang.wikiImgTooShort = '너무 짧습니다. 글자를 더 넣으세요';
 52+FCKLang.wikiImgStartTyping = '위쪽 필드부터 적으세요';
 53+FCKLang.wikiImgStopTyping = '타이핑을 멈추면 검색을 시작합니다';
 54+FCKLang.wikiImgSearching = '검색 중...';
 55+FCKLang.wikiImgSearchNothing = '발견한 이미지 없음';
 56+FCKLang.wikiImgSearch1Found = '이미지 하나 발견';
 57+FCKLang.wikiImgSearchSeveral = '%1 개의 이미지 발견';
 58+FCKLang.wikiImgSearchALot = '%1 개의 이미지 발견';
 59+
 60+FCKLang.wikiLnk = '링크';
 61+FCKLang.wikiLnkAutomatic = '자동 검색 결과';
 62+FCKLang.wikiLnkNoSearchAnchor = '앵커 링크... 검색된 내용 없음';
 63+FCKLang.wikiLnkNoSearchMail = '이메일 링크... 검색된 내용 없음';
 64+FCKLang.wikiLnkNoSearchExt = '외부 링크... 검색된 내용 없음';
 65+FCKLang.wikiLnkTooShort = '너무 짧습니다. 글자를 더 넣으세요';
 66+FCKLang.wikiLnkStartTyping = '위쪽 필드부터 적으세요';
 67+FCKLang.wikiLnkStopTyping = '타이핑을 멈추면 검색을 시작합니다';
 68+FCKLang.wikiLnkSearching = '검색 중...';
 69+FCKLang.wikiLnkSearchNothing = '발견한 글 없음';
 70+FCKLang.wikiLnkSearch1Found = '글 하나 발견';
 71+FCKLang.wikiLnkSearchSeveral = '%1 개의 글 발견';
 72+FCKLang.wikiLnkSearchALot = '%1 개의 글 발견';
 73+
 74+FCKLang.wikiTeX = '수식 (TeX 마크업)';
 75+FCKLang.wikiTeXEmpty = '수식을 입력해주세요';
 76+
 77+FCKLang.wikiSpTag = '현재 특수 태그';
 78+FCKLang.wikiSpParam = '특수 태그 매개변수';
 79+
 80+FCKLang.wikiRef = 'Reference text (Wikitext)';
 81+FCKLang.wikiRefName = 'Reference name (optional)';
 82+
 83+FCKLang.wikiTmpl = '틀 원시 정의 ({{로 시작, }}로 끝남)';
 84+FCKLang.wikiTmplEmpty = '틀은 {{로 시작해서 }}로 끝나야 합니다. 확인해보세요.';
 85+FCKLang.wikiTmpsel = '(여기서 틀 매뉴얼을 고르세요)';
 86+
 87+FCKLang.wikiUnsupportedLanguage = '지원하지 않는 언어: %1';
 88+
 89+FCKLang.DplHelp = 'DPL은 Dynamic Page List를 뜻하며 선택 기준에 근거해 페이지 목록을 예쁘게 꾸며서 보여줍니다. 자세히 알고 싶으면 %link 를 참고하세요';
 90+FCKLang.inputboxHelp = '입력 상자는 사용자가 새 페이지를 생성하는 폼을 생성하게 해줍니다. 어느 틀에나 새 페이지 편집 상자를 미리 적재할 수 있습니다. 자세히 알고 싶으면 %link 를 참고하세요';
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/ko.js
___________________________________________________________________
Added: svn:eol-style
191 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/zh-tw.js
@@ -0,0 +1,81 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Taiwan Chinese (‪中文(台灣)‬) language file.
 6+ * @file
 7+ * @ingroup Language
 8+ * @author Roc michael
 9+ */
 10+
 11+FCKLang.wikiTabEdit = '編輯';
 12+FCKLang.wikiTabManual = '手動選取';
 13+
 14+FCKLang.wikiBtnTemplate = '插入/編輯模板';
 15+FCKLang.wikiBtnReference = '插入/編輯參考(Reference)';
 16+FCKLang.wikiBtnReference = '插入/編輯參考標記「<references />」';
 17+FCKLang.wikiBtnFormula = '插入/編輯公式';
 18+FCKLang.wikiBtnSpecial = '插入/編輯特別標記';
 19+FCKLang.wikiCmdTemplate = '模板屬性';
 20+FCKLang.wikiCmdReference = '參考屬性';
 21+FCKLang.wikiCmdFormula = '公式';
 22+FCKLang.wikiCmdCategories = '分類';
 23+FCKLang.wikiLoadingWikitext = '載入維基文字中,請稍待...';
 24+FCKLang.wikiLoadingCategories = '載入分類中...';
 25+FCKLang.wikiSearchCategory = '蒐尋分類';
 26+FCKLang.wikiSelectedCategories = '選取分類';
 27+FCKLang.wikiBtnCategories = '插入/編輯分類';
 28+FCKLang.wikiAddNewCategory = '新增';
 29+FCKLang.wikiCategoryTree = '分類樹';
 30+FCKLang.wikiMnuTemplate = '模板屬性';
 31+FCKLang.wikiMnuMagicWord = '修改魔術字';
 32+FCKLang.wikiMnuReference = '參考屬性';
 33+FCKLang.wikiMnuFormula = '編輯公式';
 34+FCKLang.wikiCmdSpecial = '特殊標記屬性';
 35+FCKLang.wikiMnuSpecial = '特殊標記屬性';
 36+
 37+FCKLang.wikiImgFileName = '影像檔檔名';
 38+FCKLang.wikiImgNotice1 = '影像必須事先完成上傳';
 39+FCKLang.wikiImgNotice2 = '使用在螢幕左側的 "上傳檔案"';
 40+FCKLang.wikiImgCaption = '標題(Caption)';
 41+FCKLang.wikiImgType = '特殊型態';
 42+FCKLang.wikiImgTypeThumb = '縮圖(Thumbnail)';
 43+FCKLang.wikiImgTypeFrame = '框(Frame)';
 44+FCKLang.wikiImgTypeBorder = '邊(Border)';
 45+FCKLang.wikiImgAlignCenter = '置中(Center)';
 46+
 47+FCKLang.wikiImgAutomatic = '自動蒐尋結果';
 48+FCKLang.wikiImgTooShort = '太短了... 請多鍵入些';
 49+FCKLang.wikiImgStartTyping = '在上方的欄位開始鍵入';
 50+FCKLang.wikiImgStopTyping = '停止鍵入以蒐尋';
 51+FCKLang.wikiImgSearching = '蒐尋...';
 52+FCKLang.wikiImgSearchNothing = '沒有找到影像';
 53+FCKLang.wikiImgSearch1Found = '找到一個影像';
 54+FCKLang.wikiImgSearchSeveral = '找到%1個影像';
 55+FCKLang.wikiImgSearchALot = '找到%1個影像';
 56+
 57+FCKLang.wikiLnk = '連結';
 58+FCKLang.wikiLnkAutomatic = '自動蒐尋結果';
 59+FCKLang.wikiLnkNoSearchAnchor = '錨點連結...,無蒐尋選項';
 60+FCKLang.wikiLnkNoSearchMail = '電子郵件連結,無蒐尋選項';
 61+FCKLang.wikiLnkNoSearchExt = '外部連結,無蒐尋選項';
 62+FCKLang.wikiLnkTooShort = '太短了... 請多鍵入些';
 63+FCKLang.wikiLnkStartTyping = '在上方的欄位開始鍵入';
 64+FCKLang.wikiLnkStopTyping = '停止鍵入以蒐尋';
 65+FCKLang.wikiLnkSearching = '蒐尋中...';
 66+FCKLang.wikiLnkSearchNothing = '沒有找到文章';
 67+FCKLang.wikiLnkSearch1Found = '找到1篇文章';
 68+FCKLang.wikiLnkSearchSeveral = '找到%1篇文章';
 69+FCKLang.wikiLnkSearchALot = '找到%1篇文章';
 70+
 71+FCKLang.wikiTeX = '公式 (TeX 標記)';
 72+FCKLang.wikiTeXEmpty = '請鍵入公式';
 73+
 74+FCKLang.wikiSpTag = '現有特殊標記(Special Tag)';
 75+FCKLang.wikiSpParam = '特殊標記參數';
 76+
 77+FCKLang.wikiRef = '參考文字(維基文字)';
 78+FCKLang.wikiRefName = '參考名稱(選擇性填寫)';
 79+
 80+FCKLang.wikiTmpl = '模板行定義(從 {{ 至 }})';
 81+FCKLang.wikiTmplEmpty = '模板必須以「{{」開頭,並以「}}」結果,請確認一下';
 82+FCKLang.wikiTmpsel = '(請於此處選取一個模板使用說明(template manual))';
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/zh-tw.js
___________________________________________________________________
Added: svn:eol-style
183 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/pl.js
@@ -0,0 +1,90 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Polish (Polski) language file.
 6+ */
 7+
 8+FCKLang.wikiTabEdit = 'Edycja';
 9+FCKLang.wikiTabManual = 'Własny' ;
 10+
 11+FCKLang.wikiBtnTemplate = 'Wstaw/edytuj szablon';
 12+FCKLang.wikiBtnReference = 'Wstaw/edytuj przypis';
 13+FCKLang.wikiBtnReferences = 'Wstaw znacznik <references />';
 14+FCKLang.wikiBtnFormula = 'Wstaw/edytuj formułę matematyczną';
 15+FCKLang.wikiBtnSpecial = 'Wstaw/edytuj specialny znacznik';
 16+FCKLang.wikiBtnSignature = 'Wstaw sygnaturkę';
 17+FCKLang.wikiBtnSourceCode = 'Wstaw/edytuj kod źródłowy programu';
 18+FCKLang.wikiCmdTemplate = 'Właściwości szablonu';
 19+FCKLang.wikiCmdReference = 'Właściwości przypisu';
 20+FCKLang.wikiCmdFormula = 'Właściwości formuły matematycznej';
 21+FCKLang.wikiCmdCategories = 'Kategorie';
 22+FCKLang.wikiLoadingWikitext = '&nbsp;Konwertuję format wiki. Proszę czekać...&nbsp;';
 23+FCKLang.wikiLoadingCategories = 'Ładuję kategorie...';
 24+FCKLang.wikiSearchCategory = 'Szukaj kategorii';
 25+FCKLang.wikiSelectedCategories = 'Wybrane kategorie';
 26+FCKLang.wikiBtnCategories = 'Wstaw/edytuj kategorie';
 27+FCKLang.wikiAddNewCategory = 'Dodaj nową';
 28+FCKLang.wikiCategoryTree = 'Drzewo kategorii';
 29+FCKLang.wikiMnuTemplate = 'Właściwości szablonu';
 30+FCKLang.wikiMnuMagicWord = 'Zmodyfikuj "magiczne słowo"';
 31+FCKLang.wikiMnuReference = 'Właściwości przypisu';
 32+FCKLang.wikiMnuFormula = 'Właściwości formuły matematycznej';
 33+FCKLang.wikiCmdSpecial = 'Właściwości specialnego znacznika';
 34+FCKLang.wikiCmdSourceCode = 'Właściwości kodu źródłowego';
 35+FCKLang.wikiMnuSpecial = 'Edytuj specialny znacznik';
 36+FCKLang.wikiMnuSourceCode = 'Edytuj kod źródłowy';
 37+FCKLang.wikiSourceCode = 'Kod źródłowy';
 38+FCKLang.wikiSourceLanguage = 'Język programowania';
 39+
 40+FCKLang.wikiImgFileName = 'Nazwa obrazka';
 41+FCKLang.wikiImgNotice1 = 'Obrazek musi być uprzednio zapisany';
 42+FCKLang.wikiImgNotice2 = 'patrz menu "Prześlij plik" z lewej strony ekranu.';
 43+FCKLang.wikiImgCaption = 'Tytuł/tekst zastępczy';
 44+FCKLang.wikiImgType = "Typ";
 45+FCKLang.wikiImgTypeThumb = 'Podgląd';
 46+FCKLang.wikiImgTypeFrame = 'Ramka+podpis';
 47+FCKLang.wikiImgTypeBorder = 'Ramka';
 48+FCKLang.wikiImgAlignCenter = 'Do środka';
 49+
 50+FCKLang.wikiImgAutomatic = 'Wyniki wyszukiwania';
 51+FCKLang.wikiImgTooShort = 'za mało liter... napisz coś jeszcze';
 52+FCKLang.wikiImgStartTyping = 'zacznij pisać w polu powyżej';
 53+FCKLang.wikiImgStopTyping = 'przestań pisać, by rozpocząć wyszukiwanie';
 54+FCKLang.wikiImgSearching = 'wyszukiwanie...';
 55+FCKLang.wikiImgSearchNothing = 'nie znaleziono żadnego obrazka';
 56+FCKLang.wikiImgSearch1Found = 'znaleziono jeden&nbsp;obrazek';
 57+FCKLang.wikiImgSearchSeveral = 'znaleziono %1&nbsp;obrazki';
 58+FCKLang.wikiImgSearchALot = 'znaleziono %1&nbsp;obrazków';
 59+
 60+FCKLang.wikiLnk = 'Hiperłącze';
 61+FCKLang.wikiLnkAutomatic = 'Wyniki wyszukiwania';
 62+FCKLang.wikiLnkNoSearchAnchor = 'Kotwica... nie da się wyszukać';
 63+FCKLang.wikiLnkNoSearchMail = 'Adres pocztowy... nie da się wyszukać';
 64+FCKLang.wikiLnkNoSearchExt = 'Łącze do zewnętrzne... nie da się wyszukać';
 65+FCKLang.wikiLnkTooShort = 'za mało liter aby wyszukać';
 66+FCKLang.wikiLnkStartTyping = 'zacznij pisać w polu powyżej';
 67+FCKLang.wikiLnkStopTyping = 'przestań pisać, by rozpocząć wyszukiwanie';
 68+FCKLang.wikiLnkSearching = 'wyszukiwanie...';
 69+FCKLang.wikiLnkSearchNothing = 'nie znaleziono żadnego artykułu';
 70+FCKLang.wikiLnkSearch1Found = 'znaleziono jednen artykuł';
 71+FCKLang.wikiLnkSearchSeveral = 'znaleziono %1 artykuły';
 72+FCKLang.wikiLnkSearchALot = 'znaleziono %1 artykułów';
 73+
 74+FCKLang.wikiTeX = 'Formuła matematyczna (notacja TeX)';
 75+FCKLang.wikiTeXEmpty = 'Nie wprowadzono formuły';
 76+
 77+FCKLang.wikiSpTag = 'Typ znacznika';
 78+FCKLang.wikiSpParam = 'Parametry';
 79+
 80+FCKLang.wikiRef = 'Treść cytatu (format wiki)';
 81+FCKLang.wikiRefName = 'Nazwa cytatu (opcjonalna)';
 82+
 83+FCKLang.wikiTmpl = 'Szablon (np. {{PrzykładowySzablon}})';
 84+FCKLang.wikiTmplEmpty = 'Szablon musi zaczynać się znakami {{ i kończyć się znakami }}';
 85+FCKLang.wikiTmpsel = '(Wybierz z listy)';
 86+
 87+FCKLang.wikiUnsupportedLanguage = 'Nieprawidłowy język programowania: %1';
 88+
 89+FCKLang.DplHelp = 'Dynamic Page List pozwala na generowanie formatowanych list stron bazując na podanych kryteriach Zobacz %link aby dowiedzieć się więcej';;
 90+FCKLang.inputboxHelp = 'Inputbox pozwala na stworzenie formularza dla użytkowników do tworzenia nowych stron. Zobacz %link aby dowiedzieć się więcej';
 91+
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/pl.js
___________________________________________________________________
Added: svn:eol-style
192 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/he.js
@@ -0,0 +1,89 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Hebrew (עברית) language file.
 6+ */
 7+
 8+FCKLang.wikiTabEdit = 'עריכה';
 9+FCKLang.wikiTabManual = 'הוראות שימוש';
 10+
 11+FCKLang.wikiBtnTemplate = 'הוסף/ערוך תבנית';
 12+FCKLang.wikiBtnReference = 'הוסף/ערוך הערת שוליים';
 13+FCKLang.wikiBtnReferences = 'הוסף תג <references />';
 14+FCKLang.wikiBtnFormula = 'הוסף/ערוך נוסחה';
 15+FCKLang.wikiBtnSpecial = 'הוסף/ערוך תג מיוחד';
 16+FCKLang.wikiBtnSourceCode = 'הוסף/ערוך קוד מקור';
 17+FCKLang.wikiBtnSignature = 'הוסף חתימה';
 18+FCKLang.wikiCmdTemplate = 'תכונות התבנית';
 19+FCKLang.wikiCmdReference = 'תכונות הערת השוליים';
 20+FCKLang.wikiCmdFormula = 'נוסחה';
 21+FCKLang.wikiCmdCategories = 'קטגוריות';
 22+FCKLang.wikiLoadingWikitext = 'טוען ויקיטקסט. אנא המתן...';
 23+FCKLang.wikiLoadingCategories = 'טוען קטגוריות...';
 24+FCKLang.wikiSearchCategory = 'חפש קטגוריה';
 25+FCKLang.wikiSelectedCategories = 'קטגוריות שנבחרו';
 26+FCKLang.wikiBtnCategories = 'הוסף/ערוך קטגוריות';
 27+FCKLang.wikiAddNewCategory = 'הוסף קטגוריה';
 28+FCKLang.wikiCategoryTree = 'עץ קטגוריות';
 29+FCKLang.wikiMnuTemplate = 'תכונות התבנית';
 30+FCKLang.wikiMnuMagicWord = 'ערוך פקודת קסם';
 31+FCKLang.wikiMnuReference = 'תכונות הערת השוליים';
 32+FCKLang.wikiMnuFormula = 'ערוך נוסחה';
 33+FCKLang.wikiCmdSpecial = 'תכונות התג המיוחד';
 34+FCKLang.wikiCmdSourceCode = 'תכונות קוד המקור';
 35+FCKLang.wikiMnuSpecial = 'תכונות התג המיוחד';
 36+FCKLang.wikiMnuSourceCode = 'ערוך קוד מקור';
 37+FCKLang.wikiSourceCode = 'קוד מקור';
 38+FCKLang.wikiSourceLanguage = 'שפת קוד המקור';
 39+
 40+FCKLang.wikiImgFileName = 'שם קובץ התמונה';
 41+FCKLang.wikiImgNotice1 = 'יש להעלות את התמונות לפני השימוש';
 42+FCKLang.wikiImgNotice2 = 'השתמש ב"העלאת קובץ לשרת" בצידו השמאלי של המסך';
 43+FCKLang.wikiImgCaption = 'כיתוב תמונה';
 44+FCKLang.wikiImgType = 'הגדרות התמונה';
 45+FCKLang.wikiImgTypeThumb = 'ממוזערת';
 46+FCKLang.wikiImgTypeFrame = 'ממוסגרת';
 47+FCKLang.wikiImgTypeBorder = 'בעלת גבול';
 48+FCKLang.wikiImgAlignCenter = 'למרכז';
 49+
 50+FCKLang.wikiImgAutomatic = 'תוצאות חיפוש אוטומטיות';
 51+FCKLang.wikiImgTooShort = 'קצר מדי... הקלד עוד';
 52+FCKLang.wikiImgStartTyping = 'התחל להקליד בשדה שמלמעלה';
 53+FCKLang.wikiImgStopTyping = 'הפסק להקליד כדי לחפש';
 54+FCKLang.wikiImgSearching = 'מחפש...';
 55+FCKLang.wikiImgSearchNothing = 'לא נמצאו תמונות';
 56+FCKLang.wikiImgSearch1Found = 'תמונה אחת נמצאה';
 57+FCKLang.wikiImgSearchSeveral = '%1 תמונות נמצאו';
 58+FCKLang.wikiImgSearchALot = '%1 תמונות נמצאו';
 59+
 60+FCKLang.wikiLnk = 'קישור';
 61+FCKLang.wikiLnkAutomatic = 'תוצאות חיפוש אוטומטיות';
 62+FCKLang.wikiLnkNoSearchAnchor = 'קישור לעוגן... אין חיפוש עבור קישורים אלו';
 63+FCKLang.wikiLnkNoSearchMail = 'קישור למייל... אין חיפוש עבור קישורים אלו';
 64+FCKLang.wikiLnkNoSearchExt = 'קישור חיצוני... אין חיפוש עבור קישורים אלו';
 65+FCKLang.wikiLnkTooShort = 'קצר מדי... הקלד עוד';
 66+FCKLang.wikiLnkStartTyping = 'התחל להקליד בשדה שמלמעלה';
 67+FCKLang.wikiLnkStopTyping = 'הפסק להקליד כדי לחפש';
 68+FCKLang.wikiLnkSearching = 'מחפש...';
 69+FCKLang.wikiLnkSearchNothing = 'לא נמצאו ערכים';
 70+FCKLang.wikiLnkSearch1Found = 'נמצא ערך אחד';
 71+FCKLang.wikiLnkSearchSeveral = '%1 ערכים נמצאו';
 72+FCKLang.wikiLnkSearchALot = '%1 ערכים נמצאו';
 73+
 74+FCKLang.wikiTeX = 'נוסחה (שפת TeX)';
 75+FCKLang.wikiTeXEmpty = 'אנא הקלד את הנוסחה';
 76+
 77+FCKLang.wikiSpTag = 'התג המיוחד הנוכחי';
 78+FCKLang.wikiSpParam = 'משתני התג המיוחד';
 79+
 80+FCKLang.wikiRef = 'טקסט הערת השוליים (ויקיטקסט)';
 81+FCKLang.wikiRefName = 'שם הערת השוליים (אופציונלי)';
 82+
 83+FCKLang.wikiTmpl = 'הגדרה גסה של התבנית (מ-{{ ל-}})';
 84+FCKLang.wikiTmplEmpty = 'על תבניות להתחיל ב-{{ ולהסתיים ב-}}. נסה שנית.';
 85+FCKLang.wikiTmpsel = '(בחר תבנית כאן)';
 86+
 87+FCKLang.wikiUnsupportedLanguage = 'שפה לא נתמכת: %1';
 88+
 89+FCKLang.DplHelp = 'DPL הן ראשי תיבות של Dynamic Page List (בעברית - רשימת דפים דינמית). הרחבה זו מאפשרת ליצור רשימת דפים על בסיס קריטריון נבחר. לפרטים, ראה %link';
 90+FCKLang.inputboxHelp = 'Inputbox הוא הרחבה המאפשרת ליצור טופס שנותן למשתמשים ליצור דפים חדשים. תיבת העריכה של הדף החדש יכולה להטען מראש עם כל תבנית. לפרטים, ראה %link';
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/he.js
___________________________________________________________________
Added: svn:eol-style
191 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/fi.js
@@ -0,0 +1,92 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * Finnish (Suomi) language file.
 6+ * @file
 7+ * @ingroup Language
 8+ * @author Jack Phoenix <jack@countervandalism.net>
 9+ */
 10+
 11+FCKLang.wikiTabEdit = 'Muokkaa';
 12+//FCKLang.wikiTabManual = 'Manual';
 13+
 14+FCKLang.wikiBtnTemplate = 'Lisää/Muokkaa mallinetta';
 15+FCKLang.wikiBtnReference = 'Lisää/Muokkaa viittausta';
 16+FCKLang.wikiBtnReferences = 'Lisää <references /> -tagi';
 17+FCKLang.wikiBtnFormula = 'Lisää/Muokkaa kaavaa';
 18+FCKLang.wikiBtnSpecial = 'Lisää/Muokkaa erikoistagia';
 19+FCKLang.wikiBtnSourceCode = 'Lisää/Muokkaa lähdekoodia';
 20+FCKLang.wikiBtnSignature = 'Lisää allekirjoitus';
 21+FCKLang.wikiCmdTemplate = 'Mallineen ominaisuudet';
 22+FCKLang.wikiCmdReference = 'Vittauksen ominaisuudet';
 23+FCKLang.wikiCmdFormula = 'Kaava';
 24+FCKLang.wikiCmdCategories = 'Luokat';
 25+FCKLang.wikiLoadingWikitext = 'Ladataan wikitekstiä. Ole hyvä ja odota...';
 26+FCKLang.wikiLoadingCategories = 'ladataan luokkia...';
 27+//FCKLang.wikiSearchCategory = 'Etsi luokkaa';
 28+FCKLang.wikiSelectedCategories = 'Valitut luokat';
 29+FCKLang.wikiBtnCategories = 'Lisää/Muokkaa luokkia';
 30+FCKLang.wikiAddNewCategory = 'Lisää uusi';
 31+FCKLang.wikiCategoryTree = 'Luokkapuu';
 32+FCKLang.wikiMnuTemplate = 'Mallineen ominaisuudet';
 33+FCKLang.wikiMnuMagicWord = 'Muuta taikasanaa';
 34+FCKLang.wikiMnuReference = 'Viittauksen ominaisuudet';
 35+FCKLang.wikiMnuFormula = 'Muokkaa kaavaa';
 36+FCKLang.wikiCmdSpecial = 'Erikoistagin ominaisuudet';
 37+FCKLang.wikiCmdSourceCode = 'Lähdekoodin ominaisuudet';
 38+FCKLang.wikiMnuSpecial = 'Erikoistagin ominaisuudet';
 39+FCKLang.wikiMnuSourceCode = 'Muokkaa lähdekoodia';
 40+FCKLang.wikiSourceCode = 'Lähdekoodi';
 41+FCKLang.wikiSourceLanguage = 'Lähdekieli';
 42+
 43+FCKLang.wikiImgFileName = 'Kuvatiedoston nimi';
 44+FCKLang.wikiImgNotice1 = 'Kuvan tulee olla tallennettu etukäteen';
 45+FCKLang.wikiImgNotice2 = 'käytä "Tallenna tiedosto"-ominaisuutta ruudun vasemmalla puolella';
 46+FCKLang.wikiImgCaption = 'Kuvateksti';
 47+//FCKLang.wikiImgType = 'Erikoistyyppi';
 48+FCKLang.wikiImgTypeThumb = 'Pikkukuva';
 49+FCKLang.wikiImgTypeFrame = 'Kehys';
 50+FCKLang.wikiImgTypeBorder = 'Reuna';
 51+FCKLang.wikiImgAlignCenter = 'Keskitetty';
 52+
 53+FCKLang.wikiImgAutomatic = 'Automaattisen haun tulokset';
 54+FCKLang.wikiImgTooShort = 'liian lyhyt... kirjoita lisää';
 55+FCKLang.wikiImgStartTyping = 'aloita kirjoittamaan ylläolevaan kenttään';
 56+FCKLang.wikiImgStopTyping = 'lopeta kirjoittaminen etsiäksesi';
 57+FCKLang.wikiImgSearching = 'etsitään...';
 58+FCKLang.wikiImgSearchNothing = 'kuvia ei löytynyt';
 59+FCKLang.wikiImgSearch1Found = 'yksi kuva löytyi';
 60+FCKLang.wikiImgSearchSeveral = '%1 kuvaa löytyi ';
 61+FCKLang.wikiImgSearchALot = '%1 kuvaa löytyi ';
 62+
 63+FCKLang.wikiLnk = 'Linkki';
 64+FCKLang.wikiLnkAutomatic = 'Automaattisen haun tulokset';
 65+FCKLang.wikiLnkNoSearchAnchor = 'ankkurilinkki... ei haeta sitä';
 66+FCKLang.wikiLnkNoSearchMail = 'sähköpostilinkki... ei haeta sitä';
 67+FCKLang.wikiLnkNoSearchExt = 'ulkoinen linkki... ei haeta sitä';
 68+FCKLang.wikiLnkTooShort = 'liian lyhyt... kirjoita lisää';
 69+FCKLang.wikiLnkStartTyping = 'aloita kirjoittamaan ylläolevaan kenttään';
 70+FCKLang.wikiLnkStopTyping = 'lopeta kirjoittaminen etsiäksesi';
 71+FCKLang.wikiLnkSearching = 'etsitään...';
 72+FCKLang.wikiLnkSearchNothing = 'artikkeleita ei löytynyt';
 73+FCKLang.wikiLnkSearch1Found = 'yksi artikkeli löytyi';
 74+FCKLang.wikiLnkSearchSeveral = '%1 artikkelia löytyi';
 75+FCKLang.wikiLnkSearchALot = '%1 artikkelia löytyi';
 76+
 77+FCKLang.wikiTeX = 'Kaava (TeX-merkkikieli)';
 78+FCKLang.wikiTeXEmpty = 'Ole hyvä ja kirjoita kaava';
 79+
 80+FCKLang.wikiSpTag = 'Nykyinen erikoistagi';
 81+FCKLang.wikiSpParam = 'Erikoistagin parametrit';
 82+
 83+FCKLang.wikiRef = 'Vittauksen teksti (wikitekstiä)';
 84+FCKLang.wikiRefName = 'Viittauksen nimi (vapaaehtoinen)';
 85+
 86+FCKLang.wikiTmpl = 'Mallineen raakamääritelmä ({{ -merkeistä }} -merkkeihin)';
 87+FCKLang.wikiTmplEmpty = 'Mallineiden täytyy alkaa {{ -merkeillä ja päättyä }} -merkkeihin. Ole hyvä ja tarkista se.';
 88+//FCKLang.wikiTmpsel = '(Pick up a template manual here)';
 89+
 90+FCKLang.wikiUnsupportedLanguage = 'Ei-tuettu kieli: %1';
 91+
 92+FCKLang.DplHelp = 'DPL on lyhenne sanoista Dynamic Page List (dynaaminen sivulista) ja se mahdollistaa muotoillun listan luomisen annettuja kriteereitä vastaavisa sivuista. Katso %link saadaksesi lisätietoja';
 93+FCKLang.inputboxHelp = 'Inputbox mahdollistaa lomakkeen luomisen, jonka avulla käyttäjät voivat luoda uusia sivuja. Uusien sivujen luontilaatikkoon voi etukäteen ladata minkä tahansa mallineen. Katso %link saadaksesi lisätietoja';
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/fi.js
___________________________________________________________________
Added: svn:eol-style
194 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/lang/en.js
@@ -0,0 +1,89 @@
 2+/*
 3+ * MediaWiki FCKeditor plugin
 4+ *
 5+ * English language file.
 6+ */
 7+
 8+FCKLang.wikiTabEdit = 'Edit';
 9+FCKLang.wikiTabManual = 'Manual';
 10+
 11+FCKLang.wikiBtnTemplate = 'Insert/Edit Template';
 12+FCKLang.wikiBtnReference = 'Insert/Edit Reference';
 13+FCKLang.wikiBtnReferences = 'Insert <references /> tag';
 14+FCKLang.wikiBtnFormula = 'Insert/Edit Formula';
 15+FCKLang.wikiBtnSpecial = 'Insert/Edit Special Tag';
 16+FCKLang.wikiBtnSourceCode = 'Insert/Edit Source Code';
 17+FCKLang.wikiBtnSignature = 'Insert signature';
 18+FCKLang.wikiCmdTemplate = 'Template Properties';
 19+FCKLang.wikiCmdReference = 'Reference Properties';
 20+FCKLang.wikiCmdFormula = 'Formula';
 21+FCKLang.wikiCmdCategories = 'Categories';
 22+FCKLang.wikiLoadingWikitext = 'Loading Wikitext. Please wait...';
 23+FCKLang.wikiLoadingCategories = 'loading categories...';
 24+FCKLang.wikiSearchCategory = 'Search category';
 25+FCKLang.wikiSelectedCategories = 'Selected categories';
 26+FCKLang.wikiBtnCategories = 'Insert/Edit categories';
 27+FCKLang.wikiAddNewCategory = 'Add new';
 28+FCKLang.wikiCategoryTree = 'Category tree';
 29+FCKLang.wikiMnuTemplate = 'Template Properties';
 30+FCKLang.wikiMnuMagicWord = 'Modify Magic Word';
 31+FCKLang.wikiMnuReference = 'Reference Properties';
 32+FCKLang.wikiMnuFormula = 'Edit Formula';
 33+FCKLang.wikiCmdSpecial = 'Special Tag Properties';
 34+FCKLang.wikiCmdSourceCode = 'Source Code Properties';
 35+FCKLang.wikiMnuSpecial = 'Special Tag Properties';
 36+FCKLang.wikiMnuSourceCode = 'Edit source code';
 37+FCKLang.wikiSourceCode = 'Source Code';
 38+FCKLang.wikiSourceLanguage = 'Source Language';
 39+
 40+FCKLang.wikiImgFileName = 'Image file name';
 41+FCKLang.wikiImgNotice1 = 'Image have to be uploded before';
 42+FCKLang.wikiImgNotice2 = 'use "Upload file" on the left side of the screen';
 43+FCKLang.wikiImgCaption = 'Caption';
 44+FCKLang.wikiImgType = 'Special Type';
 45+FCKLang.wikiImgTypeThumb = 'Thumbnail';
 46+FCKLang.wikiImgTypeFrame = 'Frame';
 47+FCKLang.wikiImgTypeBorder = 'Border';
 48+FCKLang.wikiImgAlignCenter = 'Center';
 49+
 50+FCKLang.wikiImgAutomatic = 'Automatic search results';
 51+FCKLang.wikiImgTooShort = 'too short... type more';
 52+FCKLang.wikiImgStartTyping = 'start typing in the above field';
 53+FCKLang.wikiImgStopTyping = 'stop typing to search';
 54+FCKLang.wikiImgSearching = 'searching...';
 55+FCKLang.wikiImgSearchNothing = 'no images found';
 56+FCKLang.wikiImgSearch1Found = 'one image found';
 57+FCKLang.wikiImgSearchSeveral = '%1 images found ';
 58+FCKLang.wikiImgSearchALot = '%1 images found ';
 59+
 60+FCKLang.wikiLnk = 'Link';
 61+FCKLang.wikiLnkAutomatic = 'Automatic search results';
 62+FCKLang.wikiLnkNoSearchAnchor = 'anchor link... no search for it';
 63+FCKLang.wikiLnkNoSearchMail = 'e-mail link... no search for it';
 64+FCKLang.wikiLnkNoSearchExt = 'external link... no search for it';
 65+FCKLang.wikiLnkTooShort = 'too short... type more';
 66+FCKLang.wikiLnkStartTyping = 'start typing in the above field';
 67+FCKLang.wikiLnkStopTyping = 'stop typing to search';
 68+FCKLang.wikiLnkSearching = 'searching...';
 69+FCKLang.wikiLnkSearchNothing = 'no articles found';
 70+FCKLang.wikiLnkSearch1Found = 'one article found';
 71+FCKLang.wikiLnkSearchSeveral = '%1 articles found';
 72+FCKLang.wikiLnkSearchALot = '%1 articles found';
 73+
 74+FCKLang.wikiTeX = 'Formula (TeX markup)';
 75+FCKLang.wikiTeXEmpty = 'Please type the formula';
 76+
 77+FCKLang.wikiSpTag = 'Current Special Tag';
 78+FCKLang.wikiSpParam = 'Special tag parameters';
 79+
 80+FCKLang.wikiRef = 'Reference text (Wikitext)';
 81+FCKLang.wikiRefName = 'Reference name (optional)';
 82+
 83+FCKLang.wikiTmpl = 'Template raw definition (from {{ to }})';
 84+FCKLang.wikiTmplEmpty = 'Templates must start with {{ and end with }}. Please check it.';
 85+FCKLang.wikiTmpsel = '(Pick up a template manual here)';
 86+
 87+FCKLang.wikiUnsupportedLanguage = 'Unsupported language: %1';
 88+
 89+FCKLang.DplHelp = 'DPL stands for Dynamic Page List, and allows to generate a formatted list of pages based on selection criteria. See %link for details';
 90+FCKLang.inputboxHelp = 'Inputbox allows to create a form for users to create new pages. The new pages edit box can be pre-loaded with any template. See %link for details';
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/lang/en.js
___________________________________________________________________
Added: svn:eol-style
191 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/ref.html
@@ -0,0 +1,125 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Reference Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// Get the selected flash embed (if available).
 45+var oFakeImage = FCK.Selection.GetSelectedElement() ;
 46+var oRef ;
 47+
 48+if ( oFakeImage )
 49+{
 50+ if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fck_mw_ref') )
 51+ oRef = FCK.GetRealElement( oFakeImage ) ;
 52+ else
 53+ oFakeImage = null ;
 54+}
 55+
 56+window.onload = function()
 57+{
 58+ // Translate the dialog box texts.
 59+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 60+
 61+ // Load the selected link information (if any).
 62+ LoadSelection() ;
 63+
 64+ // Activate the "OK" button.
 65+ window.parent.SetOkButton( true ) ;
 66+ window.parent.SetAutoSize( true ) ;
 67+ GetE('xRefText').focus();
 68+};
 69+
 70+function LoadSelection()
 71+{
 72+ if ( !oRef ) return ;
 73+
 74+ GetE('xRefText').value = FCKTools.HTMLDecode( oRef.innerHTML ).replace( /&quot;/g, '"' ) ;
 75+ GetE('xRefName').value = oRef.getAttribute( 'name' ) ;
 76+}
 77+
 78+//#### The OK button was hit.
 79+function Ok()
 80+{
 81+ if ( !oRef )
 82+ {
 83+ oRef = FCK.EditorDocument.createElement( 'SPAN' ) ;
 84+ oRef.className = 'fck_mw_ref' ;
 85+ }
 86+
 87+ var refData = FCKTools.HTMLEncode( GetE('xRefText').value ).Trim().replace( /"/g, '&quot;' ) ;
 88+ oRef.innerHTML = refData ;
 89+ SetAttribute( oRef, "name", GetE('xRefName').value ) ;
 90+
 91+ if ( !oFakeImage )
 92+ {
 93+ oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWRef', oRef ) ;
 94+ oFakeImage.setAttribute( '_fck_mw_ref', 'true', 0 ) ;
 95+ oFakeImage = FCK.InsertElement( oFakeImage ) ;
 96+ }
 97+
 98+ return true ;
 99+}
 100+
 101+ </script>
 102+</head>
 103+<body style="overflow: hidden">
 104+ <div id="divInfo">
 105+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 106+ <tr>
 107+ <td>
 108+ <span fcklang="wikiRef">Reference text (Wikitext)</span>
 109+ </td>
 110+ </tr>
 111+ <tr>
 112+ <td height="100%">
 113+ <textarea id="xRefText" style="width: 100%; height: 100%; font-family: Monospace"
 114+ cols="50" rows="5"></textarea>
 115+ </td>
 116+ </tr>
 117+ <tr>
 118+ <td>
 119+ <span fcklang="wikiRefName">Reference name (optional)</span><br />
 120+ <input id="xRefName" type="text" size="15" />
 121+ </td>
 122+ </tr>
 123+ </table>
 124+ </div>
 125+</body>
 126+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/ref.html
___________________________________________________________________
Added: svn:eol-style
1127 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/category.html
@@ -0,0 +1,395 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Category dialog window.
 24+-->
 25+<html>
 26+<head>
 27+<title>Categories</title>
 28+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+<meta name="robots" content="noindex, nofollow" />
 30+<script type="text/javascript">
 31+var oEditor = window.parent.InnerDialogLoaded();
 32+var FCK = oEditor.FCK;
 33+var FCKLang = oEditor.FCKLang;
 34+var FCKConfig = oEditor.FCKConfig;
 35+var FCKRegexLib = oEditor.FCKRegexLib;
 36+var FCKTools = oEditor.FCKTools;
 37+var FCKBrowserInfo = oEditor.FCKBrowserInfo;
 38+var EditorDocument = oEditor.FCK.EditorDocument;
 39+
 40+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' );
 41+
 42+window.onload = function()
 43+{
 44+ // Translate the dialog box texts.
 45+ oEditor.FCKLanguageManager.TranslatePage( document );
 46+
 47+ // Load the selected link information (if any).
 48+ InitSelected();
 49+ SetSearchMessage( FCKLang.wikiLoadingCategories || 'loading categories...' );
 50+ oEditor.window.parent.sajax_request_type = 'GET';
 51+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchCategoryFCKeditor', [], InitCategoryTree );
 52+
 53+ // Activate the "OK" button.
 54+ window.parent.SetOkButton( true );
 55+ window.parent.SetAutoSize( true );
 56+};
 57+
 58+var selectedCats;
 59+
 60+function InitSelected()
 61+{
 62+ selectedCats = new Array();
 63+ var node = EditorDocument;
 64+ while ( node )
 65+ {
 66+ if ( node.nodeType == 1 && node.tagName.toLowerCase() == 'a' )
 67+ {
 68+ // Get the actual Link href.
 69+ var sHRef = node.getAttribute( '_fcksavedurl' );
 70+ if ( sHRef == null )
 71+ sHRef = node.getAttribute( 'href', 2 ) || '';
 72+ if ( sHRef.StartsWith( 'Category:' ) )
 73+ {
 74+ var select = GetE( 'xCategories' );
 75+ var cat = sHRef.slice( 9 );
 76+ SelectCategory( cat, -1 );
 77+ }
 78+ }
 79+ node = FCKTools.GetNextNode( node, EditorDocument );
 80+ }
 81+}
 82+
 83+function SelectCategory( cat, catTreeRow )
 84+{
 85+ var select, row = parseInt( catTreeRow );
 86+ if ( row >= 0 )
 87+ {
 88+ select = GetE( 'xWikiResults' );
 89+ cat = select.options[ row ].text;
 90+ var lvl = 0;
 91+ while ( cat.charAt( lvl ) == placeholder )
 92+ lvl++;
 93+ cat = cat.slice( lvl );
 94+ if ( cat.charAt( 0 ) == '[' && cat.charAt( cat.length - 1 ) == ']' )
 95+ cat = cat.substring( 1, cat.length - 1 );
 96+ }
 97+
 98+ if ( selectedCats[ cat ] )
 99+ delete selectedCats[ cat ];
 100+ else
 101+ selectedCats[ cat ] = cat;
 102+
 103+ select = GetE( 'xCategories' );
 104+
 105+ while ( select.options.length > 0 )
 106+ select.remove( 0 );
 107+
 108+ for ( cat in selectedCats )
 109+ FCKTools.AddSelectOption( select, cat, cat );
 110+}
 111+
 112+var catTree;
 113+
 114+function InitCategoryTree( result )
 115+{
 116+ SetSearchMessage( FCKLang.wikiLnkStartTyping || 'start typing in the above field' );
 117+
 118+ catTree = new Object();
 119+ var levelsHead = new Array( 'root' );
 120+ var levelsBody = new Array( '' );
 121+
 122+ var results = result.responseText.Trim().split( '\n' );
 123+ var previousLvl = -1;
 124+ for ( var i = 0 ; i < results.length ; i++ )
 125+ {
 126+ var lvl = 0;
 127+ while ( results[ i ].charAt( lvl ) == ' ' )
 128+ lvl++;
 129+ var t = results[ i ].slice( lvl );
 130+ for ( var j = previousLvl ; j > lvl - 1 ; j-- )
 131+ {
 132+
 133+ if ( levelsBody[ j + 1 ] != '' )
 134+ catTree[ levelsHead[ j + 1 ] ] = levelsBody[ j + 1 ];
 135+ delete levelsHead[ j + 1 ];
 136+ delete levelsBody[ j + 1 ];
 137+ }
 138+ if ( lvl > previousLvl )
 139+ levelsBody[ lvl ] = t;
 140+ else
 141+ levelsBody[ lvl ] = levelsBody[ lvl ] + ' ' + t;
 142+ levelsHead[ lvl + 1 ] = t;
 143+ levelsBody[ lvl + 1 ] = '';
 144+ previousLvl = lvl;
 145+ }
 146+ for ( var j = previousLvl ; j >= -1 ; j-- )
 147+ {
 148+ if ( levelsBody[ j + 1 ] != '' )
 149+ catTree[ levelsHead[ j + 1 ] ] = levelsBody[ j + 1 ];
 150+ delete levelsHead[ j + 1 ];
 151+ delete levelsBody[ j + 1 ];
 152+ }
 153+
 154+ ShowCategoriesSubTree( -1 );
 155+}
 156+
 157+var placeholder = '.';
 158+
 159+//draw category subtree
 160+function ShowCategoriesSubTree( rowInTree )
 161+{
 162+ var row = parseInt( rowInTree );
 163+ var select = GetE( 'xWikiResults' );
 164+ var root = 'root';
 165+ var lvl = -1;
 166+ var prefix = '';
 167+ if ( row >= 0 )
 168+ {
 169+ root = select.options[ row ].text;
 170+ lvl = 0;
 171+ while ( root.charAt( lvl ) == placeholder )
 172+ lvl++;
 173+ root = root.slice( lvl );
 174+ if ( root.charAt( 0 ) == '[' && root.charAt( root.length - 1 ) == ']' )
 175+ root = root.substring( 1, root.length - 1 );
 176+ prefix = new Array( lvl + 1 + 3 ).join( placeholder );
 177+ }
 178+ if ( !catTree[ root ] )
 179+ return;
 180+
 181+ var itCount = select.options.length;
 182+ var itSkip = row + 1;
 183+ var opts = new Array();
 184+ for ( var i = row + 1 ; i < itCount ; i++ )
 185+ {
 186+ var t = select.options[ i ].text;
 187+ var sublvl = 0;
 188+ while ( t.charAt( sublvl ) == placeholder )
 189+ sublvl++;
 190+ if ( sublvl > lvl )
 191+ itSkip = i + 1;
 192+ else
 193+ break;
 194+ }
 195+ for ( var i = itCount - 1 ; i > row ; i-- )
 196+ {
 197+ var t = select.options[ i ].text;
 198+ if ( i >= itSkip )
 199+ opts.push( t );
 200+ select.remove( i );
 201+ }
 202+ if ( itSkip == row + 1 )
 203+ {
 204+ var cats = catTree[ root ].split( ' ' );
 205+
 206+ for ( var k in cats )
 207+ {
 208+ var p = cats[ k ];
 209+ if ( catTree[ cats[ k ] ] )
 210+ p = '[' + p + ']';
 211+ var e = FCKTools.AddSelectOption( select, prefix + p, ++row );
 212+ if ( catTree[ cats[ k ] ] )
 213+ e.style.color = '#00f';
 214+
 215+ }
 216+ }
 217+ for ( var i = opts.length - 1 ; i >= 0 ; i-- )
 218+ {
 219+ var e = FCKTools.AddSelectOption( select, opts[ i ], ++row );
 220+ if ( opts[ i ].indexOf( '[' ) >= 0 )
 221+ e.style.color = '#00f';
 222+ }
 223+
 224+}
 225+
 226+//draw filtered
 227+function ShowFilteredCategories( filter )
 228+{
 229+ var select = GetE( 'xWikiResults' );
 230+ while ( select.options.length > 0 )
 231+ select.remove( 0 );
 232+ var found = new Object();
 233+ if ( filter.length == 0 )
 234+ {
 235+ ShowCategoriesSubTree( -1 );
 236+ return;
 237+ }
 238+ filter = filter.toLowerCase();
 239+ var row = -1;
 240+ for ( var folder in catTree )
 241+ {
 242+ var cats = catTree[ folder ].split( ' ' );
 243+ for ( var k in cats )
 244+ {
 245+ var p = cats[ k ].toLowerCase();
 246+ if ( p.indexOf( filter ) >= 0 )
 247+ {
 248+ if ( found[ cats[ k ] ] )
 249+ ;
 250+ else
 251+ {
 252+ found[ cats[ k ] ] = cats[ k ];
 253+ FCKTools.AddSelectOption( select, cats[ k ], ++row );
 254+ }
 255+ }
 256+ }
 257+ }
 258+}
 259+
 260+function AddNew()
 261+{
 262+ var select = GetE( 'txtUrl' );
 263+ if ( select.value.Trim() )
 264+ SelectCategory( select.value, -1 );
 265+ select.value = '';
 266+}
 267+
 268+//#### The OK button was hit.
 269+function Ok()
 270+{
 271+ var nodes = new Array();
 272+ var node = EditorDocument;
 273+ var nodeNext;
 274+ var s = '';
 275+ var i = 0;
 276+ while ( node )
 277+ {
 278+ nodeNext = FCKTools.GetNextNode( node, EditorDocument );
 279+ if ( node.nodeType == 1 && node.tagName.toLowerCase() == 'a' )
 280+ {
 281+ // Get the actual Link href.
 282+ var sHRef = node.getAttribute( '_fcksavedurl' );
 283+ if ( sHRef == null )
 284+ sHRef = node.getAttribute( 'href', 2 ) || '';
 285+ if ( sHRef.StartsWith( 'Category:' ) )
 286+ nodes[ i++ ] = node;
 287+ }
 288+ node = nodeNext;
 289+ }
 290+ for ( var i = 0 ; i < nodes.length ; i++ )
 291+ nodes[ i ].parentNode.removeChild( nodes[ i ] );
 292+
 293+ for ( var cat in selectedCats )
 294+ AddCategoryLink( cat );
 295+
 296+ CleanUpCategoryLinks();
 297+
 298+ return true;
 299+}
 300+
 301+function CleanUpCategoryLinks()
 302+{
 303+ var node = EditorDocument;
 304+ var nodes = [];
 305+ while ( node )
 306+ {
 307+ if ( node.nodeType == 1 && node.tagName.toLowerCase() == 'a' )
 308+ {
 309+ // Get the actual Link href.
 310+ var sHRef = node.getAttribute( '_fcksavedurl' );
 311+ if ( sHRef == null )
 312+ sHRef = node.getAttribute( 'href', 2 ) || '';
 313+ if ( sHRef.StartsWith( 'Category:' ) )
 314+ nodes.push(node);
 315+ }
 316+ node = FCKTools.GetNextNode( node, EditorDocument );
 317+ }
 318+
 319+ for ( var i = 0; i < nodes.length ; i++ )
 320+ EditorDocument.body.appendChild( nodes[i] );
 321+}
 322+
 323+function AddCategoryLink( cat )
 324+{
 325+ var sUri = 'Category:' + cat;
 326+ var sInnerHtml;
 327+
 328+ // If no link is selected, create a new one (it may result in more than one link creation - #220).
 329+ var aLinks = oEditor.FCK.CreateLink( sUri );
 330+
 331+ // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
 332+ var aHasSelection = (aLinks.length > 0);
 333+ if ( !aHasSelection )
 334+ {
 335+ sInnerHtml = sUri;
 336+
 337+ var oLinkPathRegEx = new RegExp( "//?([^?\"']+)([?].*)?$" );
 338+ var asLinkPath = oLinkPathRegEx.exec( sUri );
 339+ if ( asLinkPath != null )
 340+ sInnerHtml = asLinkPath[ 1 ]; // use matched path
 341+
 342+ // Create a new (empty) anchor.
 343+ aLinks = [ oEditor.FCK.InsertElement( 'a' ) ];
 344+ }
 345+
 346+ oEditor.FCKUndo.SaveUndoStep();
 347+
 348+ for ( var i = 0 ; i < aLinks.length ; i++ )
 349+ {
 350+ oLink = aLinks[ i ];
 351+
 352+ if ( aHasSelection )
 353+ sInnerHtml = oLink.innerHTML; // Save the innerHTML (IE changes it if it is like an URL).
 354+
 355+ oLink.href = sUri;
 356+ SetAttribute( oLink, '_fcksavedurl', sUri );
 357+
 358+ oLink.innerHTML = sInnerHtml; // Set (or restore) the innerHTML
 359+ }
 360+
 361+ return true;
 362+}
 363+
 364+//#### Called while the user types the URL.
 365+function OnUrlChange()
 366+{
 367+ var link = GetE( 'txtUrl' ).value.Trim();
 368+ ShowFilteredCategories( link );
 369+ return;
 370+}
 371+
 372+function SetSearchMessage( message )
 373+{
 374+ GetE( 'xWikiSearchStatus' ).innerHTML = message;
 375+}
 376+</script>
 377+</head>
 378+<body scroll="no" style="overflow: hidden">
 379+<div id="divInfo">
 380+<div id="divLinkTypeUrl"><span fcklang="wikiSelectedCategories">Selected categories</span><br />
 381+<select id="xCategories" size="10" style="width: 100%; height: 70px"
 382+ ondblclick="SelectCategory( this.value,-1);">
 383+</select><br />
 384+<span fcklang="wikiSearchCategory">Search category</span><br />
 385+<input id="txtUrl" style="width: 76%" type="text"
 386+ onkeyup="OnUrlChange();" /> <input id="btnNew" style="width: 22%"
 387+ type="button" onclick="AddNew();" value="Add new" fcklang="wikiAddNewCategory"/> <br />
 388+<span fcklang="wikiCategoryTree">Category tree</span> (<span fcklang="wikiLnkStartTyping" id="xWikiSearchStatus">start typing in the
 389+above field</span>)<br />
 390+<select id="xWikiResults" size="10" style="width: 100%; height: 300px"
 391+ onclick="ShowCategoriesSubTree( this.value );"
 392+ ondblclick="SelectCategory('', this.value );">
 393+</select></div>
 394+</div>
 395+</body>
 396+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/category.html
___________________________________________________________________
Added: svn:eol-style
1397 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/link.html
@@ -0,0 +1,253 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Link Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// oLink: The actual selected link in the editor.
 45+var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
 46+if ( oLink )
 47+ FCK.Selection.SelectNode( oLink ) ;
 48+
 49+var bLinkEqualsName = false ;
 50+
 51+window.onload = function()
 52+{
 53+ // Translate the dialog box texts.
 54+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 55+
 56+ // Load the selected link information (if any).
 57+ LoadSelection() ;
 58+
 59+ // Activate the "OK" button.
 60+ window.parent.SetOkButton( true ) ;
 61+ window.parent.SetAutoSize( true ) ;
 62+ GetE('txtUrl').focus();
 63+};
 64+
 65+function LoadSelection()
 66+{
 67+ if ( !oLink ) return ;
 68+
 69+ // Get the actual Link href.
 70+ var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
 71+ if ( sHRef == null )
 72+ sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
 73+
 74+ sHRef = FCKConfig.ProtectedSource.Revert(sHRef, 0); //#2509
 75+
 76+ if ( sHRef == oLink.innerHTML )
 77+ bLinkEqualsName = true ;
 78+
 79+ if ( sHRef.toLowerCase().StartsWith( 'rtecolon' ) )
 80+ sHRef = ":" + sHRef.substring(8) ;
 81+
 82+ GetE('txtUrl').value = sHRef ;
 83+}
 84+
 85+var searchTimer ;
 86+
 87+//#### Called while the user types the URL.
 88+function OnUrlChange()
 89+{
 90+ var link = GetE('txtUrl').value.Trim() ;
 91+
 92+ if ( searchTimer )
 93+ window.clearTimeout( searchTimer ) ;
 94+
 95+ if ( link.StartsWith( '#' ) )
 96+ {
 97+ SetSearchMessage( FCKLang.wikiLnkNoSearchAnchor || 'anchor link... no search for it' ) ;
 98+ return ;
 99+ }
 100+
 101+ if ( link.StartsWith( 'mailto:' ) )
 102+ {
 103+ SetSearchMessage( FCKLang.wikiLnkNoSearchMail || 'e-mail link... no search for it' ) ;
 104+ return ;
 105+ }
 106+
 107+ if( /^\w+:\/\//.test( link ) )
 108+ {
 109+ SetSearchMessage( FCKLang.wikiLnkNoSearchExt || 'external link... no search for it' ) ;
 110+ return ;
 111+ }
 112+
 113+ if ( link.length < 3 )
 114+ {
 115+ ClearSearch() ;
 116+
 117+ if ( link.length == 0 )
 118+ SetSearchMessage( FCKLang.wikiLnkStartTyping || 'start typing in the above field' ) ;
 119+ else
 120+ SetSearchMessage( FCKLang.wikiLnkTooShort || 'too short... type more' ) ;
 121+ return ;
 122+ }
 123+
 124+ SetSearchMessage( FCKLang.wikiLnkStopTyping || 'stop typing to search' ) ;
 125+ searchTimer = window.setTimeout( StartSearch, 500 ) ;
 126+}
 127+
 128+function StartSearch()
 129+{
 130+ var link = GetE('txtUrl').value.Trim() ;
 131+
 132+ if ( link.length < 3 )
 133+ return ;
 134+
 135+ SetSearchMessage( FCKLang.wikiLnkSearching || 'searching...' ) ;
 136+
 137+ // Make an Ajax search for the pages.
 138+ oEditor.window.parent.sajax_request_type = 'GET' ;
 139+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchArticleFCKeditor', [link], LoadSearchResults ) ;
 140+}
 141+
 142+function LoadSearchResults( result )
 143+{
 144+ var results = result.responseText.Trim().split( '\n' ) ;
 145+ var select = GetE( 'xWikiResults' ) ;
 146+
 147+ ClearSearch() ;
 148+
 149+ if ( results.length == 0 || ( results.length == 1 && results[0].length == 0 ) )
 150+ {
 151+ SetSearchMessage( FCKLang.wikiLnkSearchNothing || 'no articles found' ) ;
 152+ }
 153+ else
 154+ {
 155+ if ( results.length == 1 )
 156+ SetSearchMessage( FCKLang.wikiLnkSearch1Found || 'one article found' ) ;
 157+ else
 158+ SetSearchMessage( (FCKLang.wikiLnkSearchSeveral || '%1 articles found').replace( /%1/g, results.length ) ) ;
 159+
 160+ for ( var i = 0 ; i < results.length ; i++ )
 161+ FCKTools.AddSelectOption( select, results[i], results[i] ) ;
 162+ }
 163+}
 164+
 165+function ClearSearch()
 166+{
 167+ var select = GetE( 'xWikiResults' ) ;
 168+
 169+ while ( select.options.length > 0 )
 170+ select.remove( 0 )
 171+}
 172+
 173+function SetSearchMessage( message )
 174+{
 175+ GetE('xWikiSearchStatus').innerHTML = message ;
 176+}
 177+
 178+function SetUrl( url )
 179+{
 180+ GetE('txtUrl').value = url ;
 181+}
 182+
 183+//#### The OK button was hit.
 184+function Ok()
 185+{
 186+ var sUri = GetE('txtUrl').value ;
 187+ sUri = FCKConfig.ProtectedSource.Protect(sUri); //#2509
 188+ var realUri = sUri;
 189+ if (sUri.StartsWith( ':' ) )
 190+ sUri = sUri.replace(/:/, "rtecolon");
 191+ var sInnerHtml ;
 192+
 193+ // If no link is selected, create a new one (it may result in more than one link creation - #220).
 194+ var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri ) ;
 195+
 196+ // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
 197+ var noTitle = false;
 198+ var aHasSelection = ( aLinks.length > 0 ) ;
 199+ if ( !aHasSelection )
 200+ {
 201+ sInnerHtml = realUri;
 202+ noTitle = true;
 203+
 204+ var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
 205+ var asLinkPath = oLinkPathRegEx.exec( realUri ) ;
 206+ if (asLinkPath != null)
 207+ sInnerHtml = asLinkPath[1]; // use matched path
 208+
 209+ // Create a new (empty) anchor.
 210+ aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
 211+ }
 212+
 213+ oEditor.FCKUndo.SaveUndoStep() ;
 214+
 215+ for ( var i = 0 ; i < aLinks.length ; i++ )
 216+ {
 217+ oLink = aLinks[i] ;
 218+
 219+ if ( aHasSelection )
 220+ sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
 221+
 222+ oLink.href = sUri ;
 223+ SetAttribute( oLink, '_fcksavedurl', sUri ) ;
 224+
 225+ if ( bLinkEqualsName )
 226+ oLink.innerHTML = realUri ;
 227+ else
 228+ oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML
 229+
 230+ if ( noTitle )
 231+ SetAttribute( oLink, '_fcknotitle','true');
 232+ }
 233+
 234+ // Select the (first) link.
 235+ oEditor.FCKSelection.SelectNode( aLinks[0] );
 236+
 237+ return true ;
 238+}
 239+
 240+ </script>
 241+</head>
 242+<body scroll="no" style="overflow: hidden">
 243+ <div id="divInfo">
 244+ <div id="divLinkTypeUrl">
 245+ <span fcklang="wikiLnk">Link</span><br />
 246+ <input id="txtUrl" style="width: 100%" type="text" onkeyup="OnUrlChange();" />
 247+ <br />
 248+ <span fcklang="wikiLnkAutomatic">Automatic search results</span> (<span fcklang="wikiLnkStartTyping" id="xWikiSearchStatus">start typing in the above field</span>)<br />
 249+ <select id="xWikiResults" size="10" style="width: 100%; height:150px" onclick="SetUrl( this.value );">
 250+ </select>
 251+ </div>
 252+ </div>
 253+</body>
 254+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/link.html
___________________________________________________________________
Added: svn:eol-style
1255 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/source.html
@@ -0,0 +1,137 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Source Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// Get the selected flash embed (if available).
 45+var oFakeImage = FCK.Selection.GetSelectedElement() ;
 46+var oSource ;
 47+
 48+if ( oFakeImage )
 49+{
 50+ if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fck_mw_source') )
 51+ {
 52+ oSource = FCK.GetRealElement( oFakeImage ) ;
 53+ }
 54+ else
 55+ {
 56+ oFakeImage = null ;
 57+ }
 58+}
 59+
 60+window.onload = function()
 61+{
 62+ // Translate the dialog box texts.
 63+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 64+
 65+ // Load the selected link information (if any).
 66+ LoadSelection() ;
 67+
 68+ // Activate the "OK" button.
 69+ window.parent.SetOkButton( true ) ;
 70+ window.parent.SetAutoSize( true ) ;
 71+};
 72+
 73+function LoadSelection()
 74+{
 75+ if ( !oSource ) return ;
 76+
 77+ GetE('xSourceText').value = FCKTools.HTMLDecode( oSource.innerHTML ).replace(/fckLR/g,'\r\n').replace( /&quot;/g, '"' );
 78+ GetE('xSourceLang').value = oSource.getAttribute( 'lang' ) ;
 79+}
 80+
 81+//#### The OK button was hit.
 82+function Ok()
 83+{
 84+ var supportedLanguages = ',abap,actionscript,actionscript3,ada,apache,applescript,apt_sources,asm,asp,autoit,avisynth,bash,basic4gl,bf,blitzbasic,bnf,boo,c,c_mac,caddcl,cadlisp,cfdg,cfm,cil,cobol,cpp,cpp-qt,csharp,css,d,delphi,diff,div,dos,dot,eiffel,email,fortran,freebasic,genero,gettext,glsl,gml,gnuplot,groovy,haskell,hq9plus,html4strict,idl,ini,inno,intercal,io,java,java5,javascript,kixtart,klonec,klonecpp,latex,lisp,lolcode,lotusformulas,lotusscript,lscript,lua,m68k,make,matlab,mirc,mpasm,mxml,mysql,nsis,objc,ocaml,ocaml-brief,oobas,oracle11,oracle8,pascal,per,perl,php,php-brief,pic16,pixelbender,plsql,povray,powershell,progress,prolog,providex,python,qbasic,rails,reg,robots,ruby,sas,scala,scheme,scilab,sdlbasic,smalltalk,smarty,sql,tcl,teraterm,text,thinbasic,tsql,typoscript,vb,vbnet,verilog,vhdl,vim,visualfoxpro,visualprolog,whitespace,winbatch,xml,xorg_conf,xpp,z80,';
 85+
 86+ if ( !oSource )
 87+ {
 88+ oSource = FCK.EditorDocument.createElement( 'SPAN' ) ;
 89+ oSource.className = 'fck_mw_source' ;
 90+ }
 91+
 92+ var sourceData = FCKTools.HTMLEncode(GetE('xSourceText').value.Trim().replace(/(\r\n|\n)/g, 'fckLR')).replace( /"/g, '&quot;' ) ;
 93+ var lang = GetE('xSourceLang').value.Trim().toLowerCase();
 94+
 95+ if ( lang.length && supportedLanguages.indexOf( ',' + lang + ',' ) == -1) {
 96+ alert( (FCKLang.wikiUnsupportedLanguage || 'Unsupported language: %1').replace(/%1/, lang) );
 97+ return false;
 98+ }
 99+
 100+ oSource.innerHTML = sourceData ;
 101+ oSource.setAttribute( 'lang', lang ) ;
 102+
 103+ if ( !oFakeImage )
 104+ {
 105+ oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWSource', oSource ) ;
 106+ oFakeImage.setAttribute( '_fck_mw_source', 'true', 0 ) ;
 107+ oFakeImage = FCK.InsertElement( oFakeImage ) ;
 108+ }
 109+
 110+ return true ;
 111+}
 112+
 113+ </script>
 114+</head>
 115+<body style="overflow: hidden">
 116+ <div id="divInfo">
 117+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 118+ <tr>
 119+ <td>
 120+ <span fcklang="wikiSourceCode">Source Code</span>
 121+ </td>
 122+ </tr>
 123+ <tr>
 124+ <td height="100%">
 125+ <textarea wrap=OFF id="xSourceText" style="width: 100%; height: 100%; font-family: Monospace"
 126+ cols="50" rows="5"></textarea>
 127+ </td>
 128+ </tr>
 129+ <tr>
 130+ <td>
 131+ <span fcklang="wikiSourceLanguage">Source Language</span><br />
 132+ <input id="xSourceLang" type="text" size="15" />
 133+ </td>
 134+ </tr>
 135+ </table>
 136+ </div>
 137+</body>
 138+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/source.html
___________________________________________________________________
Added: svn:eol-style
1139 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/special.html
@@ -0,0 +1,237 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Special Tag Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// Get the selected flash embed (if available).
 45+var oFakeImage = FCK.Selection.GetSelectedElement() ;
 46+var oTemplateSpan ;
 47+var sFakeClass = 'FCK__MWSpecial';
 48+var sSelectedTag = "";
 49+
 50+if ( oFakeImage )
 51+{
 52+ if ( oFakeImage.tagName == 'IMG' )
 53+ {
 54+ if ( oFakeImage.getAttribute('_fck_mw_special') )
 55+ {
 56+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 57+ sFakeClass = 'FCK__MWSpecial';
 58+ }
 59+ else if ( oFakeImage.getAttribute('_fck_mw_html') )
 60+ {
 61+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 62+ sFakeClass = 'FCK__MWHtml';
 63+ }
 64+ else if ( oFakeImage.getAttribute('_fck_mw_nowiki') )
 65+ {
 66+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 67+ sFakeClass = 'FCK__MWNowiki';
 68+ }
 69+ else if ( oFakeImage.getAttribute('_fck_mw_noinclude') )
 70+ {
 71+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 72+ sFakeClass = 'FCK__MWNoinclude';
 73+ }
 74+ else if ( oFakeImage.getAttribute('_fck_mw_gallery') )
 75+ {
 76+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 77+ sFakeClass = 'FCK__MWGallery';
 78+ }
 79+ else if ( oFakeImage.getAttribute('_fck_mw_onlyinclude') )
 80+ {
 81+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 82+ sFakeClass = 'FCK__MWOnlyinclude';
 83+ }
 84+ else if ( oFakeImage.getAttribute('_fck_mw_includeonly') )
 85+ {
 86+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 87+ sFakeClass = 'FCK__MWIncludeonly';
 88+ }
 89+ else
 90+ oFakeImage = null ;
 91+ }
 92+ else
 93+ oFakeImage = null ;
 94+}
 95+
 96+window.onload = function()
 97+{
 98+ // Translate the dialog box texts.
 99+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 100+
 101+ // Load the selected link information (if any).
 102+ LoadSelection() ;
 103+ LoadDocumentation();
 104+
 105+ // Activate the "OK" button.
 106+ window.parent.SetOkButton( true ) ;
 107+ window.parent.SetAutoSize( true ) ;
 108+ GetE('xTemplateRaw').focus();
 109+};
 110+
 111+function LoadSearchResults( result )
 112+{
 113+ var results = result.responseText.Trim().split( '\n' ) ;
 114+ var select = GetE( 'xSelectTag' ) ;
 115+
 116+ if ( results.length > 0 && !( results.length == 1 && results[0].length == 0 ) )
 117+ {
 118+ for ( var i = 0 ; i < results.length ; i++ )
 119+ FCKTools.AddSelectOption( select, results[i], results[i] ) ;
 120+ }
 121+
 122+ if ( sSelectedTag ) {
 123+ select.value = sSelectedTag ;
 124+ }
 125+}
 126+
 127+
 128+function LoadSelection()
 129+{
 130+ // Make an Ajax search for the pages.
 131+ var empty = '';
 132+ oEditor.window.parent.sajax_request_type = 'GET' ;
 133+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchSpecialTagFCKeditor',[empty], LoadSearchResults ) ;
 134+
 135+ if ( !oTemplateSpan ) return ;
 136+
 137+ GetE('xTemplateRaw').value = FCKTools.HTMLDecode(oTemplateSpan.innerHTML).replace(/fckLR/g,'\r\n' ).replace( /&quot;/g, '"' ) ;
 138+ var tagName = oTemplateSpan.getAttribute('_fck_mw_tagname').toLowerCase();
 139+
 140+ sSelectedTag = tagName ;
 141+ GetE('xSelectTag').value = tagName;
 142+}
 143+
 144+function LoadDocumentation()
 145+{
 146+ var tagName = GetE('xSelectTag').value;
 147+ if (tagName == 'dpl')
 148+ {
 149+ if (!FCKLang.DplHelp) FCKLang.DplHelp = 'DPL stands for Dynamic Page List, and allows to generate a formatted list of pages based on selection criteria. See %link for details';
 150+ GetE('xDefinition').innerHTML = FCKLang.DplHelp.replace( /%link/g, '<a href="#" onclick="javascript:window.open(\'http://semeb.com/dpldemo/index.php?title=Dynamic_Page_List\')">manual</a>' ) ;
 151+ }
 152+ if (tagName == 'inputbox')
 153+ {
 154+ if (!FCKLang.inputboxHelp) FCKLang.inputboxHelp = 'Inputbox allows to create a form for users to create new pages. The new pages edit box can be pre-loaded with any template. See %link for details';
 155+ GetE('xDefinition').innerHTML = FCKLang.inputboxHelp.replace( /%link/g, '<a href="#" onclick="javascript:window.open(\'http://www.mediawiki.org/wiki/Extension:InputBox\')">manual</a>' ) ;
 156+ }
 157+}
 158+
 159+//#### The OK button was hit.
 160+function Ok()
 161+{
 162+ if ( !oTemplateSpan )
 163+ {
 164+ oTemplateSpan = FCK.EditorDocument.createElement( 'SPAN' ) ;
 165+ oTemplateSpan.className = 'fck_mw_special' ;
 166+ SetAttribute( oTemplateSpan, '_fck_mw_customtag', 'true' ) ;
 167+ }
 168+
 169+ var templateData = FCKTools.HTMLEncode(GetE('xTemplateRaw').value.Trim().replace(/(\r\n|\n)/g, 'fckLR' )).replace( /"/g, '&quot;' ) ;
 170+
 171+ oTemplateSpan.innerHTML = templateData ;
 172+ SetAttribute( oTemplateSpan, '_fck_mw_tagname', GetE('xSelectTag').value ) ;
 173+
 174+ switch (GetE('xSelectTag').value)
 175+ {
 176+ case 'noinclude':
 177+ sFakeClass = 'FCK__MWNoinclude';
 178+ break;
 179+ case 'gallery':
 180+ sFakeClass = 'FCK__MWGallery';
 181+ break;
 182+ case 'nowiki':
 183+ sFakeClass = 'FCK__MWNowiki';
 184+ break;
 185+ case 'includeonly':
 186+ sFakeClass = 'FCK__MWIncludeonly';
 187+ break;
 188+ case 'html':
 189+ sFakeClass = 'FCK__MWHtml';
 190+ break;
 191+ case 'onlyinclude':
 192+ sFakeClass = 'FCK__MWOnlyinclude';
 193+ break;
 194+ default:
 195+ sFakeClass = 'FCK__MWSpecial';
 196+ break;
 197+ }
 198+
 199+ if ( !oFakeImage )
 200+ {
 201+ oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( sFakeClass, oTemplateSpan ) ;
 202+ oFakeImage.setAttribute( '_fck_mw_special', 'true', 0 ) ;
 203+ oFakeImage = FCK.InsertElement( oFakeImage ) ;
 204+ }
 205+ else
 206+ oFakeImage.className = sFakeClass ;
 207+
 208+ return true ;
 209+}
 210+
 211+ </script>
 212+</head>
 213+<body style="overflow: hidden">
 214+ <div id="divInfo">
 215+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 216+ <tr>
 217+ <td>
 218+ <span fcklang="wikiSpTag">Current Special Tag</span>:
 219+ <select id="xSelectTag" onchange="LoadDocumentation()">
 220+ </select><br>
 221+ <i><span id="xDefinition"></span></i>
 222+ </td>
 223+ </tr>
 224+ <tr>
 225+ <td>
 226+ <hr>
 227+ <span fcklang="wikiSpParam">Special tag parameters</span>:
 228+ </tr>
 229+ <tr>
 230+ <td height="100%">
 231+ <textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
 232+ cols="50" rows="10" wrap="off"></textarea>
 233+ </td>
 234+ </tr>
 235+ </table>
 236+ </div>
 237+</body>
 238+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/special.html
___________________________________________________________________
Added: svn:eol-style
1239 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/image.html
@@ -0,0 +1,341 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Image dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Image Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// Get the selected image (if available).
 45+var oImage = FCK.Selection.GetSelectedElement() ;
 46+
 47+if ( oImage && oImage.tagName != 'IMG' )
 48+ oImage = null ;
 49+
 50+window.onload = function()
 51+{
 52+ // Translate the dialog box texts.
 53+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 54+
 55+ // Load the selected element information (if any).
 56+ LoadSelection() ;
 57+
 58+ // UpdateOriginal() ;
 59+
 60+ window.parent.SetAutoSize( true ) ;
 61+ window.parent.SetOkButton( true ) ;
 62+ GetE('txtUrl').focus();
 63+};
 64+
 65+function LoadSelection()
 66+{
 67+ if ( ! oImage ) return ;
 68+
 69+ var sUrl = GetAttribute( oImage, '_fcksavedurl', '' ) ;
 70+ if ( sUrl.length == 0 )
 71+ sUrl = GetAttribute( oImage, 'src', '' ) ;
 72+
 73+ GetE('txtUrl').value = GetAttribute( oImage, '_fck_mw_filename', '' ) ;
 74+ GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;
 75+ GetE('xType').value = GetAttribute( oImage, '_fck_mw_type', '' ) ;
 76+ GetE('cmbAlign').value = GetAttribute( oImage, '_fck_mw_location', '' ) ;
 77+
 78+ GetE('txtWidth').value = GetAttribute( oImage, '_fck_mw_width', '' ) ;
 79+ GetE('txtHeight').value = GetAttribute( oImage, '_fck_mw_height', '' ) ;
 80+
 81+ UpdatePreview();
 82+}
 83+
 84+//#### The OK button was hit.
 85+function Ok()
 86+{
 87+ if ( GetE('txtUrl').value.length == 0 )
 88+ {
 89+ GetE('txtUrl').focus() ;
 90+ return false ;
 91+ }
 92+
 93+ if ( oEditor.window.parent.FCKeditorAPI && oEditor.window.parent.FCKeditorAPI.Version.match( /^2\.5/ ) ) {
 94+ window.parent.document.getElementById( 'btnOk' ).disabled = true ;
 95+ window.parent.document.getElementById( 'btnCancel' ).disabled = true ;
 96+ }
 97+
 98+ var imgName = GetE('txtUrl').value ;
 99+ var imgCaption = GetE('txtAlt').value ;
 100+ var imgType = GetE('xType').value ;
 101+ var imgLocation = GetE('cmbAlign').value ;
 102+ var imgWidth = GetE('txtWidth').value ;
 103+ var imgHeight = GetE('txtHeight').value ;
 104+
 105+ var ajaxArg = imgName ;
 106+
 107+ if ( imgType.length > 0 )
 108+ ajaxArg += '|' + imgType ;
 109+
 110+ if ( imgLocation.length > 0 )
 111+ ajaxArg += '|' + imgLocation ;
 112+
 113+ if ( imgWidth.length > 0 )
 114+ {
 115+ ajaxArg += '|' + imgWidth ;
 116+
 117+ if ( imgHeight.length > 0 )
 118+ ajaxArg += 'x' + imgHeight ;
 119+
 120+ ajaxArg += 'px' ;
 121+ }
 122+
 123+ if ( imgCaption.length > 0 )
 124+ ajaxArg += '|' + imgCaption ;
 125+
 126+ oEditor.window.parent.sajax_request_type = 'GET' ;
 127+ oEditor.window.parent.sajax_do_call( 'wfSajaxGetImageUrl', [ajaxArg], UpdateImageFromAjax ) ;
 128+
 129+ return false ;
 130+}
 131+
 132+function UpdateImageFromAjax( response )
 133+{
 134+ var bHasImage = ( oImage != null ) ;
 135+
 136+ if ( !bHasImage )
 137+ oImage = FCK.CreateElement( 'IMG' ) ;
 138+ else
 139+ oEditor.FCKUndo.SaveUndoStep() ;
 140+
 141+ UpdateImage( oImage, response.responseText ) ;
 142+
 143+ // Call it using setTimeout to avoid a strange behavior in Firefox.
 144+ window.setTimeout( window.parent.Cancel, 0 ) ;
 145+}
 146+
 147+function UpdateImage( e, realUrl )
 148+{
 149+ var imgType = GetE('xType').value ;
 150+ var imgLocation = GetE('cmbAlign').value ;
 151+
 152+ SetAttribute( e, "_fck_mw_filename", GetE('txtUrl').value ) ;
 153+ SetAttribute( e, "alt", GetE('txtAlt').value ) ;
 154+ SetAttribute( e, "_fck_mw_type", imgType ) ;
 155+ SetAttribute( e, "_fck_mw_location", imgLocation ) ;
 156+ SetAttribute( e, "_fck_mw_width", GetE('txtWidth').value ) ;
 157+ SetAttribute( e, "_fck_mw_height", GetE('txtHeight').value ) ;
 158+
 159+ SetAttribute( e, "width" , GetE('txtWidth').value ) ;
 160+ SetAttribute( e, "height", GetE('txtHeight').value ) ;
 161+
 162+ if ( imgType == 'thumb' || imgType == 'frame' )
 163+ {
 164+ e.className = 'fck_mw_frame' ;
 165+
 166+ if ( imgLocation.length == 0 )
 167+ imgLocation = 'right' ;
 168+ }
 169+
 170+ if ( imgLocation.length > 0 )
 171+ e.className += ' fck_mw_' + imgLocation ;
 172+
 173+ if ( realUrl.length == 0 )
 174+ {
 175+ e.className += ' fck_mw_notfound' ;
 176+ realUrl = 'about:blank' ;
 177+ }
 178+
 179+ e.src = realUrl ;
 180+ SetAttribute( e, "_fcksavedurl", realUrl ) ;
 181+}
 182+
 183+var searchTimer ;
 184+
 185+//#### Called while the user types the URL.
 186+function OnUrlChange()
 187+{
 188+ var link = GetE('txtUrl').value.Trim() ;
 189+
 190+ if ( searchTimer )
 191+ window.clearTimeout( searchTimer ) ;
 192+
 193+ if ( link.length < 3 )
 194+ {
 195+ ClearSearch() ;
 196+
 197+ if ( link.length == 0 )
 198+ SetSearchMessage( FCKLang.wikiImgStartTyping || 'start typing in the above field' ) ;
 199+ else
 200+ SetSearchMessage( FCKLang.wikiImgTooShort || 'too short... type more' ) ;
 201+ return ;
 202+ }
 203+
 204+ SetSearchMessage( FCKLang.wikiImgStopTyping || 'stop typing to search' ) ;
 205+ searchTimer = window.setTimeout( StartSearch, 500 ) ;
 206+}
 207+
 208+function StartSearch()
 209+{
 210+ var link = GetE('txtUrl').value.Trim() ;
 211+
 212+ if ( link.length < 3 )
 213+ return ;
 214+
 215+ SetSearchMessage( FCKLang.wikiLnkSearching || 'searching...' ) ;
 216+
 217+ // Make an Ajax search for the pages.
 218+ oEditor.window.parent.sajax_request_type = 'GET' ;
 219+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchImageFCKeditor', [link], LoadSearchResults ) ;
 220+}
 221+
 222+function LoadSearchResults( result )
 223+{
 224+ var results = result.responseText.Trim().split( '\n' ) ;
 225+ var select = GetE( 'xWikiResults' ) ;
 226+
 227+ ClearSearch() ;
 228+
 229+ if ( results.length == 0 || ( results.length == 1 && results[0].length == 0 ) )
 230+ {
 231+ SetSearchMessage( FCKLang.wikiImgSearchNothing || 'no images found' ) ;
 232+ }
 233+ else
 234+ {
 235+ if ( results.length == 1 )
 236+ SetSearchMessage( FCKLang.wikiImgSearch1Found || 'one image found' ) ;
 237+ else
 238+ SetSearchMessage( (FCKLang.wikiImgSearchSeveral || '%1 images found').replace( /%1/g, results.length ) ) ;
 239+
 240+ for ( var i = 0 ; i < results.length ; i++ )
 241+ FCKTools.AddSelectOption( select, results[i], results[i] ) ;
 242+ }
 243+}
 244+
 245+
 246+function ClearSearch()
 247+{
 248+ var select = GetE( 'xWikiResults' ) ;
 249+
 250+ while ( select.options.length > 0 )
 251+ select.remove( 0 )
 252+}
 253+
 254+function SetSearchMessage( message )
 255+{
 256+ GetE('xWikiSearchStatus').innerHTML = message ;
 257+}
 258+
 259+function SetUrl( url )
 260+{
 261+ if ( url.length > 0 )
 262+ GetE('txtUrl').value = url ;
 263+}
 264+
 265+function UpdatePreviewFromAjax( response )
 266+{
 267+ var eImgPreview = window.document.getElementById('prevImg');
 268+ eImgPreview.src = response.responseText ;
 269+ SetAttribute(eImgPreview, "width" , '180px' ) ;
 270+ SetAttribute(eImgPreview, "height", '130px' ) ;
 271+ //UpdateImage( eImgPreview, response.responseText ) ;
 272+}
 273+
 274+function UpdatePreview()
 275+{
 276+ var ajaxArg = GetE('txtUrl').value + '|180x130px';
 277+ oEditor.window.parent.sajax_request_type = 'GET' ;
 278+ oEditor.window.parent.sajax_do_call( 'wfSajaxGetImageUrl', [ajaxArg], UpdatePreviewFromAjax ) ;
 279+}
 280+
 281+ </script>
 282+</head>
 283+<body scroll="no" style="overflow: hidden">
 284+ <div id="divInfo">
 285+ <table cellspacing="1" cellpadding="1" border="0" width="100%">
 286+ <tr valign="center">
 287+ <td>
 288+ <span fcklang="wikiImgFileName">Image file name</span><br />
 289+ <input id="txtUrl" style="width: 100%" type="text" onkeyup="OnUrlChange();" />
 290+ <br />
 291+ <span fcklang="wikiImgAutomatic">Automatic search results</span> <b>(<span fcklang="wikiImgStartTyping" id="xWikiSearchStatus">start typing in the above field</span>)</b><br />
 292+ <select id="xWikiResults" size="5" style="width: 100%; height: 70px" onclick="SetUrl( this.value );UpdatePreview();">
 293+ </select>
 294+ </td>
 295+ <td width="180px" height="130px"><div style="width:180; height:130; border:solid 1px black;" valign="center" align="center">
 296+ <img id="prevImg" width="180px" height="130px" alt="Preview"></div>
 297+ </td>
 298+ </tr>
 299+ <tr>
 300+ <td colspan="2">
 301+ <span fcklang="wikiImgCaption">Caption</span><br />
 302+ <input id="txtAlt" style="width: 100%" type="text"><br />
 303+ </td>
 304+ </tr>
 305+ <tr>
 306+ <td valign="top" colspan="2">
 307+ <table cellspacing="0" cellpadding="0" border="0">
 308+ <tr>
 309+ <td nowrap="nowrap">
 310+ <span fcklang="wikiImgType">Special Type</span><br />
 311+ <select id="xType">
 312+ <option value="" selected="selected"></option>
 313+ <option fcklang="wikiImgTypeThumb" value="thumb">Thumbnail</option>
 314+ <option fcklang="wikiImgTypeFrame" value="frame">Frame</option>
 315+ <option fcklang="wikiImgTypeBorder" value="border">Border</option>
 316+ </select>
 317+ </td>
 318+ <td style="padding-left:7px;">
 319+ <span fcklang="DlgImgAlign">Align</span><br />
 320+ <select id="cmbAlign" onchange="UpdatePreview();">
 321+ <option value="" selected></option>
 322+ <option fcklang="DlgImgAlignRight" value="right">Right</option>
 323+ <option fcklang="DlgImgAlignLeft" value="left">Left</option>
 324+ <option fcklang="wikiImgAlignCenter" value="center">Center</option>
 325+ </select>
 326+ </td>
 327+ <td style="padding-left:7px;">
 328+ <span fcklang="DlgImgWidth">Width</span><br />
 329+ <input type="text" size="3" id="txtWidth">
 330+ </td>
 331+ <td style="padding-left:7px;">
 332+ <span fcklang="DlgImgHeight">Height</span><br />
 333+ <input type="text" size="3" id="txtHeight">
 334+ </td>
 335+ </tr>
 336+ </table>
 337+ </td>
 338+ </tr>
 339+ </table>
 340+ </div>
 341+</body>
 342+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/image.html
___________________________________________________________________
Added: svn:eol-style
1343 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/math.html
@@ -0,0 +1,144 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Formula Editor</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+// Get the selected flash embed (if available).
 45+var oMathImage = FCK.Selection.GetSelectedElement() ;
 46+
 47+if ( oMathImage )
 48+{
 49+ if ( oMathImage.tagName != 'IMG' || !oMathImage.getAttribute('_fck_mw_math') )
 50+ oMathImage = null ;
 51+}
 52+
 53+window.onload = function()
 54+{
 55+ // Translate the dialog box texts.
 56+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 57+
 58+ // Load the selected link information (if any).
 59+ LoadSelection() ;
 60+
 61+ // Activate the "OK" button.
 62+ window.parent.SetOkButton( true ) ;
 63+ window.parent.SetAutoSize( true ) ;
 64+ GetE('xTemplateRaw').focus();
 65+};
 66+
 67+function LoadSelection()
 68+{
 69+ if ( !oMathImage ) return ;
 70+
 71+ GetE('xTemplateRaw').value = oMathImage.getAttribute( '_fck_mw_math' ) ;
 72+}
 73+
 74+//#### The OK button was hit.
 75+function Ok()
 76+{
 77+ var formula = GetE('xTemplateRaw').value.Trim() ;
 78+
 79+ if ( formula.length == 0 )
 80+ {
 81+ alert( FCKLang.wikiTeXEmpty || 'Please type the formula' ) ;
 82+ return false ;
 83+ }
 84+
 85+ if ( oEditor.window.parent.FCKeditorAPI && oEditor.window.parent.FCKeditorAPI.Version.match( /^2\.5/ ) ) {
 86+ window.parent.document.getElementById( 'btnOk' ).disabled = true ;
 87+ window.parent.document.getElementById( 'btnCancel' ).disabled = true ;
 88+ }
 89+
 90+ oEditor.window.parent.sajax_request_type = 'GET' ;
 91+ oEditor.window.parent.sajax_do_call( 'wfSajaxGetMathUrl', [formula], UpdateImageFromAjax ) ;
 92+
 93+ return false ;
 94+}
 95+
 96+function UpdateImageFromAjax( response )
 97+{
 98+ oEditor.FCKUndo.SaveUndoStep() ;
 99+
 100+ if ( !oMathImage )
 101+ {
 102+ oMathImage = FCK.CreateElement( 'IMG' ) ;
 103+ oMathImage.className = 'FCK__MWMath' ;
 104+ oMathImage.src = FCKConfig.PluginsPath + 'mediawiki/images/icon_math.gif' ;
 105+ }
 106+ else
 107+ {
 108+ if ( response.responseText )
 109+ {
 110+ oMathImage.src = response.responseText ;
 111+ SetAttribute( oMathImage, "_fcksavedurl", response.responseText ) ;
 112+ }
 113+ else
 114+ {
 115+ oMathImage.src = FCKConfig.PluginsPath + 'mediawiki/images/icon_math.gif' ;
 116+ }
 117+ }
 118+
 119+ SetAttribute( oMathImage, "_fck_mw_math", GetE('xTemplateRaw').value.Trim() ) ;
 120+ SetAttribute( oMathImage, "_fckfakelement", 'true' ) ;
 121+
 122+ // Call it using setTimeout to avoid a strange behavior in Firefox.
 123+ window.setTimeout( window.parent.Cancel, 0 ) ;
 124+}
 125+
 126+ </script>
 127+</head>
 128+<body style="overflow: hidden">
 129+ <div id="divInfo">
 130+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 131+ <tr>
 132+ <td>
 133+ <span fcklang="wikiTeX">Formula (TeX markup)</span>
 134+ </td>
 135+ </tr>
 136+ <tr>
 137+ <td height="100%">
 138+ <textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
 139+ cols="50" rows="10" wrap="off"></textarea>
 140+ </td>
 141+ </tr>
 142+ </table>
 143+ </div>
 144+</body>
 145+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/math.html
___________________________________________________________________
Added: svn:eol-style
1146 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/template.html
@@ -0,0 +1,193 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+-->
 25+<html>
 26+<head>
 27+ <title>Template Properties</title>
 28+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 29+ <meta name="robots" content="noindex, nofollow" />
 30+ <script type="text/javascript">
 31+
 32+var oEditor = window.parent.InnerDialogLoaded() ;
 33+var FCK = oEditor.FCK ;
 34+var FCKLang = oEditor.FCKLang ;
 35+var FCKConfig = oEditor.FCKConfig ;
 36+var FCKRegexLib = oEditor.FCKRegexLib ;
 37+var FCKTools = oEditor.FCKTools ;
 38+
 39+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 40+
 41+ </script>
 42+ <script type="text/javascript">
 43+
 44+//#### Dialog Tabs
 45+
 46+// Set the dialog tabs.
 47+window.parent.AddTab( 'Edit', FCKLang.wikiTabEdit || 'Edit' ) ;
 48+window.parent.AddTab( 'Manual', FCKLang.wikiTabManual || 'Manual' ) ;
 49+
 50+function OnDialogTabChange( tabCode )
 51+{
 52+ ShowE('divEdit' , ( tabCode == 'Edit' ) ) ;
 53+ ShowE('divManual' , ( tabCode == 'Manual' ) ) ;
 54+}
 55+
 56+// Get the selected flash embed (if available).
 57+var oFakeImage = FCK.Selection.GetSelectedElement() ;
 58+var oTemplateSpan ;
 59+
 60+if ( oFakeImage )
 61+{
 62+ if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fck_mw_template') )
 63+ oTemplateSpan = FCK.GetRealElement( oFakeImage ) ;
 64+ else
 65+ oFakeImage = null ;
 66+}
 67+
 68+window.onload = function()
 69+{
 70+ // Translate the dialog box texts.
 71+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 72+
 73+ // Load the selected link information (if any).
 74+ LoadSelection() ;
 75+
 76+ // Activate the "OK" button.
 77+ window.parent.SetOkButton( true ) ;
 78+ window.parent.SetAutoSize( true ) ;
 79+ GetE('xTemplateRaw').focus();
 80+};
 81+
 82+function LoadSearchResults( result )
 83+{
 84+ var results = result.responseText.Trim().split( '\n' ) ;
 85+ var select = GetE( 'xWikiResults' ) ;
 86+
 87+ if ( results.length > 0 && !( results.length == 1 && results[0].length == 0 ) )
 88+ {
 89+ for ( var i = 0 ; i < results.length ; i++ )
 90+ FCKTools.AddSelectOption( select, 'Template:' + results[i], results[i] ) ;
 91+ }
 92+}
 93+
 94+function LoadSelection()
 95+{
 96+ // Make an Ajax search for the pages.
 97+ var empty = '';
 98+ oEditor.window.parent.sajax_request_type = 'GET' ;
 99+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchTemplateFCKeditor',[empty], LoadSearchResults ) ;
 100+
 101+ if ( !oTemplateSpan ) return ;
 102+
 103+ var inputText = FCKTools.HTMLDecode(oTemplateSpan.innerHTML);
 104+ inputText = FCKConfig.ProtectedSource.Revert(inputText, 0); //#2509
 105+ if (inputText.length>0 && inputText.indexOf('{{#')<0 && inputText.indexOf('{{:')<0 )
 106+ {
 107+ var templateName = inputText.substring(2,inputText.indexOf('fckLR'));
 108+ if (inputText.indexOf('fckLR')<1)
 109+ templateName = inputText.substring(2,inputText.indexOf('|'));
 110+ if (inputText.indexOf('|')<1)
 111+ templateName = inputText.substring(2,inputText.indexOf('}}'));
 112+
 113+ SetUrl(templateName.charAt(0).toUpperCase() + templateName.substr(1));
 114+ }
 115+ GetE('xTemplateRaw').value = inputText.replace(/fckLR/g,'\r\n').replace( /&quot;/g, '"' );
 116+}
 117+
 118+function SetUrl(link)
 119+{
 120+ var urlTemplate = oEditor.window.parent.location.pathname + '?title=Template:' + link + '&printable=yes';
 121+ SetAttribute(GetE('xTemplateManual'),'src',urlTemplate);
 122+ GetE('xTemplateRaw').value = "{{" + link + "}}";
 123+}
 124+
 125+//#### The OK button was hit.
 126+function Ok()
 127+{
 128+ if ( !oTemplateSpan )
 129+ {
 130+ oTemplateSpan = FCK.EditorDocument.createElement( 'SPAN' ) ;
 131+ oTemplateSpan.className = 'fck_mw_template' ;
 132+ }
 133+
 134+ var protectedValue = FCKConfig.ProtectedSource.Protect(GetE('xTemplateRaw').value);
 135+ var templateData = FCKTools.HTMLEncode(protectedValue.toString().Trim().replace(/(\r\n|\n)/g, 'fckLR')).replace( /"/g, '&quot;' ) ;
 136+
 137+ if ( !( /^{{[\s\S]+}}$/.test( templateData ) ) )
 138+ {
 139+ alert( FCKLang.wikiTmplEmpty || 'Templates must start with {{ and end with }}. Please check it.' ) ;
 140+ return false ;
 141+ }
 142+
 143+ oTemplateSpan.innerHTML = templateData ;
 144+
 145+ if ( !oFakeImage )
 146+ {
 147+ oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWTemplate', oTemplateSpan ) ;
 148+ oFakeImage.setAttribute( '_fck_mw_template', 'true', 0 ) ;
 149+ oFakeImage = FCK.InsertElement( oFakeImage ) ;
 150+ }
 151+
 152+ //GetE('xTestSpan').innerHTML = GetE('xTemplateRaw').value.Trim().replace( /"/g, '&quot;' ).replace(/(\r\n|\n)/g, '___') ;
 153+ return true ;
 154+}
 155+
 156+ </script>
 157+</head>
 158+<body style="overflow: hidden">
 159+ <div id="divEdit">
 160+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 161+ <tr>
 162+ <td>
 163+ <span fcklang="wikiTmpl">Template raw definition (from {{ to }})</span><br />
 164+ </td>
 165+ </tr>
 166+ <tr>
 167+ <td height="100%">
 168+ <textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
 169+ cols="50" rows="10" wrap="off"></textarea>
 170+ </td>
 171+ </tr>
 172+ <tr>
 173+ <td>
 174+ <span id="xTestSpan" class="fck_mw_template"></span>
 175+ </td>
 176+ </tr>
 177+ </table>
 178+ </div>
 179+ <div id="divManual" style="display: none">
 180+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
 181+ <tr>
 182+ <select id="xWikiResults" style="width: 100%;" onchange="SetUrl( this.value );">
 183+ <option fcklang="wikiTmpsel" value="">&lt;Pick up a template manual here&gt;</option>
 184+ </select>
 185+ </tr>
 186+ <tr>
 187+ <td>
 188+ <iframe id="xTemplateManual" width="100%" scrolling="yes" height="100%" src="" style="margin:5px;padding:0px;"></iframe>
 189+ </td>
 190+ </tr>
 191+ </table>
 192+ </div>
 193+</body>
 194+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/template.html
___________________________________________________________________
Added: svn:eol-style
1195 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_html.gif
@@ -0,0 +1 @@
 2+GIF89aB��������,B�H����*\Ȱ�Ç�H1�Ą.> PQ dž����`Ʌ'��bJ/�Ĩ���8�����N�'�t�hQ�0�0�aI�&�&�I��F�FO>-JU�U�_n��χM�v\kP�D�pEƝK��]�;
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_html.gif
___________________________________________________________________
Added: svn:eol-style
13 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_special.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_special.gif
___________________________________________________________________
Added: svn:mime-type
24 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_template.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_template.gif
___________________________________________________________________
Added: svn:mime-type
35 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_ref.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_ref.gif
___________________________________________________________________
Added: svn:mime-type
46 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_signature.gif
@@ -0,0 +1,5 @@
 2+GIF89a�((())),,,---///777999;;;<<<AAADDDFFFGGGJJJLLLNNNOOOPPPQQQSSSTTTVVVWWWXXXZZZ\\\aaabbbccceeefffgggjjjlllmmmnnnooopppwww{{{|||~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!� l,������� +R !���,l�$<XBA� �hb%��H��C $"TSA�$N�`!��D6R|��� ��Dxł�<`q@��.@�Q���
 3+bn.)Q���Hs� +/I``�Gل[���� >zc���_V�02� �#($�a!�� +'e��BG.+6�as�E�KtԈ��B� \EȏC�d134 ;
\ No newline at end of file
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_math.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_math.gif
___________________________________________________________________
Added: svn:mime-type
14 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_noinclude.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_noinclude.gif
___________________________________________________________________
Added: svn:mime-type
25 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_special.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_special.gif
___________________________________________________________________
Added: svn:mime-type
36 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_references.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_references.gif
___________________________________________________________________
Added: svn:mime-type
47 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_source.gif
@@ -0,0 +1,4 @@
 2+GIF89a�Ha��f��e��i��j��n�⇜΁��w�䇠㈡�|�拧Ձ�惫牪熮舮膯靮΋�苳ꍳ鎳莳饱̔�闷ꔸ졵锹왻쨸餺ꥻ짿뮿�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�
 3+,��.���,��CFG��C��F?@�:82G1��GBDBB>93GA?�7 +$(BA=4�G0FC@:53/� �" <�@=86��%<G�A>=���EDAA� � *�FDDC�#+;
 4+)FF�b� ����8a��� �P�cčD<B"��š��Z;
\ No newline at end of file
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_includeonly.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_includeonly.gif
___________________________________________________________________
Added: svn:mime-type
15 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_onlyinclude.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_onlyinclude.gif
___________________________________________________________________
Added: svn:mime-type
26 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_math.gif
@@ -0,0 +1,4 @@
 2+GIF89aB��������,B\�������Ԁ��m`�h�}Px�TI�&�
 3+��
 4+�䡞����l.��@�����Ȕ!��i4R{¢Ji�Ksi���:���R$��8��ϛ
 5+;
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_math.gif
___________________________________________________________________
Added: svn:eol-style
16 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_gallery.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_gallery.gif
___________________________________________________________________
Added: svn:mime-type
27 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_nowiki.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_nowiki.gif
___________________________________________________________________
Added: svn:mime-type
38 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_source.gif
@@ -0,0 +1,2 @@
 2+GIF89a;�����,;�H����*\Ȱ�Ç@��PbB)jD��`G�B�H��@�G
 3+TI�I�)�\�2$M6i�Ĺ�D�)Y�X�(ёE��4Z�#РJ�����ș3>e*)ӥU�� �*X�5�~]�էnj<{b��jНvn�۲/ܾ� n;
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_source.gif
___________________________________________________________________
Added: svn:eol-style
14 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_template.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_template.gif
___________________________________________________________________
Added: svn:mime-type
25 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_ref.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_ref.gif
___________________________________________________________________
Added: svn:mime-type
36 + image/gif
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_signature.gif
@@ -0,0 +1,2 @@
 2+GIF89aB��������,B�H����*\�p`��#B��D�/RL`�E�5z$ؑ`�����2�J�/3�����$Gʄɳ�N�)�
 3+j�@���4�t�ҠN�z��R�?�Nm�*V�9��,�Tk׳f�D�4-סe�zm�.L�!��}��%U�U^=h����$6q,�ǐ#K�;
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/icon_signature.gif
___________________________________________________________________
Added: svn:eol-style
14 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_category.gif
@@ -0,0 +1,2 @@
 2+GIF89a��������!�,0��y�ʱ����A46gU���@Ng�X
 3+������Gˇ��VL�MB���X;
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/images/tb_icon_category.gif
___________________________________________________________________
Added: svn:eol-style
14 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js
@@ -0,0 +1,1073 @@
 2+/*
 3+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 4+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 5+ *
 6+ * == BEGIN LICENSE ==
 7+ *
 8+ * Licensed under the terms of any of the following licenses at your
 9+ * choice:
 10+ *
 11+ * - GNU General Public License Version 2 or later (the "GPL")
 12+ * http://www.gnu.org/licenses/gpl.html
 13+ *
 14+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 15+ * http://www.gnu.org/licenses/lgpl.html
 16+ *
 17+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 18+ * http://www.mozilla.org/MPL/MPL-1.1.html
 19+ *
 20+ * == END LICENSE ==
 21+ *
 22+ * Main MediaWiki integration plugin.
 23+ *
 24+ * Wikitext syntax reference:
 25+ * http://meta.wikimedia.org/wiki/Help:Wikitext_examples
 26+ * http://meta.wikimedia.org/wiki/Help:Advanced_editing
 27+ *
 28+ * MediaWiki Sandbox:
 29+ * http://www.mediawiki.org/wiki/Sandbox
 30+ */
 31+
 32+// Rename the "Source" buttom to "Wikitext".
 33+FCKToolbarItems.RegisterItem( 'Source', new FCKToolbarButton( 'Source', 'Wikitext', null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) );
 34+
 35+// Register our toolbar buttons.
 36+var tbButton = new FCKToolbarButton( 'MW_Template', 'Template', FCKLang.wikiBtnTemplate || 'Insert/Edit Template' );
 37+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_template.gif';
 38+FCKToolbarItems.RegisterItem( 'MW_Template', tbButton );
 39+
 40+// Ref button
 41+tbButton = new FCKToolbarButton( 'MW_Ref', 'Ref', FCKLang.wikiBtnReference || 'Insert/Edit Reference' );
 42+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_ref.gif';
 43+FCKToolbarItems.RegisterItem( 'MW_Ref', tbButton );
 44+if ( !FCKConfig.showreferences ) { // hack to disable MW_Ref button
 45+ tbButton.Create = function(){ return 0; }
 46+ tbButton.Disable = function(){ return 0; }
 47+ tbButton.RefreshState = function(){ return 0; }
 48+}
 49+
 50+// References button
 51+var FCKReferences = function(){};
 52+FCKReferences.prototype.GetState = function(){ return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) };
 53+FCKCommands.RegisterCommand( 'MW_References', new FCKReferences() );
 54+tbButton = new FCKToolbarButton( 'MW_References', 'References', FCKLang.wikiBtnReferences || 'Insert <references /> tag', FCK_TOOLBARITEM_ICONTEXT,true, true, 1 );
 55+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_ref.gif';
 56+if ( !FCKConfig.showreferences ) { // hack to disable MW_References button
 57+ tbButton.Create = function(){ return 0; }
 58+ tbButton.Disable = function(){ return 0; }
 59+ tbButton.RefreshState = function(){ return 0; }
 60+}
 61+
 62+FCKReferences.prototype.Execute = function(){
 63+ if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
 64+ return;
 65+
 66+ FCKUndo.SaveUndoStep();
 67+
 68+ var e = FCK.EditorDocument.createElement( 'span' );
 69+ e.setAttribute( '_fck_mw_customtag', 'true' );
 70+ e.setAttribute( '_fck_mw_tagname', 'references' );
 71+ e.className = 'fck_mw_references';
 72+
 73+ oFakeImage = FCK.InsertElement( FCKDocumentProcessor_CreateFakeImage( 'FCK__MWReferences', e ) );
 74+}
 75+FCKToolbarItems.RegisterItem( 'MW_References', tbButton );
 76+
 77+// Signature button
 78+var FCKSignature = function(){};
 79+FCKSignature.prototype.GetState = function(){ return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) };
 80+FCKCommands.RegisterCommand( 'MW_Signature', new FCKSignature() );
 81+tbButton = new FCKToolbarButton( 'MW_Signature', 'Signature', FCKLang.wikiBtnSignature || 'Insert signature', FCK_TOOLBARITEM_ONLYICON,true, true, 1 );
 82+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_signature.gif';
 83+
 84+FCKSignature.prototype.Execute = function(){
 85+ if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
 86+ return;
 87+
 88+ FCKUndo.SaveUndoStep();
 89+ var e = FCK.EditorDocument.createElement( 'span' );
 90+ e.className = 'fck_mw_signature';
 91+
 92+ oFakeImage = FCK.InsertElement( FCKDocumentProcessor_CreateFakeImage( 'FCK__MWSignature', e ) );
 93+}
 94+FCKToolbarItems.RegisterItem( 'MW_Signature', tbButton );
 95+
 96+tbButton = new FCKToolbarButton( 'MW_Math', 'Formula', FCKLang.wikiBtnFormula || 'Insert/Edit Formula' );
 97+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_math.gif';
 98+FCKToolbarItems.RegisterItem( 'MW_Math', tbButton );
 99+
 100+tbButton = new FCKToolbarButton( 'MW_Source', 'Source', FCKLang.wikiBtnSourceCode || 'Insert/Edit Source Code' );
 101+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_source.gif';
 102+FCKToolbarItems.RegisterItem( 'MW_Source', tbButton );
 103+if ( !FCKConfig.showsource ) { // hack to disable MW_Source button
 104+ tbButton.Create = function(){ return 0; }
 105+ tbButton.Disable = function(){ return 0; }
 106+ tbButton.RefreshState = function(){ return 0; }
 107+}
 108+
 109+tbButton = new FCKToolbarButton( 'MW_Special', 'Special Tag', FCKLang.wikiBtnSpecial || 'Insert/Edit Special Tag' );
 110+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_special.gif';
 111+FCKToolbarItems.RegisterItem( 'MW_Special', tbButton );
 112+
 113+tbButton = new FCKToolbarButton( 'MW_Category', 'Categories', FCKLang.wikiBtnCategories || 'Insert/Edit categories' );
 114+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_category.gif';
 115+FCKToolbarItems.RegisterItem( 'MW_Category', tbButton );
 116+
 117+// Override some dialogs.
 118+FCKCommands.RegisterCommand( 'MW_Template', new FCKDialogCommand( 'MW_Template', ( FCKLang.wikiCmdTemplate || 'Template Properties' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/template.html', 400, 330 ) );
 119+FCKCommands.RegisterCommand( 'MW_Ref', new FCKDialogCommand( 'MW_Ref', ( FCKLang.wikiCmdReference || 'Reference Properties' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/ref.html', 400, 250 ) );
 120+FCKCommands.RegisterCommand( 'MW_Math', new FCKDialogCommand( 'MW_Math', ( FCKLang.wikiCmdFormula || 'Formula' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/math.html', 400, 300 ) );
 121+FCKCommands.RegisterCommand( 'MW_Special', new FCKDialogCommand( 'MW_Special', ( FCKLang.wikiCmdSpecial || 'Special Tag Properties' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/special.html', 400, 330 ) );
 122+FCKCommands.RegisterCommand( 'MW_Source', new FCKDialogCommand( 'MW_Source', ( FCKLang.wikiCmdSourceCode || 'Source Code Properties' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/source.html', 720, 380 ) );
 123+FCKCommands.RegisterCommand( 'Link', new FCKDialogCommand( 'Link', FCKLang.DlgLnkWindowTitle, FCKConfig.PluginsPath + 'mediawiki/dialogs/link.html', 400, 250 ) );
 124+FCKCommands.RegisterCommand( 'MW_Category', new FCKDialogCommand( 'MW_Category', ( FCKLang.wikiCmdCategories || 'Categories' ), FCKConfig.PluginsPath + 'mediawiki/dialogs/category.html', 400, 500 ) );
 125+FCKCommands.RegisterCommand( 'Image', new FCKDialogCommand( 'Image', FCKLang.DlgImgTitle, FCKConfig.PluginsPath + 'mediawiki/dialogs/image.html', 450, 300 ) );
 126+
 127+FCKToolbarItems.OldGetItem = FCKToolbarItems.GetItem;
 128+
 129+FCKToolbarItems.GetItem = function( itemName ){
 130+ var oItem = FCKToolbarItems.LoadedItems[ itemName ];
 131+
 132+ if ( oItem )
 133+ return oItem;
 134+
 135+ switch ( itemName ){
 136+ case 'Bold':
 137+ oItem = new FCKToolbarButton( 'Bold', FCKLang.Bold, null, null, true, true, 20 );
 138+ break;
 139+ case 'Italic':
 140+ oItem = new FCKToolbarButton( 'Italic', FCKLang.Italic, null, null, true, true, 21 );
 141+ break;
 142+ case 'Underline':
 143+ oItem = new FCKToolbarButton( 'Underline', FCKLang.Underline, null, null, true, true, 22 );
 144+ break;
 145+ case 'StrikeThrough':
 146+ oItem = new FCKToolbarButton( 'StrikeThrough', FCKLang.StrikeThrough, null, null, true, true, 23 );
 147+ break;
 148+ case 'Link':
 149+ oItem = new FCKToolbarButton( 'Link', FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, true, true, 34 );
 150+ break;
 151+
 152+ default:
 153+ return FCKToolbarItems.OldGetItem( itemName );
 154+ }
 155+
 156+ FCKToolbarItems.LoadedItems[ itemName ] = oItem;
 157+
 158+ return oItem;
 159+}
 160+
 161+FCKToolbarButton.prototype.Click = function(){
 162+ var oToolbarButton = this._ToolbarButton || this;
 163+
 164+ // for some buttons, do something else instead...
 165+ var CMode = false;
 166+ if ( oToolbarButton.SourceView && ( FCK_EDITMODE_SOURCE == FCK.EditMode ) ){
 167+ if ( !window.parent.popup )
 168+ var oDoc = window.parent;
 169+ else
 170+ var oDoc = window.parent.popup;
 171+
 172+ switch( oToolbarButton.CommandName ){
 173+ case 'Bold':
 174+ oDoc.FCKeditorInsertTags( '\'\'\'', '\'\'\'', 'Bold text', document );
 175+ CMode = true;
 176+ break;
 177+ case 'Italic':
 178+ oDoc.FCKeditorInsertTags( '\'\'', '\'\'', 'Italic text', document );
 179+ CMode = true;
 180+ break;
 181+ case 'Underline':
 182+ oDoc.FCKeditorInsertTags( '<u>', '</u>', 'Underlined text', document );
 183+ CMode = true;
 184+ break;
 185+ case 'StrikeThrough':
 186+ oDoc.FCKeditorInsertTags( '<strike>', '</strike>', 'Strikethrough text', document );
 187+ CMode = true;
 188+ break;
 189+ case 'Link':
 190+ oDoc.FCKeditorInsertTags ('[[', ']]', 'Internal link', document );
 191+ CMode = true;
 192+ break;
 193+ }
 194+ }
 195+
 196+ if ( !CMode )
 197+ FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute();
 198+}
 199+
 200+// MediaWiki Wikitext Data Processor implementation.
 201+FCK.DataProcessor = {
 202+ _inPre : false,
 203+ _inLSpace : false,
 204+
 205+ /*
 206+ * Returns a string representing the HTML format of "data". The returned
 207+ * value will be loaded in the editor.
 208+ * The HTML must be from <html> to </html>, eventually including
 209+ * the DOCTYPE.
 210+ * @param {String} data The data to be converted in the
 211+ * DataProcessor specific format.
 212+ */
 213+ ConvertToHtml : function( data ){
 214+ // Call the original code.
 215+ return FCKDataProcessor.prototype.ConvertToHtml.call( this, data );
 216+ },
 217+
 218+ /*
 219+ * Converts a DOM (sub-)tree to a string in the data format.
 220+ * @param {Object} rootNode The node that contains the DOM tree to be
 221+ * converted to the data format.
 222+ * @param {Boolean} excludeRoot Indicates that the root node must not
 223+ * be included in the conversion, only its children.
 224+ * @param {Boolean} format Indicates that the data must be formatted
 225+ * for human reading. Not all Data Processors may provide it.
 226+ */
 227+ ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format ){
 228+ // rootNode is <body>.
 229+
 230+ // Normalize the document for text node processing (except IE - #1586).
 231+ if ( !FCKBrowserInfo.IsIE )
 232+ rootNode.normalize();
 233+
 234+ var stringBuilder = new Array();
 235+ this._AppendNode( rootNode, stringBuilder, '' );
 236+ return stringBuilder.join( '' ).RTrim().replace(/^\n*/, "");
 237+ },
 238+
 239+ /*
 240+ * Makes any necessary changes to a piece of HTML for insertion in the
 241+ * editor selection position.
 242+ * @param {String} html The HTML to be fixed.
 243+ */
 244+ FixHtml : function( html ){
 245+ return html;
 246+ },
 247+
 248+ // Collection of element definitions:
 249+ // 0 : Prefix
 250+ // 1 : Suffix
 251+ // 2 : Ignore children
 252+ _BasicElements : {
 253+ body : [ ],
 254+ b : [ "'''", "'''" ],
 255+ strong : [ "'''", "'''" ],
 256+ i : [ "''", "''" ],
 257+ em : [ "''", "''" ],
 258+ p : [ '\n', '\n' ],
 259+ h1 : [ '\n= ', ' =\n' ],
 260+ h2 : [ '\n== ', ' ==\n' ],
 261+ h3 : [ '\n=== ', ' ===\n' ],
 262+ h4 : [ '\n==== ', ' ====\n' ],
 263+ h5 : [ '\n===== ', ' =====\n' ],
 264+ h6 : [ '\n====== ', ' ======\n' ],
 265+ br : [ '<br>', null, true ],
 266+ hr : [ '\n----\n', null, true ]
 267+ } ,
 268+
 269+ // This function is based on FCKXHtml._AppendNode.
 270+ _AppendNode : function( htmlNode, stringBuilder, prefix ){
 271+ if ( !htmlNode )
 272+ return;
 273+
 274+ switch ( htmlNode.nodeType ){
 275+ // Element Node.
 276+ case 1 :
 277+
 278+ // Here we found an element that is not the real element, but a
 279+ // fake one (like the Flash placeholder image), so we must get the real one.
 280+ if ( htmlNode.getAttribute('_fckfakelement') && !htmlNode.getAttribute( '_fck_mw_math' ) )
 281+ return this._AppendNode( FCK.GetRealElement( htmlNode ), stringBuilder );
 282+
 283+ // Mozilla insert custom nodes in the DOM.
 284+ if ( FCKBrowserInfo.IsGecko && htmlNode.hasAttribute( '_moz_editor_bogus_node' ) )
 285+ return;
 286+
 287+ // This is for elements that are instrumental to FCKeditor and
 288+ // must be removed from the final HTML.
 289+ if ( htmlNode.getAttribute( '_fcktemp' ) )
 290+ return;
 291+
 292+ // Get the element name.
 293+ var sNodeName = htmlNode.tagName.toLowerCase();
 294+
 295+ if ( FCKBrowserInfo.IsIE ){
 296+ // IE doens't include the scope name in the nodeName. So, add the namespace.
 297+ if ( htmlNode.scopeName && htmlNode.scopeName != 'HTML' && htmlNode.scopeName != 'FCK' )
 298+ sNodeName = htmlNode.scopeName.toLowerCase() + ':' + sNodeName;
 299+ } else {
 300+ if ( sNodeName.StartsWith( 'fck:' ) )
 301+ sNodeName = sNodeName.Remove( 0, 4 );
 302+ }
 303+
 304+ // Check if the node name is valid, otherwise ignore this tag.
 305+ // If the nodeName starts with a slash, it is a orphan closing tag.
 306+ // On some strange cases, the nodeName is empty, even if the node exists.
 307+ if ( !FCKRegexLib.ElementName.test( sNodeName ) )
 308+ return;
 309+
 310+ if ( sNodeName == 'br' && ( this._inPre || this._inLSpace ) ){
 311+ stringBuilder.push( "\n" );
 312+ if ( this._inLSpace )
 313+ stringBuilder.push( " " );
 314+ return;
 315+ }
 316+
 317+ // Remove the <br> if it is a bogus node.
 318+ if ( sNodeName == 'br' && htmlNode.getAttribute( 'type', 2 ) == '_moz' )
 319+ return;
 320+
 321+ // The already processed nodes must be marked to avoid then to be duplicated (bad formatted HTML).
 322+ // So here, the "mark" is checked... if the element is Ok, then mark it.
 323+ if ( htmlNode._fckxhtmljob && htmlNode._fckxhtmljob == FCKXHtml.CurrentJobNum )
 324+ return;
 325+
 326+ var basicElement = this._BasicElements[ sNodeName ];
 327+ if ( basicElement ){
 328+ var basic0 = basicElement[0];
 329+ var basic1 = basicElement[1];
 330+
 331+ if ( ( basicElement[0] == "''" || basicElement[0] == "'''" ) && stringBuilder.length > 2 ){
 332+ var pr1 = stringBuilder[stringBuilder.length-1];
 333+ var pr2 = stringBuilder[stringBuilder.length-2];
 334+
 335+ if ( pr1 + pr2 == "'''''") {
 336+ if ( basicElement[0] == "''" ){
 337+ basic0 = '<i>';
 338+ basic1 = '</i>';
 339+ }
 340+ if ( basicElement[0] == "'''" ){
 341+ basic0 = '<b>';
 342+ basic1 = '</b>';
 343+ }
 344+ }
 345+ }
 346+
 347+ if ( basic0 )
 348+ stringBuilder.push( basic0 );
 349+
 350+ var len = stringBuilder.length;
 351+
 352+ if ( !basicElement[2] ){
 353+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 354+ // only empty element inside, remove it to avoid quotes
 355+ if ( ( stringBuilder.length == len || ( stringBuilder.length == len + 1 && !stringBuilder[len].length ) )
 356+ && basicElement[0] && basicElement[0].charAt(0) == "'" ){
 357+ stringBuilder.pop();
 358+ stringBuilder.pop();
 359+ return;
 360+ }
 361+ }
 362+
 363+ if ( basic1 )
 364+ stringBuilder.push( basic1 );
 365+ } else {
 366+ switch ( sNodeName ){
 367+ case 'ol' :
 368+ case 'ul' :
 369+ var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dt', 'dd' );
 370+
 371+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 372+
 373+ if ( isFirstLevel && stringBuilder[ stringBuilder.length - 1 ] != "\n" ) {
 374+ stringBuilder.push( '\n' );
 375+ }
 376+
 377+ break;
 378+
 379+ case 'li' :
 380+
 381+ if( stringBuilder.length > 1 ){
 382+ var sLastStr = stringBuilder[ stringBuilder.length - 1 ];
 383+ if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*" )
 384+ stringBuilder.push( '\n' + prefix );
 385+ }
 386+
 387+ var parent = htmlNode.parentNode;
 388+ var listType = "#";
 389+
 390+ while ( parent ){
 391+ if ( parent.nodeName.toLowerCase() == 'ul' ){
 392+ listType = "*";
 393+ break;
 394+ } else if ( parent.nodeName.toLowerCase() == 'ol' ){
 395+ listType = "#";
 396+ break;
 397+ }
 398+ else if ( parent.nodeName.toLowerCase() != 'li' )
 399+ break;
 400+
 401+ parent = parent.parentNode;
 402+ }
 403+
 404+ stringBuilder.push( listType );
 405+ this._AppendChildNodes( htmlNode, stringBuilder, prefix + listType );
 406+
 407+ break;
 408+
 409+ case 'a' :
 410+
 411+ var pipeline = true;
 412+ // Get the actual Link href.
 413+ var href = htmlNode.getAttribute( '_fcksavedurl' );
 414+ var hrefType = htmlNode.getAttribute( '_fck_mw_type' ) || '';
 415+
 416+ if ( href == null )
 417+ href = htmlNode.getAttribute( 'href' , 2 ) || '';
 418+
 419+ var isWikiUrl = true;
 420+
 421+ if ( hrefType == "media" )
 422+ stringBuilder.push( '[[Media:' );
 423+ else if ( htmlNode.className == "extiw" ){
 424+ stringBuilder.push( '[[' );
 425+ var isWikiUrl = true;
 426+ } else {
 427+ var isWikiUrl = !( href.StartsWith( 'mailto:' ) || /^\w+:\/\//.test( href ) );
 428+ stringBuilder.push( isWikiUrl ? '[[' : '[' );
 429+ }
 430+ // #2223
 431+ if( htmlNode.getAttribute( '_fcknotitle' ) && htmlNode.getAttribute( '_fcknotitle' ) == "true" ){
 432+ var testHref = FCKConfig.ProtectedSource.Revert( href, 0 );
 433+ var testInner = FCKConfig.ProtectedSource.Revert( htmlNode.innerHTML, 0 );
 434+ if ( href.toLowerCase().StartsWith( 'category:' ) )
 435+ testInner = 'Category:' + testInner;
 436+ if ( testHref.toLowerCase().StartsWith( 'rtecolon' ) )
 437+ testHref = testHref.replace( /rtecolon/, ":" );
 438+ testInner = testInner.replace( /&amp;/, "&" );
 439+ if ( testInner == testHref )
 440+ pipeline = false;
 441+ }
 442+ if( href.toLowerCase().StartsWith( 'rtecolon' ) ){ // change 'rtecolon=' => ':' in links
 443+ stringBuilder.push(':');
 444+ href = href.substring(8);
 445+ }
 446+ stringBuilder.push( href );
 447+ if ( pipeline && htmlNode.innerHTML != '[n]' && ( !isWikiUrl || href != htmlNode.innerHTML || !href.toLowerCase().StartsWith( "category:" ) ) ){
 448+ stringBuilder.push( isWikiUrl? '|' : ' ' );
 449+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 450+ }
 451+ stringBuilder.push( isWikiUrl ? ']]' : ']' );
 452+
 453+ break;
 454+
 455+ case 'dl' :
 456+
 457+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 458+ var isFirstLevel = !htmlNode.parentNode.nodeName.IEquals( 'ul', 'ol', 'li', 'dl', 'dd', 'dt' );
 459+ if ( isFirstLevel && stringBuilder[ stringBuilder.length - 1 ] != "\n" )
 460+ stringBuilder.push( '\n' );
 461+
 462+ break;
 463+
 464+ case 'dt' :
 465+
 466+ if( stringBuilder.length > 1 ){
 467+ var sLastStr = stringBuilder[ stringBuilder.length - 1 ];
 468+ if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*" )
 469+ stringBuilder.push( '\n' + prefix );
 470+ }
 471+ stringBuilder.push( ';' );
 472+ this._AppendChildNodes( htmlNode, stringBuilder, prefix + ";" );
 473+
 474+ break;
 475+
 476+ case 'dd' :
 477+
 478+ if( stringBuilder.length > 1 ){
 479+ var sLastStr = stringBuilder[ stringBuilder.length - 1 ];
 480+ if ( sLastStr != ";" && sLastStr != ":" && sLastStr != "#" && sLastStr != "*" )
 481+ stringBuilder.push( '\n' + prefix );
 482+ }
 483+ stringBuilder.push( ':' );
 484+ this._AppendChildNodes( htmlNode, stringBuilder, prefix + ":" );
 485+
 486+ break;
 487+
 488+ case 'table' :
 489+
 490+ var attribs = this._GetAttributesStr( htmlNode );
 491+
 492+ stringBuilder.push( '\n{|' );
 493+ if ( attribs.length > 0 )
 494+ stringBuilder.push( attribs );
 495+ stringBuilder.push( '\n' );
 496+
 497+ if ( htmlNode.caption && htmlNode.caption.innerHTML.length > 0 ){
 498+ stringBuilder.push( '|+ ' );
 499+ this._AppendChildNodes( htmlNode.caption, stringBuilder, prefix );
 500+ stringBuilder.push( '\n' );
 501+ }
 502+
 503+ for ( var r = 0; r < htmlNode.rows.length; r++ ){
 504+ attribs = this._GetAttributesStr( htmlNode.rows[r] );
 505+
 506+ stringBuilder.push( '|-' );
 507+ if ( attribs.length > 0 )
 508+ stringBuilder.push( attribs );
 509+ stringBuilder.push( '\n' );
 510+
 511+ for ( var c = 0; c < htmlNode.rows[r].cells.length; c++ ){
 512+ attribs = this._GetAttributesStr( htmlNode.rows[r].cells[c] );
 513+
 514+ if ( htmlNode.rows[r].cells[c].tagName.toLowerCase() == "th" )
 515+ stringBuilder.push( '!' );
 516+ else
 517+ stringBuilder.push( '|' );
 518+
 519+ if ( attribs.length > 0 )
 520+ stringBuilder.push( attribs + ' |' );
 521+
 522+ stringBuilder.push( ' ' );
 523+
 524+ this._IsInsideCell = true;
 525+ this._AppendChildNodes( htmlNode.rows[r].cells[c], stringBuilder, prefix );
 526+ this._IsInsideCell = false;
 527+
 528+ stringBuilder.push( '\n' );
 529+ }
 530+ }
 531+
 532+ stringBuilder.push( '|}\n' );
 533+
 534+ break;
 535+
 536+ case 'img' :
 537+
 538+ var formula = htmlNode.getAttribute( '_fck_mw_math' );
 539+
 540+ if ( formula && formula.length > 0 ){
 541+ stringBuilder.push( '<math>' );
 542+ stringBuilder.push( formula );
 543+ stringBuilder.push( '</math>' );
 544+ return;
 545+ }
 546+
 547+ var imgName = htmlNode.getAttribute( '_fck_mw_filename' );
 548+ var imgCaption = htmlNode.getAttribute( 'alt' ) || '';
 549+ var imgType = htmlNode.getAttribute( '_fck_mw_type' ) || '';
 550+ var imgLocation = htmlNode.getAttribute( '_fck_mw_location' ) || '';
 551+ var imgWidth = htmlNode.getAttribute( '_fck_mw_width' ) || '';
 552+ var imgHeight = htmlNode.getAttribute( '_fck_mw_height' ) || '';
 553+ var imgStyleWidth = ( parseInt(htmlNode.style.width) || '' ) + '';
 554+ var imgStyleHeight = ( parseInt(htmlNode.style.height) || '' ) + '';
 555+ var imgRealWidth = ( htmlNode.getAttribute( 'width' ) || '' ) + '';
 556+ var imgRealHeight = ( htmlNode.getAttribute( 'height' ) || '' ) + '';
 557+
 558+ stringBuilder.push( '[[Image:' );
 559+ stringBuilder.push( imgName );
 560+
 561+ if ( imgStyleWidth.length > 0 )
 562+ imgWidth = imgStyleWidth;
 563+ else if ( imgWidth.length > 0 && imgRealWidth.length > 0 )
 564+ imgWidth = imgRealWidth;
 565+
 566+ if ( imgStyleHeight.length > 0 )
 567+ imgHeight = imgStyleHeight;
 568+ else if ( imgHeight.length > 0 && imgRealHeight.length > 0 )
 569+ imgHeight = imgRealHeight;
 570+
 571+ if ( imgType.length > 0 )
 572+ stringBuilder.push( '|' + imgType );
 573+
 574+ if ( imgLocation.length > 0 )
 575+ stringBuilder.push( '|' + imgLocation );
 576+
 577+ if ( imgWidth.length > 0 ){
 578+ stringBuilder.push( '|' + imgWidth );
 579+
 580+ if ( imgHeight.length > 0 )
 581+ stringBuilder.push( 'x' + imgHeight );
 582+
 583+ stringBuilder.push( 'px' );
 584+ }
 585+
 586+ if ( imgCaption.length > 0 )
 587+ stringBuilder.push( '|' + imgCaption );
 588+
 589+ stringBuilder.push( ']]' );
 590+
 591+ break;
 592+
 593+ case 'span' :
 594+ switch ( htmlNode.className ){
 595+ case 'fck_mw_source' :
 596+ var refLang = htmlNode.getAttribute( 'lang' );
 597+
 598+ stringBuilder.push( '<source' );
 599+ stringBuilder.push( ' lang="' + refLang + '"' );
 600+ stringBuilder.push( '>' );
 601+ stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') );
 602+ stringBuilder.push( '</source>' );
 603+ return;
 604+
 605+ case 'fck_mw_ref' :
 606+ var refName = htmlNode.getAttribute( 'name' );
 607+
 608+ stringBuilder.push( '<ref' );
 609+
 610+ if ( refName && refName.length > 0 )
 611+ stringBuilder.push( ' name="' + refName + '"' );
 612+
 613+ if ( htmlNode.innerHTML.length == 0 )
 614+ stringBuilder.push( ' />' );
 615+ else {
 616+ stringBuilder.push( '>' );
 617+ stringBuilder.push( htmlNode.innerHTML );
 618+ stringBuilder.push( '</ref>' );
 619+ }
 620+ return;
 621+
 622+ case 'fck_mw_references' :
 623+ stringBuilder.push( '<references />' );
 624+ return;
 625+
 626+ case 'fck_mw_signature' :
 627+ stringBuilder.push( FCKConfig.WikiSignature );
 628+ return;
 629+
 630+ case 'fck_mw_template' :
 631+ stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') );
 632+ return;
 633+
 634+ case 'fck_mw_magic' :
 635+ stringBuilder.push( htmlNode.innerHTML );
 636+ return;
 637+
 638+ case 'fck_mw_nowiki' :
 639+ sNodeName = 'nowiki';
 640+ break;
 641+
 642+ case 'fck_mw_html' :
 643+ sNodeName = 'html';
 644+ break;
 645+
 646+ case 'fck_mw_includeonly' :
 647+ sNodeName = 'includeonly';
 648+ break;
 649+
 650+ case 'fck_mw_noinclude' :
 651+ sNodeName = 'noinclude';
 652+ break;
 653+
 654+ case 'fck_mw_gallery' :
 655+ sNodeName = 'gallery';
 656+ break;
 657+
 658+ case 'fck_mw_onlyinclude' :
 659+ sNodeName = 'onlyinclude';
 660+
 661+ break;
 662+ }
 663+
 664+ // Change the node name and fell in the "default" case.
 665+ if ( htmlNode.getAttribute( '_fck_mw_customtag' ) )
 666+ sNodeName = htmlNode.getAttribute( '_fck_mw_tagname' );
 667+
 668+ case 'pre' :
 669+ var attribs = this._GetAttributesStr( htmlNode );
 670+
 671+ if ( htmlNode.className == "_fck_mw_lspace" ){
 672+ stringBuilder.push( "\n " );
 673+ this._inLSpace = true;
 674+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 675+ this._inLSpace = false;
 676+ var len = stringBuilder.length;
 677+ if ( len > 1 ) {
 678+ var tail = stringBuilder[len-2] + stringBuilder[len-1];
 679+ if ( len > 2 ) {
 680+ tail = stringBuilder[len-3] + tail;
 681+ }
 682+ if (tail.EndsWith("\n ")) {
 683+ stringBuilder[len-1] = stringBuilder[len-1].replace(/ $/, "");
 684+ } else if ( !tail.EndsWith("\n") ) {
 685+ stringBuilder.push( "\n" );
 686+ }
 687+ }
 688+ } else {
 689+ stringBuilder.push( '<' );
 690+ stringBuilder.push( sNodeName );
 691+
 692+ if ( attribs.length > 0 )
 693+ stringBuilder.push( attribs );
 694+ if( htmlNode.innerHTML == '' )
 695+ stringBuilder.push( ' />' );
 696+ else {
 697+ stringBuilder.push( '>' );
 698+ this._inPre = true;
 699+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 700+ this._inPre = false;
 701+
 702+ stringBuilder.push( '<\/' );
 703+ stringBuilder.push( sNodeName );
 704+ stringBuilder.push( '>' );
 705+ }
 706+ }
 707+
 708+ break;
 709+ default :
 710+ var attribs = this._GetAttributesStr( htmlNode );
 711+
 712+ stringBuilder.push( '<' );
 713+ stringBuilder.push( sNodeName );
 714+
 715+ if ( attribs.length > 0 )
 716+ stringBuilder.push( attribs );
 717+
 718+ stringBuilder.push( '>' );
 719+ this._AppendChildNodes( htmlNode, stringBuilder, prefix );
 720+ stringBuilder.push( '<\/' );
 721+ stringBuilder.push( sNodeName );
 722+ stringBuilder.push( '>' );
 723+ break;
 724+ }
 725+ }
 726+
 727+ htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum;
 728+ return;
 729+
 730+ // Text Node.
 731+ case 3 :
 732+
 733+ var parentIsSpecialTag = htmlNode.parentNode.getAttribute( '_fck_mw_customtag' );
 734+ var textValue = htmlNode.nodeValue;
 735+ if ( !parentIsSpecialTag ){
 736+ if ( FCKBrowserInfo.IsIE && this._inLSpace ) {
 737+ textValue = textValue.replace( /\r/g, "\r " );
 738+ if (textValue.EndsWith( "\r " )) {
 739+ textValue = textValue.replace( /\r $/, "\r" );
 740+ }
 741+ }
 742+ if ( !FCKBrowserInfo.IsIE && this._inLSpace ) {
 743+ textValue = textValue.replace( /\n(?! )/g, "\n " );
 744+ }
 745+
 746+ if (!this._inLSpace && !this._inPre) {
 747+ textValue = textValue.replace( /[\n\t]/g, ' ' );
 748+ }
 749+
 750+ textValue = FCKTools.HTMLEncode( textValue );
 751+ textValue = textValue.replace( /\u00A0/g, '&nbsp;' );
 752+
 753+ if ( ( !htmlNode.previousSibling ||
 754+ ( stringBuilder.length > 0 && stringBuilder[ stringBuilder.length - 1 ].EndsWith( '\n' ) ) ) && !this._inLSpace && !this._inPre ){
 755+ textValue = textValue.LTrim();
 756+ }
 757+
 758+ if ( !htmlNode.nextSibling && !this._inLSpace && !this._inPre && ( !htmlNode.parentNode || !htmlNode.parentNode.nextSibling ) )
 759+ textValue = textValue.RTrim();
 760+
 761+ if( !this._inLSpace && !this._inPre )
 762+ textValue = textValue.replace( / {2,}/g, ' ' );
 763+
 764+ if ( this._inLSpace && textValue.length == 1 && textValue.charCodeAt(0) == 13 )
 765+ textValue = textValue + " ";
 766+
 767+ if ( !this._inLSpace && !this._inPre && textValue == " " ) {
 768+ var len = stringBuilder.length;
 769+ if( len > 1 ) {
 770+ var tail = stringBuilder[len-2] + stringBuilder[len-1];
 771+ if ( tail.toString().EndsWith( "\n" ) )
 772+ textValue = '';
 773+ }
 774+ }
 775+
 776+ if ( this._IsInsideCell ) {
 777+ var result, linkPattern = new RegExp( "\\[\\[.*?\\]\\]", "g" );
 778+ while( result = linkPattern.exec( textValue ) ) {
 779+ textValue = textValue.replace( result, result.toString().replace( /\|/g, "<!--LINK_PIPE-->" ) );
 780+ }
 781+ textValue = textValue.replace( /\|/g, '&#124;' );
 782+ textValue = textValue.replace( /<!--LINK_PIPE-->/g, '|' );
 783+ }
 784+ } else {
 785+ textValue = FCKTools.HTMLDecode(textValue).replace(/fckLR/g,'\r\n');
 786+ }
 787+
 788+ stringBuilder.push( textValue );
 789+ return;
 790+
 791+ // Comment
 792+ case 8 :
 793+ // IE catches the <!DOTYPE ... > as a comment, but it has no
 794+ // innerHTML, so we can catch it, and ignore it.
 795+ if ( FCKBrowserInfo.IsIE && !htmlNode.innerHTML )
 796+ return;
 797+
 798+ stringBuilder.push( "<!--" );
 799+
 800+ try {
 801+ stringBuilder.push( htmlNode.nodeValue );
 802+ } catch( e ) { /* Do nothing... probably this is a wrong format comment. */ }
 803+
 804+ stringBuilder.push( "-->" );
 805+ return;
 806+ }
 807+ },
 808+
 809+ _AppendChildNodes : function( htmlNode, stringBuilder, listPrefix ){
 810+ var child = htmlNode.firstChild;
 811+
 812+ while ( child ){
 813+ this._AppendNode( child, stringBuilder, listPrefix );
 814+ child = child.nextSibling;
 815+ }
 816+ },
 817+
 818+ _GetAttributesStr : function( htmlNode ){
 819+ var attStr = '';
 820+ var aAttributes = htmlNode.attributes;
 821+
 822+ for ( var n = 0; n < aAttributes.length; n++ ){
 823+ var oAttribute = aAttributes[n];
 824+
 825+ if ( oAttribute.specified ){
 826+ var sAttName = oAttribute.nodeName.toLowerCase();
 827+ var sAttValue;
 828+
 829+ // Ignore any attribute starting with "_fck".
 830+ if ( sAttName.StartsWith( '_fck' ) )
 831+ continue;
 832+ // There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
 833+ else if ( sAttName.indexOf( '_moz' ) == 0 )
 834+ continue;
 835+ // For "class", nodeValue must be used.
 836+ else if ( sAttName == 'class' ){
 837+ // Get the class, removing any fckXXX we can have there.
 838+ sAttValue = oAttribute.nodeValue.replace( /(^|\s*)fck\S+/, '' ).Trim();
 839+
 840+ if ( sAttValue.length == 0 )
 841+ continue;
 842+ } else if ( sAttName == 'style' && FCKBrowserInfo.IsIE ) {
 843+ sAttValue = htmlNode.style.cssText.toLowerCase();
 844+ }
 845+ // XHTML doens't support attribute minimization like "CHECKED". It must be trasformed to cheched="checked".
 846+ else if ( oAttribute.nodeValue === true )
 847+ sAttValue = sAttName;
 848+ else
 849+ sAttValue = htmlNode.getAttribute( sAttName, 2 ); // We must use getAttribute to get it exactly as it is defined.
 850+
 851+ // leave templates
 852+ if ( sAttName.StartsWith( '{{' ) && sAttName.EndsWith( '}}' ) ) {
 853+ attStr += ' ' + sAttName;
 854+ } else {
 855+ attStr += ' ' + sAttName + '="' + String(sAttValue).replace( '"', '&quot;' ) + '"';
 856+ }
 857+ }
 858+ }
 859+ return attStr;
 860+ }
 861+};
 862+
 863+// Here we change the SwitchEditMode function to make the Ajax call when
 864+// switching from Wikitext.
 865+(function(){
 866+ if( window.parent.showFCKEditor & ( 2 | 4 ) ){ // if popup or toggle link
 867+ var original_ULF = FCK.UpdateLinkedField;
 868+ FCK.UpdateLinkedField = function(){
 869+ if( window.parent.showFCKEditor & 1 ){ // only if editor is up-to-date
 870+ original_ULF.apply();
 871+ }
 872+ }
 873+ }
 874+ var original = FCK.SwitchEditMode;
 875+ window.parent.oFCKeditor.ready = true;
 876+ FCK.SwitchEditMode = function(){
 877+ var args = arguments;
 878+ window.parent.oFCKeditor.ready = false;
 879+ var loadHTMLFromAjax = function( result ){
 880+ FCK.EditingArea.Textarea.value = result.responseText;
 881+ original.apply( FCK, args );
 882+ window.parent.oFCKeditor.ready = true;
 883+ }
 884+ var edittools_markup = parent.document.getElementById( 'editpage-specialchars' );
 885+
 886+ if ( FCK.EditMode == FCK_EDITMODE_SOURCE ){
 887+ // Hide the textarea to avoid seeing the code change.
 888+ FCK.EditingArea.Textarea.style.visibility = 'hidden';
 889+ var loading = document.createElement( 'span' );
 890+ loading.innerHTML = '&nbsp;'+ ( FCKLang.wikiLoadingWikitext || 'Loading Wikitext. Please wait...' ) + '&nbsp;';
 891+ loading.style.position = 'absolute';
 892+ loading.style.left = '5px';
 893+// loading.style.backgroundColor = '#ff0000';
 894+ FCK.EditingArea.Textarea.parentNode.appendChild( loading, FCK.EditingArea.Textarea );
 895+ // if we have a standard Edittools div, hide the one containing wikimarkup
 896+ if( edittools_markup ) {
 897+ edittools_markup.style.display = 'none';
 898+ }
 899+
 900+ // Use Ajax to transform the Wikitext to HTML.
 901+ if( window.parent.popup ){
 902+ window.parent.popup.parent.FCK_sajax( 'wfSajaxWikiToHTML', [FCK.EditingArea.Textarea.value], loadHTMLFromAjax );
 903+ } else {
 904+ window.parent.FCK_sajax( 'wfSajaxWikiToHTML', [FCK.EditingArea.Textarea.value], loadHTMLFromAjax );
 905+ }
 906+ } else {
 907+ original.apply( FCK, args );
 908+ if( edittools_markup ) {
 909+ edittools_markup.style.display = '';
 910+ }
 911+ window.parent.oFCKeditor.ready = true;
 912+ }
 913+ }
 914+})();
 915+
 916+// MediaWiki document processor.
 917+FCKDocumentProcessor.AppendNew().ProcessDocument = function( document ){
 918+ // #1011: change signatures to SPAN elements
 919+ var aTextNodes = document.getElementsByTagName( '*' );
 920+ var i = 0;
 921+ var signatureRegExp = new RegExp( FCKConfig.WikiSignature.replace( /([*:.*?();|$])/g, "\\$1" ), "i" );
 922+ while( element = aTextNodes[i++] ){
 923+ var nodes = element.childNodes;
 924+ var j = 0;
 925+ while ( node = nodes[j++] ){
 926+ if ( node.nodeType == 3 ){ // textNode
 927+ var index = 0;
 928+
 929+ while ( aSignatures = node.nodeValue.match( signatureRegExp ) ){
 930+ index = node.nodeValue.indexOf( aSignatures[0] );
 931+ if ( index != -1 ){
 932+ var e = FCK.EditorDocument.createElement( 'span' );
 933+ e.className = "fck_mw_signature";
 934+ var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__MWSignature', e );
 935+
 936+ var substr1 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(0, index) );
 937+ var substr2 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(index + aSignatures[0].length) );
 938+
 939+ node.parentNode.insertBefore( substr1, node );
 940+ node.parentNode.insertBefore( oFakeImage, node );
 941+ node.parentNode.insertBefore( substr2, node );
 942+
 943+ node.parentNode.removeChild( node );
 944+ if ( node )
 945+ node.nodeValue = '';
 946+ }
 947+ }
 948+ }
 949+ }
 950+ }
 951+
 952+ // Templates and magic words.
 953+ var aSpans = document.getElementsByTagName( 'SPAN' );
 954+
 955+ var eSpan;
 956+ var i = aSpans.length - 1;
 957+ while ( i >= 0 && ( eSpan = aSpans[i--] ) ){
 958+ var className = null;
 959+ switch ( eSpan.className ){
 960+ case 'fck_mw_source' :
 961+ className = 'FCK__MWSource';
 962+ case 'fck_mw_ref' :
 963+ if (className == null)
 964+ className = 'FCK__MWRef';
 965+ case 'fck_mw_references' :
 966+ if ( className == null )
 967+ className = 'FCK__MWReferences';
 968+ case 'fck_mw_template' :
 969+ if ( className == null ) //YC
 970+ className = 'FCK__MWTemplate'; //YC
 971+ case 'fck_mw_magic' :
 972+ if ( className == null )
 973+ className = 'FCK__MWMagicWord';
 974+ case 'fck_mw_magic' :
 975+ if ( className == null )
 976+ className = 'FCK__MWMagicWord';
 977+ case 'fck_mw_special' : //YC
 978+ if ( className == null )
 979+ className = 'FCK__MWSpecial';
 980+ case 'fck_mw_nowiki' :
 981+ if ( className == null )
 982+ className = 'FCK__MWNowiki';
 983+ case 'fck_mw_html' :
 984+ if ( className == null )
 985+ className = 'FCK__MWHtml';
 986+ case 'fck_mw_includeonly' :
 987+ if ( className == null )
 988+ className = 'FCK__MWIncludeonly';
 989+ case 'fck_mw_gallery' :
 990+ if ( className == null )
 991+ className = 'FCK__MWGallery';
 992+ case 'fck_mw_noinclude' :
 993+ if ( className == null )
 994+ className = 'FCK__MWNoinclude';
 995+ case 'fck_mw_onlyinclude' :
 996+ if ( className == null )
 997+ className = 'FCK__MWOnlyinclude';
 998+
 999+ var oImg = FCKDocumentProcessor_CreateFakeImage( className, eSpan.cloneNode(true) );
 1000+ oImg.setAttribute( '_' + eSpan.className, 'true', 0 );
 1001+
 1002+ eSpan.parentNode.insertBefore( oImg, eSpan );
 1003+ eSpan.parentNode.removeChild( eSpan );
 1004+ break;
 1005+ }
 1006+ }
 1007+
 1008+ // Math tags without Tex.
 1009+ var aImgs = document.getElementsByTagName( 'IMG' );
 1010+ var eImg;
 1011+ i = aImgs.length - 1;
 1012+ while ( i >= 0 && ( eImg = aImgs[i--] ) ){
 1013+ var className = null;
 1014+ switch ( eImg.className ){
 1015+ case 'FCK__MWMath' :
 1016+ eImg.src = FCKConfig.PluginsPath + 'mediawiki/images/icon_math.gif';
 1017+ break;
 1018+ }
 1019+ }
 1020+
 1021+ // InterWiki / InterLanguage links
 1022+ var aHrefs = document.getElementsByTagName( 'A' );
 1023+ var a;
 1024+ var i = aHrefs.length - 1;
 1025+ while ( i >= 0 && ( a = aHrefs[i--] ) ){
 1026+ if( a.className == 'extiw' ){
 1027+ a.href = a.title;
 1028+ a.setAttribute( '_fcksavedurl', a.href );
 1029+ } else {
 1030+ if( a.href.toLowerCase().StartsWith( 'rtecolon' ) ){
 1031+ a.href = ":" + a.href.substring(8);
 1032+ if( a.innerHTML.toLowerCase().StartsWith( 'rtecolon' ) ){
 1033+ a.innerHTML = a.innerHTML.substring(8);
 1034+ }
 1035+ }
 1036+ }
 1037+ }
 1038+}
 1039+
 1040+// Context menu for templates.
 1041+FCK.ContextMenu.RegisterListener({
 1042+ AddItems : function( contextMenu, tag, tagName ){
 1043+ if ( tagName == 'IMG' ){
 1044+ if ( tag.getAttribute( '_fck_mw_template' ) ){
 1045+ contextMenu.AddSeparator();
 1046+ contextMenu.AddItem( 'MW_Template', FCKLang.wikiMnuTemplate || 'Template Properties' );
 1047+ }
 1048+ if ( tag.getAttribute( '_fck_mw_magic' ) ){
 1049+ contextMenu.AddSeparator();
 1050+ contextMenu.AddItem( 'MW_MagicWord', FCKLang.wikiMnuMagicWord || 'Modify Magic Word' );
 1051+ }
 1052+ if ( tag.getAttribute( '_fck_mw_ref' ) ){
 1053+ contextMenu.AddSeparator();
 1054+ contextMenu.AddItem( 'MW_Ref', FCKLang.wikiMnuReference || 'Reference Properties' );
 1055+ }
 1056+ if ( tag.getAttribute( '_fck_mw_html' ) ){
 1057+ contextMenu.AddSeparator();
 1058+ contextMenu.AddItem( 'MW_Special', 'Edit HTML code' );
 1059+ }
 1060+ if ( tag.getAttribute( '_fck_mw_source' ) ){
 1061+ contextMenu.AddSeparator();
 1062+ contextMenu.AddItem( 'MW_Source', FCKLang.wikiMnuSourceCode || 'Source Code Properties' );
 1063+ }
 1064+ if ( tag.getAttribute( '_fck_mw_math' ) ){
 1065+ contextMenu.AddSeparator();
 1066+ contextMenu.AddItem( 'MW_Math', FCKLang.wikiMnuFormula || 'Edit Formula' );
 1067+ }
 1068+ if ( tag.getAttribute( '_fck_mw_special' ) || tag.getAttribute( '_fck_mw_nowiki' ) || tag.getAttribute( '_fck_mw_includeonly' ) || tag.getAttribute( '_fck_mw_noinclude' ) || tag.getAttribute( '_fck_mw_onlyinclude' ) || tag.getAttribute( '_fck_mw_gallery' ) ){ //YC
 1069+ contextMenu.AddSeparator();
 1070+ contextMenu.AddItem( 'MW_Special', FCKLang.wikiMnuSpecial || 'Special Tag Properties' );
 1071+ }
 1072+ }
 1073+ }
 1074+});
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js
___________________________________________________________________
Added: svn:eol-style
11075 + native
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki
___________________________________________________________________
Added: svn:ignore
21076 + .settings
.project
Index: trunk/extensions/FCKeditor/plugins/mediawiki_localfilelink/link_dialog.html
@@ -0,0 +1,241 @@
 2+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 3+<!--
 4+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 5+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 6+ *
 7+ * == BEGIN LICENSE ==
 8+ *
 9+ * Licensed under the terms of any of the following licenses at your
 10+ * choice:
 11+ *
 12+ * - GNU General Public License Version 2 or later (the "GPL")
 13+ * http://www.gnu.org/licenses/gpl.html
 14+ *
 15+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16+ * http://www.gnu.org/licenses/lgpl.html
 17+ *
 18+ * - Mozilla Public License Version 1.1 or later (the "MPL")
 19+ * http://www.mozilla.org/MPL/MPL-1.1.html
 20+ *
 21+ * == END LICENSE ==
 22+ *
 23+ * Link dialog window.
 24+ * MODIFIED: by Doru Moisa, Optaros Inc., purpose: allow inserting links to local files
 25+-->
 26+<html>
 27+<head>
 28+ <title>Link Properties</title>
 29+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 30+ <meta name="robots" content="noindex, nofollow" />
 31+ <script type="text/javascript">
 32+
 33+var oEditor = window.parent.InnerDialogLoaded() ;
 34+var FCK = oEditor.FCK ;
 35+var FCKLang = oEditor.FCKLang ;
 36+var FCKConfig = oEditor.FCKConfig ;
 37+var FCKRegexLib = oEditor.FCKRegexLib ;
 38+var FCKTools = oEditor.FCKTools ;
 39+
 40+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
 41+
 42+ </script>
 43+ <script type="text/javascript">
 44+
 45+// oLink: The actual selected link in the editor.
 46+var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
 47+if ( oLink )
 48+ FCK.Selection.SelectNode( oLink ) ;
 49+
 50+window.onload = function()
 51+{
 52+ // Translate the dialog box texts.
 53+ oEditor.FCKLanguageManager.TranslatePage(document) ;
 54+
 55+ // Load the selected link information (if any).
 56+ LoadSelection() ;
 57+
 58+ // Activate the "OK" button.
 59+ window.parent.SetOkButton( true ) ;
 60+ window.parent.SetAutoSize( true ) ;
 61+};
 62+
 63+function LoadSelection()
 64+{
 65+ if ( !oLink ) return ;
 66+
 67+ // Get the actual Link href.
 68+ var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
 69+ if ( sHRef == null )
 70+ sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
 71+
 72+ GetE('txtUrl').value = sHRef ;
 73+}
 74+
 75+var searchTimer ;
 76+
 77+//#### Called while the user types the URL.
 78+function OnUrlChange()
 79+{
 80+ var link = GetE('txtUrl').value.Trim() ;
 81+
 82+ if ( searchTimer )
 83+ window.clearTimeout( searchTimer ) ;
 84+
 85+ if ( link.StartsWith( '#' ) )
 86+ {
 87+ SetSearchMessage( 'anchor link... no search for it' ) ;
 88+ return ;
 89+ }
 90+
 91+ if ( link.StartsWith( 'mailto:' ) )
 92+ {
 93+ SetSearchMessage( 'e-mail link... no search for it' ) ;
 94+ return ;
 95+ }
 96+
 97+ if( /^\w+:\/\//.test( link ) )
 98+ {
 99+ SetSearchMessage( 'external link... no search for it' ) ;
 100+ return ;
 101+ }
 102+
 103+ if ( link.length < 3 )
 104+ {
 105+ ClearSearch() ;
 106+
 107+ if ( link.length == 0 )
 108+ SetSearchMessage( 'start typing in the above field' ) ;
 109+ else
 110+ SetSearchMessage( 'too short... type more' ) ;
 111+ return ;
 112+ }
 113+
 114+ SetSearchMessage( 'stop typing to search' ) ;
 115+ searchTimer = window.setTimeout( StartSearch, 500 ) ;
 116+}
 117+
 118+function StartSearch()
 119+{
 120+ var link = GetE('txtUrl').value.Trim() ;
 121+
 122+ if ( link.length < 3 )
 123+ return ;
 124+
 125+ SetSearchMessage( 'searching...' ) ;
 126+
 127+ // Make an Ajax search for the pages.
 128+ oEditor.window.parent.sajax_request_type = 'GET' ;
 129+ oEditor.window.parent.sajax_do_call( 'wfSajaxSearchArticleFCKeditor', [link], LoadSearchResults ) ;
 130+}
 131+
 132+function LoadSearchResults( result )
 133+{
 134+ var results = result.responseText.Trim().split( '\n' ) ;
 135+ var select = GetE( 'xWikiResults' ) ;
 136+
 137+ ClearSearch() ;
 138+
 139+ if ( results.length == 0 || ( results.length == 1 && results[0].length == 0 ) )
 140+ {
 141+ SetSearchMessage( 'no articles found' ) ;
 142+ }
 143+ else
 144+ {
 145+ if ( results.length == 1 )
 146+ SetSearchMessage( 'one article found' ) ;
 147+ else
 148+ SetSearchMessage( results.length + ' articles found' ) ;
 149+
 150+ for ( var i = 0 ; i < results.length ; i++ )
 151+ FCKTools.AddSelectOption( select, results[i], results[i] ) ;
 152+ }
 153+}
 154+
 155+function ClearSearch()
 156+{
 157+ var select = GetE( 'xWikiResults' ) ;
 158+
 159+ while ( select.options.length > 0 )
 160+ select.remove( 0 )
 161+}
 162+
 163+function SetSearchMessage( message )
 164+{
 165+ GetE('xWikiSearchStatus').innerHTML = message ;
 166+}
 167+
 168+function SetUrl( url )
 169+{
 170+ GetE('txtUrl').value = url ;
 171+}
 172+
 173+//#### The OK button was hit.
 174+function Ok()
 175+{
 176+ var sUri = GetE('txtUrl').value ;
 177+ var sInnerHtml ;
 178+
 179+ // If no link is selected, create a new one (it may result in more than one link creation - #220).
 180+ var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri ) ;
 181+
 182+ // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
 183+ var aHasSelection = ( aLinks.length > 0 ) ;
 184+ if ( !aHasSelection )
 185+ {
 186+ sInnerHtml = sUri;
 187+
 188+ var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
 189+ var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
 190+ if (asLinkPath != null)
 191+ sInnerHtml = asLinkPath[1]; // use matched path
 192+
 193+ // Create a new (empty) anchor.
 194+ aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
 195+ }
 196+
 197+ oEditor.FCKUndo.SaveUndoStep() ;
 198+
 199+ for ( var i = 0 ; i < aLinks.length ; i++ )
 200+ {
 201+ oLink = aLinks[i] ;
 202+
 203+ if ( aHasSelection )
 204+ sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
 205+
 206+ oLink.href = sUri ;
 207+ SetAttribute( oLink, '_fcksavedurl', sUri ) ;
 208+
 209+ oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML
 210+
 211+ }
 212+
 213+ // Select the (first) link.
 214+ oEditor.FCKSelection.SelectNode( aLinks[0] );
 215+
 216+ return true ;
 217+}
 218+function handleLocalURLChange(elem){
 219+ // file:///C:/Documents%20and%20Settings/
 220+ document.getElementById("txtUrl").value = "file:///" + elem.value.replace(/\\/g,'/').replace(/ /g,"%20");
 221+}
 222+ </script>
 223+</head>
 224+<body scroll="no" style="overflow: hidden">
 225+ <div id="divInfo">
 226+ <div id="divLinkTypeUrl">
 227+ <span>Type a link (URL):</span><br />
 228+ <input id="txtUrl" style="width: 100%" type="text" onkeyup="OnUrlChange(this.value);" />
 229+ <form onsubmit="return false;">
 230+ <span style="display: inline-block; padding-top: 10px; _padding-top: 4px;z-index: 4;">Link to local file:</span>
 231+ <span style="position: relative;" align="right">
 232+ <input type="file" id="lfl_localURL" onchange="handleLocalURLChange(this)" style="z-index: 2; opacity:0; filter: alpha(opacity=0); -moz-opacity: 0; position: absolute; _left: -110px; cursor: pointer; _cursor: hand;" />
 233+ <input class="Button" type="button" value="BROWSE" style="position: absolute; left: 10px; top: -12px; _top: 0px;z-index: 1; cursor: pointer; _cursor: hand;" />
 234+ </span>
 235+ </form>
 236+ Automatic search results (<span id="xWikiSearchStatus">start typing in the above field</span>)<br />
 237+ <select id="xWikiResults" size="10" style="width: 100%; height:150px" onclick="SetUrl( this.value );">
 238+ </select>
 239+ </div>
 240+ </div>
 241+</body>
 242+</html>
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki_localfilelink/link_dialog.html
___________________________________________________________________
Added: svn:eol-style
1243 + native
Index: trunk/extensions/FCKeditor/plugins/mediawiki_localfilelink/fckplugin.js
@@ -0,0 +1,10 @@
 2+// localFileLink MediaWiki Extention
 3+// Created by Doru Moisa, Optaros Inc.
 4+// Rwrite the link command to use our link_dialog.html.
 5+FCKCommands.RegisterCommand( 'Link',
 6+ new FCKDialogCommand( 'Link',
 7+ FCKLang.DlgLnkWindowTitle,
 8+ FCKConfig.PluginsPath + 'mediawiki_localfilelink/link_dialog.html',
 9+ 400,
 10+ 250 )
 11+ ) ;
Property changes on: trunk/extensions/FCKeditor/plugins/mediawiki_localfilelink/fckplugin.js
___________________________________________________________________
Added: svn:eol-style
112 + native
Index: trunk/extensions/FCKeditor/FCKeditorSajax.body.php
@@ -0,0 +1,303 @@
 2+<?php
 3+/**
 4+ * AJAX functions used by FCKeditor extension
 5+ */
 6+
 7+function wfSajaxGetMathUrl( $term ) {
 8+ $originalLink = MathRenderer::renderMath( $term );
 9+
 10+ if( false == strpos( $originalLink, 'src="' ) ) {
 11+ return '';
 12+ }
 13+
 14+ $srcPart = substr( $originalLink, strpos( $originalLink, "src=" ) + 5 );
 15+ $url = strtok( $srcPart, '"' );
 16+
 17+ return $url;
 18+}
 19+
 20+function wfSajaxGetImageUrl( $term ) {
 21+ global $wgExtensionFunctions, $wgTitle;
 22+
 23+ $options = new FCKeditorParserOptions();
 24+ $options->setTidy( true );
 25+ $parser = new FCKeditorParser();
 26+
 27+ if( in_array( 'wfCite', $wgExtensionFunctions ) ) {
 28+ $parser->setHook( 'ref', array( $parser, 'ref' ) );
 29+ $parser->setHook( 'references', array( $parser, 'references' ) );
 30+ }
 31+ $parser->setOutputType( OT_HTML );
 32+ $originalLink = $parser->parse( '[[File:' . $term . ']]', $wgTitle, $options )->getText();
 33+ if( false == strpos( $originalLink, 'src="' ) ) {
 34+ return '';
 35+ }
 36+
 37+ $srcPart = substr( $originalLink, strpos( $originalLink, "src=" )+ 5 );
 38+ $url = strtok( $srcPart, '"' );
 39+
 40+ return $url;
 41+}
 42+
 43+function wfSajaxSearchSpecialTagFCKeditor( $empty ) {
 44+ global $wgParser, $wgRawHtml;
 45+
 46+ $ret = "nowiki\nincludeonly\nonlyinclude\nnoinclude\ngallery\n";
 47+ if( $wgRawHtml ){
 48+ $ret.= "html\n";
 49+ }
 50+ $wgParser->firstCallInit();
 51+ foreach( $wgParser->getTags() as $h ) {
 52+ if( !in_array( $h, array( 'pre', 'math', 'ref', 'references' ) ) ) {
 53+ $ret .= $h . "\n";
 54+ }
 55+ }
 56+ $arr = explode( "\n", $ret );
 57+ sort( $arr );
 58+ $ret = implode( "\n", $arr );
 59+
 60+ return $ret;
 61+}
 62+
 63+function wfSajaxSearchImageFCKeditor( $term ) {
 64+ global $wgContLang;
 65+ $limit = 10;
 66+
 67+ $term = $wgContLang->checkTitleEncoding( $wgContLang->recodeInput( js_unescape( $term ) ) );
 68+ $term1 = str_replace( ' ', '_', $wgContLang->ucfirst( $term ) );
 69+ $term2 = str_replace( ' ', '_', $wgContLang->lc( $term ) );
 70+ $term3 = str_replace( ' ', '_', $wgContLang->uc( $term ) );
 71+ $term4 = str_replace( ' ', '_', $wgContLang->ucfirst( $term2 ) );
 72+ $term = $term1;
 73+
 74+ if ( strlen( str_replace( '_', '', $term ) ) < 3 )
 75+ return '';
 76+
 77+ $dbr = wfGetDB( DB_SLAVE );
 78+ $res = $dbr->select( 'page',
 79+ 'page_title',
 80+ array(
 81+ 'page_namespace' => NS_FILE,
 82+ "page_title LIKE '%". $dbr->strencode( $term1 ) ."%'".
 83+ "OR (page_title LIKE '%". $dbr->strencode( $term2 ) ."%') ".
 84+ "OR (page_title LIKE '%". $dbr->strencode( $term3 ) ."%') ".
 85+ "OR (page_title LIKE '%". $dbr->strencode( $term4 ) ."%') "
 86+ ),
 87+ __METHOD__,
 88+ array( 'LIMIT' => $limit + 1 )
 89+ );
 90+
 91+ $ret = '';
 92+ $i = 0;
 93+ while ( ( $row = $dbr->fetchObject( $res ) ) && ( ++$i <= $limit ) ) {
 94+ $ret .= $row->page_title . "\n";
 95+ }
 96+
 97+ $term = htmlspecialchars( $term );
 98+
 99+ return $ret;
 100+}
 101+
 102+function wfSajaxSearchArticleFCKeditor( $term ) {
 103+ global $wgContLang, $wgExtraNamespaces;
 104+ $limit = 10;
 105+ $ns = NS_MAIN;
 106+
 107+ $term = $wgContLang->checkTitleEncoding( $wgContLang->recodeInput( js_unescape( $term ) ) );
 108+
 109+ if( strpos( strtolower( $term ), 'category:' ) === 0 ) {
 110+ $ns = NS_CATEGORY;
 111+ $term = substr( $term, 9 );
 112+ $prefix = 'Category:';
 113+ } elseif( strpos( strtolower( $term ), ':category:' ) === 0 ) {
 114+ $ns = NS_CATEGORY;
 115+ $term = substr( $term, 10 );
 116+ $prefix = ':Category:';
 117+ } elseif( strpos( strtolower( $term ), 'media:' ) === 0 ) {
 118+ $ns = NS_IMAGE;
 119+ $term = substr( $term, 6 );
 120+ $prefix = 'Media:';
 121+ } elseif( strpos( strtolower( $term ), ':image:' ) === 0 ) {
 122+ $ns = NS_IMAGE;
 123+ $term = substr( strtolower( $term ), 7 );
 124+ $prefix = ':Image:';
 125+ } elseif( strpos( $term, ':' ) && is_array( $wgExtraNamespaces ) ) {
 126+ $pos = strpos( $term, ':' );
 127+ $find_ns = array_search( substr( $term, 0, $pos ), $wgExtraNamespaces );
 128+ if( $find_ns ) {
 129+ $ns = $find_ns;
 130+ $prefix = substr( $term, 0, $pos + 1 );
 131+ $term = substr( $term, $pos + 1 );
 132+ }
 133+ }
 134+
 135+ $term1 = str_replace( ' ', '_', $wgContLang->ucfirst( $term ) );
 136+ $term2 = str_replace( ' ', '_', $wgContLang->lc( $term ) );
 137+ $term3 = str_replace( ' ', '_', $wgContLang->uc( $term ) );
 138+ $term4 = str_replace( ' ', '_', $wgContLang->ucfirst( $term2 ) );
 139+ $term = $term1;
 140+
 141+ if ( strlen( str_replace( '_', '', $term ) ) < 3 ) {
 142+ return '';
 143+ }
 144+
 145+ $dbr = wfGetDB( DB_SLAVE );
 146+ $res = $dbr->select( 'page',
 147+ 'page_title',
 148+ array(
 149+ 'page_namespace' => $ns,
 150+ "page_title LIKE '%". $dbr->strencode( $term1 ) ."%' ".
 151+ "OR (page_title LIKE '%". $dbr->strencode( $term2 ) ."%') ".
 152+ "OR (page_title LIKE '%". $dbr->strencode( $term3 ) ."%') ".
 153+ "OR (page_title LIKE '%". $dbr->strencode( $term4 ) ."%') "
 154+ ),
 155+ __METHOD__,
 156+ array( 'LIMIT' => $limit + 1 )
 157+ );
 158+
 159+ $ret = '';
 160+ $i = 0;
 161+ while ( ( $row = $dbr->fetchObject( $res ) ) && ( ++$i <= $limit ) ) {
 162+ if( isset( $prefix ) && !is_null( $prefix ) ) {
 163+ $ret .= $prefix;
 164+ }
 165+ $ret .= $row->page_title . "\n";
 166+ }
 167+
 168+ $term = htmlspecialchars( $term );
 169+
 170+ return $ret;
 171+}
 172+
 173+function wfSajaxSearchCategoryFCKeditor(){
 174+ $ns = NS_CATEGORY;
 175+ $dbr = wfGetDB( DB_SLAVE );
 176+ /** @todo FIXME: should use Database class */
 177+ $m_sql = "SELECT tmpSelectCat1.cl_to AS title FROM ".$dbr->tableName('categorylinks')." AS tmpSelectCat1 ".
 178+ "LEFT JOIN ".$dbr->tableName('page')." AS tmpSelectCatPage ON ( tmpSelectCat1.cl_to = tmpSelectCatPage.page_title ".
 179+ "AND tmpSelectCatPage.page_namespace =$ns ) ".
 180+ "LEFT JOIN ".$dbr->tableName('categorylinks')." AS tmpSelectCat2 ON tmpSelectCatPage.page_id = tmpSelectCat2.cl_from ".
 181+ "WHERE tmpSelectCat2.cl_from IS NULL GROUP BY tmpSelectCat1.cl_to";
 182+
 183+ $res = $dbr->query( $m_sql, __METHOD__ );
 184+
 185+ $ret = '';
 186+ $i = 0;
 187+ while ( ( $row = $dbr->fetchObject( $res ) ) ) {
 188+ $ret .= $row->title . "\n";
 189+ $sub = explode( "\n", wfSajaxSearchCategoryChildrenFCKeditor( $row->title ) );
 190+ foreach( $sub as $subrow )
 191+ if( strlen( $subrow ) > 0 )
 192+ $ret.= ' ' . $subrow . "\n";
 193+ }
 194+
 195+ return $ret;
 196+}
 197+
 198+function wfSajaxSearchCategoryChildrenFCKeditor( $m_root ){
 199+ $limit = 50;
 200+ $ns = NS_CATEGORY;
 201+ $dbr = wfGetDB( DB_SLAVE );
 202+ /// @todo FIXME: should use Database class
 203+ $sql = "SELECT tmpSelectCatPage.page_title AS title FROM ".$dbr->tableName('categorylinks')." AS tmpSelectCat ".
 204+ "LEFT JOIN ".$dbr->tableName('page')." AS tmpSelectCatPage ON tmpSelectCat.cl_from = tmpSelectCatPage.page_id ".
 205+ "WHERE tmpSelectCat.cl_to LIKE ".$dbr->addQuotes($m_root)." AND tmpSelectCatPage.page_namespace = $ns";
 206+
 207+ $res = $dbr->query( $sql, __METHOD__ );
 208+ $ret = '';
 209+ $i = 0;
 210+ while ( ( $row = $dbr->fetchObject( $res ) ) ) {
 211+ $ret .= $row->title . "\n";
 212+ $sub = explode( "\n", wfSajaxSearchCategoryChildrenFCKeditor( $row->title ) );
 213+ foreach( $sub as $subrow )
 214+ if( strlen( $subrow ) > 0 )
 215+ $ret.= ' ' . $subrow . "\n";
 216+ }
 217+
 218+ return $ret;
 219+}
 220+
 221+function wfSajaxSearchTemplateFCKeditor( $empty ) {
 222+ $dbr = wfGetDB( DB_SLAVE );
 223+ $res = $dbr->select( 'page',
 224+ 'page_title',
 225+ array( 'page_namespace' => NS_TEMPLATE ),
 226+ __METHOD__,
 227+ array( 'ORDER BY' => 'page_title' )
 228+ );
 229+
 230+ $ret = '';
 231+ while ( $row = $dbr->fetchObject( $res ) ) {
 232+ $ret .= $row->page_title . "\n";
 233+ }
 234+
 235+ return $ret;
 236+}
 237+
 238+function wfSajaxWikiToHTML( $wiki ) {
 239+ global $wgTitle;
 240+
 241+ $options = new FCKeditorParserOptions();
 242+ $options->setTidy( true );
 243+ $parser = new FCKeditorParser();
 244+ $parser->setOutputType( OT_HTML );
 245+
 246+ wfSajaxToggleFCKeditor( 'show' ); // FCKeditor was switched to visible
 247+ return str_replace( '<!-- Tidy found serious XHTML errors -->', '', $parser->parse( $wiki, $wgTitle, $options )->getText() );
 248+}
 249+
 250+function wfSajaxToggleFCKeditor( $data ) {
 251+ if( $data == 'show' ){
 252+ $_SESSION['showMyFCKeditor'] = RTE_VISIBLE; // visible last time
 253+ } else {
 254+ $_SESSION['showMyFCKeditor'] = 0; // invisible
 255+ }
 256+ return 'SUCCESS';
 257+}
 258+
 259+/**
 260+ * Function converts an Javascript escaped string back into a string with
 261+ * specified charset (default is UTF-8).
 262+ * Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
 263+ *
 264+ * @param $source String escaped with Javascript's escape() function
 265+ * @param $iconv_to String destination character set will be used as second parameter
 266+ * in the iconv function. Default is UTF-8.
 267+ * @return string
 268+ */
 269+function js_unescape( $source, $iconv_to = 'UTF-8' ) {
 270+ $decodedStr = '';
 271+ $pos = 0;
 272+ $len = strlen ( $source );
 273+
 274+ while ( $pos < $len ) {
 275+ $charAt = substr ( $source, $pos, 1 );
 276+ if ( $charAt == '%' ) {
 277+ $pos++;
 278+ $charAt = substr ( $source, $pos, 1 );
 279+
 280+ if ( $charAt == 'u' ) {
 281+ // we got a unicode character
 282+ $pos++;
 283+ $unicodeHexVal = substr ( $source, $pos, 4 );
 284+ $unicode = hexdec ( $unicodeHexVal );
 285+ $decodedStr .= codepointToUtf8( $unicode );
 286+ $pos += 4;
 287+ } else {
 288+ // we have an escaped ascii character
 289+ $hexVal = substr ( $source, $pos, 2 );
 290+ $decodedStr .= chr ( hexdec ( $hexVal ) );
 291+ $pos += 2;
 292+ }
 293+ } else {
 294+ $decodedStr .= $charAt;
 295+ $pos++;
 296+ }
 297+ }
 298+
 299+ if ( $iconv_to != "UTF-8" ) {
 300+ $decodedStr = iconv( "utf-8", $iconv_to, $decodedStr );
 301+ }
 302+
 303+ return $decodedStr;
 304+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorSajax.body.php
___________________________________________________________________
Added: svn:eol-style
1305 + native
Index: trunk/extensions/FCKeditor/FCKeditorParserOptions.body.php
@@ -0,0 +1,13 @@
 2+<?php
 3+
 4+class FCKeditorParserOptions extends ParserOptions {
 5+ function getNumberHeadings() { return false; }
 6+ function getEditSection() { return false; }
 7+
 8+ function getSkin( $title = null ) {
 9+ if ( !isset( $this->mSkin ) ) {
 10+ $this->mSkin = new FCKeditorSkin( $this->mUser->getSkin( $title ) );
 11+ }
 12+ return $this->mSkin;
 13+ }
 14+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorParserOptions.body.php
___________________________________________________________________
Added: svn:eol-style
115 + native
Index: trunk/extensions/FCKeditor/css/user.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/user.gif
___________________________________________________________________
Added: svn:mime-type
216 + image/gif
Index: trunk/extensions/FCKeditor/css/audio.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/audio.png
___________________________________________________________________
Added: svn:mime-type
317 + image/png
Index: trunk/extensions/FCKeditor/css/required.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/required.gif
___________________________________________________________________
Added: svn:mime-type
418 + image/gif
Index: trunk/extensions/FCKeditor/css/wiki.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/wiki.png
___________________________________________________________________
Added: svn:mime-type
519 + image/png
Index: trunk/extensions/FCKeditor/css/video.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/video.png
___________________________________________________________________
Added: svn:mime-type
620 + image/png
Index: trunk/extensions/FCKeditor/css/headbg.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
Property changes on: trunk/extensions/FCKeditor/css/headbg.jpg
___________________________________________________________________
Added: svn:mime-type
721 + image/jpeg
Index: trunk/extensions/FCKeditor/css/bullet.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/bullet.gif
___________________________________________________________________
Added: svn:mime-type
822 + image/gif
Index: trunk/extensions/FCKeditor/css/file_icon.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/file_icon.gif
___________________________________________________________________
Added: svn:mime-type
923 + image/gif
Index: trunk/extensions/FCKeditor/css/mail_icon.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/mail_icon.gif
___________________________________________________________________
Added: svn:mime-type
1024 + image/gif
Index: trunk/extensions/FCKeditor/css/fckeditor-rtl.css
@@ -0,0 +1,232 @@
 2+/*
 3+Right-to-left fixes for MonoBook.
 4+Places sidebar on right, tweaks various alignment issues.
 5+
 6+Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
 7+
 8+Safari bugs (1.2.1):
 9+* Tabs are still appearing in left-to-right order. (Try after localizing)
 10+
 11+Opera bugs (7.23 linux):
 12+* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
 13+
 14+IE/mac bugs:
 15+* The thing barfs on Hebrew and Arabic anyway, so no point testing.
 16+
 17+Missing features due to lack of support:
 18+* external link icons
 19+
 20+To test:
 21+* Opera6
 22+* IE 5.0
 23+* etc
 24+
 25+*/
 26+body {
 27+ direction: rtl;
 28+ unicode-bidi: embed;
 29+}
 30+#column-content {
 31+ margin: 0 -12.2em 0 0;
 32+ float: left;
 33+}
 34+#column-content #content{
 35+ margin-left: 0;
 36+ margin-right: 12.2em;
 37+ border-right: 1px solid #aaaaaa;
 38+ border-left: none;
 39+}
 40+html > body .portlet {
 41+ float: right;
 42+ clear: right;
 43+}
 44+.editsection {
 45+ float: left;
 46+ margin-right: 5px;
 47+ margin-left: 0; /* bug 9122: undo default LTR */
 48+}
 49+/* recover IEMac (might be fine with the float, but usually it's close to IE */
 50+*>body .portlet {
 51+ float: none;
 52+ clear: none;
 53+}
 54+.pBody {
 55+ padding-right: 0.8em;
 56+ padding-left: 0.5em;
 57+}
 58+
 59+/* Fix alignment */
 60+.documentByLine,
 61+.portletDetails,
 62+.portletMore,
 63+#p-personal {
 64+ text-align: left;
 65+}
 66+
 67+div div.thumbcaption {
 68+ text-align: right;
 69+}
 70+
 71+div.magnify,
 72+#p-logo {
 73+ left: auto;
 74+ right: 0;
 75+}
 76+#p-personal {
 77+ left: auto;
 78+ right: 0;
 79+}
 80+
 81+#p-cactions {
 82+ left: auto;
 83+ right: 11.5em;
 84+ padding-left: 0;
 85+ padding-right: 1em;
 86+}
 87+#p-cactions li {
 88+ margin-left: 0.3em;
 89+ margin-right: 0;
 90+ float: right;
 91+}
 92+* html #p-cactions li a {
 93+ display: block;
 94+ padding-bottom: 0;
 95+}
 96+* html #p-cactions li a:hover {
 97+ padding-bottom: 0.2em;
 98+}
 99+/* offsets to distinguish the tab groups */
 100+li#ca-talk {
 101+ margin-right: auto;
 102+ margin-left: 1.6em;
 103+}
 104+li#ca-watch,li#ca-unwatch {
 105+ margin-right: 1.6em !important;
 106+}
 107+
 108+/* Fix margins for non-css2 browsers */
 109+/* top right bottom left */
 110+
 111+ul {
 112+ margin-left: 0;
 113+ margin-right: 1.5em;
 114+}
 115+ol {
 116+ margin-left: 0;
 117+ margin-right: 2.4em;
 118+}
 119+dd {
 120+ margin-left: 0;
 121+ margin-right: 1.6em;
 122+}
 123+#contentSub {
 124+ margin-right: 1em;
 125+ margin-left: 0;
 126+}
 127+.tocindent {
 128+ margin-left: 0;
 129+ margin-right: 2em;
 130+}
 131+div.tright, div.floatright, table.floatright {
 132+ clear: none;
 133+}
 134+div.tleft, div.floatleft, table.floatleft {
 135+ clear: left;
 136+}
 137+#p-personal li {
 138+ margin-left: 0;
 139+ margin-right: 1em;
 140+}
 141+
 142+li#ca-talk,
 143+li#ca-watch {
 144+ margin-right: auto;
 145+ margin-left: 1.6em;
 146+}
 147+
 148+#p-personal li {
 149+ float: left;
 150+}
 151+/* Fix link icons */
 152+.external {
 153+ padding: 0 !important;
 154+ background: none !important;
 155+}
 156+#footer {
 157+ clear: both;
 158+}
 159+* html #footer {
 160+ margin-left: 0;
 161+ margin-right: 13.6em;
 162+ border-left: 0;
 163+ border-right: 1px solid #fabd23;
 164+}
 165+* html #column-content {
 166+ float: none;
 167+ margin-left: 0;
 168+ margin-right: 0;
 169+}
 170+* html #column-content #content {
 171+ margin-left: 0;
 172+ margin-top: 3em;
 173+}
 174+* html #column-one { right: 0; }
 175+
 176+/* js pref toc */
 177+
 178+#preftoc {
 179+ margin-right: 1em;
 180+}
 181+
 182+.errorbox, .successbox, #preftoc li, .prefsection fieldset {
 183+ float: right;
 184+}
 185+
 186+.prefsection {
 187+ padding-right: 2em;
 188+}
 189+
 190+/* workaround for moz bug, displayed bullets on left side */
 191+
 192+#toc ul {
 193+ text-align: right;
 194+}
 195+
 196+#toc ul ul {
 197+ margin: 0 2em 0 0;
 198+}
 199+
 200+input#wpSave, input#wpDiff {
 201+ margin-right: 0;
 202+ margin-left: .33em;
 203+}
 204+
 205+#userlogin {
 206+ float: right;
 207+ margin: 0 0 1em 3em;
 208+}
 209+/* Convenience links to edit block and delete reasons */
 210+p.mw-ipb-conveniencelinks, p.mw-filedelete-editreasons, p.mw-delete-editreasons {
 211+ float: left;
 212+}
 213+
 214+.toggle {
 215+ margin-left: 0em;
 216+ margin-right: 2em;
 217+}
 218+table.filehistory th {
 219+ text-align: right;
 220+}
 221+
 222+/**
 223+ * Lists:
 224+ * The following lines don't have a visible effect on non-Gecko browsers
 225+ * They fix a problem ith Gecko browsers rendering lists to the right of
 226+ * left-floated objects in an RTL layout.
 227+ */
 228+html > body div#bodyContent ul {
 229+ display: table;
 230+}
 231+html > body div#bodyContent ul#filetoc {
 232+ display: block;
 233+}
\ No newline at end of file
Property changes on: trunk/extensions/FCKeditor/css/fckeditor-rtl.css
___________________________________________________________________
Added: svn:eol-style
1234 + native
Index: trunk/extensions/FCKeditor/css/document.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/document.png
___________________________________________________________________
Added: svn:mime-type
2235 + image/png
Index: trunk/extensions/FCKeditor/css/fckeditor.css
@@ -0,0 +1,1656 @@
 2+/*
 3+** MediaWiki 'monobook' style sheet for CSS2-capable browsers.
 4+** Copyright Gabriel Wicke - http://wikidev.net/
 5+** License: GPL (http://www.gnu.org/copyleft/gpl.html)
 6+**
 7+** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
 8+** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
 9+** Michael Zeltner and Geir Bækholt)
 10+** All you guys rock :)
 11+*/
 12+
 13+/**
 14+ * Stylesheet for screen. All rules not marked media-specific are shared with
 15+ * handheld.css and should be updated in tandem. The rules can't be in the
 16+ * same file because old browsers like IE5 won't obey @media rules.
 17+ *
 18+ * Rules that are screen-specific are marked with commented-out @media rules
 19+ * and indentation.
 20+ */
 21+
 22+/* @media screen { */
 23+ #column-one {
 24+ padding-top: 160px;
 25+ }
 26+/* } */
 27+/* the left column width is specified in class .portlet */
 28+
 29+/* Font size:
 30+** We take advantage of keyword scaling- browsers won't go below 9px
 31+** More at http://www.w3.org/2003/07/30-font-size
 32+** http://style.cleverchimp.com/font_size_intervals/altintervals.html
 33+*/
 34+
 35+body {
 36+ color: black;
 37+ margin: 0;
 38+ padding: 0;
 39+ font: 83% sans-serif;
 40+ width: 100%;
 41+ background: white;
 42+ line-height: 1.5em;
 43+}
 44+
 45+/* scale back up to a sane default */
 46+.visualClear {
 47+ clear: both;
 48+}
 49+
 50+/* general styles */
 51+
 52+table {
 53+ font-size: 100%;
 54+ color: black;
 55+ /* we don't want the bottom borders of <h2>s to be visible through
 56+ floated tables */
 57+ background-color: white;
 58+ margin: 0 0 0 5px;
 59+}
 60+a {
 61+ text-decoration: underline !important;
 62+ color: #002bb8 !important;
 63+ background: none;
 64+}
 65+a:visited {
 66+ color: #002bb8 !important;
 67+}
 68+a:active {
 69+ color: #002bb8 !important;
 70+}
 71+a:hover {
 72+ text-decoration: underline;
 73+}
 74+a.stub {
 75+ color: #772233;
 76+}
 77+a.new, #p-personal a.new {
 78+ color: #ba0000;
 79+}
 80+a.new:visited, #p-personal a.new:visited {
 81+ color: #a55858;
 82+}
 83+
 84+img {
 85+ border: none;
 86+ vertical-align: middle;
 87+}
 88+/* @media screen { */
 89+ p {
 90+ margin: .4em 0 .5em 5px;
 91+ line-height: 1.5em;
 92+ }
 93+/* } */
 94+p img {
 95+ margin: 0;
 96+}
 97+
 98+hr {
 99+ height: 1px;
 100+ color: #aaa;
 101+ background-color: #aaa;
 102+ border: 0;
 103+ margin: .2em 0 .2em 0;
 104+}
 105+
 106+h1, h2, h3, h4, h5, h6 {
 107+ color: black;
 108+ background: none;
 109+ font-weight: normal;
 110+ margin: 0 0 0 5px;
 111+ padding-top: .5em;
 112+ padding-bottom: .17em;
 113+ border-bottom: 1px solid #aaa;
 114+}
 115+h1 { font-size: 188%; }
 116+h1 .editsection { font-size: 53%; }
 117+h2 { font-size: 150%; }
 118+h2 .editsection { font-size: 67%; }
 119+h3, h4, h5, h6 {
 120+ border-bottom: none;
 121+ font-weight: bold;
 122+}
 123+h3 { font-size: 132%; }
 124+h3 .editsection { font-size: 76%; font-weight: normal; }
 125+h4 { font-size: 116%; }
 126+h4 .editsection { font-size: 86%; font-weight: normal; }
 127+h5 { font-size: 100%; }
 128+h5 .editsection { font-weight: normal; }
 129+h6 { font-size: 80%; }
 130+h6 .editsection { font-size: 125%; font-weight: normal; }
 131+
 132+.editsection {
 133+ float: right;
 134+ margin-left: 5px;
 135+}
 136+
 137+ul {
 138+ line-height: 1.5em;
 139+ list-style-type: square;
 140+ margin: .3em 0 0 1.5em;
 141+ padding: 0;
 142+ list-style-image: url(bullet.gif);
 143+}
 144+ol {
 145+ line-height: 1.5em;
 146+ margin: .3em 0 0 3.2em;
 147+ padding: 0;
 148+ list-style-image: none;
 149+}
 150+li {
 151+ margin-bottom: .1em;
 152+}
 153+dt {
 154+ font-weight: bold;
 155+ margin-bottom: .1em;
 156+}
 157+dl {
 158+ margin-top: .2em;
 159+ margin-bottom: .5em;
 160+}
 161+dd {
 162+ line-height: 1.5em;
 163+ margin-left: 2em;
 164+ margin-bottom: .1em;
 165+}
 166+
 167+fieldset {
 168+ border: 1px solid #2f6fab;
 169+ margin: 1em 0 1em 0;
 170+ padding: 0 1em 1em;
 171+ line-height: 1.5em;
 172+}
 173+legend {
 174+ padding: .5em;
 175+ font-size: 95%;
 176+}
 177+form {
 178+ border: none;
 179+ margin: 0;
 180+}
 181+
 182+textarea {
 183+ width: 100%;
 184+ padding: .1em;
 185+}
 186+
 187+input.historysubmit {
 188+ padding: 0 .3em .3em .3em !important;
 189+ font-size: 94%;
 190+ cursor: pointer;
 191+ height: 1.7em !important;
 192+ margin-left: 1.6em;
 193+}
 194+select {
 195+ vertical-align: top;
 196+}
 197+abbr, acronym, .explain {
 198+ border-bottom: 1px dotted black;
 199+ color: black;
 200+ background: none;
 201+ cursor: help;
 202+}
 203+q {
 204+ font-family: Times, "Times New Roman", serif;
 205+ font-style: italic;
 206+}
 207+/* disabled for now
 208+blockquote {
 209+ font-family: Times, "Times New Roman", serif;
 210+ font-style: italic;
 211+}*/
 212+code {
 213+ background-color: #f9f9f9;
 214+}
 215+pre {
 216+ padding: 1em;
 217+ border: 1px dashed #2f6fab;
 218+ color: black;
 219+ background-color: #f9f9f9;
 220+ line-height: 1.1em;
 221+}
 222+
 223+/*
 224+** the main content area
 225+*/
 226+
 227+/* @media screen { */
 228+ #siteSub {
 229+ display: none;
 230+ }
 231+ #jump-to-nav {
 232+ display: none;
 233+ }
 234+/* } */
 235+
 236+#contentSub, #contentSub2 {
 237+ font-size: 84%;
 238+ line-height: 1.2em;
 239+ margin: 0 0 1.4em 1em;
 240+ color: #7d7d7d;
 241+ width: auto;
 242+}
 243+span.subpages {
 244+ display: block;
 245+}
 246+
 247+/* Some space under the headers in the content area */
 248+h1, h2 {
 249+ margin-bottom: .6em;
 250+}
 251+h3, h4, h5 {
 252+ margin-bottom: .3em;
 253+}
 254+.firstHeading {
 255+ margin-bottom: .1em;
 256+}
 257+
 258+/* user notification thing */
 259+.usermessage {
 260+ background-color: #ffce7b;
 261+ border: 1px solid #ffa500;
 262+ color: black;
 263+ font-weight: bold;
 264+ margin: 2em 0 1em;
 265+ padding: .5em 1em;
 266+ vertical-align: middle;
 267+}
 268+#siteNotice {
 269+ text-align: center;
 270+ font-size: 95%;
 271+ padding: 0 .9em;
 272+}
 273+#siteNotice p {
 274+ margin: 0;
 275+ padding: 0;
 276+}
 277+.error {
 278+ color: red;
 279+ font-size: larger;
 280+}
 281+.errorbox, .successbox {
 282+ font-size: larger;
 283+ border: 2px solid;
 284+ padding: .5em 1em;
 285+ float: left;
 286+ margin-bottom: 2em;
 287+ color: #000;
 288+}
 289+.errorbox {
 290+ border-color: red;
 291+ background-color: #fff2f2;
 292+}
 293+.successbox {
 294+ border-color: green;
 295+ background-color: #dfd;
 296+}
 297+.errorbox h2, .successbox h2 {
 298+ font-size: 1em;
 299+ font-weight: bold;
 300+ display: inline;
 301+ margin: 0 .5em 0 0;
 302+ border: none;
 303+}
 304+
 305+#catlinks {
 306+ border: 1px solid #aaa;
 307+ background-color: #f9f9f9;
 308+ padding: 5px;
 309+ margin-top: 1em;
 310+ clear: both;
 311+}
 312+/* currently unused, intended to be used by a metadata box
 313+in the bottom-right corner of the content area */
 314+.documentDescription {
 315+ /* The summary text describing the document */
 316+ font-weight: bold;
 317+ display: block;
 318+ margin: 1em 0;
 319+ line-height: 1.5em;
 320+}
 321+.documentByLine {
 322+ text-align: right;
 323+ font-size: 90%;
 324+ clear: both;
 325+ font-weight: normal;
 326+ color: #76797c;
 327+}
 328+
 329+/* emulate center */
 330+.center {
 331+ width: 100%;
 332+ text-align: center;
 333+}
 334+*.center * {
 335+ margin-left: auto;
 336+ margin-right: auto;
 337+}
 338+/* small for tables and similar */
 339+.small, .small * {
 340+ font-size: 94%;
 341+}
 342+table.small {
 343+ font-size: 100%;
 344+}
 345+
 346+/*
 347+** content styles
 348+*/
 349+
 350+#toc,
 351+.toc,
 352+.mw-warning {
 353+ border: 1px solid #aaa;
 354+ background-color: #f9f9f9;
 355+ padding: 5px;
 356+ font-size: 95%;
 357+}
 358+#toc h2,
 359+.toc h2 {
 360+ display: inline;
 361+ border: none;
 362+ padding: 0;
 363+ font-size: 100%;
 364+ font-weight: bold;
 365+}
 366+#toc #toctitle,
 367+.toc #toctitle,
 368+#toc .toctitle,
 369+.toc .toctitle {
 370+ text-align: center;
 371+}
 372+#toc ul,
 373+.toc ul {
 374+ list-style-type: none;
 375+ list-style-image: none;
 376+ margin-left: 0;
 377+ padding-left: 0;
 378+ text-align: left;
 379+}
 380+#toc ul ul,
 381+.toc ul ul {
 382+ margin: 0 0 0 2em;
 383+}
 384+#toc .toctoggle,
 385+.toc .toctoggle {
 386+ font-size: 94%;
 387+}
 388+
 389+.mw-warning {
 390+ margin-left: 50px;
 391+ margin-right: 50px;
 392+ text-align: center;
 393+}
 394+
 395+/* images */
 396+div.floatright, table.floatright {
 397+ clear: right;
 398+ float: right;
 399+ position: relative;
 400+ margin: 0 0 .5em .5em;
 401+ border: 0;
 402+/*
 403+ border: .5em solid white;
 404+ border-width: .5em 0 .8em 1.4em;
 405+*/
 406+}
 407+div.floatright p { font-style: italic; }
 408+div.floatleft, table.floatleft {
 409+ float: left;
 410+ clear: left;
 411+ position: relative;
 412+ margin: 0 .5em .5em 0;
 413+ border: 0;
 414+/*
 415+ margin: .3em .5em .5em 0;
 416+ border: .5em solid white;
 417+ border-width: .5em 1.4em .8em 0;
 418+*/
 419+}
 420+div.floatleft p { font-style: italic; }
 421+/* thumbnails */
 422+div.thumb {
 423+ margin-bottom: .5em;
 424+ border-style: solid;
 425+ border-color: white;
 426+ width: auto;
 427+}
 428+div.thumbinner {
 429+ border: 1px solid #ccc;
 430+ padding: 3px !important;
 431+ background-color: #f9f9f9;
 432+ font-size: 94%;
 433+ text-align: center;
 434+ overflow: hidden;
 435+}
 436+html .thumbimage {
 437+ border: 1px solid #ccc;
 438+}
 439+html .thumbcaption {
 440+ border: none;
 441+ text-align: left;
 442+ line-height: 1.4em;
 443+ padding: 3px !important;
 444+ font-size: 94%;
 445+}
 446+div.magnify {
 447+ float: right;
 448+ border: none !important;
 449+ background: none !important;
 450+}
 451+div.magnify a, div.magnify img {
 452+ display: block;
 453+ border: none !important;
 454+ background: none !important;
 455+}
 456+div.tright {
 457+ clear: right;
 458+ float: right;
 459+ border-width: .5em 0 .8em 1.4em;
 460+}
 461+div.tleft {
 462+ float: left;
 463+ clear: left;
 464+ margin-right: .5em;
 465+ border-width: .5em 1.4em .8em 0;
 466+}
 467+
 468+.hiddenStructure {
 469+ display: none;
 470+ speak: none;
 471+}
 472+img.tex {
 473+ vertical-align: middle;
 474+}
 475+span.texhtml {
 476+ font-family: serif;
 477+}
 478+
 479+/* Have a checkered background on images on the description pages and in galleries
 480+ to make transparency visible
 481+
 482+#file img, .gallerybox .thumb img {
 483+ background: url(Checker-16x16.png) repeat;
 484+}
 485+*/
 486+
 487+/*
 488+** classes for special content elements like town boxes
 489+** intended to be referenced directly from the wiki src
 490+*/
 491+
 492+/*
 493+** User styles
 494+*/
 495+/* table standards */
 496+table.rimage {
 497+ float: right;
 498+ position: relative;
 499+ margin-left: 1em;
 500+ margin-bottom: 1em;
 501+ text-align: center;
 502+}
 503+.toccolours {
 504+ border: 1px solid #aaa;
 505+ background-color: #f9f9f9;
 506+ padding: 5px;
 507+ font-size: 95%;
 508+}
 509+div.townBox {
 510+ position: relative;
 511+ float: right;
 512+ background: white;
 513+ margin-left: 1em;
 514+ border: 1px solid gray;
 515+ padding: .3em;
 516+ width: 200px;
 517+ overflow: hidden;
 518+ clear: right;
 519+}
 520+div.townBox dl {
 521+ padding: 0;
 522+ margin: 0 0 .3em;
 523+ font-size: 96%;
 524+}
 525+div.townBox dl dt {
 526+ background: none;
 527+ margin: .4em 0 0;
 528+}
 529+div.townBox dl dd {
 530+ margin: .1em 0 0 1.1em;
 531+ background-color: #f3f3f3;
 532+}
 533+
 534+/*
 535+** edit views etc
 536+*/
 537+.special li {
 538+ line-height: 1.4em;
 539+ margin: 0;
 540+ padding: 0;
 541+}
 542+
 543+/* Page history styling */
 544+/* the auto-generated edit comments */
 545+.autocomment {
 546+ color: gray;
 547+}
 548+#pagehistory span.user {
 549+ margin-left: 1.4em;
 550+ margin-right: .4em;
 551+}
 552+#pagehistory span.minor {
 553+ font-weight: bold;
 554+}
 555+#pagehistory li {
 556+ border: 1px solid white;
 557+}
 558+#pagehistory li.selected {
 559+ background-color: #f9f9f9;
 560+ border: 1px dashed #aaa;
 561+}
 562+
 563+/*
 564+** Diff rendering
 565+*/
 566+table.diff, td.diff-otitle, td.diff-ntitle {
 567+ background-color: white;
 568+}
 569+td.diff-addedline {
 570+ background: #cfc;
 571+ font-size: smaller;
 572+}
 573+td.diff-deletedline {
 574+ background: #ffa;
 575+ font-size: smaller;
 576+}
 577+td.diff-context {
 578+ background: #eee;
 579+ font-size: smaller;
 580+}
 581+.diffchange {
 582+ color: red;
 583+ font-weight: bold;
 584+ text-decoration: none;
 585+}
 586+
 587+/*
 588+** keep the whitespace in front of the ^=, hides rule from konqueror
 589+** this is css3, the validator doesn't like it when validating as css2
 590+*/
 591+ a.external,
 592+ a[href ^="gopher://"] {
 593+ background: url(external.png) center right no-repeat;
 594+ padding-right: 13px;
 595+}
 596+ a[href ^="https://"],
 597+.link-https {
 598+ background: url(lock_icon.gif) center right no-repeat;
 599+ padding-right: 16px;
 600+}
 601+ a[href ^="mailto:"],
 602+.link-mailto {
 603+ background: url(mail_icon.gif) center right no-repeat;
 604+ padding-right: 18px;
 605+}
 606+ a[href ^="news://"] {
 607+ background: url(news_icon.png) center right no-repeat;
 608+ padding-right: 18px;
 609+}
 610+ a[href ^="ftp://"],
 611+.link-ftp {
 612+ background: url(file_icon.gif) center right no-repeat;
 613+ padding-right: 18px;
 614+}
 615+ a[href ^="irc://"],
 616+.link-irc {
 617+ background: url(discussionitem_icon.gif) center right no-repeat;
 618+ padding-right: 18px;
 619+}
 620+a.external[href $=".ogg"], a.external[href $=".OGG"],
 621+a.external[href $=".mid"], a.external[href $=".MID"],
 622+a.external[href $=".midi"], a.external[href $=".MIDI"],
 623+a.external[href $=".mp3"], a.external[href $=".MP3"],
 624+a.external[href $=".wav"], a.external[href $=".WAV"],
 625+a.external[href $=".wma"], a.external[href $=".WMA"],
 626+.link-audio {
 627+ background: url("audio.png") center right no-repeat;
 628+ padding-right: 13px;
 629+}
 630+a.external[href $=".ogm"], a.external[href $=".OGM"],
 631+a.external[href $=".avi"], a.external[href $=".AVI"],
 632+a.external[href $=".mpeg"], a.external[href $=".MPEG"],
 633+a.external[href $=".mpg"], a.external[href $=".MPG"],
 634+.link-video {
 635+ background: url("video.png") center right no-repeat;
 636+ padding-right: 13px;
 637+}
 638+a.external[href $=".pdf"], a.external[href $=".PDF"],
 639+a.external[href *=".pdf#"], a.external[href *=".PDF#"],
 640+a.external[href *=".pdf?"], a.external[href *=".PDF?"],
 641+.link-document {
 642+ background: url("document.png") center right no-repeat;
 643+ padding-right: 12px;
 644+}
 645+
 646+/* disable interwiki styling */
 647+a.extiw,
 648+a.extiw:active {
 649+ color: #36b;
 650+ background: none;
 651+ padding: 0;
 652+}
 653+a.external {
 654+ color: #36b;
 655+}
 656+/* this can be used in the content area to switch off
 657+special external link styling */
 658+.plainlinks a {
 659+ background: none !important;
 660+ padding: 0 !important;
 661+}
 662+/*
 663+** Structural Elements
 664+*/
 665+
 666+/*
 667+** general portlet styles (elements in the quickbar)
 668+*/
 669+.portlet {
 670+ border: none;
 671+ margin: 0 0 .5em;
 672+ padding: 0;
 673+ float: none;
 674+ width: 11.6em;
 675+ overflow: hidden;
 676+}
 677+.portlet h4 {
 678+ font-size: 95%;
 679+ font-weight: normal;
 680+ white-space: nowrap;
 681+}
 682+.portlet h5 {
 683+ background: transparent;
 684+ padding: 0 1em 0 .5em;
 685+ display: inline;
 686+ height: 1em;
 687+ text-transform: lowercase;
 688+ font-size: 91%;
 689+ font-weight: normal;
 690+ white-space: nowrap;
 691+}
 692+.portlet h6 {
 693+ background: #ffae2e;
 694+ border: 1px solid #2f6fab;
 695+ border-style: solid solid none solid;
 696+ padding: 0 1em 0 1em;
 697+ text-transform: lowercase;
 698+ display: block;
 699+ font-size: 1em;
 700+ height: 1.2em;
 701+ font-weight: normal;
 702+ white-space: nowrap;
 703+}
 704+.pBody {
 705+ font-size: 95%;
 706+ background-color: white;
 707+ color: black;
 708+ border-collapse: collapse;
 709+ border: 1px solid #aaa;
 710+ padding: 0 .8em .3em .5em;
 711+}
 712+.portlet h1,
 713+.portlet h2,
 714+.portlet h3,
 715+.portlet h4 {
 716+ margin: 0;
 717+ padding: 0;
 718+}
 719+.portlet ul {
 720+ line-height: 1.5em;
 721+ list-style-type: square;
 722+ list-style-image: url(bullet.gif);
 723+ font-size: 95%;
 724+}
 725+.portlet li {
 726+ padding: 0;
 727+ margin: 0;
 728+}
 729+
 730+/*
 731+** Logo properties
 732+*/
 733+
 734+/* @media screen { */
 735+ #p-logo {
 736+ top: 0;
 737+ left: 0;
 738+ position: absolute; /*needed to use z-index */
 739+ z-index: 3;
 740+ height: 155px;
 741+ width: 12em;
 742+ overflow: visible;
 743+ }
 744+ #p-logo h5 {
 745+ display: none;
 746+ }
 747+ #p-logo a,
 748+ #p-logo a:hover {
 749+ display: block;
 750+ height: 155px;
 751+ width: 12.2em;
 752+ background-repeat: no-repeat;
 753+ background-position: 35% 50% !important;
 754+ text-decoration: none;
 755+ }
 756+/* } */
 757+/*
 758+** the navigation portlet
 759+*/
 760+
 761+/* @media screen { */
 762+ #p-navigation {
 763+ position: relative;
 764+ z-index: 3;
 765+ }
 766+ #p-navigation a {
 767+ display: block;
 768+ }
 769+ #p-navigation li.active a, #p-navigation li.active a:hover {
 770+ display: inline;
 771+ }
 772+/* } */
 773+
 774+#p-navigation .pBody {
 775+ padding-right: 0;
 776+}
 777+
 778+#p-navigation li.active a, #p-navigation li.active a:hover {
 779+ text-decoration: none;
 780+ font-weight: bold;
 781+}
 782+
 783+
 784+/*
 785+** Search portlet
 786+*/
 787+/* @media screen { */
 788+ #p-search {
 789+ position: relative;
 790+ z-index: 3;
 791+ }
 792+/* } */
 793+input.searchButton {
 794+ margin-top: 1px;
 795+ font-size: 95%;
 796+}
 797+#searchGoButton {
 798+ padding-left: .5em;
 799+ padding-right: .5em;
 800+ font-weight: bold;
 801+}
 802+#searchInput {
 803+ width: 10.9em;
 804+ margin: 0;
 805+ font-size: 95%;
 806+}
 807+#p-search .pBody {
 808+ padding: .5em .4em .4em .4em;
 809+ text-align: center;
 810+}
 811+
 812+/*
 813+** the personal toolbar
 814+*/
 815+/* @media screen { */
 816+ #p-personal {
 817+ position: absolute;
 818+ left: 0;
 819+ top: 0;
 820+ z-index: 0;
 821+ }
 822+ #p-personal {
 823+ width: 100%;
 824+ white-space: nowrap;
 825+ padding: 0;
 826+ margin: 0;
 827+ border: none;
 828+ background: none;
 829+ overflow: visible;
 830+ line-height: 1.2em;
 831+ }
 832+ #p-personal h5 {
 833+ display: none;
 834+ }
 835+ #p-personal .portlet,
 836+ #p-personal .pBody {
 837+ z-index: 0;
 838+ padding: 0;
 839+ margin: 0;
 840+ border: none;
 841+ overflow: visible;
 842+ background: none;
 843+ }
 844+/* this is the ul contained in the portlet */
 845+ #p-personal ul {
 846+ border: none;
 847+ line-height: 1.4em;
 848+ color: #2f6fab;
 849+ padding: 0 2em 0 3em;
 850+ margin: 0;
 851+ text-align: right;
 852+ list-style: none;
 853+ z-index: 0;
 854+ background: none;
 855+ cursor: default;
 856+ }
 857+ #p-personal li {
 858+ z-index: 0;
 859+ border: none;
 860+ padding: 0;
 861+ display: inline;
 862+ color: #2f6fab;
 863+ margin-left: 1em;
 864+ line-height: 1.2em;
 865+ background: none;
 866+ }
 867+ #p-personal li a {
 868+ text-decoration: none;
 869+ color: #005896;
 870+ padding-bottom: .2em;
 871+ background: none;
 872+ }
 873+ #p-personal li a:hover {
 874+ background-color: white;
 875+ padding-bottom: .2em;
 876+ text-decoration: none;
 877+ }
 878+ #p-personal li.active a:hover {
 879+ background-color: transparent;
 880+ }
 881+ /* the icon in front of the user name, single quotes
 882+ in bg url to hide it from iemac */
 883+ li#pt-userpage,
 884+ li#pt-anonuserpage,
 885+ li#pt-login {
 886+ background: url(user.gif) top left no-repeat;
 887+ padding-left: 20px;
 888+ text-transform: none;
 889+ }
 890+/* } */
 891+#p-personal ul {
 892+ text-transform: lowercase;
 893+}
 894+#p-personal li.active {
 895+ font-weight: bold;
 896+}
 897+/*
 898+** the page-related actions- page/talk, edit etc
 899+*/
 900+/* @media screen { */
 901+ #p-cactions {
 902+ position: absolute;
 903+ top: 1.3em;
 904+ left: 11.5em;
 905+ margin: 0;
 906+ white-space: nowrap;
 907+ width: 76%;
 908+ line-height: 1.1em;
 909+ overflow: visible;
 910+ background: none;
 911+ border-collapse: collapse;
 912+ padding-left: 1em;
 913+ list-style: none;
 914+ font-size: 95%;
 915+ }
 916+ #p-cactions ul {
 917+ list-style: none;
 918+ }
 919+ #p-cactions li {
 920+ display: inline;
 921+ border: 1px solid #aaa;
 922+ border-bottom: none;
 923+ padding: 0 0 .1em 0;
 924+ margin: 0 .3em 0 0;
 925+ overflow: visible;
 926+ background: white;
 927+ }
 928+ #p-cactions li.selected {
 929+ border-color: #fabd23;
 930+ padding: 0 0 .2em 0;
 931+ font-weight: bold;
 932+ }
 933+ #p-cactions li a {
 934+ background-color: #fbfbfb;
 935+ color: #002bb8;
 936+ border: none;
 937+ padding: 0 .8em .3em;
 938+ position: relative;
 939+ z-index: 0;
 940+ margin: 0;
 941+ text-decoration: none;
 942+ }
 943+ #p-cactions li.selected a {
 944+ z-index: 3;
 945+ padding: 0 1em .2em!important;
 946+ background-color: white;
 947+ }
 948+ #p-cactions .new a {
 949+ color: #ba0000;
 950+ }
 951+ #p-cactions li a:hover {
 952+ z-index: 3;
 953+ text-decoration: none;
 954+ background-color: white;
 955+ }
 956+ #p-cactions h5 {
 957+ display: none;
 958+ }
 959+ #p-cactions li.istalk {
 960+ margin-right: 0;
 961+ }
 962+ #p-cactions li.istalk a {
 963+ padding-right: .5em;
 964+ }
 965+ #p-cactions #ca-addsection a {
 966+ padding-left: .4em;
 967+ padding-right: .4em;
 968+ }
 969+ /* offsets to distinguish the tab groups */
 970+ li#ca-talk {
 971+ margin-right: 1.6em;
 972+ }
 973+ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
 974+ margin-left: 1.6em;
 975+ }
 976+ #p-cactions .pBody {
 977+ font-size: 1em;
 978+ background-color: transparent;
 979+ color: inherit;
 980+ border-collapse: inherit;
 981+ border: 0;
 982+ padding: 0;
 983+ }
 984+/* } */
 985+#p-cactions .hiddenStructure {
 986+ display: none;
 987+}
 988+#p-cactions li a {
 989+ text-transform: lowercase;
 990+}
 991+
 992+/*
 993+** the remaining portlets
 994+*/
 995+/* @media screen { */
 996+ #p-tbx,
 997+ #p-lang {
 998+ position: relative;
 999+ z-index: 3;
 1000+ }
 1001+/* } */
 1002+
 1003+/* TODO: #t-iscite is only used by the Cite extension, come up with some
 1004+ * system which allows extensions to add to this file on the fly
 1005+ */
 1006+#t-ispermalink, #t-iscite {
 1007+ color: #999;
 1008+}
 1009+/*
 1010+** footer
 1011+*/
 1012+#footer {
 1013+ background-color: white;
 1014+ border-top: 1px solid #fabd23;
 1015+ border-bottom: 1px solid #fabd23;
 1016+ margin: .6em 0 1em 0;
 1017+ padding: .4em 0 1.2em 0;
 1018+ text-align: center;
 1019+ font-size: 90%;
 1020+}
 1021+#footer li {
 1022+ display: inline;
 1023+ margin: 0 1.3em;
 1024+}
 1025+#f-poweredbyico, #f-copyrightico {
 1026+ margin: 0 8px;
 1027+ position: relative;
 1028+ top: -2px; /* Bump it up just a tad */
 1029+}
 1030+#f-poweredbyico {
 1031+ float: right;
 1032+ height: 1%;
 1033+}
 1034+#f-copyrightico {
 1035+ float: left;
 1036+ height: 1%;
 1037+}
 1038+
 1039+/* js pref toc */
 1040+#preftoc {
 1041+ margin: 0;
 1042+ padding: 0;
 1043+ width: 100%;
 1044+ clear: both;
 1045+}
 1046+#preftoc li {
 1047+ background-color: #f0f0f0;
 1048+ color: #000;
 1049+}
 1050+/* @media screen { */
 1051+ #preftoc li {
 1052+ margin: 1px -2px 1px 2px;
 1053+ float: left;
 1054+ padding: 2px 0 3px 0;
 1055+ border: 1px solid #fff;
 1056+ border-right-color: #716f64;
 1057+ border-bottom: 0;
 1058+ position: relative;
 1059+ white-space: nowrap;
 1060+ list-style-type: none;
 1061+ list-style-image: none;
 1062+ z-index: 3;
 1063+ }
 1064+/* } */
 1065+#preftoc li.selected {
 1066+ font-weight: bold;
 1067+ background-color: #f9f9f9;
 1068+ border: 1px solid #aaa;
 1069+ border-bottom: none;
 1070+ cursor: default;
 1071+ top: 1px;
 1072+ padding-top: 2px;
 1073+ margin-right: -3px;
 1074+}
 1075+#preftoc > li.selected {
 1076+ top: 2px;
 1077+}
 1078+#preftoc a,
 1079+#preftoc a:active {
 1080+ display: block;
 1081+ color: #000;
 1082+ padding: 0 .7em;
 1083+ position: relative;
 1084+ text-decoration: none;
 1085+}
 1086+#preftoc li.selected a {
 1087+ cursor: default;
 1088+ text-decoration: none;
 1089+}
 1090+#prefcontrol {
 1091+ padding-top: 2em;
 1092+ clear: both;
 1093+}
 1094+#preferences {
 1095+ margin: 0;
 1096+ border: 1px solid #aaa;
 1097+ clear: both;
 1098+ padding: 1.5em;
 1099+ background-color: #F9F9F9;
 1100+}
 1101+.prefsection {
 1102+ border: none;
 1103+ padding: 0;
 1104+ margin: 0;
 1105+}
 1106+.prefsection fieldset {
 1107+ border: 1px solid #aaa;
 1108+ float: left;
 1109+ margin-right: 2em;
 1110+}
 1111+.prefsection legend {
 1112+ font-weight: bold;
 1113+}
 1114+.prefsection table, .prefsection legend {
 1115+ background-color: #F9F9F9;
 1116+}
 1117+/* @media screen { */
 1118+ .mainLegend {
 1119+ display: none;
 1120+ }
 1121+/* } */
 1122+div.prefsectiontip {
 1123+ font-size: 95%;
 1124+ margin-top: 0;
 1125+ background-color: #FFC1C1;
 1126+ padding: .2em .7em;
 1127+ clear: both;
 1128+}
 1129+.btnSavePrefs {
 1130+ font-weight: bold;
 1131+ padding-left: .3em;
 1132+ padding-right: .3em;
 1133+}
 1134+
 1135+.preferences-login {
 1136+ clear: both;
 1137+ margin-bottom: 1.5em;
 1138+}
 1139+
 1140+.prefcache {
 1141+ font-size: 90%;
 1142+ margin-top: 2em;
 1143+}
 1144+
 1145+div#userloginForm form,
 1146+div#userlogin form#userlogin2 {
 1147+ margin: 0 3em 1em 0;
 1148+ border: 1px solid #aaa;
 1149+ clear: both;
 1150+ padding: 1.5em 2em;
 1151+ background-color: #f9f9f9;
 1152+ float: left;
 1153+}
 1154+
 1155+div#userloginForm table,
 1156+div#userlogin form#userlogin2 table {
 1157+ background-color: #f9f9f9;
 1158+}
 1159+
 1160+div#userloginForm h2,
 1161+div#userlogin form#userlogin2 h2 {
 1162+ padding-top: 0;
 1163+}
 1164+
 1165+div#userlogin .captcha {
 1166+ border: 1px solid #bbb;
 1167+ padding: 1.5em 2em;
 1168+ width: 400px;
 1169+ background-color: white;
 1170+}
 1171+
 1172+
 1173+#userloginprompt, #languagelinks {
 1174+ font-size: 85%;
 1175+}
 1176+
 1177+#login-sectiontip {
 1178+ font-size: 85%;
 1179+ line-height: 1.2;
 1180+ padding-top: 2em;
 1181+}
 1182+
 1183+#userlogin .loginText, #userlogin .loginPassword {
 1184+ width: 12em;
 1185+}
 1186+
 1187+#userloginlink a, #wpLoginattempt, #wpCreateaccount {
 1188+ font-weight: bold;
 1189+}
 1190+
 1191+/* @media screen { */
 1192+ /*
 1193+ ** IE/Mac fixes, hope to find a validating way to move this
 1194+ ** to a separate stylesheet. This would work but doesn't validate:
 1195+ ** @import("IEMacFixes.css");
 1196+ */
 1197+ /* tabs: border on the a, not the div */
 1198+ * > html #p-cactions li { border: none; }
 1199+ * > html #p-cactions li a {
 1200+ border: 1px solid #aaa;
 1201+ border-bottom: none;
 1202+ }
 1203+ * > html #p-cactions li.selected a { border-color: #fabd23; }
 1204+ /* footer icons need a fixed width */
 1205+ * > html #f-poweredbyico,
 1206+ * > html #f-copyrightico { width: 88px; }
 1207+ * > html ,
 1208+ * > html pre {
 1209+ overflow-x: auto;
 1210+ width: 100%;
 1211+ padding-bottom: 25px;
 1212+ }
 1213+/* } */
 1214+
 1215+/* more IE fixes */
 1216+/* float/negative margin brokenness */
 1217+* html #footer {margin-top: 0;}
 1218+* html div.editsection { font-size: smaller; }
 1219+#pagehistory li.selected { position: relative; }
 1220+
 1221+/* Mac IE 5.0 fix; floated content turns invisible */
 1222+* > html #column-one {
 1223+ position: absolute;
 1224+ left: 0;
 1225+ top: 0;
 1226+}
 1227+* > html #footer {
 1228+ margin-left: 13.2em;
 1229+}
 1230+.redirectText {
 1231+ font-size: 150%;
 1232+ margin: 5px;
 1233+}
 1234+
 1235+.printfooter {
 1236+ display: none;
 1237+}
 1238+
 1239+.not-patrolled {
 1240+ background-color: #ffa;
 1241+}
 1242+div.patrollink {
 1243+ font-size: 75%;
 1244+ text-align: right;
 1245+}
 1246+span.newpage, span.minor, span.searchmatch, span.bot {
 1247+ font-weight: bold;
 1248+}
 1249+span.unpatrolled {
 1250+ font-weight: bold;
 1251+ color: red;
 1252+}
 1253+
 1254+span.searchmatch {
 1255+ color: red;
 1256+}
 1257+.sharedUploadNotice {
 1258+ font-style: italic;
 1259+}
 1260+
 1261+span.updatedmarker {
 1262+ color: black;
 1263+ background-color: #0f0;
 1264+}
 1265+
 1266+table.gallery {
 1267+ border: 1px solid #ccc;
 1268+ margin: 2px;
 1269+ padding: 2px;
 1270+ background-color: white;
 1271+}
 1272+
 1273+table.gallery tr {
 1274+ vertical-align: top;
 1275+}
 1276+
 1277+table.gallery td {
 1278+ vertical-align: top;
 1279+ background-color: #f9f9f9;
 1280+ border: solid 2px white;
 1281+}
 1282+/* Keep this temporarily so that cached pages will display right */
 1283+table.gallery td.galleryheader {
 1284+ text-align: center;
 1285+ font-weight: bold;
 1286+}
 1287+table.gallery caption {
 1288+ font-weight: bold;
 1289+}
 1290+
 1291+div.gallerybox {
 1292+ margin: 2px;
 1293+}
 1294+
 1295+div.gallerybox div.thumb {
 1296+ text-align: center;
 1297+ border: 1px solid #ccc;
 1298+ margin: 2px;
 1299+}
 1300+
 1301+div.gallerytext {
 1302+ font-size: 94%;
 1303+ padding: 2px 4px;
 1304+}
 1305+
 1306+span.comment {
 1307+ font-style: italic;
 1308+}
 1309+
 1310+span.changedby {
 1311+ font-size: 95%;
 1312+}
 1313+
 1314+.previewnote {
 1315+ text-indent: 3em;
 1316+ color: #c00;
 1317+ border-bottom: 1px solid #aaa;
 1318+ padding-bottom: 1em;
 1319+ margin-bottom: 1em;
 1320+}
 1321+
 1322+.previewnote p {
 1323+ margin: 0;
 1324+ padding: 0;
 1325+}
 1326+
 1327+.editExternally {
 1328+ border: 1px solid gray;
 1329+ background-color: #ffffff;
 1330+ padding: 3px;
 1331+ margin-top: 0.5em;
 1332+ float: left;
 1333+ font-size: small;
 1334+ text-align: center;
 1335+}
 1336+.editExternallyHelp {
 1337+ font-style: italic;
 1338+ color: gray;
 1339+}
 1340+
 1341+li span.deleted, span.history-deleted {
 1342+ text-decoration: line-through;
 1343+ color: #888;
 1344+ font-style: italic;
 1345+}
 1346+
 1347+.toggle {
 1348+ margin-left: 2em;
 1349+ text-indent: -2em;
 1350+}
 1351+
 1352+/* Classes for EXIF data display */
 1353+table.mw_metadata {
 1354+ font-size: 0.8em;
 1355+ margin-left: 0.5em;
 1356+ margin-bottom: 0.5em;
 1357+ width: 300px;
 1358+}
 1359+
 1360+table.mw_metadata caption {
 1361+ font-weight: bold;
 1362+}
 1363+
 1364+table.mw_metadata th {
 1365+ font-weight: normal;
 1366+}
 1367+
 1368+table.mw_metadata td {
 1369+ padding: 0.1em;
 1370+}
 1371+
 1372+table.mw_metadata {
 1373+ border: none;
 1374+ border-collapse: collapse;
 1375+}
 1376+
 1377+table.mw_metadata td, table.mw_metadata th {
 1378+ text-align: center;
 1379+ border: 1px solid #aaaaaa;
 1380+ padding-left: 0.1em;
 1381+ padding-right: 0.1em;
 1382+}
 1383+
 1384+table.mw_metadata th {
 1385+ background-color: #f9f9f9;
 1386+}
 1387+
 1388+table.mw_metadata td {
 1389+ background-color: #fcfcfc;
 1390+}
 1391+
 1392+table.collapsed tr.collapsable {
 1393+ display: none;
 1394+}
 1395+
 1396+
 1397+/* filetoc */
 1398+ul#filetoc {
 1399+ text-align: center;
 1400+ border: 1px solid #aaaaaa;
 1401+ background-color: #f9f9f9;
 1402+ padding: 5px;
 1403+ font-size: 95%;
 1404+ margin-bottom: 0.5em;
 1405+ margin-left: 0;
 1406+ margin-right: 0;
 1407+}
 1408+
 1409+#filetoc li {
 1410+ display: inline;
 1411+ list-style-type: none;
 1412+ padding-right: 2em;
 1413+}
 1414+
 1415+input#wpSummary {
 1416+ width: 80%;
 1417+}
 1418+
 1419+/* @bug 1714 */
 1420+input#wpSave, input#wpDiff {
 1421+ margin-right: 0.33em;
 1422+}
 1423+
 1424+#editform .editOptions {
 1425+ display: inline;
 1426+}
 1427+
 1428+#wpSave {
 1429+ font-weight: bold;
 1430+}
 1431+
 1432+/* Classes for article validation */
 1433+
 1434+table.revisionform_default {
 1435+ border: 1px solid #000000;
 1436+}
 1437+
 1438+table.revisionform_focus {
 1439+ border: 1px solid #000000;
 1440+ background-color:#00BBFF;
 1441+}
 1442+
 1443+tr.revision_tr_default {
 1444+ background-color:#EEEEEE;
 1445+}
 1446+
 1447+tr.revision_tr_first {
 1448+ background-color:#DDDDDD;
 1449+}
 1450+
 1451+p.revision_saved {
 1452+ color: green;
 1453+ font-weight:bold;
 1454+}
 1455+
 1456+#mw_trackbacks {
 1457+ border: solid 1px #bbbbff;
 1458+ background-color: #eeeeff;
 1459+ padding: 0.2em;
 1460+}
 1461+
 1462+
 1463+/* Allmessages table */
 1464+
 1465+#allmessagestable th {
 1466+ background-color: #b2b2ff;
 1467+}
 1468+
 1469+#allmessagestable tr.orig {
 1470+ background-color: #ffe2e2;
 1471+}
 1472+
 1473+#allmessagestable tr.new {
 1474+ background-color: #e2ffe2;
 1475+}
 1476+
 1477+#allmessagestable tr.def {
 1478+ background-color: #f0f0ff;
 1479+}
 1480+
 1481+
 1482+/* noarticletext */
 1483+div.noarticletext {
 1484+ border: 1px solid #ccc;
 1485+ background: #fff;
 1486+ padding: .2em 1em;
 1487+ color: #000;
 1488+}
 1489+
 1490+div#searchTargetContainer {
 1491+ left: 10px;
 1492+ top: 10px;
 1493+ width: 90%;
 1494+ background: white;
 1495+}
 1496+
 1497+div#searchTarget {
 1498+ padding: 3px;
 1499+ margin: 5px;
 1500+ background: #F0F0F0;
 1501+ border: solid 1px blue;
 1502+}
 1503+
 1504+div#searchTarget ul li {
 1505+ list-style: none;
 1506+}
 1507+
 1508+div#searchTarget ul li:before {
 1509+ color: orange;
 1510+ content: "\00BB \0020";
 1511+}
 1512+
 1513+div.multipageimagenavbox {
 1514+ border: solid 1px silver;
 1515+ padding: 4px;
 1516+ margin: 1em;
 1517+ -moz-border-radius: 6px;
 1518+ background: #f0f0f0;
 1519+}
 1520+
 1521+div.multipageimagenavbox div.thumb {
 1522+ border: none;
 1523+ margin-left: 2em;
 1524+ margin-right: 2em;
 1525+}
 1526+
 1527+div.multipageimagenavbox hr {
 1528+ margin: 6px;
 1529+}
 1530+
 1531+table.multipageimage td {
 1532+ text-align: center;
 1533+}
 1534+
 1535+/** Special:Version */
 1536+
 1537+table#sv-ext, table#sv-hooks {
 1538+ margin: 1em;
 1539+ padding:0em;
 1540+}
 1541+
 1542+#sv-ext td, #sv-hooks td,
 1543+#sv-ext th, #sv-hooks th {
 1544+ border: 1px solid #A0A0A0;
 1545+ padding: 0 0.15em 0 0.15em;
 1546+}
 1547+#sv-ext th, #sv-hooks th {
 1548+ background-color: #F0F0F0;
 1549+ color: black;
 1550+ padding: 0 0.15em 0 0.15em;
 1551+}
 1552+tr.sv-space{
 1553+ height: 0.8em;
 1554+ border:none;
 1555+}
 1556+tr.sv-space td { display: none; }
 1557+
 1558+/*
 1559+ Table pager (e.g. Special:Imagelist)
 1560+ - remove underlines from the navigation link
 1561+ - collapse borders
 1562+ - set the borders to outsets (similar to Special:Allmessages)
 1563+ - remove line wrapping for all td and th, set background color
 1564+ - restore line wrapping for the last two table cells (description and size)
 1565+*/
 1566+.TablePager_nav a { text-decoration: none; }
 1567+.TablePager { border-collapse: collapse; }
 1568+.TablePager, .TablePager td, .TablePager th {
 1569+ border: 1px solid #aaaaaa;
 1570+ padding: 0 0.15em 0 0.15em;
 1571+}
 1572+.TablePager th { background-color: #eeeeff }
 1573+.TablePager td { background-color: #ffffff }
 1574+.TablePager tr:hover td { background-color: #eeeeff }
 1575+
 1576+.imagelist td, .imagelist th { white-space: nowrap }
 1577+.imagelist .TablePager_col_links { background-color: #eeeeff }
 1578+.imagelist .TablePager_col_img_description { white-space: normal }
 1579+.imagelist th.TablePager_sort { background-color: #ccccff }
 1580+
 1581+.templatesUsed { margin-top: 1.5em; }
 1582+
 1583+.mw-summary-preview {
 1584+ margin: 0.1em 0;
 1585+}
 1586+
 1587+/* Convenience links on Special:Ipblocklist */
 1588+p.mw-ipb-conveniencelinks {
 1589+ font-size: 90%;
 1590+ float: right;
 1591+}
 1592+
 1593+/**
 1594+ * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS.
 1595+ * When the day comes, it can be moved to a *real* common.css.
 1596+ */
 1597+.mw-plusminus-null { color: #aaa; }
 1598+.texvc { direction: ltr; unicode-bidi: embed; }
 1599+/* Stop floats from intruding into edit area in previews */
 1600+#toolbar, #wpTextbox1 { clear: both; }
 1601+
 1602+.MediaTransformError {
 1603+ background-color: #ccc;
 1604+ padding: 0.1em;
 1605+}
 1606+.MediaTransformError td {
 1607+ text-align: center;
 1608+ vertical-align: middle;
 1609+ font-size: 90%;
 1610+}
 1611+
 1612+
 1613+/**
 1614+ * FCKeditor specific styles
 1615+ */
 1616+
 1617+img.fck_mw_frame
 1618+{
 1619+ background-color: #F9F9F9;
 1620+ border: 1px solid #CCCCCC;
 1621+ padding: 3px !important;
 1622+}
 1623+
 1624+img.fck_mw_right
 1625+{
 1626+ margin: 0.5em 5px 0.8em 1.4em ;
 1627+ clear: right;
 1628+ float: right;
 1629+}
 1630+
 1631+img.fck_mw_left
 1632+{
 1633+ margin: 0.5em 1.4em 0.8em 0em;
 1634+ clear: left;
 1635+ float: left;
 1636+}
 1637+
 1638+img.fck_mw_center
 1639+{
 1640+ margin-left: auto;
 1641+ margin-right: auto;
 1642+ margin-bottom: 0.5em;
 1643+ display: block;
 1644+}
 1645+
 1646+img.fck_mw_notfound
 1647+{
 1648+ font-size: 1px;
 1649+ height: 25px;
 1650+ width: 25px;
 1651+ overflow: hidden ;
 1652+}
 1653+
 1654+img.fck_mw_border
 1655+{
 1656+ border: 1px solid #dddddd;
 1657+}
Property changes on: trunk/extensions/FCKeditor/css/fckeditor.css
___________________________________________________________________
Added: svn:eol-style
11658 + native
Index: trunk/extensions/FCKeditor/css/magnify-clip.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/magnify-clip.png
___________________________________________________________________
Added: svn:mime-type
21659 + image/png
Index: trunk/extensions/FCKeditor/css/wiki-indexed.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/wiki-indexed.png
___________________________________________________________________
Added: svn:mime-type
31660 + image/png
Index: trunk/extensions/FCKeditor/css/lock_icon.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/lock_icon.gif
___________________________________________________________________
Added: svn:mime-type
41661 + image/gif
Index: trunk/extensions/FCKeditor/css/external.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/external.png
___________________________________________________________________
Added: svn:mime-type
51662 + image/png
Index: trunk/extensions/FCKeditor/css/news_icon.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/FCKeditor/css/news_icon.png
___________________________________________________________________
Added: svn:mime-type
61663 + image/png
Index: trunk/extensions/FCKeditor/css/link_icon.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/link_icon.gif
___________________________________________________________________
Added: svn:mime-type
71664 + image/gif
Index: trunk/extensions/FCKeditor/css/discussionitem_icon.gif
Cannot display: file marked as a binary type.
svn:mime-type = image/gif
Property changes on: trunk/extensions/FCKeditor/css/discussionitem_icon.gif
___________________________________________________________________
Added: svn:mime-type
81665 + image/gif
Index: trunk/extensions/FCKeditor/FCKeditorParser.body.php
@@ -0,0 +1,689 @@
 2+<?php
 3+
 4+class FCKeditorParser extends FCKeditorParserWrapper {
 5+ public static $fkc_mw_makeImage_options;
 6+ protected $fck_mw_strtr_span;
 7+ protected $fck_mw_strtr_span_counter = 1;
 8+ protected $fck_mw_taghook;
 9+ protected $fck_internal_parse_text;
 10+ protected $fck_matches = array();
 11+
 12+ private $FCKeditorMagicWords = array(
 13+ '__NOTOC__',
 14+ '__FORCETOC__',
 15+ '__NOEDITSECTION__',
 16+ '__START__',
 17+ '__NOTITLECONVERT__',
 18+ '__NOCONTENTCONVERT__',
 19+ '__END__',
 20+ '__TOC__',
 21+ '__NOTC__',
 22+ '__NOCC__',
 23+ '__FORCETOC__',
 24+ '__NEWSECTIONLINK__',
 25+ '__NOGALLERY__',
 26+ );
 27+
 28+ /**
 29+ * Add special string (that would be changed by Parser) to array and return simple unique string
 30+ * that will remain unchanged during whole parsing operation.
 31+ * At the end we'll replace all this unique strings with original content
 32+ *
 33+ * @param string $text
 34+ * @return string
 35+ */
 36+ private function fck_addToStrtr( $text, $replaceLineBreaks = true ) {
 37+ $key = 'Fckmw' . $this->fck_mw_strtr_span_counter . 'fckmw';
 38+ $this->fck_mw_strtr_span_counter++;
 39+ if( $replaceLineBreaks ) {
 40+ $this->fck_mw_strtr_span[$key] = str_replace( array( "\r\n", "\n", "\r" ), 'fckLR', $text );
 41+ } else {
 42+ $this->fck_mw_strtr_span[$key] = $text;
 43+ }
 44+ return $key;
 45+ }
 46+
 47+ /**
 48+ * Handle link to subpage if necessary
 49+ * @param string $target the source of the link
 50+ * @param string &$text the link text, modified as necessary
 51+ * @return string the full name of the link
 52+ * @private
 53+ */
 54+ function maybeDoSubpageLink( $target, &$text ) {
 55+ return $target;
 56+ }
 57+
 58+ /**
 59+ * DO NOT replace special strings like "ISBN xxx" and "RFC xxx" with
 60+ * magic external links.
 61+ *
 62+ * DML
 63+ * @private
 64+ */
 65+ function doMagicLinks( $text ) {
 66+ return $text;
 67+ }
 68+
 69+ /**
 70+ * Callback function for custom tags: feed, ref, references etc.
 71+ *
 72+ * @param string $str Input
 73+ * @param array $argv Arguments
 74+ * @return string
 75+ */
 76+ function fck_genericTagHook( $str, $argv, $parser ) {
 77+ if( in_array( $this->fck_mw_taghook, array( 'ref', 'math', 'references', 'source' ) ) ) {
 78+ $class = $this->fck_mw_taghook;
 79+ } else {
 80+ $class = 'special';
 81+ }
 82+
 83+ if( empty( $argv ) ) {
 84+ $ret = '<span class="fck_mw_' . $class . '" _fck_mw_customtag="true" _fck_mw_tagname="' . $this->fck_mw_taghook . '">';
 85+ } else {
 86+ $ret = '<span class="fck_mw_' . $class . '" _fck_mw_customtag="true" _fck_mw_tagname="' . $this->fck_mw_taghook . '"';
 87+ foreach( $argv as $key => $value ) {
 88+ $ret .= " " . $key . "=\"" . $value . "\"";
 89+ }
 90+ $ret .= '>';
 91+ }
 92+ if( is_null( $str ) ) {
 93+ $ret = substr( $ret, 0, -1 ) . ' />';
 94+ } else {
 95+ $ret .= htmlspecialchars( $str );
 96+ $ret .= '</span>';
 97+ }
 98+
 99+ $replacement = $this->fck_addToStrtr( $ret );
 100+ return $replacement;
 101+ }
 102+
 103+ /**
 104+ * Callback function for wiki tags: nowiki, includeonly, noinclude
 105+ *
 106+ * @param string $tagName tag name, eg. nowiki, math
 107+ * @param string $str Input
 108+ * @param array $argv Arguments
 109+ * @return string
 110+ */
 111+ function fck_wikiTag( $tagName, $str, $argv = array() ) {
 112+ if( empty( $argv ) ) {
 113+ $ret = '<span class="fck_mw_' . $tagName . '" _fck_mw_customtag="true" _fck_mw_tagname="' . $tagName . '">';
 114+ } else {
 115+ $ret = '<span class="fck_mw_' . $tagName . '" _fck_mw_customtag="true" _fck_mw_tagname="' . $tagName . '"';
 116+ foreach( $argv as $key => $value ) {
 117+ $ret .= " " . $key . "=\"" . $value . "\"";
 118+ }
 119+ $ret .= '>';
 120+ }
 121+ if( is_null( $str ) ) {
 122+ $ret = substr( $ret, 0, -1 ) . ' />';
 123+ } else {
 124+ $ret .= htmlspecialchars( $str );
 125+ $ret .= '</span>';
 126+ }
 127+
 128+ $replacement = $this->fck_addToStrtr( $ret );
 129+
 130+ return $replacement;
 131+ }
 132+
 133+ /**
 134+ * Strips and renders nowiki, pre, math, hiero
 135+ * If $render is set, performs necessary rendering operations on plugins
 136+ * Returns the text, and fills an array with data needed in unstrip()
 137+ *
 138+ * @param StripState $state
 139+ *
 140+ * @param bool $stripcomments when set, HTML comments <!-- like this -->
 141+ * will be stripped in addition to other tags. This is important
 142+ * for section editing, where these comments cause confusion when
 143+ * counting the sections in the wikisource
 144+ *
 145+ * @param array dontstrip contains tags which should not be stripped;
 146+ * used to prevent stipping of <gallery> when saving (fixes bug 2700)
 147+ *
 148+ * @private
 149+ */
 150+ function strip( $text, $state, $stripcomments = false, $dontstrip = array() ) {
 151+ global $wgContLang, $wgUseTeX, $wgScriptPath, $wgHooks, $wgExtensionFunctions;
 152+
 153+ wfProfileIn( __METHOD__ );
 154+ $render = ( $this->mOutputType == OT_HTML );
 155+
 156+ $uniq_prefix = $this->mUniqPrefix;
 157+ $commentState = new ReplacementArray;
 158+
 159+ $elements = array_merge( array( 'nowiki', 'gallery', 'math' ), array_keys( $this->mTagHooks ) );
 160+ if ( ( isset( $wgHooks['ParserFirstCallInit']) && in_array( 'efSyntaxHighlight_GeSHiSetup', $wgHooks['ParserFirstCallInit'] ) )
 161+ || ( isset( $wgExtensionFunctions ) && in_array( 'efSyntaxHighlight_GeSHiSetup', $wgExtensionFunctions ) ) ) {
 162+ $elements = array_merge( $elements, array( 'source' ) );
 163+ }
 164+ if ( ( isset( $wgHooks['ParserFirstCallInit'] ) && in_array( 'wfCite', $wgHooks['ParserFirstCallInit'] ) )
 165+ || ( isset( $wgExtensionFunctions ) && in_array( 'wfCite', $wgExtensionFunctions ) ) ) {
 166+ $elements = array_merge( $elements, array( 'ref', 'references' ) );
 167+ }
 168+ global $wgRawHtml;
 169+ if( $wgRawHtml ) {
 170+ $elements[] = 'html';
 171+ }
 172+
 173+ # Removing $dontstrip tags from $elements list (currently only 'gallery', fixing bug 2700)
 174+ foreach( $elements as $k => $v ) {
 175+ if( !in_array( $v, $dontstrip ) )
 176+ continue;
 177+ unset( $elements[$k] );
 178+ }
 179+
 180+ $elements = array_unique( $elements );
 181+ $matches = array();
 182+ $text = Parser::extractTagsAndParams( $elements, $text, $matches, $uniq_prefix );
 183+
 184+ foreach( $matches as $marker => $data ) {
 185+ list( $element, $content, $params, $tag ) = $data;
 186+ if( $render ) {
 187+ $tagName = strtolower( $element );
 188+ wfProfileIn( __METHOD__ . "-render-$tagName" );
 189+ switch( $tagName ) {
 190+ case '!--':
 191+ // Comment
 192+ if( substr( $tag, -3 ) == '-->' ) {
 193+ $output = $tag;
 194+ } else {
 195+ // Unclosed comment in input.
 196+ // Close it so later stripping can remove it
 197+ $output = "$tag-->";
 198+ }
 199+ break;
 200+ case 'references':
 201+ $output = $this->fck_wikiTag( 'references', $content, $params );
 202+ break;
 203+ case 'ref':
 204+ $output = $this->fck_wikiTag( 'ref', $content, $params );
 205+ break;
 206+ case 'source':
 207+ $output = $this->fck_wikiTag( 'source', $content, $params );
 208+ break;
 209+ case 'html':
 210+ if( $wgRawHtml ) {
 211+ $output = $this->fck_wikiTag( 'html', $content, $params );
 212+ }
 213+ break;
 214+ case 'nowiki':
 215+ $output = $this->fck_wikiTag( 'nowiki', $content, $params ); // required by FCKeditor
 216+ break;
 217+ case 'math':
 218+ if( $wgUseTeX ){ //normal render
 219+ $output = $wgContLang->armourMath( MathRenderer::renderMath( $content ) );
 220+ } else // show fakeimage
 221+ $output = '<img _fckfakelement="true" class="FCK__MWMath" _fck_mw_math="'.$content.'" src="'.$wgScriptPath.'/skins/common/images/button_math.png" />';
 222+ break;
 223+ case 'gallery':
 224+ $output = $this->fck_wikiTag( 'gallery', $content, $params ); // required by FCKeditor
 225+ //$output = $this->renderImageGallery( $content, $params );
 226+ break;
 227+ default:
 228+ if( isset( $this->mTagHooks[$tagName] ) ) {
 229+ $this->fck_mw_taghook = $tagName; // required by FCKeditor
 230+ $output = call_user_func_array( $this->mTagHooks[$tagName],
 231+ array( $content, $params, $this ) );
 232+ } else {
 233+ throw new MWException( "Invalid call hook $element" );
 234+ }
 235+ }
 236+ wfProfileOut( __METHOD__ . "-render-$tagName" );
 237+ } else {
 238+ // Just stripping tags; keep the source
 239+ $output = $tag;
 240+ }
 241+
 242+ // Unstrip the output, to support recursive strip() calls
 243+ $output = $state->unstripBoth( $output );
 244+
 245+ if( !$stripcomments && $element == '!--' ) {
 246+ $commentState->setPair( $marker, $output );
 247+ } elseif ( $element == 'html' || $element == 'nowiki' ) {
 248+ $state->addNoWiki( $output );
 249+ } else {
 250+ $state->addGeneral( $output );
 251+ }
 252+ }
 253+
 254+ # Unstrip comments unless explicitly told otherwise.
 255+ # (The comments are always stripped prior to this point, so as to
 256+ # not invoke any extension tags / parser hooks contained within
 257+ # a comment.)
 258+ if ( !$stripcomments ) {
 259+ // Put them all back and forget them
 260+ $text = $commentState->replace( $text );
 261+ }
 262+
 263+ $this->fck_matches = $matches;
 264+ wfProfileOut( __METHOD__ );
 265+ return $text;
 266+ }
 267+
 268+ /**
 269+ * Replace HTML comments with unique text using fck_addToStrtr function
 270+ *
 271+ * @private
 272+ * @param string $text
 273+ * @return string
 274+ */
 275+ private function fck_replaceHTMLcomments( $text ) {
 276+ wfProfileIn( __METHOD__ );
 277+ while( ( $start = strpos( $text, '<!--' ) ) !== false ) {
 278+ $end = strpos( $text, '-->', $start + 4 );
 279+ if( $end === false ) {
 280+ # Unterminated comment; bail out
 281+ break;
 282+ }
 283+
 284+ $end += 3;
 285+
 286+ # Trim space and newline if the comment is both
 287+ # preceded and followed by a newline
 288+ $spaceStart = max( $start - 1, 0 );
 289+ $spaceLen = $end - $spaceStart;
 290+ while( substr( $text, $spaceStart, 1 ) === ' ' && $spaceStart > 0 ) {
 291+ $spaceStart--;
 292+ $spaceLen++;
 293+ }
 294+ while( substr( $text, $spaceStart + $spaceLen, 1 ) === ' ' )
 295+ $spaceLen++;
 296+ if( substr( $text, $spaceStart, 1 ) === "\n" and substr( $text, $spaceStart + $spaceLen, 1 ) === "\n" ) {
 297+ # Remove the comment, leading and trailing
 298+ # spaces, and leave only one newline.
 299+ $replacement = $this->fck_addToStrtr( substr( $text, $spaceStart, $spaceLen + 1 ), false );
 300+ $text = substr_replace( $text, $replacement . "\n", $spaceStart, $spaceLen + 1 );
 301+ } else {
 302+ # Remove just the comment.
 303+ $replacement = $this->fck_addToStrtr( substr( $text, $start, $end - $start ), false );
 304+ $text = substr_replace( $text, $replacement, $start, $end - $start );
 305+ }
 306+ }
 307+ wfProfileOut( __METHOD__ );
 308+
 309+ return $text;
 310+ }
 311+
 312+ function replaceInternalLinks( $text ) {
 313+ $text = preg_replace( "/\[\[([^|\[\]]*?)\]\]/", "[[$1|RTENOTITLE]]", $text ); // #2223: [[()]] => [[%1|RTENOTITLE]]
 314+ $text = preg_replace( "/\[\[:(.*?)\]\]/", "[[RTECOLON$1]]", $text ); // change ':' => 'RTECOLON' in links
 315+ $text = parent::replaceInternalLinks( $text );
 316+ $text = preg_replace( "/\|RTENOTITLE\]\]/", "]]", $text ); // remove unused RTENOTITLE
 317+
 318+ return $text;
 319+ }
 320+
 321+ function makeImage( $nt, $options, $holders = false ) {
 322+ FCKeditorParser::$fkc_mw_makeImage_options = $options;
 323+ return parent::makeImage( $nt, $options, $holders );
 324+ }
 325+
 326+ /**
 327+ * Replace templates with unique text to preserve them from parsing
 328+ *
 329+ * @todo if {{template}} is inside string that also must be returned unparsed,
 330+ * e.g. <noinclude>{{template}}</noinclude>
 331+ * {{template}} replaced with Fckmw[n]fckmw which is wrong...
 332+ *
 333+ * @param string $text
 334+ * @return string
 335+ */
 336+ private function fck_replaceTemplates( $text ) {
 337+
 338+ $callback = array(
 339+ '{' => array(
 340+ 'end'=>'}',
 341+ 'cb' => array(
 342+ 2 => array( $this, 'fck_leaveTemplatesAlone' ),
 343+ 3 => array( $this, 'fck_leaveTemplatesAlone' ),
 344+ ),
 345+ 'min' => 2,
 346+ 'max' => 3,
 347+ )
 348+ );
 349+
 350+ $text = $this->replace_callback( $text, $callback );
 351+
 352+ $tags = array();
 353+ $offset = 0;
 354+ $textTmp = $text;
 355+ while( false !== ( $pos = strpos( $textTmp, '<!--FCK_SKIP_START-->' ) ) ){
 356+ $tags[abs($pos + $offset)] = 1;
 357+ $textTmp = substr( $textTmp, $pos + 21 );
 358+ $offset += $pos + 21;
 359+ }
 360+
 361+ $offset = 0;
 362+ $textTmp = $text;
 363+ while( false !== ( $pos = strpos( $textTmp, '<!--FCK_SKIP_END-->' ) ) ){
 364+ $tags[abs($pos + $offset)] = -1;
 365+ $textTmp = substr( $textTmp, $pos + 19 );
 366+ $offset += $pos + 19;
 367+ }
 368+
 369+ if( !empty( $tags ) ) {
 370+ ksort( $tags );
 371+
 372+ $strtr = array( '<!--FCK_SKIP_START-->' => '', '<!--FCK_SKIP_END-->' => '' );
 373+
 374+ $sum = 0;
 375+ $lastSum = 0;
 376+ $finalString = '';
 377+ $stringToParse = '';
 378+ $startingPos = 0;
 379+ $inner = '';
 380+ $strtr_span = array();
 381+ foreach( $tags as $pos=>$type) {
 382+ $sum += $type;
 383+ if( !$pos ) {
 384+ $opened = 0;
 385+ $closed = 0;
 386+ } else {
 387+ $opened = substr_count( $text, '[', 0, $pos ); // count [
 388+ $closed = substr_count( $text, ']', 0, $pos ); // count ]
 389+ }
 390+ if( $sum == 1 && $lastSum == 0 ) {
 391+ $stringToParse .= strtr( substr( $text, $startingPos, $pos - $startingPos ), $strtr );
 392+ $startingPos = $pos;
 393+ } elseif( $sum == 0 ) {
 394+ $stringToParse .= 'Fckmw' . $this->fck_mw_strtr_span_counter . 'fckmw';
 395+ $inner = htmlspecialchars( strtr( substr( $text, $startingPos, $pos - $startingPos + 19 ), $strtr ) );
 396+ $this->fck_mw_strtr_span['href="Fckmw' . $this->fck_mw_strtr_span_counter . 'fckmw"'] = 'href="' . $inner . '"';
 397+ if( $opened <= $closed ) { // {{template}} is NOT in [] or [[]]
 398+ $this->fck_mw_strtr_span['Fckmw' . $this->fck_mw_strtr_span_counter . 'fckmw'] = '<span class="fck_mw_template">' . str_replace( array( "\r\n", "\n", "\r" ), 'fckLR', $inner ) . '</span>';
 399+ } else {
 400+ $this->fck_mw_strtr_span['Fckmw' . $this->fck_mw_strtr_span_counter . 'fckmw'] = str_replace( array( "\r\n", "\n", "\r" ), 'fckLR', $inner );
 401+ }
 402+ $startingPos = $pos + 19;
 403+ $this->fck_mw_strtr_span_counter++;
 404+ }
 405+ $lastSum = $sum;
 406+ }
 407+ $stringToParse .= substr( $text, $startingPos );
 408+ $text = &$stringToParse;
 409+ }
 410+
 411+ return $text;
 412+ }
 413+
 414+ function internalParse( $text, $isMain = true, $frame = false ) {
 415+ $this->fck_internal_parse_text =& $text;
 416+
 417+ // these three tags should remain unchanged
 418+ $text = StringUtils::delimiterReplaceCallback( '<includeonly>', '</includeonly>', array( $this, 'fck_includeonly' ), $text );
 419+ $text = StringUtils::delimiterReplaceCallback( '<noinclude>', '</noinclude>', array( $this, 'fck_noinclude' ), $text );
 420+ $text = StringUtils::delimiterReplaceCallback( '<onlyinclude>', '</onlyinclude>', array( $this, 'fck_onlyinclude' ), $text );
 421+
 422+ // HTML comments shouldn't be stripped
 423+ $text = $this->fck_replaceHTMLcomments( $text );
 424+ // as well as templates
 425+ $text = $this->fck_replaceTemplates( $text );
 426+
 427+ $finalString = parent::internalParse( $text, $isMain );
 428+
 429+ return $finalString;
 430+ }
 431+
 432+ function fck_includeonly( $matches ) {
 433+ return $this->fck_wikiTag( 'includeonly', $matches[1] );
 434+ }
 435+
 436+ function fck_noinclude( $matches ) {
 437+ return $this->fck_wikiTag( 'noinclude', $matches[1] );
 438+ }
 439+
 440+ function fck_onlyinclude( $matches ) {
 441+ return $this->fck_wikiTag( 'onlyinclude', $matches[1] );
 442+ }
 443+
 444+ function fck_leaveTemplatesAlone( $matches ) {
 445+ return '<!--FCK_SKIP_START-->' . $matches['text'] . '<!--FCK_SKIP_END-->';
 446+ }
 447+
 448+ function formatHeadings( $text, $origText, $isMain = true ) {
 449+ return $text;
 450+ }
 451+
 452+ function replaceFreeExternalLinks( $text ) { return $text; }
 453+
 454+ function stripNoGallery( &$text ) {}
 455+
 456+ function stripToc( $text ) {
 457+ //$prefix = '<span class="fck_mw_magic">';
 458+ //$suffix = '</span>';
 459+ $prefix = '';
 460+ $suffix = '';
 461+
 462+ $strtr = array();
 463+ foreach( $this->FCKeditorMagicWords as $word ) {
 464+ $strtr[$word] = $prefix . $word . $suffix;
 465+ }
 466+
 467+ return strtr( $text, $strtr );
 468+ }
 469+
 470+ function doDoubleUnderscore( $text ) {
 471+ return $text;
 472+ }
 473+
 474+ function parse( $text, Title $title, ParserOptions $options, $linestart = true, $clearState = true, $revid = null ) {
 475+ $text = preg_replace( "/^#REDIRECT/", '<!--FCK_REDIRECT-->', $text );
 476+ $parserOutput = parent::parse( $text, $title, $options, $linestart, $clearState, $revid );
 477+
 478+ $categories = $parserOutput->getCategories();
 479+ if( $categories ) {
 480+ $appendString = '';
 481+ foreach( $categories as $cat => $val ) {
 482+ $args = '';
 483+ if( $val == 'RTENOTITLE' ){
 484+ $args .= '_fcknotitle="true" ';
 485+ $val = $cat;
 486+ }
 487+ if( $val != $title->mTextform ) {
 488+ $appendString .= '<a ' . $args . 'href="Category:' . $cat . '">' . $val . '</a> ';
 489+ } else {
 490+ $appendString .= '<a ' . $args . 'href="Category:' . $cat . '">Category:' . $cat . '</a> ';
 491+ }
 492+ }
 493+ $parserOutput->setText( $parserOutput->getText() . $appendString );
 494+ }
 495+
 496+ if( !empty( $this->fck_mw_strtr_span ) ) {
 497+ global $leaveRawTemplates;
 498+ if( !empty( $leaveRawTemplates ) ) {
 499+ foreach( $leaveRawTemplates as $l ) {
 500+ $this->fck_mw_strtr_span[$l] = substr( $this->fck_mw_strtr_span[$l], 30, -7 );
 501+ }
 502+ }
 503+ $text = strtr( $parserOutput->getText(), $this->fck_mw_strtr_span );
 504+ $parserOutput->setText( strtr( $text, $this->fck_mw_strtr_span ) );
 505+ }
 506+ if( !empty( $this->fck_matches ) ) {
 507+ $text = $parserOutput->getText();
 508+ foreach( $this->fck_matches as $key => $m ) {
 509+ $text = str_replace( $key, $m[3], $text );
 510+ }
 511+ $parserOutput->setText( $text );
 512+ }
 513+
 514+ if( !empty( $parserOutput->mLanguageLinks ) ) {
 515+ foreach( $parserOutput->mLanguageLinks as $l ) {
 516+ $parserOutput->setText( $parserOutput->getText() . "\n" . '<a href="' . $l . '">' . $l . '</a>' );
 517+ }
 518+ }
 519+
 520+ $parserOutput->setText( str_replace( '<!--FCK_REDIRECT-->', '#REDIRECT', $parserOutput->getText() ) );
 521+
 522+ return $parserOutput;
 523+ }
 524+
 525+ /**
 526+ * Make lists from lines starting with ':', '*', '#', etc.
 527+ *
 528+ * @private
 529+ * @return string the lists rendered as HTML
 530+ */
 531+ function doBlockLevels( $text, $linestart ) {
 532+ wfProfileIn( __METHOD__ );
 533+
 534+ # Parsing through the text line by line. The main thing
 535+ # happening here is handling of block-level elements p, pre,
 536+ # and making lists from lines starting with * # : etc.
 537+ $textLines = explode( "\n", $text );
 538+
 539+ $lastPrefix = $output = '';
 540+ $this->mDTopen = $inBlockElem = false;
 541+ $prefixLength = 0;
 542+ $paragraphStack = false;
 543+
 544+ if ( !$linestart ) {
 545+ $output .= array_shift( $textLines );
 546+ }
 547+ foreach ( $textLines as $oLine ) {
 548+ $lastPrefixLength = strlen( $lastPrefix );
 549+ $preCloseMatch = preg_match('/<\\/pre/i', $oLine );
 550+ $preOpenMatch = preg_match('/<pre/i', $oLine );
 551+ if ( !$this->mInPre ) {
 552+ # Multiple prefixes may abut each other for nested lists.
 553+ $prefixLength = strspn( $oLine, '*#:;' );
 554+ $pref = substr( $oLine, 0, $prefixLength );
 555+
 556+ # eh?
 557+ $pref2 = str_replace( ';', ':', $pref );
 558+ $t = substr( $oLine, $prefixLength );
 559+ $this->mInPre = !empty( $preOpenMatch );
 560+ } else {
 561+ # Don't interpret any other prefixes in preformatted text
 562+ $prefixLength = 0;
 563+ $pref = $pref2 = '';
 564+ $t = $oLine;
 565+ }
 566+
 567+ # List generation
 568+ if( $prefixLength && 0 == strcmp( $lastPrefix, $pref2 ) ) {
 569+ # Same as the last item, so no need to deal with nesting or opening stuff
 570+ $output .= $this->nextItem( substr( $pref, -1 ) );
 571+ $paragraphStack = false;
 572+
 573+ if ( substr( $pref, -1 ) == ';') {
 574+ # The one nasty exception: definition lists work like this:
 575+ # ; title : definition text
 576+ # So we check for : in the remainder text to split up the
 577+ # title and definition, without b0rking links.
 578+ $term = $t2 = '';
 579+ if( $this->findColonNoLinks( $t, $term, $t2 ) !== false ) {
 580+ $t = $t2;
 581+ $output .= $term . $this->nextItem( ':' );
 582+ }
 583+ }
 584+ } elseif( $prefixLength || $lastPrefixLength ) {
 585+ # Either open or close a level...
 586+ $commonPrefixLength = $this->getCommon( $pref, $lastPrefix );
 587+ $paragraphStack = false;
 588+
 589+ while( $commonPrefixLength < $lastPrefixLength ) {
 590+ $output .= $this->closeList( $lastPrefix{$lastPrefixLength-1} );
 591+ --$lastPrefixLength;
 592+ }
 593+ if ( $prefixLength <= $commonPrefixLength && $commonPrefixLength > 0 ) {
 594+ $output .= $this->nextItem( $pref{$commonPrefixLength-1} );
 595+ }
 596+ while ( $prefixLength > $commonPrefixLength ) {
 597+ $char = substr( $pref, $commonPrefixLength, 1 );
 598+ $output .= $this->openList( $char );
 599+
 600+ if ( ';' == $char ) {
 601+ # FIXME: This is dupe of code above
 602+ if( $this->findColonNoLinks( $t, $term, $t2 ) !== false ) {
 603+ $t = $t2;
 604+ $output .= $term . $this->nextItem( ':' );
 605+ }
 606+ }
 607+ ++$commonPrefixLength;
 608+ }
 609+ $lastPrefix = $pref2;
 610+ }
 611+ if( 0 == $prefixLength ) {
 612+ wfProfileIn( __METHOD__ . '-paragraph' );
 613+ # No prefix (not in list)--go to paragraph mode
 614+ // XXX: use a stack for nestable elements like span, table and div
 615+ $openmatch = preg_match( '/(?:<table|<blockquote|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<ol|<li|<\\/tr|<\\/td|<\\/th)/iS', $t );
 616+ $closematch = preg_match(
 617+ '/(?:<\\/table|<\\/blockquote|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|'.
 618+ '<td|<th|<\\/?div|<hr|<\\/pre|<\\/p|' . $this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/?center)/iS', $t );
 619+ if ( $openmatch or $closematch ) {
 620+ $paragraphStack = false;
 621+ # TODO bug 5718: paragraph closed
 622+ $output .= $this->closeParagraph();
 623+ if ( $preOpenMatch and !$preCloseMatch ) {
 624+ $this->mInPre = true;
 625+ }
 626+ if ( $closematch ) {
 627+ $inBlockElem = false;
 628+ } else {
 629+ $inBlockElem = true;
 630+ }
 631+ } elseif ( !$inBlockElem && !$this->mInPre ) {
 632+ if ( ' ' == $t{0} and ( $this->mLastSection == 'pre' or trim( $t ) != '' ) ) {
 633+ // pre
 634+ if( $this->mLastSection != 'pre' ) {
 635+ $paragraphStack = false;
 636+ $output .= $this->closeParagraph() . '<pre class="_fck_mw_lspace">';
 637+ $this->mLastSection = 'pre';
 638+ }
 639+ $t = substr( $t, 1 );
 640+ } else {
 641+ // paragraph
 642+ if ( '' == trim( $t ) ) {
 643+ if ( $paragraphStack ) {
 644+ $output .= $paragraphStack . '<br />';
 645+ $paragraphStack = false;
 646+ $this->mLastSection = 'p';
 647+ } else {
 648+ if ($this->mLastSection != 'p' ) {
 649+ $output .= $this->closeParagraph();
 650+ $this->mLastSection = '';
 651+ $paragraphStack = '<p>';
 652+ } else {
 653+ $paragraphStack = '</p><p>';
 654+ }
 655+ }
 656+ } else {
 657+ if ( $paragraphStack ) {
 658+ $output .= $paragraphStack;
 659+ $paragraphStack = false;
 660+ $this->mLastSection = 'p';
 661+ } elseif ($this->mLastSection != 'p') {
 662+ $output .= $this->closeParagraph().'<p>';
 663+ $this->mLastSection = 'p';
 664+ }
 665+ }
 666+ }
 667+ }
 668+ wfProfileOut( __METHOD__ . '-paragraph' );
 669+ }
 670+ // somewhere above we forget to get out of pre block (bug 785)
 671+ if( $preCloseMatch && $this->mInPre ) {
 672+ $this->mInPre = false;
 673+ }
 674+ if( $paragraphStack === false ) {
 675+ $output .= $t . "\n";
 676+ }
 677+ }
 678+ while ( $prefixLength ) {
 679+ $output .= $this->closeList( $pref2{$prefixLength-1} );
 680+ --$prefixLength;
 681+ }
 682+ if ( '' != $this->mLastSection ) {
 683+ $output .= '</' . $this->mLastSection . '>';
 684+ $this->mLastSection = '';
 685+ }
 686+
 687+ wfProfileOut( __METHOD__ );
 688+ return $output;
 689+ }
 690+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorParser.body.php
___________________________________________________________________
Added: svn:eol-style
1691 + native
Index: trunk/extensions/FCKeditor/FCKeditorParserWrapper.body.php
@@ -0,0 +1,197 @@
 2+<?php
 3+/**
 4+ * Used by MW 1.12+
 5+ */
 6+class FCKeditorParserWrapper extends Parser {
 7+ function __construct() {
 8+ global $wgParser;
 9+
 10+ parent::__construct();
 11+
 12+ $wgParser->firstCallInit();
 13+ foreach( $wgParser->getTags() as $h ) {
 14+ if( !in_array( $h, array( 'pre' ) ) ) {
 15+ $this->setHook( $h, array( $this, 'fck_genericTagHook' ) );
 16+ }
 17+ }
 18+ }
 19+
 20+ /**
 21+ * parse any parentheses in format ((title|part|part))
 22+ * and call callbacks to get a replacement text for any found piece
 23+ *
 24+ * @param string $text The text to parse
 25+ * @param array $callbacks rules in form:
 26+ * '{' => array( # opening parentheses
 27+ * 'end' => '}', # closing parentheses
 28+ * 'cb' => array(
 29+ * 2 => callback, # replacement callback to call if {{..}} is found
 30+ * 3 => callback # replacement callback to call if {{{..}}} is found
 31+ * )
 32+ * )
 33+ * 'min' => 2, # Minimum parenthesis count in cb
 34+ * 'max' => 3, # Maximum parenthesis count in cb
 35+ */
 36+ /*private*/ function replace_callback( $text, $callbacks ) {
 37+ wfProfileIn( __METHOD__ );
 38+ $openingBraceStack = array(); # this array will hold a stack of parentheses which are not closed yet
 39+ $lastOpeningBrace = -1; # last not closed parentheses
 40+
 41+ $validOpeningBraces = implode( '', array_keys( $callbacks ) );
 42+
 43+ $i = 0;
 44+ while ( $i < strlen( $text ) ) {
 45+ # Find next opening brace, closing brace or pipe
 46+ if ( $lastOpeningBrace == -1 ) {
 47+ $currentClosing = '';
 48+ $search = $validOpeningBraces;
 49+ } else {
 50+ $currentClosing = $openingBraceStack[$lastOpeningBrace]['braceEnd'];
 51+ $search = $validOpeningBraces . '|' . $currentClosing;
 52+ }
 53+ $rule = null;
 54+ $i += strcspn( $text, $search, $i );
 55+ if ( $i < strlen( $text ) ) {
 56+ if ( $text[$i] == '|' ) {
 57+ $found = 'pipe';
 58+ } elseif ( $text[$i] == $currentClosing ) {
 59+ $found = 'close';
 60+ } elseif ( isset( $callbacks[$text[$i]] ) ) {
 61+ $found = 'open';
 62+ $rule = $callbacks[$text[$i]];
 63+ } else {
 64+ # Some versions of PHP have a strcspn which stops on null characters
 65+ # Ignore and continue
 66+ ++$i;
 67+ continue;
 68+ }
 69+ } else {
 70+ # All done
 71+ break;
 72+ }
 73+
 74+ if ( $found == 'open' ) {
 75+ # found opening brace, let's add it to parentheses stack
 76+ $piece = array(
 77+ 'brace' => $text[$i],
 78+ 'braceEnd' => $rule['end'],
 79+ 'title' => '',
 80+ 'parts' => null
 81+ );
 82+
 83+ # count opening brace characters
 84+ $piece['count'] = strspn( $text, $piece['brace'], $i );
 85+ $piece['startAt'] = $piece['partStart'] = $i + $piece['count'];
 86+ $i += $piece['count'];
 87+
 88+ # we need to add to stack only if opening brace count is enough for one of the rules
 89+ if ( $piece['count'] >= $rule['min'] ) {
 90+ $lastOpeningBrace ++;
 91+ $openingBraceStack[$lastOpeningBrace] = $piece;
 92+ }
 93+ } elseif ( $found == 'close' ) {
 94+ # lets check if it is enough characters for closing brace
 95+ $maxCount = $openingBraceStack[$lastOpeningBrace]['count'];
 96+ $count = strspn( $text, $text[$i], $i, $maxCount );
 97+
 98+ # check for maximum matching characters (if there are 5 closing
 99+ # characters, we will probably need only 3 - depending on the rules)
 100+ $matchingCount = 0;
 101+ $matchingCallback = null;
 102+ $cbType = $callbacks[$openingBraceStack[$lastOpeningBrace]['brace']];
 103+ if ( $count > $cbType['max'] ) {
 104+ # The specified maximum exists in the callback array, unless the caller
 105+ # has made an error
 106+ $matchingCount = $cbType['max'];
 107+ } else {
 108+ # Count is less than the maximum
 109+ # Skip any gaps in the callback array to find the true largest match
 110+ # Need to use array_key_exists not isset because the callback can be null
 111+ $matchingCount = $count;
 112+ while ( $matchingCount > 0 && !array_key_exists( $matchingCount, $cbType['cb'] ) ) {
 113+ --$matchingCount;
 114+ }
 115+ }
 116+
 117+ if( $matchingCount <= 0 ) {
 118+ $i += $count;
 119+ continue;
 120+ }
 121+ $matchingCallback = $cbType['cb'][$matchingCount];
 122+
 123+ # let's set a title or last part (if '|' was found)
 124+ if( null === $openingBraceStack[$lastOpeningBrace]['parts'] ) {
 125+ $openingBraceStack[$lastOpeningBrace]['title'] =
 126+ substr($text, $openingBraceStack[$lastOpeningBrace]['partStart'],
 127+ $i - $openingBraceStack[$lastOpeningBrace]['partStart']);
 128+ } else {
 129+ $openingBraceStack[$lastOpeningBrace]['parts'][] =
 130+ substr($text, $openingBraceStack[$lastOpeningBrace]['partStart'],
 131+ $i - $openingBraceStack[$lastOpeningBrace]['partStart']);
 132+ }
 133+
 134+ $pieceStart = $openingBraceStack[$lastOpeningBrace]['startAt'] - $matchingCount;
 135+ $pieceEnd = $i + $matchingCount;
 136+
 137+ if( is_callable( $matchingCallback ) ) {
 138+ $cbArgs = array(
 139+ 'text' => substr( $text, $pieceStart, $pieceEnd - $pieceStart ),
 140+ 'title' => trim( $openingBraceStack[$lastOpeningBrace]['title'] ),
 141+ 'parts' => $openingBraceStack[$lastOpeningBrace]['parts'],
 142+ 'lineStart' => ( ( $pieceStart > 0 ) && ( $text[$pieceStart-1] == "\n" ) ),
 143+ );
 144+ # finally we can call a user callback and replace piece of text
 145+ $replaceWith = call_user_func( $matchingCallback, $cbArgs );
 146+ $text = substr( $text, 0, $pieceStart ) . $replaceWith . substr( $text, $pieceEnd );
 147+ $i = $pieceStart + strlen( $replaceWith );
 148+ } else {
 149+ # null value for callback means that parentheses should be parsed, but not replaced
 150+ $i += $matchingCount;
 151+ }
 152+
 153+ # reset last opening parentheses, but keep it in case there are unused characters
 154+ $piece = array(
 155+ 'brace' => $openingBraceStack[$lastOpeningBrace]['brace'],
 156+ 'braceEnd' => $openingBraceStack[$lastOpeningBrace]['braceEnd'],
 157+ 'count' => $openingBraceStack[$lastOpeningBrace]['count'],
 158+ 'title' => '',
 159+ 'parts' => null,
 160+ 'startAt' => $openingBraceStack[$lastOpeningBrace]['startAt']
 161+ );
 162+ $openingBraceStack[$lastOpeningBrace--] = null;
 163+
 164+ if( $matchingCount < $piece['count'] ) {
 165+ $piece['count'] -= $matchingCount;
 166+ $piece['startAt'] -= $matchingCount;
 167+ $piece['partStart'] = $piece['startAt'];
 168+ # do we still qualify for any callback with remaining count?
 169+ $currentCbList = $callbacks[$piece['brace']]['cb'];
 170+ while ( $piece['count'] ) {
 171+ if ( array_key_exists( $piece['count'], $currentCbList ) ) {
 172+ $lastOpeningBrace++;
 173+ $openingBraceStack[$lastOpeningBrace] = $piece;
 174+ break;
 175+ }
 176+ --$piece['count'];
 177+ }
 178+ }
 179+ } elseif ( $found == 'pipe' ) {
 180+ # let's set a title if it is a first separator, or next part otherwise
 181+ if( null === $openingBraceStack[$lastOpeningBrace]['parts'] ) {
 182+ $openingBraceStack[$lastOpeningBrace]['title'] =
 183+ substr($text, $openingBraceStack[$lastOpeningBrace]['partStart'],
 184+ $i - $openingBraceStack[$lastOpeningBrace]['partStart']);
 185+ $openingBraceStack[$lastOpeningBrace]['parts'] = array();
 186+ } else {
 187+ $openingBraceStack[$lastOpeningBrace]['parts'][] =
 188+ substr($text, $openingBraceStack[$lastOpeningBrace]['partStart'],
 189+ $i - $openingBraceStack[$lastOpeningBrace]['partStart']);
 190+ }
 191+ $openingBraceStack[$lastOpeningBrace]['partStart'] = ++$i;
 192+ }
 193+ }
 194+
 195+ wfProfileOut( __METHOD__ );
 196+ return $text;
 197+ }
 198+}
Property changes on: trunk/extensions/FCKeditor/FCKeditorParserWrapper.body.php
___________________________________________________________________
Added: svn:eol-style
1199 + native
Index: trunk/extensions/FCKeditor/fckeditor_config.js
@@ -0,0 +1,127 @@
 2+/*
 3+ * FCKeditor Extension for MediaWiki specific settings.
 4+ */
 5+
 6+// When using the modified image dialog you must set this variable. It must
 7+// correspond to $wgScriptPath in LocalSettings.php.
 8+FCKConfig.mwScriptPath = '';
 9+
 10+// Setup the editor toolbar.
 11+FCKConfig.ToolbarSets['Wiki'] = [
 12+ ['Source'],
 13+ ['Cut','Copy','Paste',/*'PasteText','PasteWord',*/'-','Print'],
 14+ ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
 15+ ['SpecialChar','Table','Image','Rule'],
 16+ ['MW_Template','MW_Special','MW_Ref','MW_References','MW_Source','MW_Math','MW_Signature','MW_Category'],
 17+ '/',
 18+ ['FontFormat'],
 19+ ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
 20+ ['OrderedList','UnorderedList','-','Blockquote'],
 21+// ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
 22+ ['Link','Unlink','Anchor'],
 23+// ['TextColor','BGColor'],
 24+ ['FitWindow','-','About']
 25+];
 26+
 27+// Load the extension plugins.
 28+FCKConfig.PluginsPath = FCKConfig.EditorPath + '../plugins/';
 29+// Available translations
 30+FCKConfig.Plugins.Add( 'mediawiki', 'en,fi,he,ko,pl,sv,zh-tw' );
 31+
 32+FCKConfig.ForcePasteAsPlainText = true;
 33+FCKConfig.FontFormats = 'p;h1;h2;h3;h4;h5;h6;pre';
 34+
 35+FCKConfig.AutoDetectLanguage = true;
 36+FCKConfig.DefaultLanguage = 'en';
 37+
 38+FCKConfig.WikiSignature = '--~~~~';
 39+
 40+// FCKConfig.DisableObjectResizing = true ;
 41+
 42+FCKConfig.EditorAreaStyles = '\
 43+.FCK__MWTemplate, .FCK__MWSource, .FCK__MWRef, .FCK__MWSignature, .FCK__MWSpecial, .FCK__MWReferences, .FCK__MWMath, .FCK__MWNowiki, .FCK__MWIncludeonly, .FCK__MWNoinclude, .FCK__MWOnlyinclude, .FCK__MWGallery \
 44+{ \
 45+ border: 1px dotted #00F; \
 46+ background-position: center center; \
 47+ background-repeat: no-repeat; \
 48+ vertical-align: middle; \
 49+} \
 50+.FCK__MWSource \
 51+{ \
 52+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_source.gif); \
 53+ width: 59px; \
 54+ height: 15px; \
 55+} \
 56+.FCK__MWTemplate \
 57+{ \
 58+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_template.gif); \
 59+ width: 20px; \
 60+ height: 15px; \
 61+} \
 62+.FCK__MWRef \
 63+{ \
 64+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_ref.gif); \
 65+ width: 18px; \
 66+ height: 15px; \
 67+} \
 68+.FCK__MWSpecial \
 69+{ \
 70+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_special.gif); \
 71+ width: 66px; \
 72+ height: 15px; \
 73+} \
 74+.FCK__MWNowiki \
 75+{ \
 76+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_nowiki.gif); \
 77+ width: 66px; \
 78+ height: 15px; \
 79+} \
 80+.FCK__MWHtml \
 81+{ \
 82+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_html.gif); \
 83+ width: 66px; \
 84+ height: 15px; \
 85+} \
 86+.FCK__MWMath \
 87+{ \
 88+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_math.gif); \
 89+ width: 66px; \
 90+ height: 15px; \
 91+} \
 92+.FCK__MWIncludeonly \
 93+{ \
 94+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_includeonly.gif); \
 95+ width: 66px; \
 96+ height: 15px; \
 97+} \
 98+.FCK__MWNoinclude \
 99+{ \
 100+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_noinclude.gif); \
 101+ width: 66px; \
 102+ height: 15px; \
 103+} \
 104+.FCK__MWGallery \
 105+{ \
 106+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_gallery.gif); \
 107+ width: 66px; \
 108+ height: 15px; \
 109+} \
 110+.FCK__MWOnlyinclude \
 111+{ \
 112+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_onlyinclude.gif); \
 113+ width: 66px; \
 114+ height: 15px; \
 115+} \
 116+.FCK__MWSignature \
 117+{ \
 118+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_signature.gif); \
 119+ width: 66px; \
 120+ height: 15px; \
 121+} \
 122+.FCK__MWReferences \
 123+{ \
 124+ background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_references.gif); \
 125+ width: 66px; \
 126+ height: 15px; \
 127+} \
 128+';
Property changes on: trunk/extensions/FCKeditor/fckeditor_config.js
___________________________________________________________________
Added: svn:eol-style
1129 + native
Index: trunk/extensions/FCKeditor/README.txt
@@ -0,0 +1,38 @@
 2+== Installation ==
 3+
 4+This integration is done by a dedicated MediaWiki extension. See http://www.mediawiki.org/wiki/Extension:FCKeditor_(Official) for details.
 5+
 6+== About the project ==
 7+
 8+After several attempts to provide a WYSIWYG interface for MediaWiki, we at FCKeditor have decided starting a dedicated project for it, aiming to propose a definitive solution for it.
 9+
 10+The main criticism again such kind of integration is that rich text editors produce HTML code, and MediaWiki runs with Wikitext. We prioritized this problem when developing this prototype and our FCKeditor integration now produces Wikitext, satisfying this need.
 11+
 12+== Integration screenshot ==
 13+
 14+So, to see it in action, just go to our Sandbox: http://mediawiki.fckeditor.net/index.php/Sandbox and start editing that page.
 15+
 16+== Integration status ==
 17+
 18+We have created the first working prototype for this integration. It is still in the first stages, but shows the potential of it, and it’s actually fully usable. In any case, use it on production web sites at your own risk.
 19+
 20+The following features are currently available:
 21+* Rich editing: instead of writing inside a plain text area, using Wikitext markup for the text * structure and formatting, you can use visual tools, which reflect the final output.
 22+* Easy table creation.
 23+* Easy link creation, including automated search for internal articles.
 24+* Easy image insertion, including automated search for uploaded image files.
 25+* Templates handling: a template icon is displayed in the editor so they can be easily edited or inserted, without impacting in the editing interface.
 26+* References are displayed as small icons, not disturbing the editing, making them easy to create and edit.
 27+* Formulas are rendered inside the editor, making it easy to edit them with a mouse click.
 28+* My preferences: the editor can be disable at "Editing > Disable rich editor". Also, if the editor is enabled, a new tab called "Rich editor" is available so you can disable it under specific namespaces.
 29+
 30+== Final notes ==
 31+
 32+Take it easy! This is a prototype and it is expected to present undesired behaviors if bugs are forced to happen. Feel free to use the discussion space in this page to talk about it.
 33+
 34+=== Project future ===
 35+
 36+As stated at the top of this page, at FCKeditor we have "started" coding this integration. We need help now to continue with it, as we are (and have to be) focused on FCKeditor.
 37+
 38+We are looking for help on coding it, so PHP and JavaScript developers are welcome.
 39+
Property changes on: trunk/extensions/FCKeditor/README.txt
___________________________________________________________________
Added: svn:eol-style
140 + native
Index: trunk/extensions/FCKeditor/FCKeditor.body.php
@@ -0,0 +1,713 @@
 2+<?php
 3+/**
 4+ * Options for FCKeditor
 5+ * [start with FCKeditor]
 6+ */
 7+define('RTE_VISIBLE', 1);
 8+/**
 9+ * Options for FCKeditor
 10+ * [show toggle link]
 11+ */
 12+define('RTE_TOGGLE_LINK', 2);
 13+/**
 14+ * Options for FCKeditor
 15+ * [show popup link]
 16+ */
 17+define('RTE_POPUP', 4);
 18+
 19+class FCKeditor_MediaWiki {
 20+ public $showFCKEditor;
 21+ private $count = array();
 22+ private $excludedNamespaces;
 23+ private $oldTextBox1;
 24+ static $nsToggles = array(
 25+ 'riched_disable_ns_main',
 26+ 'riched_disable_ns_talk',
 27+ 'riched_disable_ns_user',
 28+ 'riched_disable_ns_user_talk',
 29+ 'riched_disable_ns_project',
 30+ 'riched_disable_ns_project_talk',
 31+ 'riched_disable_ns_image',
 32+ 'riched_disable_ns_image_talk',
 33+ 'riched_disable_ns_mediawiki',
 34+ 'riched_disable_ns_mediawiki_talk',
 35+ 'riched_disable_ns_template',
 36+ 'riched_disable_ns_template_talk',
 37+ 'riched_disable_ns_help',
 38+ 'riched_disable_ns_help_talk',
 39+ 'riched_disable_ns_category',
 40+ 'riched_disable_ns_category_talk',
 41+ );
 42+
 43+ function __call( $m, $a ) {
 44+ print "\n#### " . $m . "\n";
 45+ if( !isset( $this->count[$m] ) ) {
 46+ $this->count[$m] = 0;
 47+ }
 48+ $this->count[$m]++;
 49+ return true;
 50+ }
 51+
 52+ /**
 53+ * Gets the namespaces where FCKeditor should be disabled
 54+ * First check is done against user preferences, second is done against the global variable $wgFCKEditorExcludedNamespaces
 55+ */
 56+ private function getExcludedNamespaces() {
 57+ global $wgUser, $wgDefaultUserOptions, $wgFCKEditorExcludedNamespaces;
 58+
 59+ if( is_null( $this->excludedNamespaces ) ) {
 60+ $this->excludedNamespaces = array();
 61+ foreach( self::$nsToggles as $toggle ) {
 62+ $default = isset( $wgDefaultUserOptions[$toggle] ) ? $wgDefaultUserOptions[$toggle] : '';
 63+ if( $wgUser->getOption( $toggle, $default ) ) {
 64+ $this->excludedNamespaces[] = constant( strtoupper( str_replace( 'riched_disable_', '', $toggle ) ) );
 65+ }
 66+ }
 67+ /*
 68+ If this site's LocalSettings.php defines Namespaces that shouldn't use the FCKEditor (in the #wgFCKexcludedNamespaces array), those excluded
 69+ namespaces should be combined with those excluded in the user's preferences.
 70+ */
 71+ if( !empty( $wgFCKEditorExcludedNamespaces ) && is_array( $wgFCKEditorExcludedNamespaces ) ) {
 72+ $this->excludedNamespaces = array_merge( $wgFCKEditorExcludedNamespaces, $this->excludedNamespaces );
 73+ }
 74+ }
 75+
 76+ return $this->excludedNamespaces;
 77+ }
 78+
 79+ public static function onLanguageGetMagic( &$magicWords, $langCode ) {
 80+ $magicWords['NORICHEDITOR'] = array( 0, '__NORICHEDITOR__' );
 81+
 82+ return true;
 83+ }
 84+
 85+ public static function onParserBeforeInternalParse( &$parser, &$text, &$strip_state ) {
 86+ MagicWord::get( 'NORICHEDITOR' )->matchAndRemove( $text );
 87+
 88+ return true;
 89+ }
 90+
 91+ public function onEditPageShowEditFormFields( $pageEditor, $wgOut ) {
 92+ global $wgUser, $wgFCKEditorIsCompatible, $wgTitle;
 93+
 94+ /*
 95+ If FCKeditor extension is enabled, BUT it shouldn't appear (because it's disabled by user, we have incompatible browser etc.)
 96+ We must do this trick to show the original text as WikiText instead of HTML when conflict occurs
 97+ */
 98+ if ( ( !$wgUser->getOption( 'showtoolbar' ) || $wgUser->getOption( 'riched_disable' ) || !$wgFCKEditorIsCompatible ) ||
 99+ in_array( $wgTitle->getNamespace(), $this->getExcludedNamespaces() ) || !( $this->showFCKEditor & RTE_VISIBLE ) ||
 100+ false !== strpos( $pageEditor->textbox1, '__NORICHEDITOR__' )
 101+ ) {
 102+ if( $pageEditor->isConflict ) {
 103+ $pageEditor->textbox1 = $pageEditor->getWikiContent();
 104+ }
 105+ }
 106+
 107+ return true;
 108+ }
 109+
 110+ /**
 111+ * @param $pageEditor EditPage instance
 112+ * @param $out OutputPage instance
 113+ * @return true
 114+ */
 115+ public static function onEditPageBeforeConflictDiff( $pageEditor, $out ) {
 116+ global $wgRequest;
 117+
 118+ /*
 119+ Show WikiText instead of HTML when there is a conflict
 120+ http://dev.fckeditor.net/ticket/1385
 121+ */
 122+ $pageEditor->textbox2 = $wgRequest->getVal( 'wpTextbox1' );
 123+ $pageEditor->textbox1 = $pageEditor->getWikiContent();
 124+
 125+ return true;
 126+ }
 127+
 128+ public static function onParserBeforeStrip( &$parser, &$text, &$stripState ) {
 129+ $text = $parser->strip( $text, $stripState );
 130+ return true;
 131+ }
 132+
 133+ public static function onSanitizerAfterFixTagAttributes( $text, $element, &$attribs ) {
 134+ $text = preg_match_all( "/Fckmw\d+fckmw/", $text, $matches );
 135+
 136+ if( !empty( $matches[0][0] ) ) {
 137+ global $leaveRawTemplates;
 138+ if( !isset( $leaveRawTemplates ) ) {
 139+ $leaveRawTemplates = array();
 140+ }
 141+ $leaveRawTemplates = array_merge( $leaveRawTemplates, $matches[0] );
 142+ $attribs = array_merge( $attribs, $matches[0] );
 143+ }
 144+
 145+ return true;
 146+ }
 147+
 148+ public function onCustomEditor( $article, $user ) {
 149+ global $wgRequest, $wgUseExternalEditor;
 150+
 151+ $action = $wgRequest->getVal( 'action', 'view' );
 152+
 153+ $internal = $wgRequest->getVal( 'internaledit' );
 154+ $external = $wgRequest->getVal( 'externaledit' );
 155+ $section = $wgRequest->getVal( 'section' );
 156+ $oldid = $wgRequest->getVal( 'oldid' );
 157+ if( !$wgUseExternalEditor || $action == 'submit' || $internal ||
 158+ $section || $oldid || ( !$user->getOption( 'externaleditor' ) && !$external ) ) {
 159+ $editor = new FCKeditorEditPage( $article );
 160+ $editor->submit();
 161+ } elseif( $wgUseExternalEditor && ( $external || $user->getOption( 'externaleditor' ) ) ) {
 162+ $mode = $wgRequest->getVal( 'mode' );
 163+ $extedit = new ExternalEdit( $article, $mode );
 164+ $extedit->edit();
 165+ }
 166+
 167+ return false;
 168+ }
 169+
 170+ public function onEditPageBeforePreviewText( &$editPage, $previewOnOpen ) {
 171+ global $wgUser, $wgRequest;
 172+
 173+ if( $wgUser->getOption( 'showtoolbar' ) && !$wgUser->getOption( 'riched_disable' ) && !$previewOnOpen ) {
 174+ $this->oldTextBox1 = $editPage->textbox1;
 175+ $editPage->importFormData( $wgRequest );
 176+ }
 177+
 178+ return true;
 179+ }
 180+
 181+ public function onEditPagePreviewTextEnd( &$editPage, $previewOnOpen ) {
 182+ global $wgUser;
 183+
 184+ if( $wgUser->getOption( 'showtoolbar' ) && !$wgUser->getOption( 'riched_disable' ) && !$previewOnOpen ) {
 185+ $editPage->textbox1 = $this->oldTextBox1;
 186+ }
 187+
 188+ return true;
 189+ }
 190+
 191+ public function onParserAfterTidy( &$parser, &$text ) {
 192+ global $wgUseTeX, $wgUser, $wgTitle, $wgFCKEditorIsCompatible;
 193+
 194+ # Don't initialize for users that have chosen to disable the toolbar, rich editor or that do not have a FCKeditor-compatible browser
 195+ if( !$wgUser->getOption( 'showtoolbar' ) || $wgUser->getOption( 'riched_disable' ) || !$wgFCKEditorIsCompatible ) {
 196+ return true;
 197+ }
 198+
 199+ # Are we editing a page that's in an excluded namespace? If so, bail out.
 200+ if( is_object( $wgTitle ) && in_array( $wgTitle->getNamespace(), $this->getExcludedNamespaces() ) ) {
 201+ return true;
 202+ }
 203+
 204+ if( $wgUseTeX ) {
 205+ // it may add much overload on page with huge amount of math content...
 206+ $text = preg_replace( '/<img class="tex" alt="([^"]*)"/m', '<img _fckfakelement="true" _fck_mw_math="$1"', $text );
 207+ $text = preg_replace( "/<img class='tex' src=\"([^\"]*)\" alt=\"([^\"]*)\"/m", '<img src="$1" _fckfakelement="true" _fck_mw_math="$2"', $text );
 208+ }
 209+
 210+ return true;
 211+ }
 212+
 213+ /**
 214+ * Adds some new JS global variables
 215+ * @param $vars Array: array of JS global variables
 216+ * @return true
 217+ */
 218+ public static function onMakeGlobalVariablesScript( $vars ){
 219+ global $wgFCKEditorDir, $wgFCKEditorExtDir, $wgFCKEditorToolbarSet, $wgFCKEditorHeight;
 220+
 221+ $vars['wgFCKEditorDir'] = $wgFCKEditorDir;
 222+ $vars['wgFCKEditorExtDir'] = $wgFCKEditorExtDir;
 223+ $vars['wgFCKEditorToolbarSet'] = $wgFCKEditorToolbarSet;
 224+ $vars['wgFCKEditorHeight'] = $wgFCKEditorHeight;
 225+
 226+ return true;
 227+ }
 228+
 229+ /**
 230+ * Adds new toggles into Special:Preferences
 231+ * @param $user User object
 232+ * @param $preferences Preferences object
 233+ * @return true
 234+ */
 235+ public static function onGetPreferences( $user, &$preferences ){
 236+ global $wgDefaultUserOptions;
 237+
 238+
 239+ $preferences['riched_disable'] = array(
 240+ 'type' => 'toggle',
 241+ 'section' => 'editing/fckeditor',
 242+ 'label-message' => 'tog-riched_disable',
 243+ );
 244+
 245+ $preferences['riched_start_disabled'] = array(
 246+ 'type' => 'toggle',
 247+ 'section' => 'editing/fckeditor',
 248+ 'label-message' => 'tog-riched_start_disabled',
 249+ );
 250+
 251+ $preferences['riched_use_popup'] = array(
 252+ 'type' => 'toggle',
 253+ 'section' => 'editing/fckeditor',
 254+ 'label-message' => 'tog-riched_use_popup',
 255+ );
 256+
 257+ $preferences['riched_use_toggle'] = array(
 258+ 'type' => 'toggle',
 259+ 'section' => 'editing/fckeditor',
 260+ 'label-message' => 'tog-riched_use_toggle',
 261+ );
 262+
 263+ $preferences['riched_toggle_remember_state'] = array(
 264+ 'type' => 'toggle',
 265+ 'section' => 'editing/fckeditor',
 266+ 'label-message' => 'tog-riched_toggle_remember_state',
 267+ );
 268+
 269+ // Show default options in Special:Preferences
 270+ if( !array_key_exists( 'riched_disable', $user->mOptions ) && !empty( $wgDefaultUserOptions['riched_disable'] ) )
 271+ $user->setOption( 'riched_disable', $wgDefaultUserOptions['riched_disable'] );
 272+ if( !array_key_exists( 'riched_start_disabled', $user->mOptions ) && !empty( $wgDefaultUserOptions['riched_start_disabled'] ) )
 273+ $user->setOption( 'riched_start_disabled', $wgDefaultUserOptions['riched_start_disabled'] );
 274+ if( !array_key_exists( 'riched_use_popup', $user->mOptions ) && !empty( $wgDefaultUserOptions['riched_use_popup'] ) )
 275+ $user->setOption( 'riched_use_popup', $wgDefaultUserOptions['riched_use_popup'] );
 276+ if( !array_key_exists( 'riched_use_toggle', $user->mOptions ) && !empty( $wgDefaultUserOptions['riched_use_toggle'] ) )
 277+ $user->setOption( 'riched_use_toggle', $wgDefaultUserOptions['riched_use_toggle'] );
 278+ if( !array_key_exists( 'riched_toggle_remember_state', $user->mOptions ) && !empty( $wgDefaultUserOptions['riched_toggle_remember_state'] ) )
 279+ $user->setOption( 'riched_toggle_remember_state', $wgDefaultUserOptions['riched_toggle_remember_state'] );
 280+
 281+ // Add the "disable rich editor on namespace X" toggles too
 282+ foreach( self::$nsToggles as $newToggle ){
 283+ $preferences[$newToggle] = array(
 284+ 'type' => 'toggle',
 285+ 'section' => 'editing/fckeditor',
 286+ 'label-message' => 'tog-' . $newToggle
 287+ );
 288+ }
 289+
 290+ return true;
 291+ }
 292+
 293+ /**
 294+ * Add FCK script
 295+ *
 296+ * @param $form EditPage object
 297+ * @return true
 298+ */
 299+ public function onEditPageShowEditFormInitial( $form ) {
 300+ global $wgOut, $wgTitle, $wgScriptPath, $wgContLang, $wgUser;
 301+ global $wgStylePath, $wgStyleVersion, $wgExtensionFunctions, $wgHooks, $wgDefaultUserOptions;
 302+ global $wgFCKWikiTextBeforeParse, $wgFCKEditorIsCompatible;
 303+ global $wgFCKEditorDir;
 304+
 305+ if( !isset( $this->showFCKEditor ) ){
 306+ $this->showFCKEditor = 0;
 307+ if ( !$wgUser->getOption( 'riched_start_disabled', $wgDefaultUserOptions['riched_start_disabled'] ) ) {
 308+ $this->showFCKEditor += RTE_VISIBLE;
 309+ }
 310+ if ( $wgUser->getOption( 'riched_use_popup', $wgDefaultUserOptions['riched_use_popup'] ) ) {
 311+ $this->showFCKEditor += RTE_POPUP;
 312+ }
 313+ if ( $wgUser->getOption( 'riched_use_toggle', $wgDefaultUserOptions['riched_use_toggle'] ) ) {
 314+ $this->showFCKEditor += RTE_TOGGLE_LINK;
 315+ }
 316+ }
 317+
 318+ if( ( !empty( $_SESSION['showMyFCKeditor'] ) ) && ( $wgUser->getOption( 'riched_toggle_remember_state', $wgDefaultUserOptions['riched_toggle_remember_state'] ) ) ){
 319+ // Clear RTE_VISIBLE flag
 320+ $this->showFCKEditor &= ~RTE_VISIBLE;
 321+ // Get flag from session
 322+ $this->showFCKEditor |= $_SESSION['showMyFCKeditor'];
 323+ }
 324+
 325+ # Don't initialize if we have disabled the toolbar or FCkeditor or have a non-compatible browser
 326+ if( !$wgUser->getOption( 'showtoolbar' ) ||
 327+ $wgUser->getOption( 'riched_disable', !empty( $wgDefaultUserOptions['riched_disable'] ) ? $wgDefaultUserOptions['riched_disable'] : false )
 328+ || !$wgFCKEditorIsCompatible ) {
 329+ return true;
 330+ }
 331+
 332+ # Don't do anything if we're in an excluded namespace
 333+ if( in_array( $wgTitle->getNamespace(), $this->getExcludedNamespaces() ) ) {
 334+ return true;
 335+ }
 336+
 337+ # Make sure that there's no __NORICHEDITOR__ in the text either
 338+ if( false !== strpos( $form->textbox1, '__NORICHEDITOR__' ) ) {
 339+ return true;
 340+ }
 341+
 342+ $wgFCKWikiTextBeforeParse = $form->textbox1;
 343+ if( $this->showFCKEditor & RTE_VISIBLE ){
 344+ $options = new FCKeditorParserOptions();
 345+ $options->setTidy( true );
 346+ $parser = new FCKeditorParser();
 347+ $parser->setOutputType( OT_HTML );
 348+ $form->textbox1 = str_replace( '<!-- Tidy found serious XHTML errors -->', '', $parser->parse( $form->textbox1, $wgTitle, $options )->getText() );
 349+ }
 350+
 351+ $printsheet = htmlspecialchars( "$wgStylePath/common/wikiprintable.css?$wgStyleVersion" );
 352+
 353+ $script = <<<HEREDOC
 354+<script type="text/javascript" src="$wgScriptPath/$wgFCKEditorDir/fckeditor.js"></script>
 355+<script type="text/javascript">
 356+var sEditorAreaCSS = '$printsheet,/mediawiki/skins/monobook/main.css?{$wgStyleVersion}';
 357+</script>
 358+<!--[if lt IE 5.5000]><script type="text/javascript">sEditorAreaCSS += ',/mediawiki/skins/monobook/IE50Fixes.css?{$wgStyleVersion}'; </script><![endif]-->
 359+<!--[if IE 5.5000]><script type="text/javascript">sEditorAreaCSS += ',/mediawiki/skins/monobook/IE55Fixes.css?{$wgStyleVersion}'; </script><![endif]-->
 360+<!--[if IE 6]><script type="text/javascript">sEditorAreaCSS += ',/mediawiki/skins/monobook/IE60Fixes.css?{$wgStyleVersion}'; </script><![endif]-->
 361+<!--[if IE 7]><script type="text/javascript">sEditorAreaCSS += ',/mediawiki/skins/monobook/IE70Fixes.css?{$wgStyleVersion}'; </script><![endif]-->
 362+<!--[if lt IE 7]><script type="text/javascript">sEditorAreaCSS += ',/mediawiki/skins/monobook/IEFixes.css?{$wgStyleVersion}'; </script><![endif]-->
 363+HEREDOC;
 364+
 365+ # Show references only if Cite extension has been installed
 366+ $showRef = false;
 367+ if( ( isset( $wgHooks['ParserFirstCallInit'] ) && in_array( 'wfCite', $wgHooks['ParserFirstCallInit'] ) ) ||
 368+ ( isset( $wgExtensionFunctions ) && in_array( 'wfCite', $wgExtensionFunctions ) ) ) {
 369+ $showRef = true;
 370+ }
 371+
 372+ $showSource = false;
 373+ if ( ( isset( $wgHooks['ParserFirstCallInit']) && in_array( 'efSyntaxHighlight_GeSHiSetup', $wgHooks['ParserFirstCallInit'] ) )
 374+ || ( isset( $wgExtensionFunctions ) && in_array( 'efSyntaxHighlight_GeSHiSetup', $wgExtensionFunctions ) ) ) {
 375+ $showSource = true;
 376+ }
 377+
 378+
 379+ $script .= '
 380+<script type="text/javascript">
 381+var showFCKEditor = ' . $this->showFCKEditor . ';
 382+var popup = false; // pointer to popup document
 383+var firstLoad = true;
 384+var editorMsgOn = "' . Xml::escapeJsString( wfMsgHtml( 'textrichditor' ) ) . '";
 385+var editorMsgOff = "' . Xml::escapeJsString( wfMsgHtml( 'tog-riched_disable' ) ) . '";
 386+var editorLink = "' . ( ( $this->showFCKEditor & RTE_VISIBLE ) ? Xml::escapeJsString( wfMsgHtml( 'tog-riched_disable' ) ) : Xml::escapeJsString( wfMsgHtml( 'textrichditor' ) ) ) . '";
 387+var saveSetting = ' . ( $wgUser->getOption( 'riched_toggle_remember_state', $wgDefaultUserOptions['riched_toggle_remember_state'] ) ? 1 : 0 ) . ';
 388+var RTE_VISIBLE = ' . RTE_VISIBLE . ';
 389+var RTE_TOGGLE_LINK = ' . RTE_TOGGLE_LINK . ';
 390+var RTE_POPUP = ' . RTE_POPUP . ';
 391+
 392+
 393+var oFCKeditor = new FCKeditor( "wpTextbox1" );
 394+
 395+// Set config
 396+oFCKeditor.BasePath = wgScriptPath + "/" + wgFCKEditorDir;
 397+oFCKeditor.Config["CustomConfigurationsPath"] = wgScriptPath + "/" + wgFCKEditorExtDir + "/fckeditor_config.js";';
 398+ // Load fckeditor-rtl.css for right-to-left languages, but only fckeditor.css for other languages
 399+ if( $wgContLang->isRTL() ) {
 400+ $script .= 'oFCKeditor.Config["EditorAreaCSS"] = wgScriptPath + "/" + wgFCKEditorExtDir + "/css/fckeditor.css," + wgScriptPath + "/" + wgFCKEditorExtDir + "/css/fckeditor-rtl.css";';
 401+ } else {
 402+ $script .= 'oFCKeditor.Config["EditorAreaCSS"] = wgScriptPath + "/" + wgFCKEditorExtDir + "/css/fckeditor.css";';
 403+ }
 404+ $script .= '
 405+oFCKeditor.ToolbarSet = wgFCKEditorToolbarSet;
 406+oFCKeditor.ready = true;
 407+oFCKeditor.Config["showreferences"] = ' . ( ( $showRef ) ? 'true' : 'false' ) . ';
 408+oFCKeditor.Config["showsource"] = ' . ( ( $showSource ) ? 'true' : 'false' ) . ';
 409+';
 410+ $script .= '</script>';
 411+
 412+ $newWinMsg = Xml::escapeJsString( wfMsgHtml( 'rich_editor_new_window' ) );
 413+ $script .= <<<HEREDOC
 414+<script type="text/javascript">
 415+
 416+//IE hack to call func from popup
 417+function FCK_sajax(func_name, args, target) {
 418+ sajax_request_type = 'POST';
 419+ sajax_do_call(func_name, args, function (x) {
 420+ // I know this is function, not object
 421+ target(x);
 422+ }
 423+ );
 424+}
 425+
 426+function onLoadFCKeditor(){
 427+ if( !( showFCKEditor & RTE_VISIBLE ) )
 428+ showFCKEditor += RTE_VISIBLE;
 429+ firstLoad = false;
 430+ realTextarea = document.getElementById( 'wpTextbox1' );
 431+ if ( realTextarea ){
 432+ var height = wgFCKEditorHeight;
 433+ realTextarea.style.display = 'none';
 434+ if ( height == 0 ){
 435+ // Get the window (inner) size.
 436+ var height = window.innerHeight || ( document.documentElement && document.documentElement.clientHeight ) || 550;
 437+
 438+ // Reduce the height to the offset of the toolbar.
 439+ var offset = document.getElementById( 'wikiPreview' ) || document.getElementById( 'toolbar' );
 440+ while ( offset ){
 441+ height -= offset.offsetTop;
 442+ offset = offset.offsetParent;
 443+ }
 444+
 445+ // Add a small space to be left in the bottom.
 446+ height -= 20;
 447+ }
 448+
 449+ // Enforce a minimum height.
 450+ height = ( !height || height < 300 ) ? 300 : height;
 451+
 452+ // Create the editor instance and replace the textarea.
 453+ oFCKeditor.Height = height;
 454+ oFCKeditor.ReplaceTextarea();
 455+
 456+ // Hide the default toolbar.
 457+ document.getElementById( 'toolbar' ).style.display = 'none';
 458+
 459+ // do things with CharInsert for example
 460+ var edittools_markup = document.getElementById( 'editpage-specialchars' );
 461+ if( edittools_markup ) {
 462+ edittools_markup.style.display = 'none';
 463+ }
 464+ FCKeditorInsertTags = function( tagOpen, tagClose, sampleText, oDoc ){
 465+ var txtarea;
 466+
 467+ if ( !( typeof(oDoc.FCK) == "undefined" ) && !( typeof(oDoc.FCK.EditingArea) == "undefined" ) ){
 468+ txtarea = oDoc.FCK.EditingArea.Textarea;
 469+ } elseif( oDoc.editform ){
 470+ // if we have FCK enabled, behave differently...
 471+ if ( showFCKEditor & RTE_VISIBLE ){
 472+ SRCiframe = oDoc.getElementById( 'wpTextbox1___Frame' );
 473+ if ( SRCiframe ){
 474+ if( window.frames[SRCiframe] )
 475+ SRCdoc = window.frames[SRCiframe].oDoc;
 476+ else
 477+ SRCdoc = SRCiframe.contentDocument;
 478+
 479+ var SRCarea = SRCdoc.getElementById( 'xEditingArea' ).firstChild;
 480+
 481+ if( SRCarea )
 482+ txtarea = SRCarea;
 483+ else
 484+ return false;
 485+
 486+ } else {
 487+ return false;
 488+ }
 489+ } else {
 490+ txtarea = oDoc.editform.wpTextbox1;
 491+ }
 492+ } else {
 493+ // some alternate form? take the first one we can find
 494+ var areas = oDoc.getElementsByTagName( 'textarea' );
 495+ txtarea = areas[0];
 496+ }
 497+
 498+ var selText, isSample = false;
 499+
 500+ if ( oDoc.selection && oDoc.selection.createRange ){ // IE/Opera
 501+
 502+ // save window scroll position
 503+ if ( oDoc.documentElement && oDoc.documentElement.scrollTop )
 504+ var winScroll = oDoc.documentElement.scrollTop;
 505+ elseif ( oDoc.body )
 506+ var winScroll = oDoc.body.scrollTop;
 507+
 508+ // get current selection
 509+ txtarea.focus();
 510+ var range = oDoc.selection.createRange();
 511+ selText = range.text;
 512+ // insert tags
 513+ checkSelected();
 514+ range.text = tagOpen + selText + tagClose;
 515+ // mark sample text as selected
 516+ if ( isSample && range.moveStart ){
 517+ if( window.opera )
 518+ tagClose = tagClose.replace(/\\n/g,''); // check it out one more time
 519+ range.moveStart( 'character', - tagClose.length - selText.length );
 520+ range.moveEnd( 'character', - tagClose.length );
 521+ }
 522+ range.select();
 523+ // restore window scroll position
 524+ if ( oDoc.documentElement && oDoc.documentElement.scrollTop )
 525+ oDoc.documentElement.scrollTop = winScroll;
 526+ elseif ( oDoc.body )
 527+ oDoc.body.scrollTop = winScroll;
 528+
 529+ } elseif ( txtarea.selectionStart || txtarea.selectionStart == '0' ){ // Mozilla
 530+
 531+ // save textarea scroll position
 532+ var textScroll = txtarea.scrollTop;
 533+ // get current selection
 534+ txtarea.focus();
 535+ var startPos = txtarea.selectionStart;
 536+ var endPos = txtarea.selectionEnd;
 537+ selText = txtarea.value.substring( startPos, endPos );
 538+
 539+ // insert tags
 540+ if( !selText ){
 541+ selText = sampleText;
 542+ isSample = true;
 543+ } elseif( selText.charAt(selText.length - 1) == ' ' ){ //exclude ending space char
 544+ selText = selText.substring(0, selText.length - 1);
 545+ tagClose += ' ';
 546+ }
 547+ txtarea.value = txtarea.value.substring(0, startPos) + tagOpen + selText + tagClose +
 548+ txtarea.value.substring(endPos, txtarea.value.length);
 549+ // set new selection
 550+ if( isSample ){
 551+ txtarea.selectionStart = startPos + tagOpen.length;
 552+ txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
 553+ } else {
 554+ txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
 555+ txtarea.selectionEnd = txtarea.selectionStart;
 556+ }
 557+ // restore textarea scroll position
 558+ txtarea.scrollTop = textScroll;
 559+ }
 560+ }
 561+ }
 562+}
 563+function checkSelected(){
 564+ if( !selText ) {
 565+ selText = sampleText;
 566+ isSample = true;
 567+ } elseif( selText.charAt(selText.length - 1) == ' ' ) { //exclude ending space char
 568+ selText = selText.substring(0, selText.length - 1);
 569+ tagClose += ' '
 570+ }
 571+}
 572+function initEditor(){
 573+ var toolbar = document.getElementById( 'toolbar' );
 574+ // show popup or toogle link
 575+ if( showFCKEditor & ( RTE_POPUP|RTE_TOGGLE_LINK ) ){
 576+ // add new toolbar before wiki toolbar
 577+ var fckTools = document.createElement( 'div' );
 578+ fckTools.setAttribute('id', 'fckTools');
 579+ toolbar.parentNode.insertBefore( fckTools, toolbar );
 580+
 581+ var SRCtextarea = document.getElementById( 'wpTextbox1' );
 582+ if( showFCKEditor & RTE_VISIBLE ) SRCtextarea.style.display = 'none';
 583+ }
 584+
 585+ if( showFCKEditor & RTE_TOGGLE_LINK ){
 586+ fckTools.innerHTML='[<a class="fckToogle" id="toggle_wpTextbox1" href="javascript:void(0)" onclick="ToggleFCKEditor(\'toggle\',\'wpTextbox1\')">'+ editorLink +'</a>] ';
 587+ }
 588+ if( showFCKEditor & RTE_POPUP ){
 589+ var style = (showFCKEditor & RTE_VISIBLE) ? 'style="display:none"' : "";
 590+ fckTools.innerHTML+='<span ' + style + ' id="popup_wpTextbox1">[<a class="fckPopup" href="javascript:void(0)" onclick="ToggleFCKEditor(\'popup\',\'wpTextbox1\')">{$newWinMsg}</a>]</span>';
 591+ }
 592+
 593+ if( showFCKEditor & RTE_VISIBLE ){
 594+ if ( toolbar ){ // insert wiki buttons
 595+ // Remove the mwSetupToolbar onload hook to avoid a JavaScript error with FF.
 596+ if ( window.removeEventListener )
 597+ window.removeEventListener( 'load', mwSetupToolbar, false );
 598+ elseif ( window.detachEvent )
 599+ window.detachEvent( 'onload', mwSetupToolbar );
 600+ mwSetupToolbar = function(){ return false ; };
 601+
 602+ for( var i = 0; i < mwEditButtons.length; i++ ) {
 603+ mwInsertEditButton(toolbar, mwEditButtons[i]);
 604+ }
 605+ for( var i = 0; i < mwCustomEditButtons.length; i++ ) {
 606+ mwInsertEditButton(toolbar, mwCustomEditButtons[i]);
 607+ }
 608+ }
 609+ onLoadFCKeditor();
 610+ }
 611+ return true;
 612+}
 613+addOnloadHook( initEditor );
 614+
 615+HEREDOC;
 616+
 617+if( $this->showFCKEditor & ( RTE_TOGGLE_LINK | RTE_POPUP ) ){
 618+ // add toggle link and handler
 619+ $script .= <<<HEREDOC
 620+
 621+function ToggleFCKEditor( mode, objId ){
 622+ var SRCtextarea = document.getElementById( objId );
 623+ if( mode == 'popup' ){
 624+ if ( ( showFCKEditor & RTE_VISIBLE ) && ( FCKeditorAPI ) ) { // if FCKeditor is up-to-date
 625+ var oEditorIns = FCKeditorAPI.GetInstance( objId );
 626+ var text = oEditorIns.GetData( oEditorIns.Config.FormatSource );
 627+ SRCtextarea.value = text; // copy text to textarea
 628+ }
 629+ FCKeditor_OpenPopup('oFCKeditor', objId);
 630+ return true;
 631+ }
 632+
 633+ var oToggleLink = document.getElementById( 'toggle_' + objId );
 634+ var oPopupLink = document.getElementById( 'popup_' + objId );
 635+
 636+ if ( firstLoad ){
 637+ // firstLoad = true => FCKeditor start invisible
 638+ if( oToggleLink ) oToggleLink.innerHTML = 'Loading...';
 639+ sajax_request_type = 'POST';
 640+ oFCKeditor.ready = false;
 641+ sajax_do_call('wfSajaxWikiToHTML', [SRCtextarea.value], function( result ){
 642+ if ( firstLoad ){ //still
 643+ SRCtextarea.value = result.responseText; // insert parsed text
 644+ onLoadFCKeditor();
 645+ if( oToggleLink ) oToggleLink.innerHTML = editorMsgOff;
 646+ oFCKeditor.ready = true;
 647+ }
 648+ });
 649+ return true;
 650+ }
 651+
 652+ if( !oFCKeditor.ready ) return false; // sajax_do_call in action
 653+ if( !FCKeditorAPI ) return false; // not loaded yet
 654+ var oEditorIns = FCKeditorAPI.GetInstance( objId );
 655+ var oEditorIframe = document.getElementById( objId + '___Frame' );
 656+ var FCKtoolbar = document.getElementById( 'toolbar' );
 657+ var bIsWysiwyg = ( oEditorIns.EditMode == FCK_EDITMODE_WYSIWYG );
 658+
 659+ //FCKeditor visible -> hidden
 660+ if ( showFCKEditor & RTE_VISIBLE ){
 661+ var text = oEditorIns.GetData( oEditorIns.Config.FormatSource );
 662+ SRCtextarea.value = text;
 663+ if ( bIsWysiwyg ) oEditorIns.SwitchEditMode(); // switch to plain
 664+ var text = oEditorIns.GetData( oEditorIns.Config.FormatSource );
 665+ // copy from FCKeditor to textarea
 666+ SRCtextarea.value = text;
 667+ if( saveSetting ){
 668+ sajax_request_type = 'GET';
 669+ sajax_do_call( 'wfSajaxToggleFCKeditor', ['hide'], function(){} ); //remember closing in session
 670+ }
 671+ if( oToggleLink ) oToggleLink.innerHTML = editorMsgOn;
 672+ if( oPopupLink ) oPopupLink.style.display = '';
 673+ showFCKEditor -= RTE_VISIBLE;
 674+ oEditorIframe.style.display = 'none';
 675+ FCKtoolbar.style.display = '';
 676+ SRCtextarea.style.display = '';
 677+ } else {
 678+ // FCKeditor hidden -> visible
 679+ if ( bIsWysiwyg ) oEditorIns.SwitchEditMode(); // switch to plain
 680+ SRCtextarea.style.display = 'none';
 681+ // copy from textarea to FCKeditor
 682+ oEditorIns.EditingArea.Textarea.value = SRCtextarea.value;
 683+ FCKtoolbar.style.display = 'none';
 684+ oEditorIframe.style.display = '';
 685+ if ( !bIsWysiwyg ) oEditorIns.SwitchEditMode(); // switch to WYSIWYG
 686+ showFCKEditor += RTE_VISIBLE; // showFCKEditor+=RTE_VISIBLE
 687+ if( oToggleLink ) oToggleLink.innerHTML = editorMsgOff;
 688+ if( oPopupLink ) oPopupLink.style.display = 'none';
 689+ }
 690+ return true;
 691+}
 692+
 693+HEREDOC;
 694+}
 695+
 696+if( $this->showFCKEditor & RTE_POPUP ){
 697+ $script .= <<<HEREDOC
 698+
 699+function FCKeditor_OpenPopup(jsID, textareaID){
 700+ popupUrl = wgFCKEditorExtDir + '/FCKeditor.popup.html';
 701+ popupUrl = popupUrl + '?var='+ jsID + '&el=' + textareaID;
 702+ window.open(popupUrl, null, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=1,dependent=yes');
 703+ return 0;
 704+}
 705+HEREDOC;
 706+}
 707+$script .= '</script>';
 708+
 709+ $wgOut->addScript( $script );
 710+
 711+ return true;
 712+ }
 713+
 714+}
Property changes on: trunk/extensions/FCKeditor/FCKeditor.body.php
___________________________________________________________________
Added: svn:eol-style
1715 + native
Index: trunk/extensions/FCKeditor/OBSOLETE
@@ -0,0 +1,4 @@
 2+Per the upstream bug tracker http://dev.ckeditor.com/ticket/5602 and http://dev.ckeditor.com/ticket/6273
 3+"MediaWiki and FCKeditor are no longer supported. Closing the ticked."
 4+
 5+This extension is obsolete and as per above, unsupported by the upstream developers
Index: trunk/extensions/FCKeditor/FCKeditor.i18n.php
@@ -0,0 +1,1531 @@
 2+<?php
 3+/**
 4+ * Internationalization file for FCKeditor extension.
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ */
 9+
 10+$messages = array();
 11+
 12+/** English */
 13+$messages['en'] = array(
 14+ 'fckeditor-desc' => 'Allow editing using the WYSIWYG editor FCKeditor',
 15+ 'textrichditor' => 'Rich Editor',
 16+ 'prefs-fckeditor' => 'Rich Editor',
 17+ 'tog-riched_disable' => 'Disable rich editor',
 18+ 'tog-riched_disable_ns_main' => 'Disable rich editor within the main namespace',
 19+ 'tog-riched_disable_ns_talk' => 'Disable rich editor within the "{{ns:talk}}" namespace',
 20+ 'tog-riched_disable_ns_user' => 'Disable rich editor within the "{{ns:user}}" namespace',
 21+ 'tog-riched_disable_ns_user_talk' => 'Disable rich editor within the "{{ns:user_talk}}" namespace',
 22+ 'tog-riched_disable_ns_project' => 'Disable rich editor within the "{{ns:project}}" namespace',
 23+ 'tog-riched_disable_ns_project_talk' => 'Disable rich editor within the "{{ns:project_talk}}" namespace',
 24+ 'tog-riched_disable_ns_image' => 'Disable rich editor within the "{{ns:file}}" namespace',
 25+ 'tog-riched_disable_ns_image_talk' => 'Disable rich editor within the "{{ns:file_talk}}" namespace',
 26+ 'tog-riched_disable_ns_mediawiki' => 'Disable rich editor within the "{{ns:mediawiki}}" namespace',
 27+ 'tog-riched_disable_ns_mediawiki_talk' => 'Disable rich editor within the "{{ns:mediawiki_talk}}" namespace',
 28+ 'tog-riched_disable_ns_template' => 'Disable rich editor within the "{{ns:template}}" namespace',
 29+ 'tog-riched_disable_ns_template_talk' => 'Disable rich editor within the "{{ns:template_talk}}" namespace',
 30+ 'tog-riched_disable_ns_help' => 'Disable rich editor within the "{{ns:help}}" namespace',
 31+ 'tog-riched_disable_ns_help_talk' => 'Disable rich editor within the "{{ns:help_talk}}" namespace',
 32+ 'tog-riched_disable_ns_category' => 'Disable rich editor within the "{{ns:category}}" namespace',
 33+ 'tog-riched_disable_ns_category_talk' => 'Disable rich editor within the "{{ns:category_talk}}" namespace',
 34+ 'rich_editor_new_window' => 'Open Rich editor in new window',
 35+ 'tog-riched_start_disabled' => 'Start with rich editor disabled',
 36+ 'tog-riched_use_popup' => 'Open rich editor in a popup',
 37+ 'tog-riched_use_toggle' => 'Use toggle to switch between wikitext and rich editor (replace textarea with rich editor)',
 38+ 'tog-riched_toggle_remember_state' => 'Remember last toggle state',
 39+);
 40+
 41+/** Message documentation (Message documentation)
 42+ * @author Pinodd
 43+ * @author Umherirrender
 44+ */
 45+$messages['qqq'] = array(
 46+ 'fckeditor-desc' => '{{desc}}',
 47+ 'textrichditor' => "questo dovrebbe essere solo il nome dell'estensione e quindi lo lascerei com'è",
 48+ 'prefs-fckeditor' => "questo dovrebbe essere semplicemente il nome dell'estensione e a mio parere va lasciato così com'è",
 49+);
 50+
 51+/** Arabic (العربية)
 52+ * @author Meno25
 53+ * @author OsamaK
 54+ */
 55+$messages['ar'] = array(
 56+ 'fckeditor-desc' => 'يسمح بالتعديل باستخدام محرر الWYSIWYG FCKeditor',
 57+ 'textrichditor' => 'محرر متقدم',
 58+ 'prefs-fckeditor' => 'محرّر غني',
 59+ 'tog-riched_disable' => 'عطل المحرر المتقدم',
 60+ 'tog-riched_disable_ns_main' => 'عطل المحرر المتقدم في النطاق الرئيسي',
 61+ 'tog-riched_disable_ns_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:talk}}"',
 62+ 'tog-riched_disable_ns_user' => 'عطل المحرر المتقدم في نطاق "{{ns:user}}"',
 63+ 'tog-riched_disable_ns_user_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:user_talk}}"',
 64+ 'tog-riched_disable_ns_project' => 'عطل المحرر المتقدم في نطاق "{{ns:project}}"',
 65+ 'tog-riched_disable_ns_project_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:project_talk}}"',
 66+ 'tog-riched_disable_ns_image' => 'عطل المحرر المتقدم في نطاق "{{ns:file}}"',
 67+ 'tog-riched_disable_ns_image_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:file_talk}}"',
 68+ 'tog-riched_disable_ns_mediawiki' => 'عطل المحرر المتقدم في نطاق "{{ns:mediawiki}}"',
 69+ 'tog-riched_disable_ns_mediawiki_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:mediawiki_talk}}"',
 70+ 'tog-riched_disable_ns_template' => 'عطل المحرر المتقدم في نطاق "{{ns:template}}"',
 71+ 'tog-riched_disable_ns_template_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:template_talk}}"',
 72+ 'tog-riched_disable_ns_help' => 'عطل المحرر المتقدم في نطاق "{{ns:help}}"',
 73+ 'tog-riched_disable_ns_help_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:help_talk}}"',
 74+ 'tog-riched_disable_ns_category' => 'عطل المحرر المتقدم في نطاق "{{ns:category}}"',
 75+ 'tog-riched_disable_ns_category_talk' => 'عطل المحرر المتقدم في نطاق "{{ns:category_talk}}"',
 76+ 'rich_editor_new_window' => 'افتح المحرر الغني في نافذة جديدة',
 77+ 'tog-riched_start_disabled' => 'ابدأ بتعطيل المحرر الغني',
 78+ 'tog-riched_use_popup' => 'افتح المحرر الغني في نافذة منبثقة',
 79+ 'tog-riched_use_toggle' => 'استخدم التبديل للتغيير بين نص الويكي والمحرر الغني (استبدل مساحة النص بالمحرر الغني)',
 80+ 'tog-riched_toggle_remember_state' => 'تذكر آخر حالة تبديل',
 81+);
 82+
 83+/** Belarusian (Taraškievica orthography) (‪Беларуская (тарашкевіца)‬)
 84+ * @author EugeneZelenko
 85+ * @author Jim-by
 86+ */
 87+$messages['be-tarask'] = array(
 88+ 'fckeditor-desc' => 'Дазваляе рэдагаваньне з дапамогай WYSIWYG рэдактара FCKeditor',
 89+ 'textrichditor' => 'Палепшаны рэдактар',
 90+ 'prefs-fckeditor' => 'Палепшаны рэдактар',
 91+ 'tog-riched_disable' => 'Адключыць палепшаны рэдактар',
 92+ 'tog-riched_disable_ns_main' => 'Адключыць палепшаны рэдактар у асноўнай прасторы назваў',
 93+ 'tog-riched_disable_ns_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:Talk}}»',
 94+ 'tog-riched_disable_ns_user' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:User}}»',
 95+ 'tog-riched_disable_ns_user_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:User_talk}}»',
 96+ 'tog-riched_disable_ns_project' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:Project}}»',
 97+ 'tog-riched_disable_ns_project_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:Project_talk}}»',
 98+ 'tog-riched_disable_ns_image' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:file}}»',
 99+ 'tog-riched_disable_ns_image_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:file_talk}}»',
 100+ 'tog-riched_disable_ns_mediawiki' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:mediawiki}}»',
 101+ 'tog-riched_disable_ns_mediawiki_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:mediawiki_talk}}»',
 102+ 'tog-riched_disable_ns_template' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:template}}»',
 103+ 'tog-riched_disable_ns_template_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:template_talk}}»',
 104+ 'tog-riched_disable_ns_help' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:help}}»',
 105+ 'tog-riched_disable_ns_help_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:help_talk}}»',
 106+ 'tog-riched_disable_ns_category' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:category}}»',
 107+ 'tog-riched_disable_ns_category_talk' => 'Адключыць палепшаны рэдактар у прасторы назваў «{{ns:category_talk}}»',
 108+ 'rich_editor_new_window' => 'Адчыніць палепшаны рэдактар ў новым акне',
 109+ 'tog-riched_start_disabled' => 'Пачынаць працу з адключаным палепшаным рэдактарам',
 110+ 'tog-riched_use_popup' => 'Адчыніць палепшаны рэдактар ў дадатковым акенцы',
 111+ 'tog-riched_use_toggle' => 'Выкарыстоўваць пераключальнік паміж звычайным і палепшаным рэдактарам (замяняе тэкставае поле на палепшаны рэдактар)',
 112+ 'tog-riched_toggle_remember_state' => 'Памятаць апошні стан пераключальніка',
 113+);
 114+
 115+/** Bulgarian (Български)
 116+ * @author Borislav
 117+ * @author DCLXVI
 118+ */
 119+$messages['bg'] = array(
 120+ 'fckeditor-desc' => 'Възможност за редактиране с помощта на разширения редактор FCKeditor',
 121+ 'textrichditor' => 'Разширен редактор',
 122+ 'prefs-fckeditor' => 'Разширен редактор',
 123+ 'tog-riched_disable' => 'Изключване на разширения редактор',
 124+ 'tog-riched_disable_ns_main' => 'Изключване на разширения редактор в основното именно пространство',
 125+ 'tog-riched_disable_ns_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Talk}}“',
 126+ 'tog-riched_disable_ns_user' => 'Изключване на разширения редактор в именно пространство „{{ns:User}}“',
 127+ 'tog-riched_disable_ns_user_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:User_talk}}“',
 128+ 'tog-riched_disable_ns_project' => 'Изключване на разширения редактор в именно пространство „{{ns:Project}}“',
 129+ 'tog-riched_disable_ns_project_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Project_talk}}“',
 130+ 'tog-riched_disable_ns_image' => 'Изключване на разширения редактор в именно пространство „{{ns:Image}}“',
 131+ 'tog-riched_disable_ns_image_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Image_talk}}“',
 132+ 'tog-riched_disable_ns_mediawiki' => 'Изключване на разширения редактор в именно пространство „{{ns:MediaWiki}}“',
 133+ 'tog-riched_disable_ns_mediawiki_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:MediaWiki_talk}}“',
 134+ 'tog-riched_disable_ns_template' => 'Изключване на разширения редактор в именно пространство „{{ns:Template}}“',
 135+ 'tog-riched_disable_ns_template_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Template_talk}}“',
 136+ 'tog-riched_disable_ns_help' => 'Изключване на разширения редактор в именно пространство „{{ns:Help}}“',
 137+ 'tog-riched_disable_ns_help_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Help_talk}}“',
 138+ 'tog-riched_disable_ns_category' => 'Изключване на разширения редактор в именно пространство „{{ns:Category}}“',
 139+ 'tog-riched_disable_ns_category_talk' => 'Изключване на разширения редактор в именно пространство „{{ns:Category_talk}}“',
 140+ 'rich_editor_new_window' => 'Разширен редактор в нов прозорец',
 141+ 'tog-riched_start_disabled' => 'Без автоматично пускане на разширения редактор',
 142+ 'tog-riched_use_popup' => 'Отваряне на разширения редактор в нов прозорец',
 143+ 'tog-riched_use_toggle' => 'Възможност за превключване между уикитекст и разширен редактор (замества текстовото поле с разширения редактор)',
 144+ 'tog-riched_toggle_remember_state' => 'Запомняне на текущото състояние',
 145+);
 146+
 147+/** Bengali (বাংলা)
 148+ * @author Wikitanvir
 149+ */
 150+$messages['bn'] = array(
 151+ 'textrichditor' => 'রিচ এডিটর',
 152+ 'prefs-fckeditor' => 'রিচ এডিটর',
 153+ 'tog-riched_disable' => 'রিচ এডিটর নিষ্ক্রিয় করো',
 154+ 'tog-riched_disable_ns_main' => 'প্রধান নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 155+ 'tog-riched_disable_ns_talk' => '"{{ns:talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 156+ 'tog-riched_disable_ns_user' => '"{{ns:user}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 157+ 'tog-riched_disable_ns_user_talk' => '"{{ns:user_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 158+ 'tog-riched_disable_ns_project' => '"{{ns:project}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 159+ 'tog-riched_disable_ns_project_talk' => '"{{ns:project_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 160+ 'tog-riched_disable_ns_image' => '"{{ns:file}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 161+ 'tog-riched_disable_ns_image_talk' => '"{{ns:file_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 162+ 'tog-riched_disable_ns_mediawiki' => '"{{ns:mediawiki}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 163+ 'tog-riched_disable_ns_mediawiki_talk' => '"{{ns:mediawiki_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 164+ 'tog-riched_disable_ns_template' => '"{{ns:template}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 165+ 'tog-riched_disable_ns_template_talk' => '"{{ns:template_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 166+ 'tog-riched_disable_ns_help' => '"{{ns:help}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 167+ 'tog-riched_disable_ns_help_talk' => '"{{ns:help_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 168+ 'tog-riched_disable_ns_category' => '"{{ns:category}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 169+ 'tog-riched_disable_ns_category_talk' => '"{{ns:category_talk}}" নামস্থানে রিচ এডিটর নিষ্ক্রিয় করো',
 170+ 'rich_editor_new_window' => 'রিচ এডিটর নতুন পাতায় চালু করো',
 171+);
 172+
 173+/** Breton (Brezhoneg)
 174+ * @author Fulup
 175+ */
 176+$messages['br'] = array(
 177+ 'fckeditor-desc' => 'Aotren a ra implijout ar skridaozer WYSIWYG FCKeditor evit degas kemmoù',
 178+ 'textrichditor' => 'Skridaozer Pinvidikaet',
 179+ 'prefs-fckeditor' => 'Skridaozer Pinvidikaet',
 180+ 'tog-riched_disable' => 'Diweredekaat ar skridaozer pinvidikaet',
 181+ 'tog-riched_disable_ns_main' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv pennañ.',
 182+ 'tog-riched_disable_ns_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:talk}}"',
 183+ 'tog-riched_disable_ns_user' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:user}}"',
 184+ 'tog-riched_disable_ns_user_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:user_talk}}"',
 185+ 'tog-riched_disable_ns_project' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:project}}"',
 186+ 'tog-riched_disable_ns_project_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:project_talk}}"',
 187+ 'tog-riched_disable_ns_image' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:file}}"',
 188+ 'tog-riched_disable_ns_image_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:file_talk}}"',
 189+ 'tog-riched_disable_ns_mediawiki' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:mediawiki}}"',
 190+ 'tog-riched_disable_ns_mediawiki_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:mediawiki_talk}}"',
 191+ 'tog-riched_disable_ns_template' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:template}}"',
 192+ 'tog-riched_disable_ns_template_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:template_talk}}"',
 193+ 'tog-riched_disable_ns_help' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:help}}"',
 194+ 'tog-riched_disable_ns_help_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:help_talk}}"',
 195+ 'tog-riched_disable_ns_category' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:category}}"',
 196+ 'tog-riched_disable_ns_category_talk' => 'Diweredekaat ar skridaozer pinvidikaet en esaouenn anv "{{ns:category_talk}}"',
 197+ 'rich_editor_new_window' => 'Digeriñ ar Skridaozer pinvidikaet en ur prenestr nevez',
 198+ 'tog-riched_start_disabled' => 'Kregiñ gant ar skridaozer pinvidikaet diweredekaet',
 199+ 'tog-riched_use_popup' => 'Digeriñ ar skridaozer pinvidikaet en ur popup',
 200+ 'tog-riched_use_toggle' => "Ober gant un diuzer evit mont eus ar skidaozer orin WikiText d'ar skridaozer pinvidikaet",
 201+ 'tog-riched_toggle_remember_state' => "Derc'hel soñj eus diuzadenn ziwezhañ ar skridaozer",
 202+);
 203+
 204+/** Bosnian (Bosanski)
 205+ * @author CERminator
 206+ */
 207+$messages['bs'] = array(
 208+ 'fckeditor-desc' => 'Omogućava uređivanje koristeći WYSIWYG uređivač FCKeditor',
 209+ 'textrichditor' => 'Vizuelni uređivač',
 210+ 'prefs-fckeditor' => 'Vizuelni uređivač',
 211+ 'tog-riched_disable' => 'Onemogući vizuelni uređivač',
 212+ 'tog-riched_disable_ns_main' => 'Onemogući vizuelni uređivač u glavnom imenskom prostoru',
 213+ 'tog-riched_disable_ns_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:talk}}"',
 214+ 'tog-riched_disable_ns_user' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:user}}"',
 215+ 'tog-riched_disable_ns_user_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:user_talk}}"',
 216+ 'tog-riched_disable_ns_project' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:project}}"',
 217+ 'tog-riched_disable_ns_project_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:project_talk}}"',
 218+ 'tog-riched_disable_ns_image' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:file}}"',
 219+ 'tog-riched_disable_ns_image_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:file_talk}}"',
 220+ 'tog-riched_disable_ns_mediawiki' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:mediawiki}}"',
 221+ 'tog-riched_disable_ns_mediawiki_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:mediawiki_talk}}"',
 222+ 'tog-riched_disable_ns_template' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:template}}"',
 223+ 'tog-riched_disable_ns_template_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:template_talk}}"',
 224+ 'tog-riched_disable_ns_help' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:help}}"',
 225+ 'tog-riched_disable_ns_help_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:help_talk}}"',
 226+ 'tog-riched_disable_ns_category' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:category}}"',
 227+ 'tog-riched_disable_ns_category_talk' => 'Onemogući vizuelni uređivač u imenskom prostoru "{{ns:category_talk}}"',
 228+ 'rich_editor_new_window' => 'Otvori vizuelni uređivač u novom prozoru',
 229+ 'tog-riched_start_disabled' => 'Započni sa onemogućenim vizuelnim uređivačem',
 230+ 'tog-riched_use_popup' => 'Otvori vizuelni uređivač kao popup',
 231+ 'tog-riched_use_toggle' => 'Koristi prekidač za prebacivanje između wikiteksta i vizuelnog uređivača (zamjenjuje područje teksta sa vizuelnim uređivačem)',
 232+ 'tog-riched_toggle_remember_state' => 'Zapamti zadnje stanje uključivanja',
 233+);
 234+
 235+/** Catalan (Català)
 236+ * @author BroOk
 237+ * @author Solde
 238+ */
 239+$messages['ca'] = array(
 240+ 'fckeditor-desc' => "Permet l'edició amb l'editor WYSIWYG FCKeditor",
 241+ 'textrichditor' => 'Editor enriquit',
 242+ 'prefs-fckeditor' => 'Editor enriquit',
 243+ 'tog-riched_disable' => "Deshabilita l'editor enriquit",
 244+ 'tog-riched_disable_ns_main' => "Deshabilita l'editor enriquit dins de l'espai de noms",
 245+ 'tog-riched_disable_ns_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:talk}}"',
 246+ 'tog-riched_disable_ns_user' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:user}}"',
 247+ 'tog-riched_disable_ns_user_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:user_talk}}"',
 248+ 'tog-riched_disable_ns_project' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:project}}"',
 249+ 'tog-riched_disable_ns_project_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:project_talk}}"',
 250+ 'tog-riched_disable_ns_image' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:file}}"',
 251+ 'tog-riched_disable_ns_image_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:file_talk}}"',
 252+ 'tog-riched_disable_ns_mediawiki' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:mediawiki}}"',
 253+ 'tog-riched_disable_ns_mediawiki_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:mediawiki_talk}}"',
 254+ 'tog-riched_disable_ns_template' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:template}}"',
 255+ 'tog-riched_disable_ns_template_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:template_talk}}"',
 256+ 'tog-riched_disable_ns_help' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:help}}"',
 257+ 'tog-riched_disable_ns_help_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:help_talk}}"',
 258+ 'tog-riched_disable_ns_category' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:category}}"',
 259+ 'tog-riched_disable_ns_category_talk' => 'Deshabilita l\'editor enriquit dins de l\'espai de noms "{{ns:category_talk}}"',
 260+ 'rich_editor_new_window' => "Obre l'editor enriquit en una nova finestra",
 261+ 'tog-riched_start_disabled' => "Comença amb l'editor enriquit deshabilitat",
 262+ 'tog-riched_use_popup' => "Obre l'editor enriquit en una finestra emergent",
 263+ 'tog-riched_use_toggle' => "Usa la palanca per canviar entre wikitext i l'editor visual (reemplaça l'àrea de text amb l'editor enriquit)",
 264+ 'tog-riched_toggle_remember_state' => "Recorda canviar l'estat passat",
 265+);
 266+
 267+/** Czech (Česky)
 268+ * @author Jkjk
 269+ */
 270+$messages['cs'] = array(
 271+ 'fckeditor-desc' => 'Umožnit editace s použitím WYSIWYG edigoru FCKeditor',
 272+);
 273+
 274+/** German (Deutsch)
 275+ * @author Kghbln
 276+ * @author Umherirrender
 277+ */
 278+$messages['de'] = array(
 279+ 'fckeditor-desc' => 'Ermöglicht die Nutzung des WYSIWYG-Editors CKEditor, vormals FCKeditor',
 280+ 'textrichditor' => 'Mit dem Texteditor öffnen',
 281+ 'prefs-fckeditor' => 'Texteditor',
 282+ 'tog-riched_disable' => 'Texteditor deaktivieren',
 283+ 'tog-riched_disable_ns_main' => 'Texteditor im Haupt-Namensraum deaktivieren',
 284+ 'tog-riched_disable_ns_talk' => 'Texteditor im Namensraum „{{ns:talk}}“ deaktivieren',
 285+ 'tog-riched_disable_ns_user' => 'Texteditor im Namensraum „{{ns:user}}“ deaktivieren',
 286+ 'tog-riched_disable_ns_user_talk' => 'Texteditor im Namensraum „{{ns:user_talk}}“ deaktivieren',
 287+ 'tog-riched_disable_ns_project' => 'Texteditor im Namensraum „{{ns:project}}“ deaktivieren',
 288+ 'tog-riched_disable_ns_project_talk' => 'Texteditor im Namensraum „{{ns:project_talk}}“ deaktivieren',
 289+ 'tog-riched_disable_ns_image' => 'Texteditor im Namensraum „{{ns:file}}“ deaktivieren',
 290+ 'tog-riched_disable_ns_image_talk' => 'Texteditor im Namensraum „{{ns:file_talk}}“ deaktivieren',
 291+ 'tog-riched_disable_ns_mediawiki' => 'Texteditor im Namensraum „{{ns:mediawiki}}“ deaktivieren',
 292+ 'tog-riched_disable_ns_mediawiki_talk' => 'Texteditor im Namensraum „{{ns:mediawiki_talk}}“ deaktivieren',
 293+ 'tog-riched_disable_ns_template' => 'Texteditor im Namensraum „{{ns:template}}“ deaktivieren',
 294+ 'tog-riched_disable_ns_template_talk' => 'Texteditor im Namensraum „{{ns:template_talk}}“ deaktivieren',
 295+ 'tog-riched_disable_ns_help' => 'Texteditor im Namensraum „{{ns:help}}“ deaktivieren',
 296+ 'tog-riched_disable_ns_help_talk' => 'Texteditor im Namensraum „{{ns:help_talk}}“ deaktivieren',
 297+ 'tog-riched_disable_ns_category' => 'Texteditor im Namensraum „{{ns:category}}“ deaktivieren',
 298+ 'tog-riched_disable_ns_category_talk' => 'Texteditor im Namensraum „{{ns:category_talk}}“ deaktivieren',
 299+ 'rich_editor_new_window' => 'Mit dem Texteditor in einem neuen Fenster öffnen',
 300+ 'tog-riched_start_disabled' => 'Texteditor nicht automatisch starten',
 301+ 'tog-riched_use_popup' => 'Texteditor als Popup öffnen',
 302+ 'tog-riched_use_toggle' => 'Schalter zum Wechseln zwischen Wikitext und Texteditor benutzen (ersetzt den Textbereich mit dem Texteditor)',
 303+ 'tog-riched_toggle_remember_state' => 'Letzten Umschaltzustand merken',
 304+);
 305+
 306+/** Lower Sorbian (Dolnoserbski)
 307+ * @author Michawiki
 308+ */
 309+$messages['dsb'] = array(
 310+ 'fckeditor-desc' => 'Wobźěłanje z pomocu editora WYSIWYG FCKeditor dowóliś',
 311+ 'textrichditor' => 'Rich editor',
 312+ 'prefs-fckeditor' => 'Rich editor',
 313+ 'tog-riched_disable' => 'Rich editor znjemóžniś',
 314+ 'tog-riched_disable_ns_main' => 'Rich editor w głownem mjenjowem rumje znjemóžniś',
 315+ 'tog-riched_disable_ns_talk' => 'Rich editor w mjenjowem rumje "{{ns:talk}}" znjemóžniś',
 316+ 'tog-riched_disable_ns_user' => 'Rich editor w mjenjowem rumje "{{ns:user}}" znjemóžniś',
 317+ 'tog-riched_disable_ns_user_talk' => 'Rich editor w mjenjowem rumje "{{ns:user_talk}}" znjemóžniś',
 318+ 'tog-riched_disable_ns_project' => 'Rich editor w mjenjowem rumje "{{ns:project}}" znjemóžniś',
 319+ 'tog-riched_disable_ns_project_talk' => 'Rich editor w mjenjowem rumje "{{ns:project_talk}}" znjemóžniś',
 320+ 'tog-riched_disable_ns_image' => 'Rich editor w mjenjowem rumje "{{ns:file}}" znjemóžniś',
 321+ 'tog-riched_disable_ns_image_talk' => 'Rich editor w mjenjowem rumje "{{ns:file_talk}}" znjemóžniś',
 322+ 'tog-riched_disable_ns_mediawiki' => 'Rich editor w mjenjowem rumje "{{ns:mediawiki}}" znjemóžniś',
 323+ 'tog-riched_disable_ns_mediawiki_talk' => 'Rich editor w mjenjowem rumje "{{ns:mediawiki_talk}}" znjemóžniś',
 324+ 'tog-riched_disable_ns_template' => 'Rich editor w mjenjowem rumje "{{ns:template}}" znjemóžniś',
 325+ 'tog-riched_disable_ns_template_talk' => 'Rich editor w mjenjowem rumje "{{ns:template_talk}}" znjemóžniś',
 326+ 'tog-riched_disable_ns_help' => 'Rich editor w mjenjowem rumje "{{ns:help}}" znjemóžniś',
 327+ 'tog-riched_disable_ns_help_talk' => 'Rich editor w mjenjowem rumje "{{ns:help_talk}}" znjemóžniś',
 328+ 'tog-riched_disable_ns_category' => 'Rich editor w mjenjowem rumje "{{ns:category}}" znjemóžniś',
 329+ 'tog-riched_disable_ns_category_talk' => 'Rich editor w mjenjowem rumje "{{ns:category_talk}}" znjemóžniś',
 330+ 'rich_editor_new_window' => 'Rich editor w nowem woknje wócyniś',
 331+ 'tog-riched_start_disabled' => 'Ze znjemóžnjonym rich editorom startowaś',
 332+ 'tog-riched_use_popup' => 'Rich editor we wuskokujucem woknje wócyniś',
 333+ 'tog-riched_use_toggle' => 'Mjazy wikitekstom a rich editorom pśešaltowaś (tekstowe pólo pśez rich editor wuměniś)',
 334+ 'tog-riched_toggle_remember_state' => 'Šaltowańsku poziciju se spomnjeś',
 335+);
 336+
 337+/** Greek (Ελληνικά)
 338+ * @author Omnipaedista
 339+ */
 340+$messages['el'] = array(
 341+ 'textrichditor' => 'Εμπλουτισμένος Επεξεργαστής',
 342+ 'prefs-fckeditor' => 'Εμπλουτισμένος Επεξεργαστής',
 343+ 'tog-riched_disable' => 'Απενεργοποίηση εμπλουτισμένου επεξεργαστή',
 344+);
 345+
 346+/** Esperanto (Esperanto)
 347+ * @author Yekrats
 348+ */
 349+$messages['eo'] = array(
 350+ 'textrichditor' => 'Riĉa Redaktilo',
 351+);
 352+
 353+/** Spanish (Español)
 354+ * @author Locos epraix
 355+ */
 356+$messages['es'] = array(
 357+ 'fckeditor-desc' => 'Permitir edición usando el editor WYSIWYG FCKeditor',
 358+ 'textrichditor' => 'Editor enriquecido',
 359+ 'prefs-fckeditor' => 'Editor enriquecido',
 360+ 'tog-riched_disable' => 'Desactivar editor enriquecido',
 361+ 'tog-riched_disable_ns_main' => 'Desactivar editor enriquecido en el espacio de nombres principal',
 362+ 'tog-riched_disable_ns_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:talk}}"',
 363+ 'tog-riched_disable_ns_user' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:user}}"',
 364+ 'tog-riched_disable_ns_user_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:user_talk}}"',
 365+ 'tog-riched_disable_ns_project' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:project}}"',
 366+ 'tog-riched_disable_ns_project_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:project_talk}}"',
 367+ 'tog-riched_disable_ns_image' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:file}}"',
 368+ 'tog-riched_disable_ns_image_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:file_talk}}"',
 369+ 'tog-riched_disable_ns_mediawiki' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:mediawiki}}"',
 370+ 'tog-riched_disable_ns_mediawiki_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:mediawiki_talk}}"',
 371+ 'tog-riched_disable_ns_template' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:template}}"',
 372+ 'tog-riched_disable_ns_template_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:template_talk}}"',
 373+ 'tog-riched_disable_ns_help' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:help}}"',
 374+ 'tog-riched_disable_ns_help_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:help_talk}}"',
 375+ 'tog-riched_disable_ns_category' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:category}}"',
 376+ 'tog-riched_disable_ns_category_talk' => 'Desactivar editor enriquecido en el espacio de nombres "{{ns:category_talk}}"',
 377+ 'rich_editor_new_window' => 'Abrir el editor enriquecido en una nueva ventana',
 378+ 'tog-riched_start_disabled' => 'Empezar con el editor enriquecido desactivado',
 379+ 'tog-riched_use_popup' => 'Abrir editor enriquecido en un popup',
 380+ 'tog-riched_use_toggle' => 'Utilizar un selector para cambiar entre wikitext y editor enriquecido',
 381+ 'tog-riched_toggle_remember_state' => 'Recordar la última selección del editor',
 382+);
 383+
 384+/** Basque (Euskara)
 385+ * @author Agonirena
 386+ * @author Kobazulo
 387+ */
 388+$messages['eu'] = array(
 389+ 'fckeditor-desc' => 'FCKeditor editoreak eskaintzen duen WYSIWYG edizio modua gaitu',
 390+ 'textrichditor' => 'Aberastutako Editorea',
 391+ 'prefs-fckeditor' => 'Aberastutako Editorea',
 392+ 'tog-riched_disable' => 'Ezgaitu aberastutako editorea',
 393+ 'tog-riched_disable_ns_main' => 'Ezgaitu aberastutako editorea izen-tarte nagusian',
 394+ 'tog-riched_disable_ns_talk' => 'Ezgaitu aberastutako editorea "{{ns:talk}}" izen-tartean',
 395+ 'tog-riched_disable_ns_user' => 'Ezgaitu aberastutako editorea "{{ns:user}}" izen-tartean',
 396+ 'tog-riched_disable_ns_user_talk' => 'Ezgaitu aberastutako editorea "{{ns:user_talk}}" izen-tartean',
 397+ 'tog-riched_disable_ns_project' => 'Ezgaitu aberastutako editorea "{{ns:project}}" izen-tartean',
 398+ 'tog-riched_disable_ns_project_talk' => 'Ezgaitu aberastutako editorea "{{ns:project_talk}}" izen-tartean',
 399+ 'tog-riched_disable_ns_image' => 'Ezgaitu aberastutako editorea "{{ns:file}}" izen-tartean',
 400+ 'tog-riched_disable_ns_image_talk' => 'Ezgaitu aberastutako editorea "{{ns:file_talk}}" izen-tartean',
 401+ 'tog-riched_disable_ns_mediawiki' => 'Ezgaitu aberastutako editorea "{{ns:mediawiki}}" izen-tartean',
 402+ 'tog-riched_disable_ns_mediawiki_talk' => 'Ezgaitu aberastutako editorea "{{ns:mediawiki_talk}}" izen-tartean',
 403+ 'tog-riched_disable_ns_template' => 'Ezgaitu aberastutako editorea "{{ns:template}}" izen-tartean',
 404+ 'tog-riched_disable_ns_template_talk' => 'Ezgaitu aberastutako editorea "{{ns:template_talk}}" izen-tartean',
 405+ 'tog-riched_disable_ns_help' => 'Ezgaitu aberastutako editorea "{{ns:help}}" izen-tartean',
 406+ 'tog-riched_disable_ns_help_talk' => 'Ezgaitu aberastutako editorea "{{ns:help_talk}}" izen-tartean',
 407+ 'tog-riched_disable_ns_category' => 'Ezgaitu aberastutako editorea "{{ns:category}}" izen-tartean',
 408+ 'tog-riched_disable_ns_category_talk' => 'Ezgaitu aberastutako editorea "{{ns:category_talk}}" izen-tartean',
 409+ 'rich_editor_new_window' => 'Ireki Aberastutako editorea leiho berri batean',
 410+ 'tog-riched_start_disabled' => 'Hasi editore aberastua ezgaitua dagoela',
 411+ 'tog-riched_use_popup' => 'Editore aberastua laster-leiho batean ireki',
 412+ 'tog-riched_use_toggle' => 'Erabili testu eremu gainean dagoen esteka wikitext edo editore aberastua hautatzeko (testu eremua editore aberastuarekin erabiltzeko)',
 413+ 'tog-riched_toggle_remember_state' => 'Gogoratu erabilitako azken editore hautua',
 414+);
 415+
 416+/** Persian (فارسی)
 417+ * @author Ebraminio
 418+ * @author Huji
 419+ * @author Reza1615
 420+ */
 421+$messages['fa'] = array(
 422+ 'fckeditor-desc' => 'اجازه ویرایش با استفاده از ویرایشگر WYSIWYG FCKeditor را می‌دهد',
 423+ 'textrichditor' => 'ویرایشگر پیشرفته',
 424+ 'prefs-fckeditor' => 'ویرایشگر پیشرفته',
 425+ 'tog-riched_disable' => 'غیرفعال کردن ویرایشگر پیشرفته',
 426+ 'tog-riched_disable_ns_main' => 'غیرفعال کردن ویرایشگر پیشرفته در فضای نام اصلی',
 427+ 'tog-riched_disable_ns_talk' => 'غیرفعال کردن ویرایشگر پیشرفته در فضای نام "{{ns:talk}}"',
 428+ 'tog-riched_disable_ns_user' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:user}}"',
 429+ 'tog-riched_disable_ns_user_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:user_talk}}"',
 430+ 'tog-riched_disable_ns_project' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:project}}"',
 431+ 'tog-riched_disable_ns_project_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:project_talk}}"',
 432+ 'tog-riched_disable_ns_image' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:file}}"',
 433+ 'tog-riched_disable_ns_image_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:file_talk}}"',
 434+ 'tog-riched_disable_ns_mediawiki' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:mediawiki}}"',
 435+ 'tog-riched_disable_ns_mediawiki_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:mediawiki_talk}}"',
 436+ 'tog-riched_disable_ns_template' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:template}}"',
 437+ 'tog-riched_disable_ns_template_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:template_talk}}"',
 438+ 'tog-riched_disable_ns_help' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:help}}"',
 439+ 'tog-riched_disable_ns_help_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:help_talk}}"',
 440+ 'tog-riched_disable_ns_category' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:category}}"',
 441+ 'tog-riched_disable_ns_category_talk' => 'غيرفعال کردن ويرايشگر پيشرفته در فضاي نام "{{ns:category_talk}}"',
 442+ 'rich_editor_new_window' => 'ویرایشگر پیشرفته را در پنجره جدید باز کن',
 443+ 'tog-riched_start_disabled' => 'شروع با ویرایشگر پیشرفته غیر فعال شد',
 444+ 'tog-riched_use_popup' => 'بازکردن ویرایشگر پیشرفته در یک پنجره',
 445+ 'tog-riched_use_toggle' => 'استفاده از زبانهٔ انتخاب‌کردن بین ویکی‌متن و ویرایشگر پیشرفته (جایگزینی جعبه ویرایش با ویرایشگر پیشرفته)',
 446+ 'tog-riched_toggle_remember_state' => 'آخرین وضعیت زبانه را به یاد داشته باش',
 447+);
 448+
 449+/** Finnish (Suomi)
 450+ * @author Centerlink
 451+ * @author Crt
 452+ * @author Jack Phoenix <jack@countervandalism.net>
 453+ */
 454+$messages['fi'] = array(
 455+ 'fckeditor-desc' => 'Mahdollistaa muokkaamisen WYSIWYG-tyylillä käyttäen FCKeditoria.',
 456+ 'textrichditor' => 'Rikas editori',
 457+ 'prefs-fckeditor' => 'Rich-editori',
 458+ 'tog-riched_disable' => 'Ota rikas editori pois käytöstä',
 459+ 'tog-riched_disable_ns_main' => 'Ota rikas editori pois käytöstä päänimiavaruudessa',
 460+ 'tog-riched_disable_ns_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:talk}}"',
 461+ 'tog-riched_disable_ns_user' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:user}}"',
 462+ 'tog-riched_disable_ns_user_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:user_talk}}"',
 463+ 'tog-riched_disable_ns_project' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:project}}"',
 464+ 'tog-riched_disable_ns_project_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:project_talk}}"',
 465+ 'tog-riched_disable_ns_image' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:file}}"',
 466+ 'tog-riched_disable_ns_image_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:file_talk}}"',
 467+ 'tog-riched_disable_ns_mediawiki' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:mediawiki}}"',
 468+ 'tog-riched_disable_ns_mediawiki_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:mediawiki_talk}}"',
 469+ 'tog-riched_disable_ns_template' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:template}}"',
 470+ 'tog-riched_disable_ns_template_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:template_talk}}"',
 471+ 'tog-riched_disable_ns_help' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:help}}"',
 472+ 'tog-riched_disable_ns_help_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:help_talk}}"',
 473+ 'tog-riched_disable_ns_category' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:category}}"',
 474+ 'tog-riched_disable_ns_category_talk' => 'Ota rikas editori pois käytöstä nimiavaruudessa "{{ns:category_talk}}"',
 475+ 'rich_editor_new_window' => 'Avaa rikas editori uudessa ikkunassa',
 476+ 'tog-riched_start_disabled' => 'Aloita niin, että rikas editori on oletuksena pois käytöstä',
 477+ 'tog-riched_use_popup' => 'Avaa rikas editori popup-ikkunassa',
 478+ 'tog-riched_use_toggle' => 'Käytä nappulaa vaihtaaksesi wikitekstin ja rikkaan editorin välillä (korvaa tekstialue rikkaalla editorilla)',
 479+ 'tog-riched_toggle_remember_state' => 'Muista viimeisin nappulan asento',
 480+);
 481+
 482+/** French (Français)
 483+ * @author Crochet.david
 484+ * @author IAlex
 485+ * @author Verdy p
 486+ */
 487+$messages['fr'] = array(
 488+ 'fckeditor-desc' => 'Permet la modification en utilisant l’éditeur WYSIWYG FCKeditor',
 489+ 'textrichditor' => 'Éditeur de texte enrichi',
 490+ 'prefs-fckeditor' => 'Éditeur enrichi',
 491+ 'tog-riched_disable' => "Désactiver l'éditeur enrichi",
 492+ 'tog-riched_disable_ns_main' => "Désactiver l'éditeur enrichi dans l'espace de noms principal.",
 493+ 'tog-riched_disable_ns_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:talk}} ».",
 494+ 'tog-riched_disable_ns_user' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:user}} ».",
 495+ 'tog-riched_disable_ns_user_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:user_talk}} ».",
 496+ 'tog-riched_disable_ns_project' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:project}} ».",
 497+ 'tog-riched_disable_ns_project_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:project_talk}} ».",
 498+ 'tog-riched_disable_ns_image' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:file}} ».",
 499+ 'tog-riched_disable_ns_image_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:file_talk}} ».",
 500+ 'tog-riched_disable_ns_mediawiki' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:mediawiki}} ».",
 501+ 'tog-riched_disable_ns_mediawiki_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:mediawiki_talk}} ».",
 502+ 'tog-riched_disable_ns_template' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:template}} ».",
 503+ 'tog-riched_disable_ns_template_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:template_talk}} ».",
 504+ 'tog-riched_disable_ns_help' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:help}} ».",
 505+ 'tog-riched_disable_ns_help_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:help_talk}} ».",
 506+ 'tog-riched_disable_ns_category' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:category}} ».",
 507+ 'tog-riched_disable_ns_category_talk' => "Désactiver l'éditeur enrichi dans l'espace de noms « {{ns:category_talk}} ».",
 508+ 'rich_editor_new_window' => "Ouvrir l'éditeur enrichi dans une nouvelle fenêtre",
 509+ 'tog-riched_start_disabled' => "Démarrer avec l'éditeur enrichi désactivé",
 510+ 'tog-riched_use_popup' => "Ouvrir l'éditeur enrichi dans une popup",
 511+ 'tog-riched_use_toggle' => "Donner la possibilité de changer entre l'éditeur original WikiText et l'éditeur enrichi",
 512+ 'tog-riched_toggle_remember_state' => "Se souvenir de la dernière selection de l'éditeur",
 513+);
 514+
 515+/** Franco-Provençal (Arpetan)
 516+ * @author ChrisPtDe
 517+ */
 518+$messages['frp'] = array(
 519+ 'textrichditor' => 'Èditor enrechiê',
 520+ 'prefs-fckeditor' => 'Èditor enrechiê',
 521+ 'tog-riched_disable' => 'Dèsactivar l’èditor enrechiê',
 522+);
 523+
 524+/** Galician (Galego)
 525+ * @author Toliño
 526+ */
 527+$messages['gl'] = array(
 528+ 'fckeditor-desc' => 'Permite a edición empregando o editor WYSIWYG FCKeditor',
 529+ 'textrichditor' => 'Editor enriquecido',
 530+ 'prefs-fckeditor' => 'Editor enriquecido',
 531+ 'tog-riched_disable' => 'Desactivar o editor enriquecido',
 532+ 'tog-riched_disable_ns_main' => 'Desactivar o editor enriquecido no espazo de nomes principal',
 533+ 'tog-riched_disable_ns_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:talk}}"',
 534+ 'tog-riched_disable_ns_user' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:user}}"',
 535+ 'tog-riched_disable_ns_user_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:user_talk}}"',
 536+ 'tog-riched_disable_ns_project' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:project}}"',
 537+ 'tog-riched_disable_ns_project_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:project_talk}}"',
 538+ 'tog-riched_disable_ns_image' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:file}}"',
 539+ 'tog-riched_disable_ns_image_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:file_talk}}"',
 540+ 'tog-riched_disable_ns_mediawiki' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:mediawiki}}"',
 541+ 'tog-riched_disable_ns_mediawiki_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:mediawiki_talk}}"',
 542+ 'tog-riched_disable_ns_template' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:template}}"',
 543+ 'tog-riched_disable_ns_template_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:template_talk}}"',
 544+ 'tog-riched_disable_ns_help' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:help}}"',
 545+ 'tog-riched_disable_ns_help_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:help_talk}}"',
 546+ 'tog-riched_disable_ns_category' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:category}}"',
 547+ 'tog-riched_disable_ns_category_talk' => 'Desactivar o editor enriquecido no espazo de nomes "{{ns:category_talk}}"',
 548+ 'rich_editor_new_window' => 'Abrir o editor enriquecido nunha nova ventá',
 549+ 'tog-riched_start_disabled' => 'Comenzar co editor enriquecido desactivado',
 550+ 'tog-riched_use_popup' => 'Abrir o editor enriquecido nunha ventá emerxente',
 551+ 'tog-riched_use_toggle' => 'Utilizar un selector para cambiar entre texto wiki e o editor enriquecido (substitúe a área de texto polo editor enriquecido)',
 552+ 'tog-riched_toggle_remember_state' => 'Recordar a última selección do editor',
 553+);
 554+
 555+/** Swiss German (Alemannisch)
 556+ * @author Als-Holder
 557+ */
 558+$messages['gsw'] = array(
 559+ 'fckeditor-desc' => 'Bearbeite erlaube mit em WYSIWYG-Editor FCKeditor',
 560+ 'textrichditor' => 'Rich Editor',
 561+ 'prefs-fckeditor' => 'Rich Editor',
 562+ 'tog-riched_disable' => 'Rich editor deaktiviere',
 563+ 'tog-riched_disable_ns_main' => 'Rich editor deaktiviere im Haupt-Namensruum',
 564+ 'tog-riched_disable_ns_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:talk}}"',
 565+ 'tog-riched_disable_ns_user' => 'Rich editor deaktiviere im Namensruum "{{ns:user}}"',
 566+ 'tog-riched_disable_ns_user_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:user_talk}}"',
 567+ 'tog-riched_disable_ns_project' => 'Rich editor deaktiviere im Namensruum "{{ns:project}}"',
 568+ 'tog-riched_disable_ns_project_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:project_talk}}"',
 569+ 'tog-riched_disable_ns_image' => 'Rich editor deaktiviere im Namensruum "{{ns:file}}"',
 570+ 'tog-riched_disable_ns_image_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:file_talk}}"',
 571+ 'tog-riched_disable_ns_mediawiki' => 'Rich editor deaktiviere im Namensruum "{{ns:mediawiki}}"',
 572+ 'tog-riched_disable_ns_mediawiki_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:mediawiki_talk}}"',
 573+ 'tog-riched_disable_ns_template' => 'Rich editor deaktiviere im Namensruum "{{ns:template}}"',
 574+ 'tog-riched_disable_ns_template_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:template_talk}}"',
 575+ 'tog-riched_disable_ns_help' => 'Rich editor deaktiviere im Namensruum "{{ns:help}}"',
 576+ 'tog-riched_disable_ns_help_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:help_talk}}"',
 577+ 'tog-riched_disable_ns_category' => 'Rich editor deaktiviere im Namensruum "{{ns:category}}"',
 578+ 'tog-riched_disable_ns_category_talk' => 'Rich editor deaktiviere im Namensruum "{{ns:category_talk}}"',
 579+ 'rich_editor_new_window' => 'Rich editor in eme neje Fänschter ufmache',
 580+ 'tog-riched_start_disabled' => 'Mit eme deaktivierte Rich editor starte',
 581+ 'tog-riched_use_popup' => 'Rich editor in eme Popup ufmache',
 582+ 'tog-riched_use_toggle' => 'Schaltchnopf verwände zum zwischem Wikitekscht un em Rich editor hii- un härzgumpe (s Tekschtfäld dur Rich editor ersetze)',
 583+ 'tog-riched_toggle_remember_state' => 'Di letscht Stellig vum Schaltchnopf bhalte',
 584+);
 585+
 586+/** Hebrew (עברית)
 587+ * @author Rotemliss
 588+ * @author YaronSh
 589+ */
 590+$messages['he'] = array(
 591+ 'fckeditor-desc' => 'מתן האפשרות לעריכה באמצעות עורך WYSIWYG בשם FCKeditor',
 592+ 'textrichditor' => 'עורך עשיר',
 593+ 'prefs-fckeditor' => 'עורך לטקסט מעוצב',
 594+ 'tog-riched_disable' => 'כבה את העורך העשיר',
 595+ 'tog-riched_disable_ns_main' => 'כבה את העורך העשיר במרחב השם הראשי',
 596+ 'tog-riched_disable_ns_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:talk}}"',
 597+ 'tog-riched_disable_ns_user' => 'כבה את העורך העשיר במרחב השם "{{ns:user}}"',
 598+ 'tog-riched_disable_ns_user_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:user_talk}}"',
 599+ 'tog-riched_disable_ns_project' => 'כבה את העורך העשיר במרחב השם "{{ns:project}}"',
 600+ 'tog-riched_disable_ns_project_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:project_talk}}"',
 601+ 'tog-riched_disable_ns_image' => 'כבה את העורך העשיר במרחב השם "{{ns:file}}"',
 602+ 'tog-riched_disable_ns_image_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:file_talk}}"',
 603+ 'tog-riched_disable_ns_mediawiki' => 'כבה את העורך העשיר במרחב השם "{{ns:mediawiki}}"',
 604+ 'tog-riched_disable_ns_mediawiki_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:mediawiki_talk}}"',
 605+ 'tog-riched_disable_ns_template' => 'כבה את העורך העשיר במרחב השם "{{ns:template}}"',
 606+ 'tog-riched_disable_ns_template_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:template_talk}}"',
 607+ 'tog-riched_disable_ns_help' => 'כבה את העורך העשיר במרחב השם "{{ns:help}}"',
 608+ 'tog-riched_disable_ns_help_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:help_talk}}"',
 609+ 'tog-riched_disable_ns_category' => 'כבה את העורך העשיר במרחב השם "{{ns:category}}"',
 610+ 'tog-riched_disable_ns_category_talk' => 'כבה את העורך העשיר במרחב השם "{{ns:category_talk}}"',
 611+ 'rich_editor_new_window' => 'פתח את העורך העשיר בחלון חדש',
 612+ 'tog-riched_start_disabled' => 'התחל עם העורך העשיר כבוי',
 613+ 'tog-riched_use_popup' => 'פתח את העורך העשיר בחלון קופץ',
 614+ 'tog-riched_use_toggle' => 'השתמש במתג כדי להחליף בין ויקיטקסט והעורך העשיר (החלף את אזור הטקסט עם העורך העשיר)',
 615+ 'tog-riched_toggle_remember_state' => 'זכור את מצב המתג האחרון',
 616+);
 617+
 618+/** Upper Sorbian (Hornjoserbsce)
 619+ * @author Michawiki
 620+ */
 621+$messages['hsb'] = array(
 622+ 'fckeditor-desc' => 'Wobdźěłanje z pomocu editora WYSIWYG FCKeditor dowolić',
 623+ 'textrichditor' => 'Rich editor',
 624+ 'prefs-fckeditor' => 'Rich editor',
 625+ 'tog-riched_disable' => 'Rich editor deaktiwizować',
 626+ 'tog-riched_disable_ns_main' => 'Rich editor znutřka hłowneho mjenoweho ruma deaktiwizować',
 627+ 'tog-riched_disable_ns_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:talk}}" deaktiwizować',
 628+ 'tog-riched_disable_ns_user' => 'Rich editor znutřka mjenoweho ruma "{{ns:user}}" deaktiwizować',
 629+ 'tog-riched_disable_ns_user_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:user_talk}}" deaktiwizować',
 630+ 'tog-riched_disable_ns_project' => 'Rich editor znutřka mjenoweho ruma "{{ns:project}}" deaktiwizować',
 631+ 'tog-riched_disable_ns_project_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:project_talk}}" deaktiwizować',
 632+ 'tog-riched_disable_ns_image' => 'Rich editor znutřka mjenoweho ruma "{{ns:file}}" deaktiwizować',
 633+ 'tog-riched_disable_ns_image_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:file_talk}}" deaktiwizować',
 634+ 'tog-riched_disable_ns_mediawiki' => 'Rich editor znutřka mjenoweho ruma "{{ns:mediawiki}}" deaktiwizować',
 635+ 'tog-riched_disable_ns_mediawiki_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:mediawiki_talk}}" deaktiwizować',
 636+ 'tog-riched_disable_ns_template' => 'Rich editor znutřka mjenoweho ruma "{{ns:template}}" deaktiwizować',
 637+ 'tog-riched_disable_ns_template_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:template_talk}}" deaktiwizować',
 638+ 'tog-riched_disable_ns_help' => 'Rich editor znutřka mjenoweho ruma "{{ns:help}}" deaktiwizować',
 639+ 'tog-riched_disable_ns_help_talk' => 'Rich editor znutřka mjenoweho ruma "{{ns:help_talk}}" deaktiwizować',
 640+ 'tog-riched_disable_ns_category' => 'Rich editor znutřka mjenoweho ruma the "{{ns:category}}" deaktiwizować',
 641+ 'tog-riched_disable_ns_category_talk' => 'Rich editor znutřka mjenoweho ruma the "{{ns:category_talk}}" deaktiwizować',
 642+ 'rich_editor_new_window' => 'Rich editor w nowym woknje wočinić',
 643+ 'tog-riched_start_disabled' => 'Ze znjemóžnjenym rich editorom startować',
 644+ 'tog-riched_use_popup' => 'Rich editor we wuskakowanskim woknje wočinić',
 645+ 'tog-riched_use_toggle' => 'Mjez wikitekstom a rich editorom přepinać (tekstowe polo přez rich editor wuměnić)',
 646+ 'tog-riched_toggle_remember_state' => 'Poslednje přepinanske staće sej spomjatkować',
 647+);
 648+
 649+/** Hungarian (Magyar)
 650+ * @author Glanthor Reviol
 651+ */
 652+$messages['hu'] = array(
 653+ 'fckeditor-desc' => '„Amit látsz, azt kapod” (WYSIWYG) szerkesztő',
 654+ 'textrichditor' => 'Vizuális szerkesztő',
 655+ 'prefs-fckeditor' => 'Vizuális szerkesztő',
 656+ 'tog-riched_disable' => 'Vizuális szerkesztő letiltása',
 657+ 'tog-riched_disable_ns_main' => 'Vizuális szerkesztő letiltása a fő névtérben',
 658+ 'tog-riched_disable_ns_talk' => 'Vizuális szerkesztő letiltása a „{{ns:talk}}” névtérben',
 659+ 'tog-riched_disable_ns_user' => 'Vizuális szerkesztő letiltása a „{{ns:user}}” névtérben',
 660+ 'tog-riched_disable_ns_user_talk' => 'Vizuális szerkesztő letiltása a „{{ns:user_talk}}” névtérben',
 661+ 'tog-riched_disable_ns_project' => 'Vizuális szerkesztő letiltása a „{{ns:project}}” névtérben',
 662+ 'tog-riched_disable_ns_project_talk' => 'Vizuális szerkesztő letiltása a „{{ns:project_talk}}” névtérben',
 663+ 'tog-riched_disable_ns_image' => 'Vizuális szerkesztő letiltása a „{{ns:file}}” névtérben',
 664+ 'tog-riched_disable_ns_image_talk' => 'Vizuális szerkesztő letiltása a „{{ns:file_talk}}” névtérben',
 665+ 'tog-riched_disable_ns_mediawiki' => 'Vizuális szerkesztő letiltása a „{{ns:mediawiki}}” névtérben',
 666+ 'tog-riched_disable_ns_mediawiki_talk' => 'Vizuális szerkesztő letiltása a „{{ns:mediawiki_talk}}” névtérben',
 667+ 'tog-riched_disable_ns_template' => 'Vizuális szerkesztő letiltása a „{{ns:template}}” névtérben',
 668+ 'tog-riched_disable_ns_template_talk' => 'Vizuális szerkesztő letiltása a „{{ns:template_talk}}” névtérben',
 669+ 'tog-riched_disable_ns_help' => 'Vizuális szerkesztő letiltása a „{{ns:help}}” névtérben',
 670+ 'tog-riched_disable_ns_help_talk' => 'Vizuális szerkesztő letiltása a „{{ns:help_talk}}” névtérben',
 671+ 'tog-riched_disable_ns_category' => 'Vizuális szerkesztő letiltása a „{{ns:category}}” névtérben',
 672+ 'tog-riched_disable_ns_category_talk' => 'Vizuális szerkesztő letiltása a „{{ns:category_talk}}” névtérben',
 673+ 'rich_editor_new_window' => 'Vizuális szerkesztő megnyitása új ablakban',
 674+ 'tog-riched_start_disabled' => 'Indítás a vizuális szerkesztő letiltásával',
 675+ 'tog-riched_use_popup' => 'Vizuális szerkesztő megnyitása felugró ablakban',
 676+ 'tog-riched_use_toggle' => 'Váltás a wikiszöveg és a vizuális szerkesztő között (lecseréli a szövegbeviteli mezőt a vizuális szerkesztőre)',
 677+ 'tog-riched_toggle_remember_state' => 'Emlékezzen az utolsó állapotra',
 678+);
 679+
 680+/** Interlingua (Interlingua)
 681+ * @author McDutchie
 682+ */
 683+$messages['ia'] = array(
 684+ 'fckeditor-desc' => 'Permitter le modification con le editor WYSIWYG FCKeditor',
 685+ 'textrichditor' => 'Editor typographic',
 686+ 'prefs-fckeditor' => 'Editor typographic',
 687+ 'tog-riched_disable' => 'Disactivar le editor typographic',
 688+ 'tog-riched_disable_ns_main' => 'Disactivar le editor typographic intra le spatio de nomines principal',
 689+ 'tog-riched_disable_ns_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:talk}}"',
 690+ 'tog-riched_disable_ns_user' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:user}}"',
 691+ 'tog-riched_disable_ns_user_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:user_talk}}"',
 692+ 'tog-riched_disable_ns_project' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:project}}"',
 693+ 'tog-riched_disable_ns_project_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:project_talk}}"',
 694+ 'tog-riched_disable_ns_image' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:file}}"',
 695+ 'tog-riched_disable_ns_image_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:file_talk}}"',
 696+ 'tog-riched_disable_ns_mediawiki' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:mediawiki}}"',
 697+ 'tog-riched_disable_ns_mediawiki_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:mediawiki_talk}}"',
 698+ 'tog-riched_disable_ns_template' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:template}}"',
 699+ 'tog-riched_disable_ns_template_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:template_talk}}"',
 700+ 'tog-riched_disable_ns_help' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:help}}"',
 701+ 'tog-riched_disable_ns_help_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:help_talk}}"',
 702+ 'tog-riched_disable_ns_category' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:category}}"',
 703+ 'tog-riched_disable_ns_category_talk' => 'Disactivar le editor typographic intra le spatio de nomines "{{ns:category_talk}}"',
 704+ 'rich_editor_new_window' => 'Aperir le editor typographic in un nove fenestra',
 705+ 'tog-riched_start_disabled' => 'Initialmente disactivar le editor typographic',
 706+ 'tog-riched_use_popup' => 'Aperir le editor typographic in un pop-up',
 707+ 'tog-riched_use_toggle' => 'Presentar un button pro cambiar inter wikitexto e editor typographic (in loco del area de texto)',
 708+ 'tog-riched_toggle_remember_state' => 'Memorar le ultime selection de editor',
 709+);
 710+
 711+/** Indonesian (Bahasa Indonesia)
 712+ * @author Bennylin
 713+ */
 714+$messages['id'] = array(
 715+ 'fckeditor-desc' => 'Mengijinkan penyuntingan menggunakan penyunting WYSIWYG FCKeditor',
 716+ 'textrichditor' => 'Penyunting Kaya',
 717+ 'prefs-fckeditor' => 'Penyunting Kaya',
 718+ 'tog-riched_disable' => 'Matikan penyunting kaya',
 719+ 'tog-riched_disable_ns_main' => 'Matikan penyunting kaya di dalam ruang nama utama',
 720+ 'tog-riched_disable_ns_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:talk}}"',
 721+ 'tog-riched_disable_ns_user' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:user}}"',
 722+ 'tog-riched_disable_ns_user_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:user_talk}}"',
 723+ 'tog-riched_disable_ns_project' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:project}}"',
 724+ 'tog-riched_disable_ns_project_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:project_talk}}"',
 725+ 'tog-riched_disable_ns_image' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:file}}"',
 726+ 'tog-riched_disable_ns_image_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:file_talk}}"',
 727+ 'tog-riched_disable_ns_mediawiki' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:mediawiki}}"',
 728+ 'tog-riched_disable_ns_mediawiki_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:mediawiki_talk}}"',
 729+ 'tog-riched_disable_ns_template' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:template}}"',
 730+ 'tog-riched_disable_ns_template_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:template_talk}}"',
 731+ 'tog-riched_disable_ns_help' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:help}}"',
 732+ 'tog-riched_disable_ns_help_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:help_talk}}"',
 733+ 'tog-riched_disable_ns_category' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:category}}"',
 734+ 'tog-riched_disable_ns_category_talk' => 'Matikan penyunting kaya di dalam ruang nama "{{ns:category_talk}}"',
 735+ 'rich_editor_new_window' => 'Buka penyunting kaya lewat jendela baru',
 736+ 'tog-riched_start_disabled' => 'Mulai dengan penyunting kaya dimatikan',
 737+ 'tog-riched_use_popup' => 'Buka penyunting kaya lewat pop-up',
 738+ 'tog-riched_use_toggle' => 'Gunakan tuas untuk mengganti antara wikiteks dan penyunting kaya (ganti textarea dengan penyunting kaya)',
 739+ 'tog-riched_toggle_remember_state' => 'Ingat keadaan tuas terakhir',
 740+);
 741+
 742+/** Italian (Italiano)
 743+ * @author Pinodd
 744+ */
 745+$messages['it'] = array(
 746+ 'fckeditor-desc' => "Consenti la modifica utilizzando l'editor WYSIWYG FCKeditor",
 747+ 'textrichditor' => 'Rich Editor',
 748+ 'prefs-fckeditor' => 'Rich Editor',
 749+ 'tog-riched_disable' => 'Disabilita editor avanzato',
 750+ 'tog-riched_disable_ns_main' => "Disattiva editor avanzato all'interno del namespace principale",
 751+ 'tog-riched_disable_ns_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:talk}}"',
 752+ 'tog-riched_disable_ns_user' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:user}}"',
 753+ 'tog-riched_disable_ns_user_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:user_talk}}"',
 754+ 'tog-riched_disable_ns_project' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:project}}"',
 755+ 'tog-riched_disable_ns_project_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:project_talk}}"',
 756+ 'tog-riched_disable_ns_image' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:file}}"',
 757+ 'tog-riched_disable_ns_image_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:file_talk}}"',
 758+ 'tog-riched_disable_ns_mediawiki' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:mediawiki}}"',
 759+ 'tog-riched_disable_ns_mediawiki_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:mediawiki_talk}}"',
 760+ 'tog-riched_disable_ns_template' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:template}}"',
 761+ 'tog-riched_disable_ns_template_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:template_talk}}"',
 762+ 'tog-riched_disable_ns_help' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:help}}"',
 763+ 'tog-riched_disable_ns_help_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:help_talk}}"',
 764+ 'tog-riched_disable_ns_category' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:category}}"',
 765+ 'tog-riched_disable_ns_category_talk' => 'Disattiva editor avanzato all\'interno del namespace "{{ns:category_talk}}"',
 766+ 'rich_editor_new_window' => 'Apri editor avanzato in una nuova finestra',
 767+ 'tog-riched_start_disabled' => "Inizia con l'editor avanzato disabilitato",
 768+ 'tog-riched_use_popup' => 'Apri editor avanzato in una finestra popup',
 769+ 'tog-riched_use_toggle' => "Usa il pulsante per passare dal normale wikitext all'editor avanzato e viceversa (sostituisce la textarea con l'editor avanzato)",
 770+ 'tog-riched_toggle_remember_state' => "Ricorda l'ultima modalità di editing utilizzata (avanzata o normale)",
 771+);
 772+
 773+/** Japanese (日本語)
 774+ * @author Fryed-peach
 775+ */
 776+$messages['ja'] = array(
 777+ 'fckeditor-desc' => 'WYSIWYG を実現した FCKeditor を使用して編集できるようにする',
 778+ 'textrichditor' => 'リッチエディタ',
 779+ 'prefs-fckeditor' => 'リッチエディタ',
 780+ 'tog-riched_disable' => 'リッチエディタを無効化する',
 781+ 'tog-riched_disable_ns_main' => '標準名前空間でリッチエディタを無効化する',
 782+ 'tog-riched_disable_ns_talk' => '「{{ns:talk}}」名前空間でリッチエディタを無効化する',
 783+ 'tog-riched_disable_ns_user' => '「{{ns:user}}」名前空間でリッチエディタを無効化する',
 784+ 'tog-riched_disable_ns_user_talk' => '「{{ns:user_talk}}」名前空間でリッチエディタを無効化する',
 785+ 'tog-riched_disable_ns_project' => '「{{ns:project}}」名前空間でリッチエディタを無効化する',
 786+ 'tog-riched_disable_ns_project_talk' => '「{{ns:project_talk}}」名前空間でリッチエディタを無効化する',
 787+ 'tog-riched_disable_ns_image' => '「{{ns:file}}」名前空間でリッチエディタを無効化する',
 788+ 'tog-riched_disable_ns_image_talk' => '「{{ns:file_talk}}」名前空間でリッチエディタを無効化する',
 789+ 'tog-riched_disable_ns_mediawiki' => '「{{ns:mediawiki}}」名前空間でリッチエディタを無効化する',
 790+ 'tog-riched_disable_ns_mediawiki_talk' => '「{{ns:mediawiki_talk}}」名前空間でリッチエディタを無効化する',
 791+ 'tog-riched_disable_ns_template' => '「{{ns:template}}」名前空間でリッチエディタを無効化する',
 792+ 'tog-riched_disable_ns_template_talk' => '「{{ns:template_talk}}」名前空間でリッチエディタを無効化する',
 793+ 'tog-riched_disable_ns_help' => '「{{ns:help}}」名前空間でリッチエディタを無効化する',
 794+ 'tog-riched_disable_ns_help_talk' => '「{{ns:help_talk}}」名前空間でリッチエディタを無効化する',
 795+ 'tog-riched_disable_ns_category' => '「{{ns:category}}」名前空間でリッチエディタを無効化する',
 796+ 'tog-riched_disable_ns_category_talk' => '「{{ns:category_talk}}」名前空間でリッチエディタを無効化する',
 797+ 'rich_editor_new_window' => 'リッチエディタを新規ウィンドウで開く',
 798+ 'tog-riched_start_disabled' => '開始時にはリッチエディタを無効にしておく',
 799+ 'tog-riched_use_popup' => 'リッチエディタをポップアップ・ウィンドウで開く',
 800+ 'tog-riched_use_toggle' => 'ウィキテキストとリッチエディタを切り替えるトグルスイッチを利用する (テキストエリアをリッチエディタで置き換える)',
 801+ 'tog-riched_toggle_remember_state' => '最後のトグル状態を記憶する',
 802+);
 803+
 804+/** Korean (한국어)
 805+ * @author Devunt
 806+ * @author Klutzy
 807+ */
 808+$messages['ko'] = array(
 809+ 'fckeditor-desc' => '위지윅 편집기 FCKeditor를 이용하여 편집하는것을 허용',
 810+ 'textrichditor' => '리치 에디터',
 811+ 'prefs-fckeditor' => '리치 에디터',
 812+ 'tog-riched_disable' => '리치 에디터 사용하지 않기',
 813+ 'tog-riched_disable_ns_main' => '주 이름 공간에서 리치 에디어 사용하지 않기',
 814+ 'tog-riched_disable_ns_talk' => '"{{ns:talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 815+ 'tog-riched_disable_ns_user' => '"{{ns:user}}" 이름 공간에서 리치 에디어 사용하지 않기',
 816+ 'tog-riched_disable_ns_user_talk' => '"{{ns:user_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 817+ 'tog-riched_disable_ns_project' => '"{{ns:project}}" 이름 공간에서 리치 에디어 사용하지 않기',
 818+ 'tog-riched_disable_ns_project_talk' => '"{{ns:project_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 819+ 'tog-riched_disable_ns_image' => '"{{ns:file}}" 이름 공간에서 리치 에디어 사용하지 않기',
 820+ 'tog-riched_disable_ns_image_talk' => '"{{ns:file_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 821+ 'tog-riched_disable_ns_mediawiki' => '"{{ns:mediawiki}}" 이름 공간에서 리치 에디어 사용하지 않기',
 822+ 'tog-riched_disable_ns_mediawiki_talk' => '"{{ns:mediawiki_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 823+ 'tog-riched_disable_ns_template' => '"{{ns:template}}" 이름 공간에서 리치 에디어 사용하지 않기',
 824+ 'tog-riched_disable_ns_template_talk' => '"{{ns:template_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 825+ 'tog-riched_disable_ns_help' => '"{{ns:help}}" 이름 공간에서 리치 에디어 사용하지 않기',
 826+ 'tog-riched_disable_ns_help_talk' => '"{{ns:help_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 827+ 'tog-riched_disable_ns_category' => '"{{ns:category}}" 이름 공간에서 리치 에디어 사용하지 않기',
 828+ 'tog-riched_disable_ns_category_talk' => '"{{ns:category_talk}}" 이름 공간에서 리치 에디어 사용하지 않기',
 829+ 'rich_editor_new_window' => '새 창에 리치 에디터 열기',
 830+ 'tog-riched_start_disabled' => '리치 에디터를 끈 채로 시작하기',
 831+ 'tog-riched_use_popup' => '팝업 창에 리치 에디터 열기',
 832+ 'tog-riched_use_toggle' => '토글을 이용해 위키텍스트와 리치 에디터를 오가기 (텍스트영역을 리치 에디터로 대체하기)',
 833+ 'tog-riched_toggle_remember_state' => '마지막 토글 상태를 기억하기',
 834+);
 835+
 836+/** Colognian (Ripoarisch)
 837+ * @author Purodha
 838+ */
 839+$messages['ksh'] = array(
 840+ 'fckeditor-desc' => 'Määt es müjjelesch, de Sigge met däm „<i lang="en">Rich Editor</i>“ en dä <i lang="en">WYSIWYG</i>-Mannier ze ändere.',
 841+ 'textrichditor' => '<i lang="en">Rich Editor</i>',
 842+ 'prefs-fckeditor' => '„<i lang="en">Rich Editor</i>“',
 843+ 'tog-riched_disable' => 'Donn dä „<i lang="en">Rich Editor</i>“ afschallde',
 844+ 'tog-riched_disable_ns_main' => 'Donn dä „<i lang="en">Rich Editor</i>“ em Houp-Appachtemang afschallde',
 845+ 'tog-riched_disable_ns_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:talk}}-Appachtemang afschallde',
 846+ 'tog-riched_disable_ns_user' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:user}}-Appachtemang afschallde',
 847+ 'tog-riched_disable_ns_user_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:user_talk}}-Appachtemang afschallde',
 848+ 'tog-riched_disable_ns_project' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:project}}-Appachtemang afschallde',
 849+ 'tog-riched_disable_ns_project_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:project_talk}}-Appachtemang afschallde',
 850+ 'tog-riched_disable_ns_image' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:file_talk}}-Appachtemang afschallde',
 851+ 'tog-riched_disable_ns_image_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:file_talk}}-Appachtemang afschallde',
 852+ 'tog-riched_disable_ns_mediawiki' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:mediawiki}}-Appachtemang afschallde',
 853+ 'tog-riched_disable_ns_mediawiki_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:mediawiki_talk}}-Appachtemang afschallde',
 854+ 'tog-riched_disable_ns_template' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:template}}-Appachtemang afschallde',
 855+ 'tog-riched_disable_ns_template_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:template_talk}}-Appachtemang afschallde',
 856+ 'tog-riched_disable_ns_help' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:help}}-Appachtemang afschallde',
 857+ 'tog-riched_disable_ns_help_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:help_talk}}-Appachtemang afschallde',
 858+ 'tog-riched_disable_ns_category' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:category}}-Appachtemang afschallde',
 859+ 'tog-riched_disable_ns_category_talk' => 'Donn dä „<i lang="en">Rich Editor</i>“ em {{ns:category_talk}}-Appachtemang afschallde',
 860+ 'rich_editor_new_window' => 'Donn dä „<i lang="en">Rich Editor</i>“ em extra Finster opmaache',
 861+ 'tog-riched_start_disabled' => 'Donn dä „<i lang="en">Rich Editor</i>“ nit automattesch aanschmiiße',
 862+ 'tog-riched_use_popup' => 'Donn dä „<i lang="en">Rich Editor</i>“ als ene <i lang="en">popup</i> loufe lohße',
 863+ 'tog-riched_use_toggle' => 'Donn zwesche däm nomaale Ändere (Wikitäx Beärbeide) un däm „<i lang="en">Rich Editor</i>“ aam sellve Plaz ömschallde',
 864+ 'tog-riched_toggle_remember_state' => 'Donn dä letzte Zohschtand vum Ömschallde zwesche däm Wikitäx Beärbeide un däm „<i lang="en">Rich Editor</i>“ faßhallde',
 865+);
 866+
 867+/** Luxembourgish (Lëtzebuergesch)
 868+ * @author Robby
 869+ */
 870+$messages['lb'] = array(
 871+ 'fckeditor-desc' => 'Erlaabt et de WYSIWYG-Editeur FCKeditor ze benotzen',
 872+ 'textrichditor' => 'Editeur mat erweiderte Fonctiounen',
 873+ 'prefs-fckeditor' => 'Editeur mat erweiderte Fonctiounen',
 874+ 'tog-riched_disable' => 'Editeur mat erweiderte Fonctiounen aschalten',
 875+ 'tog-riched_disable_ns_main' => 'Editeur mat erweiderte Fonctiounen am Haaptnummraum ausschalten',
 876+ 'tog-riched_disable_ns_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:talk}}" ausschalten',
 877+ 'tog-riched_disable_ns_user' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:user}}" ausschalten',
 878+ 'tog-riched_disable_ns_user_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:user_talk}}" ausschalten',
 879+ 'tog-riched_disable_ns_project' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:project}}" ausschalten',
 880+ 'tog-riched_disable_ns_project_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:prject_talk}}" ausschalten',
 881+ 'tog-riched_disable_ns_image' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:file}}" ausschalten',
 882+ 'tog-riched_disable_ns_image_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:file_talk}}" ausschalten',
 883+ 'tog-riched_disable_ns_mediawiki' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:mediawiki}}" ausschalten',
 884+ 'tog-riched_disable_ns_mediawiki_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:mediawiki_talk}}" ausschalten',
 885+ 'tog-riched_disable_ns_template' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:template}}" ausschalten',
 886+ 'tog-riched_disable_ns_template_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:template_talk}}" ausschalten',
 887+ 'tog-riched_disable_ns_help' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:help}}" ausschalten',
 888+ 'tog-riched_disable_ns_help_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:help_talk}}" ausschalten',
 889+ 'tog-riched_disable_ns_category' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:category}}" ausschalten',
 890+ 'tog-riched_disable_ns_category_talk' => 'Editeur mat erweiderte Fonctiounen am Nummraum "{{ns:category_talk}}" ausschalten',
 891+ 'rich_editor_new_window' => 'Editeur mat erweiderte Fonctiounen an enger neier Fënster opmaachen',
 892+ 'tog-riched_start_disabled' => 'Editeur mat erweiderte Fonctiounen beim Start ausgeschalt',
 893+ 'tog-riched_use_popup' => 'Editeur mat erweiderte Fonctiounen an engem Popup opmaachen',
 894+ 'tog-riched_use_toggle' => "Schalter benotze fir tëschen dem Benotze vu Wikitext an engem 'rich editor' ze wiesselen (den Textberäich gëtt duerch e 'rich editor' ersat)",
 895+ 'tog-riched_toggle_remember_state' => 'De leschten Ëmschaltzoustand verhalen',
 896+);
 897+
 898+/** Latvian (Latviešu)
 899+ * @author GreenZeb
 900+ */
 901+$messages['lv'] = array(
 902+ 'textrichditor' => 'Formatējuma redaktors',
 903+ 'prefs-fckeditor' => 'Formatējuma redaktors',
 904+ 'tog-riched_disable' => 'Atspējot formatējuma redaktoru',
 905+ 'tog-riched_disable_ns_main' => 'Atspējot formatējuma redaktoru galvenajā vārdtelpā',
 906+ 'tog-riched_disable_ns_talk' => 'Atspējot formatējuma redaktoru "{{ns:talk}}" vārdtelpā',
 907+ 'tog-riched_disable_ns_user' => 'Atspējot formatējuma redaktoru "{{ns:user}}" vārdtelpā',
 908+ 'tog-riched_disable_ns_user_talk' => 'Atspējot formatējuma redaktoru "{{ns:user_talk}}" vārdtelpā',
 909+ 'tog-riched_disable_ns_project' => 'Atspējot formatējuma redaktoru "{{ns:project}}" vārdtelpā',
 910+ 'tog-riched_disable_ns_project_talk' => 'Atspējot formatējuma redaktoru "{{ns:project_talk}}" vārdtelpā',
 911+ 'tog-riched_disable_ns_image' => 'Atspējot formatējuma redaktoru "{{ns:file}}" vārdtelpā',
 912+ 'tog-riched_disable_ns_image_talk' => 'Atspējot formatējuma redaktoru "{{ns:file_talk}}" vārdtelpā',
 913+ 'tog-riched_disable_ns_mediawiki' => 'Atspējot formatējuma redaktoru "{{ns:mediawiki}}" vārdtelpā',
 914+ 'tog-riched_disable_ns_mediawiki_talk' => 'Atspējot formatējuma redaktoru "{{ns:mediawiki_talk}}" vārdtelpā',
 915+ 'tog-riched_disable_ns_template' => 'Atspējot formatējuma redaktoru "{{ns:template}}" vārdtelpā',
 916+ 'tog-riched_disable_ns_template_talk' => 'Atspējot formatējuma redaktoru "{{ns:template_talk}}" vārdtelpā',
 917+ 'tog-riched_disable_ns_help' => 'Atspējot formatējuma redaktoru "{{ns:help}}" vārdtelpā',
 918+ 'tog-riched_disable_ns_help_talk' => 'Atspējot formatējuma redaktoru "{{ns:help_talk}}" vārdtelpā',
 919+ 'tog-riched_disable_ns_category' => 'Atspējot formatējuma redaktoru "{{ns:category}}" vārdtelpā',
 920+ 'tog-riched_disable_ns_category_talk' => 'Atspējot formatējuma redaktoru "{{ns:category_talk}}" vārdtelpā',
 921+ 'rich_editor_new_window' => 'Atvērt formatējuma redaktoru jaunā logā',
 922+ 'tog-riched_start_disabled' => 'Sākt ar atspējotu formatējuma redaktoru',
 923+ 'tog-riched_use_popup' => 'Atvērt formatējuma redaktoru uzlecošā logā',
 924+);
 925+
 926+/** Macedonian (Македонски)
 927+ * @author Bjankuloski06
 928+ */
 929+$messages['mk'] = array(
 930+ 'fckeditor-desc' => 'Овозможува уредување со помош на визуелниот (WYSIWYG) уредник FCKeditor',
 931+ 'textrichditor' => 'Визуелен уредувач',
 932+ 'prefs-fckeditor' => 'Визуелен уредувач',
 933+ 'tog-riched_disable' => 'Оневозможи визуелен уредувач',
 934+ 'tog-riched_disable_ns_main' => 'Оневозможи визуелен уредувач во главниот именски простор',
 935+ 'tog-riched_disable_ns_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:talk}}“',
 936+ 'tog-riched_disable_ns_user' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:user}}“',
 937+ 'tog-riched_disable_ns_user_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:user_talk}}“',
 938+ 'tog-riched_disable_ns_project' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:project}}“',
 939+ 'tog-riched_disable_ns_project_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:project_talk}}“',
 940+ 'tog-riched_disable_ns_image' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:file}}“',
 941+ 'tog-riched_disable_ns_image_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:file_talk}}“',
 942+ 'tog-riched_disable_ns_mediawiki' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:mediawiki}}“',
 943+ 'tog-riched_disable_ns_mediawiki_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:mediawiki_talk}}“',
 944+ 'tog-riched_disable_ns_template' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:template}}“',
 945+ 'tog-riched_disable_ns_template_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:template_talk}}“',
 946+ 'tog-riched_disable_ns_help' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:help}}“',
 947+ 'tog-riched_disable_ns_help_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:help_talk}}“',
 948+ 'tog-riched_disable_ns_category' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:category}}“',
 949+ 'tog-riched_disable_ns_category_talk' => 'Оневозможи визуелен уредувач во именскиот простор „{{ns:category_talk}}“',
 950+ 'rich_editor_new_window' => 'Отвори го визуелниот уредувач во нов прозорец',
 951+ 'tog-riched_start_disabled' => 'Почнувај со визуелниот уредувач исклучен',
 952+ 'tog-riched_use_popup' => 'Отвори го визуелниот уредувач во скокачки прозорец',
 953+ 'tog-riched_use_toggle' => 'Користи превклучувач за преод помеѓу викитекст и визуелниот уредувач (ја заменува текстуалното поле со визуелен уредувач)',
 954+ 'tog-riched_toggle_remember_state' => 'Запомни ја последната состојба на превклучувачот',
 955+);
 956+
 957+/** Marathi (मराठी)
 958+ * @author Kaustubh
 959+ */
 960+$messages['mr'] = array(
 961+ 'textrichditor' => 'वाढीव संपादक',
 962+ 'tog-riched_disable' => 'वाढीव संपादक रद्द करा',
 963+ 'tog-riched_disable_ns_main' => 'मुख्य नामविश्वात वाढीव संपादक रद्द करा',
 964+ 'tog-riched_disable_ns_talk' => '"{{ns:Talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 965+ 'tog-riched_disable_ns_user' => '"{{ns:User}}" नामविश्वात वाढीव संपादक रद्द करा',
 966+ 'tog-riched_disable_ns_user_talk' => '"{{ns:User_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 967+ 'tog-riched_disable_ns_project' => '"{{ns:Project}}" नामविश्वात वाढीव संपादक रद्द करा',
 968+ 'tog-riched_disable_ns_project_talk' => '"{{ns:Project_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 969+ 'tog-riched_disable_ns_image' => '"{{ns:Image}}" नामविश्वात वाढीव संपादक रद्द करा',
 970+ 'tog-riched_disable_ns_image_talk' => '"{{ns:Image_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 971+ 'tog-riched_disable_ns_mediawiki' => '"{{ns:MediaWiki}}" नामविश्वात वाढीव संपादक रद्द करा',
 972+ 'tog-riched_disable_ns_mediawiki_talk' => '"{{ns:MediaWiki_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 973+ 'tog-riched_disable_ns_template' => '"{{ns:Template}}" नामविश्वात वाढीव संपादक रद्द करा',
 974+ 'tog-riched_disable_ns_template_talk' => '"{{ns:Template_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 975+ 'tog-riched_disable_ns_help' => '"{{ns:Help}}" नामविश्वात वाढीव संपादक रद्द करा',
 976+ 'tog-riched_disable_ns_help_talk' => '"{{ns:Help_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 977+ 'tog-riched_disable_ns_category' => '"{{ns:Category}}" नामविश्वात वाढीव संपादक रद्द करा',
 978+ 'tog-riched_disable_ns_category_talk' => '"{{ns:Category_talk}}" नामविश्वात वाढीव संपादक रद्द करा',
 979+);
 980+
 981+/** Malay (Bahasa Melayu)
 982+ * @author Anakmalaysia
 983+ */
 984+$messages['ms'] = array(
 985+ 'fckeditor-desc' => 'Membolehkan penggunaan editor WYSIWYG, FCKeditor',
 986+ 'textrichditor' => 'Editor Teks Beraneka',
 987+ 'prefs-fckeditor' => 'Editor Teks Beraneka',
 988+ 'tog-riched_disable' => 'Matikan editor teks beraneka',
 989+ 'tog-riched_disable_ns_main' => 'Matikan editor teks beraneka di dalam ruang nama utama',
 990+ 'tog-riched_disable_ns_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:talk}}"',
 991+ 'tog-riched_disable_ns_user' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:user}}"',
 992+ 'tog-riched_disable_ns_user_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:user_talk}}"',
 993+ 'tog-riched_disable_ns_project' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:project}}"',
 994+ 'tog-riched_disable_ns_project_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:project_talk}}"',
 995+ 'tog-riched_disable_ns_image' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:file}}"',
 996+ 'tog-riched_disable_ns_image_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:file_talk}}"',
 997+ 'tog-riched_disable_ns_mediawiki' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:mediawiki}}"',
 998+ 'tog-riched_disable_ns_mediawiki_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:mediawiki_talk}}"',
 999+ 'tog-riched_disable_ns_template' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:template}}"',
 1000+ 'tog-riched_disable_ns_template_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:template_talk}}"',
 1001+ 'tog-riched_disable_ns_help' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:help}}"',
 1002+ 'tog-riched_disable_ns_help_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:help_talk}}"',
 1003+ 'tog-riched_disable_ns_category' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:category}}"',
 1004+ 'tog-riched_disable_ns_category_talk' => 'Matikan editor teks beraneka di dalam ruang nama "{{ns:category_talk}}"',
 1005+ 'rich_editor_new_window' => 'Buka Editor teks beraneka dalam tetingkap baru',
 1006+ 'tog-riched_start_disabled' => 'Mulakan tanpa menghidupkan editor teks beraneka',
 1007+ 'tog-riched_use_popup' => 'Buka editor teks beraneka dalam tetimbul (pop-up)',
 1008+ 'tog-riched_use_toggle' => 'Gunakan togol untuk beralih antara teks wiki dan editor teks beraneka (ganti ruangan teks dengan editor teks beraneka)',
 1009+ 'tog-riched_toggle_remember_state' => 'Ingati keadaan togol terkini',
 1010+);
 1011+
 1012+/** Dutch (Nederlands)
 1013+ * @author Siebrand
 1014+ */
 1015+$messages['nl'] = array(
 1016+ 'fckeditor-desc' => 'Maakt bewerken met de WYSIWYG-editor FCKeditor mogelijk',
 1017+ 'textrichditor' => 'Uitgebreide editor',
 1018+ 'prefs-fckeditor' => 'Uitgebreide editor',
 1019+ 'tog-riched_disable' => 'Uitgebreide editor uitschakelen',
 1020+ 'tog-riched_disable_ns_main' => 'Uitgebreide editor uitschakelen binnen de hoofdnaamruimte',
 1021+ 'tog-riched_disable_ns_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:talk}}"',
 1022+ 'tog-riched_disable_ns_user' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:user}}"',
 1023+ 'tog-riched_disable_ns_user_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:user_talk}}"',
 1024+ 'tog-riched_disable_ns_project' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:project}}"',
 1025+ 'tog-riched_disable_ns_project_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:project_talk}}"',
 1026+ 'tog-riched_disable_ns_image' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:file}}"',
 1027+ 'tog-riched_disable_ns_image_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:file_talk}}"',
 1028+ 'tog-riched_disable_ns_mediawiki' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:mediawiki}}"',
 1029+ 'tog-riched_disable_ns_mediawiki_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:mediawiki_talk}}"',
 1030+ 'tog-riched_disable_ns_template' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:template}}"',
 1031+ 'tog-riched_disable_ns_template_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:template_talk}}"',
 1032+ 'tog-riched_disable_ns_help' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:help}}"',
 1033+ 'tog-riched_disable_ns_help_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:help_talk}}"',
 1034+ 'tog-riched_disable_ns_category' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:category}}"',
 1035+ 'tog-riched_disable_ns_category_talk' => 'Uitgebreide editor uitschakelen binnen de naamruimte "{{ns:category_talk}}"',
 1036+ 'rich_editor_new_window' => 'Uitgebreide editor in nieuw venster openen',
 1037+ 'tog-riched_start_disabled' => 'De uitgebreide editor aanvankelijk uitschakelen',
 1038+ 'tog-riched_use_popup' => 'Uitgebreide editor in een pop-up weergeven',
 1039+ 'tog-riched_use_toggle' => 'Knop gebruiken om te wisselen tussen wikitext en uitgebreide editor (het tekstgedeelte wordt vervangen door de uitgebreide editor)',
 1040+ 'tog-riched_toggle_remember_state' => 'Laatste status onthouden',
 1041+);
 1042+
 1043+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 1044+ * @author Gunnernett
 1045+ */
 1046+$messages['nn'] = array(
 1047+ 'tog-riched_disable_ns_main' => 'Slå av rik tekstredigering i hovudnamneromet',
 1048+);
 1049+
 1050+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 1051+ * @author Jon Harald Søby
 1052+ * @author Laaknor
 1053+ * @author Nghtwlkr
 1054+ */
 1055+$messages['no'] = array(
 1056+ 'fckeditor-desc' => 'Tillatt redigeringer med «WYSIWYG»-editoren FCKeditor',
 1057+ 'textrichditor' => 'Rik tekstredigering',
 1058+ 'prefs-fckeditor' => 'Rik editor',
 1059+ 'tog-riched_disable' => 'Slå av rik tekstredigering',
 1060+ 'tog-riched_disable_ns_main' => 'Slå av rik tekstredigering i hovednavnerommet',
 1061+ 'tog-riched_disable_ns_talk' => 'Slå av rik tekstredigering i «{{ns:talk}}»-navnerommet',
 1062+ 'tog-riched_disable_ns_user' => 'Slå av rik tekstredigering i «{{ns:user}}»-navnerommet',
 1063+ 'tog-riched_disable_ns_user_talk' => 'Slå av rik tekstredigering i «{{ns:user_talk}}»-navnerommet',
 1064+ 'tog-riched_disable_ns_project' => 'Slå av rik tekstredigering i «{{ns:project}}»-navnerommet',
 1065+ 'tog-riched_disable_ns_project_talk' => 'Slå av rik tekstredigering i «{{ns:project_talk}}»-navnerommet',
 1066+ 'tog-riched_disable_ns_image' => 'Slå av rik tekstredigering i «{{ns:file}}»-navnerommet',
 1067+ 'tog-riched_disable_ns_image_talk' => 'Slå av rik tekstredigering i «{{ns:file_talk}}»-navnerommet',
 1068+ 'tog-riched_disable_ns_mediawiki' => 'Slå av rik tekstbehandler i navnerommet «{{ns:MediaWiki}}»',
 1069+ 'tog-riched_disable_ns_mediawiki_talk' => 'Slå av rik tekstbehandler i navnerommet «{{ns:MediaWiki_talk}}»',
 1070+ 'tog-riched_disable_ns_template' => 'Slå av rik tekstredigering i «{{ns:template}}»-navnerommet',
 1071+ 'tog-riched_disable_ns_template_talk' => 'Slå av rik tekstredigering i «{{ns:template_talk}}»-navnerommet',
 1072+ 'tog-riched_disable_ns_help' => 'Slå av rik tekstredigering i «{{ns:help}}»-navnerommet',
 1073+ 'tog-riched_disable_ns_help_talk' => 'Slå av rik tekstredigering i «{{ns:help_talk}}»-navnerommet',
 1074+ 'tog-riched_disable_ns_category' => 'Slå av rik tekstredigering i «{{ns:category}}»-navnerommet',
 1075+ 'tog-riched_disable_ns_category_talk' => 'Slå av rik tekstredigering i «{{ns:category_talk}}»-navnerommet',
 1076+ 'rich_editor_new_window' => 'Åpne rik editor i nytt vindu',
 1077+ 'tog-riched_start_disabled' => 'Start med rik editor deaktivert',
 1078+ 'tog-riched_use_popup' => 'Åpne rik editor i et sprettoppvindu',
 1079+ 'tog-riched_use_toggle' => 'Bruk bytt for å bytte mellom wikitekst og grafisk redigering (bytter ut tekstrute med grafisk redigering)',
 1080+ 'tog-riched_toggle_remember_state' => 'Husk siste valg',
 1081+);
 1082+
 1083+/** Occitan (Occitan)
 1084+ * @author Cedric31
 1085+ */
 1086+$messages['oc'] = array(
 1087+ 'fckeditor-desc' => 'Permet la modificacion en utilizant l’editor WYSIWYG FCKeditor',
 1088+ 'textrichditor' => "''Rich Editor''",
 1089+ 'prefs-fckeditor' => 'Editor enriquit',
 1090+ 'tog-riched_disable' => "Desactivar ''Rich Editor''",
 1091+ 'tog-riched_disable_ns_main' => "Desactivar ''Rich Editor'' dins l'espaci de noms principal.",
 1092+ 'tog-riched_disable_ns_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:talk}}''.",
 1093+ 'tog-riched_disable_ns_user' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:user}}''.",
 1094+ 'tog-riched_disable_ns_user_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:user_talk}}''.",
 1095+ 'tog-riched_disable_ns_project' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:project}}''.",
 1096+ 'tog-riched_disable_ns_project_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:project_talk}}''.",
 1097+ 'tog-riched_disable_ns_image' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:file}}''.",
 1098+ 'tog-riched_disable_ns_image_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:file_talk}}''.",
 1099+ 'tog-riched_disable_ns_mediawiki' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:file_talk}}''.",
 1100+ 'tog-riched_disable_ns_mediawiki_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:mediawiki_talk}}''.",
 1101+ 'tog-riched_disable_ns_template' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:template}}''.",
 1102+ 'tog-riched_disable_ns_template_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:template_talk}}''.",
 1103+ 'tog-riched_disable_ns_help' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:help}}''.",
 1104+ 'tog-riched_disable_ns_help_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:help_talk}}''.",
 1105+ 'tog-riched_disable_ns_category' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:category}}''.",
 1106+ 'tog-riched_disable_ns_category_talk' => "Desactivar ''Rich Editor'' dins l'espaci de noms ''{{ns:category_talk}}''.",
 1107+ 'rich_editor_new_window' => "Dobrir l'editor enriquit dins una fenèstra novèla",
 1108+ 'tog-riched_start_disabled' => "Amodar amb l'editor enriquit desactivat",
 1109+ 'tog-riched_use_popup' => "Dobrir l'editor enriquit dins una popup",
 1110+ 'tog-riched_use_toggle' => "Balhar la possibilitat de cambiar entre l'editor original WikiTèxte e l'editor enriquit",
 1111+ 'tog-riched_toggle_remember_state' => "Se remembrar de la darrièra seleccion de l'editor",
 1112+);
 1113+
 1114+/** Polish (Polski)
 1115+ * @author Sp5uhe
 1116+ */
 1117+$messages['pl'] = array(
 1118+ 'fckeditor-desc' => 'Umożliwia korzystanie z edytora WYSIWYG o nazwie FCKeditor',
 1119+ 'textrichditor' => 'Rozbudowany edytor',
 1120+ 'prefs-fckeditor' => 'Rozbudowany edytor',
 1121+ 'tog-riched_disable' => 'Wyłącz rozbudowany edytor',
 1122+ 'tog-riched_disable_ns_main' => 'Wyłącz rozbudowany edytor w głównej przestrzeni nazw',
 1123+ 'tog-riched_disable_ns_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:talk}}“',
 1124+ 'tog-riched_disable_ns_user' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:user}}“',
 1125+ 'tog-riched_disable_ns_user_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:user_talk}}“',
 1126+ 'tog-riched_disable_ns_project' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:project}}“',
 1127+ 'tog-riched_disable_ns_project_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:project_talk}}“',
 1128+ 'tog-riched_disable_ns_image' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:file}}“',
 1129+ 'tog-riched_disable_ns_image_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:file_talk}}“',
 1130+ 'tog-riched_disable_ns_mediawiki' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:mediawiki}}“',
 1131+ 'tog-riched_disable_ns_mediawiki_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:mediawiki_talk}}“',
 1132+ 'tog-riched_disable_ns_template' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:template}}“',
 1133+ 'tog-riched_disable_ns_template_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:template_talk}}“',
 1134+ 'tog-riched_disable_ns_help' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:help}}“',
 1135+ 'tog-riched_disable_ns_help_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:help_talk}}“',
 1136+ 'tog-riched_disable_ns_category' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:category}}“',
 1137+ 'tog-riched_disable_ns_category_talk' => 'Wyłącz rozbudowany edytor w przestrzeni nazw „{{ns:category_talk}}“',
 1138+ 'rich_editor_new_window' => 'Otwieraj rozbudowany edytor w nowym oknie',
 1139+ 'tog-riched_start_disabled' => 'Rozbudowany edytor ma być domyślnie wyłączony',
 1140+ 'tog-riched_use_popup' => 'Otwieraj rozbudowany edytor w okienku popup',
 1141+ 'tog-riched_use_toggle' => 'Używaj rozbudowanego edytora zamiennie ze standardowym (umieści rozbudowany edytor w polu „textarea“)',
 1142+ 'tog-riched_toggle_remember_state' => 'Zapamiętuj ostatni używany edytor',
 1143+);
 1144+
 1145+/** Piedmontese (Piemontèis)
 1146+ * @author Bèrto 'd Sèra
 1147+ * @author Dragonòt
 1148+ */
 1149+$messages['pms'] = array(
 1150+ 'fckeditor-desc' => "A përmëtt ëd modifiché con l'editor WYSIWYG FCKeditor",
 1151+ 'textrichditor' => 'Editor svicio',
 1152+ 'prefs-fckeditor' => 'Editor rich',
 1153+ 'tog-riched_disable' => "Disabilité l'editor svicio",
 1154+ 'tog-riched_disable_ns_main' => "Disabilité l'editor svicio ant lë spassi nominal prinsipal",
 1155+ 'tog-riched_disable_ns_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:talk}}"',
 1156+ 'tog-riched_disable_ns_user' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:user}}"',
 1157+ 'tog-riched_disable_ns_user_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:user_talk}}"',
 1158+ 'tog-riched_disable_ns_project' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:project}}"',
 1159+ 'tog-riched_disable_ns_project_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:project_talk}}"',
 1160+ 'tog-riched_disable_ns_image' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:file}}"',
 1161+ 'tog-riched_disable_ns_image_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:file_talk}}"',
 1162+ 'tog-riched_disable_ns_mediawiki' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:mediawiki}}"',
 1163+ 'tog-riched_disable_ns_mediawiki_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:mediawiki_talk}}"',
 1164+ 'tog-riched_disable_ns_template' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:template}}"',
 1165+ 'tog-riched_disable_ns_template_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:template_talk}}"',
 1166+ 'tog-riched_disable_ns_help' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:help}}"',
 1167+ 'tog-riched_disable_ns_help_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:help_talk}}"',
 1168+ 'tog-riched_disable_ns_category' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:category}}"',
 1169+ 'tog-riched_disable_ns_category_talk' => 'Disabilité l\'editor svicio ant lë spassi nominal "{{ns:category_talk}}"',
 1170+ 'rich_editor_new_window' => "deurb l'Edito rich an na neuva fnesta",
 1171+ 'tog-riched_start_disabled' => "Part con l'Editor rich pa abilità",
 1172+ 'tog-riched_use_popup' => "deurb l'Editor rich ant un popup",
 1173+ 'tog-riched_use_toggle' => "Dòvra un toggle për cambié da wikitext a Editor rich (cambia la textarea con l'Editor rich)",
 1174+ 'tog-riched_toggle_remember_state' => "Arcòrda l'ùltim toggle stat",
 1175+);
 1176+
 1177+/** Portuguese (Português)
 1178+ * @author Hamilton Abreu
 1179+ * @author Lijealso
 1180+ * @author Malafaya
 1181+ */
 1182+$messages['pt'] = array(
 1183+ 'fckeditor-desc' => 'Permitir edição através do editor WYSIWYG, FCKeditor',
 1184+ 'textrichditor' => 'Editor Rico',
 1185+ 'prefs-fckeditor' => 'Editor Rico',
 1186+ 'tog-riched_disable' => 'Desactivar editor rico',
 1187+ 'tog-riched_disable_ns_main' => 'Desactivar editor rico no espaço nominal principal',
 1188+ 'tog-riched_disable_ns_talk' => 'Desactivar editor rico no espaço nominal "{{ns:talk}}"',
 1189+ 'tog-riched_disable_ns_user' => 'Desactivar editor rico no espaço nominal "{{ns:user}}"',
 1190+ 'tog-riched_disable_ns_user_talk' => 'Desactivar editor rico no espaço nominal "{{ns:user_talk}}"',
 1191+ 'tog-riched_disable_ns_project' => 'Desactivar editor rico no espaço nominal "{{ns:project}}"',
 1192+ 'tog-riched_disable_ns_project_talk' => 'Desactivar editor rico no espaço nominal "{{ns:project_talk}}"',
 1193+ 'tog-riched_disable_ns_image' => 'Desactivar editor rico no espaço nominal "{{ns:file}}"',
 1194+ 'tog-riched_disable_ns_image_talk' => 'Desactivar editor rico no espaço nominal "{{ns:file_talk}}"',
 1195+ 'tog-riched_disable_ns_mediawiki' => 'Desactivar editor rico no espaço nominal "{{ns:mediawiki}}"',
 1196+ 'tog-riched_disable_ns_mediawiki_talk' => 'Desactivar editor rico no espaço nominal "{{ns:mediawiki_talk}}"',
 1197+ 'tog-riched_disable_ns_template' => 'Desactivar editor rico no espaço nominal "{{ns:template}}"',
 1198+ 'tog-riched_disable_ns_template_talk' => 'Desactivar editor rico no espaço nominal "{{ns:template_talk}}"',
 1199+ 'tog-riched_disable_ns_help' => 'Desactivar editor rico no espaço nominal "{{ns:help}}"',
 1200+ 'tog-riched_disable_ns_help_talk' => 'Desactivar editor rico no espaço nominal "{{ns:help_talk}}"',
 1201+ 'tog-riched_disable_ns_category' => 'Desactivar editor rico no espaço nominal "{{ns:category}}"',
 1202+ 'tog-riched_disable_ns_category_talk' => 'Desactivar editor rico no espaço nominal "{{ns:category_talk}}"',
 1203+ 'rich_editor_new_window' => 'Abrir editor rico numa nova janela',
 1204+ 'tog-riched_start_disabled' => 'Começar com o editor rico desactivado',
 1205+ 'tog-riched_use_popup' => 'Abrir editor rico numa janela flutuante',
 1206+ 'tog-riched_use_toggle' => 'Use selector para alternar entre texto wiki e editor rico na área de texto',
 1207+ 'tog-riched_toggle_remember_state' => 'Memorizar último estado do selector',
 1208+);
 1209+
 1210+/** Brazilian Portuguese (Português do Brasil)
 1211+ * @author Daemorris
 1212+ */
 1213+$messages['pt-br'] = array(
 1214+ 'fckeditor-desc' => 'Permitir edição usando o editor FCKeditor WYSIWYG',
 1215+ 'textrichditor' => 'Editor Rico',
 1216+ 'prefs-fckeditor' => 'Editor Rico',
 1217+ 'tog-riched_disable' => 'Desativar editor rico',
 1218+ 'tog-riched_disable_ns_main' => 'Desativar o editor rico no espaço nominal principal',
 1219+ 'tog-riched_disable_ns_talk' => 'Desativar o editor rico no espaço nominal "{{ns:talk}}"',
 1220+ 'tog-riched_disable_ns_user' => 'Desativar o editor rico no espaço nominal "{{ns:user}}"',
 1221+ 'tog-riched_disable_ns_user_talk' => 'Desativar o editor rico no espaço nominal "{{ns:user_talk}}"',
 1222+ 'tog-riched_disable_ns_project' => 'Desativar o editor rico no espaço nominal "{{ns:projetct}}"',
 1223+ 'tog-riched_disable_ns_project_talk' => 'Desativar o editor rico no espaço nominal "{{ns:project_talk}}"',
 1224+ 'tog-riched_disable_ns_image' => 'Desativar o editor rico no espaço nominal "{{ns:file}}"',
 1225+ 'tog-riched_disable_ns_image_talk' => 'Desativar o editor rico no espaço nominal "{{ns:file_talk}}"',
 1226+ 'tog-riched_disable_ns_mediawiki' => 'Desativar o editor rico no espaço nominal "{{ns:mediawiki}}"',
 1227+ 'tog-riched_disable_ns_mediawiki_talk' => 'Desativar o editor rico no espaço nominal "{{ns:mediawiki_talk}}"',
 1228+ 'tog-riched_disable_ns_template' => 'Desativar o editor rico no espaço nominal "{{ns:template}}"',
 1229+ 'tog-riched_disable_ns_template_talk' => 'Desativar o editor rico no espaço nominal "{{ns:template_talk}}"',
 1230+ 'tog-riched_disable_ns_help' => 'Desativar o editor rico no espaço nominal "{{ns:help}}"',
 1231+ 'tog-riched_disable_ns_help_talk' => 'Desativar o editor rico no espaço nominal "{{ns:help_talk}}"',
 1232+ 'tog-riched_disable_ns_category' => 'Desativar o editor rico no espaço nominal "{{ns:category}}"',
 1233+ 'tog-riched_disable_ns_category_talk' => 'Desativar o editor rico no espaço nominal "{{ns:category_talk}}"',
 1234+ 'rich_editor_new_window' => 'Abrir o editor rico em uma nova janela',
 1235+ 'tog-riched_start_disabled' => 'Iniciar com o editor rico desativado',
 1236+ 'tog-riched_use_popup' => 'Abrir editor rico em uma janela flutuante',
 1237+ 'tog-riched_use_toggle' => 'Use alterar para alternar entre textowiki e um editor rico (substitui a área de texto com um editor rico)',
 1238+ 'tog-riched_toggle_remember_state' => 'Lembrar último estado alterado',
 1239+);
 1240+
 1241+/** Russian (Русский)
 1242+ * @author Александр Сигачёв
 1243+ */
 1244+$messages['ru'] = array(
 1245+ 'fckeditor-desc' => 'Позволяет редактировать с помощью визульного-редактора FCKeditor',
 1246+ 'textrichditor' => 'Визуальный редактор',
 1247+ 'prefs-fckeditor' => 'Визуальный редактор',
 1248+ 'tog-riched_disable' => 'Отключить визуальный редактор',
 1249+ 'tog-riched_disable_ns_main' => 'Отключить визуальный редактор в главном пространстве имён',
 1250+ 'tog-riched_disable_ns_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Talk}}»',
 1251+ 'tog-riched_disable_ns_user' => 'Отключить визуальный редактор в пространстве имён «{{ns:User}}»',
 1252+ 'tog-riched_disable_ns_user_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:User_talk}}»',
 1253+ 'tog-riched_disable_ns_project' => 'Отключить визуальный редактор в пространстве имён «{{ns:Project}}»',
 1254+ 'tog-riched_disable_ns_project_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Project_talk}}»',
 1255+ 'tog-riched_disable_ns_image' => 'Отключить визуальный редактор в пространстве имён «{{ns:Image}}»',
 1256+ 'tog-riched_disable_ns_image_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Image_talk}}»',
 1257+ 'tog-riched_disable_ns_mediawiki' => 'Отключить визуальный редактор в пространстве имён «{{ns:MediaWiki}}»',
 1258+ 'tog-riched_disable_ns_mediawiki_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:MediaWiki_talk}}»',
 1259+ 'tog-riched_disable_ns_template' => 'Отключить визуальный редактор в пространстве имён «{{ns:Template}}»',
 1260+ 'tog-riched_disable_ns_template_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Template_talk}}»',
 1261+ 'tog-riched_disable_ns_help' => 'Отключить визуальный редактор в пространстве имён «{{ns:Help}}»',
 1262+ 'tog-riched_disable_ns_help_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Help_talk}}»',
 1263+ 'tog-riched_disable_ns_category' => 'Отключить визуальный редактор в пространстве имён «{{ns:Category}}»',
 1264+ 'tog-riched_disable_ns_category_talk' => 'Отключить визуальный редактор в пространстве имён «{{ns:Category_talk}}»',
 1265+ 'rich_editor_new_window' => 'Открыть визуальный редактор в новом окне',
 1266+ 'tog-riched_start_disabled' => 'Начинать с выключенным визуальным редактором',
 1267+ 'tog-riched_use_popup' => 'Открывать визуальный редактор во всплывающем окне',
 1268+ 'tog-riched_use_toggle' => 'Использовать переключатель для переключений между викитекстом и визуальным редактором (замена текстового поля на визуальный редактор)',
 1269+ 'tog-riched_toggle_remember_state' => 'Запоминать последнее состояние переключателя',
 1270+);
 1271+
 1272+/** Slovak (Slovenčina)
 1273+ * @author Helix84
 1274+ */
 1275+$messages['sk'] = array(
 1276+ 'fckeditor-desc' => 'Umožniť úpravy pomocou WYSIWYG editora FCKeditor',
 1277+ 'textrichditor' => 'Editor formátovaného textu',
 1278+ 'prefs-fckeditor' => 'Editor obohateného textu',
 1279+ 'tog-riched_disable' => 'Vypnúť editor formátovaného textu',
 1280+ 'tog-riched_disable_ns_main' => 'Vypnúť editor formátovaného textu v hlavnom mennom priestore',
 1281+ 'tog-riched_disable_ns_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:talk}}“',
 1282+ 'tog-riched_disable_ns_user' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:user}}“',
 1283+ 'tog-riched_disable_ns_user_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:user_talk}}“',
 1284+ 'tog-riched_disable_ns_project' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:project}}“',
 1285+ 'tog-riched_disable_ns_project_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:project_talk}}“',
 1286+ 'tog-riched_disable_ns_image' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:file}}“',
 1287+ 'tog-riched_disable_ns_image_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:file_talk}}“',
 1288+ 'tog-riched_disable_ns_mediawiki' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:mediawiki}}“',
 1289+ 'tog-riched_disable_ns_mediawiki_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:mediawiki_talk}}“',
 1290+ 'tog-riched_disable_ns_template' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:template}}“',
 1291+ 'tog-riched_disable_ns_template_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:template_talk}}“',
 1292+ 'tog-riched_disable_ns_help' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:help}}“',
 1293+ 'tog-riched_disable_ns_help_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:help_talk}}“',
 1294+ 'tog-riched_disable_ns_category' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:category}}“',
 1295+ 'tog-riched_disable_ns_category_talk' => 'Vypnúť editor formátovaného textu v mennom priestore „{{ns:category_talk}}“',
 1296+ 'rich_editor_new_window' => 'Otvoriť Editor obohateného textu v novom okne',
 1297+ 'tog-riched_start_disabled' => 'Spustiť s vypnutým Editorom obohateného textu',
 1298+ 'tog-riched_use_popup' => 'Otvoriť Editor obohateného textu vo vyskakovacom okne',
 1299+ 'tog-riched_use_toggle' => 'Použiť prepínač na prepnutie medzi wikitextom a editorom obohateného textu (nahrádza oblasť s textom editorom obohateného textu)',
 1300+ 'tog-riched_toggle_remember_state' => 'Pamätať si posledný stav prepínača',
 1301+);
 1302+
 1303+/** Swedish (Svenska)
 1304+ * @author Sertion
 1305+ */
 1306+$messages['sv'] = array(
 1307+ 'fckeditor-desc' => 'Skapar möjligheten att redigera med WYSIWYG-redigeraren FGKeditor',
 1308+ 'textrichditor' => 'Grafiskt läge',
 1309+ 'prefs-fckeditor' => 'Grafiskt läge',
 1310+ 'tog-riched_disable' => 'Inaktivera grafiskt läge',
 1311+ 'tog-riched_disable_ns_main' => 'Inaktivera grafiskt läge i huvudnamnrymden',
 1312+ 'tog-riched_disable_ns_talk' => 'Inaktivera grafiskt läge i "{{ns:talk}}" namnrymden',
 1313+ 'tog-riched_disable_ns_user' => 'Inaktivera grafiskt läge i "{{ns:user}}" namnrymden',
 1314+ 'tog-riched_disable_ns_user_talk' => 'Inaktivera grafiskt läge i "{{ns:user_talk}}" namnrymden',
 1315+ 'tog-riched_disable_ns_project' => 'Inaktivera grafiskt läge i "{{ns:project}}" namnrymden',
 1316+ 'tog-riched_disable_ns_project_talk' => 'Inaktivera grafiskt läge i "{{ns:project_talk}}" namnrymden',
 1317+ 'tog-riched_disable_ns_image' => 'Inaktivera grafiskt läge i "{{ns:file}}" namnrymden',
 1318+ 'tog-riched_disable_ns_image_talk' => 'Inaktivera grafiskt läge i "{{ns:file_talk}}" namnrymden',
 1319+ 'tog-riched_disable_ns_mediawiki' => 'Inaktivera grafiskt läge i "{{ns:mediawiki}}" namnrymden',
 1320+ 'tog-riched_disable_ns_mediawiki_talk' => 'Inaktivera grafiskt läge i "{{ns:mediawiki_talk}}" namnrymden',
 1321+ 'tog-riched_disable_ns_template' => 'Inaktivera grafiskt läge i "{{ns:template}}" namnrymden',
 1322+ 'tog-riched_disable_ns_template_talk' => 'Inaktivera grafiskt läge i "{{ns:template_talk}}" namnrymden',
 1323+ 'tog-riched_disable_ns_help' => 'Inaktivera grafiskt läge i "{{ns:help}}" namnrymden',
 1324+ 'tog-riched_disable_ns_help_talk' => 'Inaktivera grafiskt läge i "{{ns:help_talk}}" namnrymden',
 1325+ 'tog-riched_disable_ns_category' => 'Inaktivera grafiskt läge i "{{ns:category}}" namnrymden',
 1326+ 'tog-riched_disable_ns_category_talk' => 'Inaktivera grafiskt läge i "{{ns:category_talk}}" namnrymden',
 1327+ 'rich_editor_new_window' => 'Öppna det grafiska läget i nytt fönster',
 1328+ 'tog-riched_start_disabled' => 'Starta det grafiska läget inaktiverat',
 1329+ 'tog-riched_use_popup' => 'Öppna det grafiska läget i ett popupfönster',
 1330+ 'tog-riched_use_toggle' => 'Använd växla mellan wikitext och det grafiska läget (byter textruta mot grafiskt läge)',
 1331+ 'tog-riched_toggle_remember_state' => 'Kom ihåg senaste val (i den grafiska editorn)',
 1332+);
 1333+
 1334+/** Telugu (తెలుగు)
 1335+ * @author Chaduvari
 1336+ * @author Veeven
 1337+ */
 1338+$messages['te'] = array(
 1339+ 'textrichditor' => 'సిరి కూర్పరి',
 1340+ 'prefs-fckeditor' => 'సిరి కూర్పరి',
 1341+ 'tog-riched_disable' => 'సిరి కూర్పరిని అచేతనం చేయండి',
 1342+ 'tog-riched_disable_ns_help_talk' => '"{{ns:help_talk}}" పేరుబరిలో రిచ్ ఎడిటరును అచేతనం చెయ్యి',
 1343+ 'tog-riched_disable_ns_category' => '"{{ns:category}}" పేరుబరిలో రిచ్ ఎడిటరును అచేతనం చెయ్యి',
 1344+ 'tog-riched_disable_ns_category_talk' => '"{{ns:category_talk}}" పేరుబరిలో రిచ్ ఎడిటరును అచేతనం చెయ్యి',
 1345+ 'rich_editor_new_window' => 'రిచ్ ఎడిటరును కొత్త విండోలో తెరువు',
 1346+ 'tog-riched_use_popup' => 'రిచ్ ఎడిటరును పాపప్ లో తెరువు',
 1347+ 'tog-riched_toggle_remember_state' => 'గత టాగుల్ స్థితిని గుర్తు పెట్టుకో',
 1348+);
 1349+
 1350+/** Tagalog (Tagalog)
 1351+ * @author AnakngAraw
 1352+ */
 1353+$messages['tl'] = array(
 1354+ 'fckeditor-desc' => 'Ipahintulot ang pamamatnugot na gamit ang patnugot na FCK ng patnugot na WYSIWYG',
 1355+ 'textrichditor' => 'Mayamang Patnugot',
 1356+ 'prefs-fckeditor' => 'Mayamang Patnugot',
 1357+ 'tog-riched_disable' => 'Huwag paganahin ang mayamang patnugot',
 1358+ 'tog-riched_disable_ns_main' => 'Huwag paganahin ang mayamang patnugot sa loob ng pangunang puwang na pampangalan',
 1359+ 'tog-riched_disable_ns_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:talk}}"',
 1360+ 'tog-riched_disable_ns_user' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:user}}"',
 1361+ 'tog-riched_disable_ns_user_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:user_talk}}"',
 1362+ 'tog-riched_disable_ns_project' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:project}}"',
 1363+ 'tog-riched_disable_ns_project_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:project_talk}}"',
 1364+ 'tog-riched_disable_ns_image' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:file}}"',
 1365+ 'tog-riched_disable_ns_image_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:file_talk}}"',
 1366+ 'tog-riched_disable_ns_mediawiki' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:mediawiki}}"',
 1367+ 'tog-riched_disable_ns_mediawiki_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:mediawiki_talk}}"',
 1368+ 'tog-riched_disable_ns_template' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:template}}"',
 1369+ 'tog-riched_disable_ns_template_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:template_talk}}"',
 1370+ 'tog-riched_disable_ns_help' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:help}}"',
 1371+ 'tog-riched_disable_ns_help_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:help_talk}}"',
 1372+ 'tog-riched_disable_ns_category' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:category}}"',
 1373+ 'tog-riched_disable_ns_category_talk' => 'Huwag paganahin ang mayamang patnugot sa loob ng puwang na pampangalang "{{ns:category_talk}}"',
 1374+ 'rich_editor_new_window' => 'Buksan ang mayamang patnugot sa loob ng bagong dungawan',
 1375+ 'tog-riched_start_disabled' => 'Magsimulang hindi gumagana ang mayamang patnugot',
 1376+ 'tog-riched_use_popup' => 'Buksan ang mayamang patnugot sa loob ng isang biglang-litaw',
 1377+ 'tog-riched_use_toggle' => 'Gamitin ang panglipat-lipat upang magpalipat-lipat sa pagitan ng wikiteksto at mayamang patnugot (palitan ang lugar ng teksto ng mayamang patnugot)',
 1378+ 'tog-riched_toggle_remember_state' => 'Tandaan ang huling katayuan ng panglipat-lipat',
 1379+);
 1380+
 1381+/** Turkish (Türkçe)
 1382+ * @author Vito Genovese
 1383+ */
 1384+$messages['tr'] = array(
 1385+ 'textrichditor' => 'Zengin Editör',
 1386+ 'prefs-fckeditor' => 'Zengin Editör',
 1387+ 'tog-riched_disable' => 'Zengin editörü devre dışı bırak',
 1388+ 'tog-riched_disable_ns_main' => 'Zengin editörü ana isim alanında devre dışı bırak',
 1389+ 'tog-riched_disable_ns_talk' => 'Zengin editörü "{{ns:talk}}" isim alanında devre dışı bırak',
 1390+ 'tog-riched_disable_ns_user' => 'Zengin editörü "{{ns:user}}" isim alanında devre dışı bırak',
 1391+ 'tog-riched_start_disabled' => 'Zengin editör devre dışı bırakılmış şekilde başla',
 1392+ 'tog-riched_use_popup' => 'Zengin editörü açılır pencerede aç',
 1393+);
 1394+
 1395+/** Ukrainian (Українська)
 1396+ * @author Apromix
 1397+ */
 1398+$messages['uk'] = array(
 1399+ 'fckeditor-desc' => 'Дозволяє редагувати за допомогою візуального редактора FCKeditor',
 1400+ 'textrichditor' => 'Візуальний редактор',
 1401+ 'prefs-fckeditor' => 'Візуальний редактор',
 1402+ 'tog-riched_disable' => 'Вимкнути візуальний редактор',
 1403+ 'tog-riched_disable_ns_main' => 'Вимкнути візуальний редактор, в головному просторі імен',
 1404+);
 1405+
 1406+/** Vietnamese (Tiếng Việt)
 1407+ * @author Minh Nguyen
 1408+ * @author Vinhtantran
 1409+ */
 1410+$messages['vi'] = array(
 1411+ 'fckeditor-desc' => 'Cho phép sửa đổi dùng bộ soạn thảo WYSIWYG FCKeditor',
 1412+ 'textrichditor' => 'Bộ soạn thảo phong phú',
 1413+ 'prefs-fckeditor' => 'Bộ soạn thảo phong phú',
 1414+ 'tog-riched_disable' => 'Tắt bộ soạn thảo phong phú',
 1415+ 'tog-riched_disable_ns_main' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên chính',
 1416+ 'tog-riched_disable_ns_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:talk}}”',
 1417+ 'tog-riched_disable_ns_user' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:user}}”',
 1418+ 'tog-riched_disable_ns_user_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:user_talk}}”',
 1419+ 'tog-riched_disable_ns_project' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:project}}”',
 1420+ 'tog-riched_disable_ns_project_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:project_talk}}”',
 1421+ 'tog-riched_disable_ns_image' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:file}}”',
 1422+ 'tog-riched_disable_ns_image_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:file_talk}}”',
 1423+ 'tog-riched_disable_ns_mediawiki' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:mediawiki}}”',
 1424+ 'tog-riched_disable_ns_mediawiki_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:mediawiki_talk}}”',
 1425+ 'tog-riched_disable_ns_template' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:template}}”',
 1426+ 'tog-riched_disable_ns_template_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:template_talk}}”',
 1427+ 'tog-riched_disable_ns_help' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:help}}”',
 1428+ 'tog-riched_disable_ns_help_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:help_talk}}”',
 1429+ 'tog-riched_disable_ns_category' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:category}}”',
 1430+ 'tog-riched_disable_ns_category_talk' => 'Tắt bộ soạn thảo phong phú ở trong không gian tên “{{ns:category_talk}}”',
 1431+ 'rich_editor_new_window' => 'Mở trình soạn thảo phong phú trong cửa sổ mới',
 1432+ 'tog-riched_start_disabled' => 'Tắt trình soạn thảo phong phú khi khởi động',
 1433+ 'tog-riched_use_popup' => 'Mở trình soạn thảo phong phú trong cửa sổ popup',
 1434+ 'tog-riched_use_toggle' => 'Dùng nút bật tắt để chuyển giữa trình soạn thảo văn bản wiki và trình soạn thảo phong phú (thay thế ô soạn thảo bằng trình soạn thảo phong phú)',
 1435+ 'tog-riched_toggle_remember_state' => 'Ghi nhớ tình trạng chuyển đổi cuối cùng',
 1436+);
 1437+
 1438+/** Simplified Chinese (‪中文(简体)‬)
 1439+ * @author PhiLiP
 1440+ */
 1441+$messages['zh-hans'] = array(
 1442+ 'fckeditor-desc' => '允许在编辑时使用所见即所得工具FCKeditor',
 1443+ 'textrichditor' => '富文本编辑器',
 1444+ 'prefs-fckeditor' => '富文本编辑器',
 1445+ 'tog-riched_disable' => '禁用富文本编辑器',
 1446+ 'tog-riched_disable_ns_main' => '在主名字空间禁用富文本编辑器',
 1447+ 'tog-riched_disable_ns_talk' => '在“{{ns:talk}}”名字空间禁用富文本编辑器',
 1448+ 'tog-riched_disable_ns_user' => '在“{{ns:user}}”名字空间禁用富文本编辑器',
 1449+ 'tog-riched_disable_ns_user_talk' => '在“{{ns:user_talk}}”名字空间禁用富文本编辑器',
 1450+ 'tog-riched_disable_ns_project' => '在“{{ns:project}}”名字空间禁用富文本编辑器',
 1451+ 'tog-riched_disable_ns_project_talk' => '在“{{ns:project_talk}}”名字空间禁用富文本编辑器',
 1452+ 'tog-riched_disable_ns_image' => '在“{{ns:file}}”名字空间禁用富文本编辑器',
 1453+ 'tog-riched_disable_ns_image_talk' => '在“{{ns:file_talk}}”名字空间禁用富文本编辑器',
 1454+ 'tog-riched_disable_ns_mediawiki' => '在“{{ns:mediawiki}}”名字空间禁用富文本编辑器',
 1455+ 'tog-riched_disable_ns_mediawiki_talk' => '在“{{ns:mediawiki_talk}}”名字空间禁用富文本编辑器',
 1456+ 'tog-riched_disable_ns_template' => '在“{{ns:template}}”名字空间禁用富文本编辑器',
 1457+ 'tog-riched_disable_ns_template_talk' => '在“{{ns:template_talk}}”名字空间禁用富文本编辑器',
 1458+ 'tog-riched_disable_ns_help' => '在“{{ns:help}}”名字空间禁用富文本编辑器',
 1459+ 'tog-riched_disable_ns_help_talk' => '在“{{ns:help_talk}}”名字空间禁用富文本编辑器',
 1460+ 'tog-riched_disable_ns_category' => '在“{{ns:category}}”名字空间禁用富文本编辑器',
 1461+ 'tog-riched_disable_ns_category_talk' => '在“{{ns:category_talk}}”名字空间禁用富文本编辑器',
 1462+ 'rich_editor_new_window' => '在新窗口打开富文本编辑器',
 1463+ 'tog-riched_start_disabled' => '默认禁用富文本编辑器',
 1464+ 'tog-riched_use_popup' => '在弹出窗口中使用富文本编辑器',
 1465+ 'tog-riched_use_toggle' => '使用开关在wiki文本和富文本编辑器间切换(用富文本编辑器替换textarea)',
 1466+ 'tog-riched_toggle_remember_state' => '记住上次切换状态',
 1467+);
 1468+
 1469+/** Traditional Chinese (‪中文(繁體)‬)
 1470+ * @author Liangent
 1471+ * @author Mark85296341
 1472+ */
 1473+$messages['zh-hant'] = array(
 1474+ 'fckeditor-desc' => '允許在編輯時使用所見即所得工具 FCKeditor',
 1475+ 'textrichditor' => 'RTF 編輯器',
 1476+ 'prefs-fckeditor' => 'RTF 編輯器',
 1477+ 'tog-riched_disable' => '禁用 RTF 編輯器',
 1478+ 'tog-riched_disable_ns_main' => '在主名字空間禁用 RTF 編輯器',
 1479+ 'tog-riched_disable_ns_talk' => '在「{{ns:talk}}」名字空間禁用 RTF 編輯器',
 1480+ 'tog-riched_disable_ns_user' => '在「{{ns:user}}」名字空間禁用 RTF 編輯器',
 1481+ 'tog-riched_disable_ns_user_talk' => '在「{{ns:user_talk}}」名字空間禁用 RTF 編輯器',
 1482+ 'tog-riched_disable_ns_project' => '在「{{ns:project}}」名字空間禁用 RTF 編輯器',
 1483+ 'tog-riched_disable_ns_project_talk' => '在「{{ns:project_talk}}」名字空間禁用 RTF 編輯器',
 1484+ 'tog-riched_disable_ns_image' => '在「{{ns:file}}」名字空間禁用 RTF 編輯器',
 1485+ 'tog-riched_disable_ns_image_talk' => '在「{{ns:file_talk}}」名字空間禁用 RTF 編輯器',
 1486+ 'tog-riched_disable_ns_mediawiki' => '在「{{ns:mediawiki}}」名字空間禁用 RTF 編輯器',
 1487+ 'tog-riched_disable_ns_mediawiki_talk' => '在「{{ns:mediawiki_talk}}」名字空間禁用 RTF 編輯器',
 1488+ 'tog-riched_disable_ns_template' => '在「{{ns:template}}」名字空間禁用 RTF 編輯器',
 1489+ 'tog-riched_disable_ns_template_talk' => '在「{{ns:template_talk}}」名字空間禁用 RTF 編輯器',
 1490+ 'tog-riched_disable_ns_help' => '在「{{ns:help}}」名字空間禁用 RTF 編輯器',
 1491+ 'tog-riched_disable_ns_help_talk' => '在「{{ns:help_talk}}」名字空間禁用 RTF 編輯器',
 1492+ 'tog-riched_disable_ns_category' => '在「{{ns:category}}」名字空間禁用 RTF 編輯器',
 1493+ 'tog-riched_disable_ns_category_talk' => '在「{{ns:category_talk}}」名字空間禁用 RTF 編輯器',
 1494+ 'rich_editor_new_window' => '在新視窗開啟 RTF 編輯器',
 1495+ 'tog-riched_start_disabled' => '預設禁用 RTF 編輯器',
 1496+ 'tog-riched_use_popup' => '在彈出視窗中使用 RTF 編輯器',
 1497+ 'tog-riched_use_toggle' => '使用開關在 wiki 文字和 RTF 編輯器間切換(用 RTF 編輯器替換 textarea)',
 1498+ 'tog-riched_toggle_remember_state' => '記住上次切換狀態',
 1499+);
 1500+
 1501+/** Chinese (Taiwan) (‪中文(台灣)‬)
 1502+ * @author Pbdragonwang
 1503+ * @author Roc michael
 1504+ */
 1505+$messages['zh-tw'] = array(
 1506+ 'fckeditor-desc' => '允許在編輯時使用所見即所得工具FCKeditor',
 1507+ 'textrichditor' => '視覺化編輯器(Rich Editor)',
 1508+ 'prefs-fckeditor' => '視覺化編輯器',
 1509+ 'tog-riched_disable' => '停用視覺化編輯器(rich editor)',
 1510+ 'tog-riched_disable_ns_main' => '停用主名字空間的視覺化編輯器',
 1511+ 'tog-riched_disable_ns_talk' => '停用"{{ns:talk}}"名字空間的視覺化編輯器',
 1512+ 'tog-riched_disable_ns_user' => '停用"{{ns:user}}"名字空間的視覺化編輯器',
 1513+ 'tog-riched_disable_ns_user_talk' => '停用"{{ns:user_talk}}"名字空間的視覺化編輯器',
 1514+ 'tog-riched_disable_ns_project' => '停用"{{ns:project}}"名字空間的視覺化編輯器',
 1515+ 'tog-riched_disable_ns_project_talk' => '停用"{{ns:project_talk}}"名字空間的視覺化編輯器',
 1516+ 'tog-riched_disable_ns_image' => '停用"{{ns:file}}"名字空間的視覺化編輯器',
 1517+ 'tog-riched_disable_ns_image_talk' => '停用"{{ns:file_talk}}"名字空間的視覺化編輯器',
 1518+ 'tog-riched_disable_ns_mediawiki' => '停用"{{ns:mediawiki}}"名字空間的視覺化編輯器',
 1519+ 'tog-riched_disable_ns_mediawiki_talk' => '停用"{{ns:mediawiki_talk}}"名字空間的視覺化編輯器',
 1520+ 'tog-riched_disable_ns_template' => '停用"{{ns:template}}"名字空間的視覺化編輯器',
 1521+ 'tog-riched_disable_ns_template_talk' => '停用"{{ns:template_talk}}"名字空間的視覺化編輯器',
 1522+ 'tog-riched_disable_ns_help' => '停用"{{ns:help}}"名字空間的視覺化編輯器',
 1523+ 'tog-riched_disable_ns_help_talk' => '停用"{{ns:help_talk}}"名字空間的視覺化編輯器',
 1524+ 'tog-riched_disable_ns_category' => '停用"{{ns:category}}"名字空間的視覺化編輯器',
 1525+ 'tog-riched_disable_ns_category_talk' => '停用"{{ns:category_talk}}"名字空間的視覺化編輯器',
 1526+ 'rich_editor_new_window' => '於新視窗內開啟視覺化編輯器(Rich Editor)',
 1527+ 'tog-riched_start_disabled' => '開始時先停用視覺化編輯器(rich editor)',
 1528+ 'tog-riched_use_popup' => '於彈出視窗(popup)中使用視覺化編輯器(Rich Editor)',
 1529+ 'tog-riched_use_toggle' => '在「維基文字」與「視覺化編輯器」之間以開關作切換(以視覺化編輯器取代文字編輯區)',
 1530+ 'tog-riched_toggle_remember_state' => '記住最後的切換設定',
 1531+);
 1532+
Property changes on: trunk/extensions/FCKeditor/FCKeditor.i18n.php
___________________________________________________________________
Added: svn:eol-style
11533 + native
Property changes on: trunk/extensions/FCKeditor
___________________________________________________________________
Added: svn:externals
21534 + fckeditor http://svn.fckeditor.net/FCKeditor/branches/versions/2.6.x/

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r93332Add OBSOLETE FILE...reedy23:22, 27 July 2011
r93336Kill obsolete extensionreedy23:37, 27 July 2011

Status & tagging log