Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Wikipedia: Mediawiki-CVS

SVN: [59446] trunk/phase3

 

 

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded


tstarling at svn

Nov 26, 2009, 4:00 AM

Post #1 of 1 (57 views)
Permalink
SVN: [59446] trunk/phase3

http://www.mediawiki.org/wiki/Special:Code/MediaWiki/59446

Revision: 59446
Author: tstarling
Date: 2009-11-26 12:00:36 +0000 (Thu, 26 Nov 2009)

Log Message:
-----------
Removed JS2 work (has been moved to the js2-work branch). Has been lightly tested, should mostly work. Some of the more complicated associated changes are listed below.

* Reverted HttpFunctions.php to r45549 and renamed wgSyncHTTPTimeout back to wgHTTPTimeout
* Edited out the asynchronous features from UploadFromUrl. Made fetchFile() use the curlCopy() function from new-upload r47811 instead of Http::doDownload(). Wrote my own URL validity check to avoid having to use either of the two buggy precedents.
* Removed UploadFromChunk
* Removed chunk upload and background status from ApiUpload.php
* Reverted r54669, use of addScriptClass()
* Left getHeadScripts() in its current location (OutputPage) instead of moving it back to SkinTemplate, just added wikibits.js to it to replace the removed addCoreScripts2Top()

Modified Paths:
--------------
trunk/phase3/config/Installer.php
trunk/phase3/includes/AutoLoader.php
trunk/phase3/includes/DefaultSettings.php
trunk/phase3/includes/EditPage.php
trunk/phase3/includes/GlobalFunctions.php
trunk/phase3/includes/HTMLForm.php
trunk/phase3/includes/HttpFunctions.php
trunk/phase3/includes/OutputPage.php
trunk/phase3/includes/Preferences.php
trunk/phase3/includes/Setup.php
trunk/phase3/includes/Skin.php
trunk/phase3/includes/api/ApiUpload.php
trunk/phase3/includes/filerepo/FSRepo.php
trunk/phase3/includes/filerepo/FileRepo.php
trunk/phase3/includes/filerepo/ForeignAPIRepo.php
trunk/phase3/includes/filerepo/NullRepo.php
trunk/phase3/includes/specials/SpecialUpload.php
trunk/phase3/includes/upload/UploadBase.php
trunk/phase3/includes/upload/UploadFromUrl.php
trunk/phase3/languages/messages/MessagesAf.php
trunk/phase3/languages/messages/MessagesAr.php
trunk/phase3/languages/messages/MessagesArz.php
trunk/phase3/languages/messages/MessagesBe_tarask.php
trunk/phase3/languages/messages/MessagesBpy.php
trunk/phase3/languages/messages/MessagesBr.php
trunk/phase3/languages/messages/MessagesBs.php
trunk/phase3/languages/messages/MessagesCa.php
trunk/phase3/languages/messages/MessagesCeb.php
trunk/phase3/languages/messages/MessagesCkb_arab.php
trunk/phase3/languages/messages/MessagesCrh_cyrl.php
trunk/phase3/languages/messages/MessagesCrh_latn.php
trunk/phase3/languages/messages/MessagesCs.php
trunk/phase3/languages/messages/MessagesCy.php
trunk/phase3/languages/messages/MessagesDa.php
trunk/phase3/languages/messages/MessagesDe.php
trunk/phase3/languages/messages/MessagesDiq.php
trunk/phase3/languages/messages/MessagesDsb.php
trunk/phase3/languages/messages/MessagesEl.php
trunk/phase3/languages/messages/MessagesEn.php
trunk/phase3/languages/messages/MessagesEo.php
trunk/phase3/languages/messages/MessagesEs.php
trunk/phase3/languages/messages/MessagesEt.php
trunk/phase3/languages/messages/MessagesEu.php
trunk/phase3/languages/messages/MessagesFa.php
trunk/phase3/languages/messages/MessagesFi.php
trunk/phase3/languages/messages/MessagesFr.php
trunk/phase3/languages/messages/MessagesFrp.php
trunk/phase3/languages/messages/MessagesFy.php
trunk/phase3/languages/messages/MessagesGl.php
trunk/phase3/languages/messages/MessagesGrc.php
trunk/phase3/languages/messages/MessagesGsw.php
trunk/phase3/languages/messages/MessagesGu.php
trunk/phase3/languages/messages/MessagesHe.php
trunk/phase3/languages/messages/MessagesHi.php
trunk/phase3/languages/messages/MessagesHif_latn.php
trunk/phase3/languages/messages/MessagesHr.php
trunk/phase3/languages/messages/MessagesHsb.php
trunk/phase3/languages/messages/MessagesHu.php
trunk/phase3/languages/messages/MessagesHy.php
trunk/phase3/languages/messages/MessagesIa.php
trunk/phase3/languages/messages/MessagesId.php
trunk/phase3/languages/messages/MessagesIs.php
trunk/phase3/languages/messages/MessagesIt.php
trunk/phase3/languages/messages/MessagesJa.php
trunk/phase3/languages/messages/MessagesJv.php
trunk/phase3/languages/messages/MessagesKa.php
trunk/phase3/languages/messages/MessagesKiu.php
trunk/phase3/languages/messages/MessagesKm.php
trunk/phase3/languages/messages/MessagesKo.php
trunk/phase3/languages/messages/MessagesKrc.php
trunk/phase3/languages/messages/MessagesKsh.php
trunk/phase3/languages/messages/MessagesLb.php
trunk/phase3/languages/messages/MessagesLt.php
trunk/phase3/languages/messages/MessagesLzh.php
trunk/phase3/languages/messages/MessagesMg.php
trunk/phase3/languages/messages/MessagesMk.php
trunk/phase3/languages/messages/MessagesMl.php
trunk/phase3/languages/messages/MessagesMn.php
trunk/phase3/languages/messages/MessagesMs.php
trunk/phase3/languages/messages/MessagesNds_nl.php
trunk/phase3/languages/messages/MessagesNe.php
trunk/phase3/languages/messages/MessagesNl.php
trunk/phase3/languages/messages/MessagesNn.php
trunk/phase3/languages/messages/MessagesNo.php
trunk/phase3/languages/messages/MessagesOc.php
trunk/phase3/languages/messages/MessagesPl.php
trunk/phase3/languages/messages/MessagesPms.php
trunk/phase3/languages/messages/MessagesPt.php
trunk/phase3/languages/messages/MessagesPt_br.php
trunk/phase3/languages/messages/MessagesQu.php
trunk/phase3/languages/messages/MessagesRo.php
trunk/phase3/languages/messages/MessagesRoa_tara.php
trunk/phase3/languages/messages/MessagesRu.php
trunk/phase3/languages/messages/MessagesSah.php
trunk/phase3/languages/messages/MessagesScn.php
trunk/phase3/languages/messages/MessagesSh.php
trunk/phase3/languages/messages/MessagesSi.php
trunk/phase3/languages/messages/MessagesSk.php
trunk/phase3/languages/messages/MessagesSl.php
trunk/phase3/languages/messages/MessagesSli.php
trunk/phase3/languages/messages/MessagesStq.php
trunk/phase3/languages/messages/MessagesSv.php
trunk/phase3/languages/messages/MessagesSw.php
trunk/phase3/languages/messages/MessagesTe.php
trunk/phase3/languages/messages/MessagesTh.php
trunk/phase3/languages/messages/MessagesTk.php
trunk/phase3/languages/messages/MessagesTr.php
trunk/phase3/languages/messages/MessagesTt_cyrl.php
trunk/phase3/languages/messages/MessagesUk.php
trunk/phase3/languages/messages/MessagesVec.php
trunk/phase3/languages/messages/MessagesVep.php
trunk/phase3/languages/messages/MessagesVi.php
trunk/phase3/languages/messages/MessagesWo.php
trunk/phase3/languages/messages/MessagesYi.php
trunk/phase3/languages/messages/MessagesYo.php
trunk/phase3/languages/messages/MessagesYue.php
trunk/phase3/languages/messages/MessagesZh_hans.php
trunk/phase3/languages/messages/MessagesZh_hant.php
trunk/phase3/maintenance/language/messages.inc
trunk/phase3/skins/common/wikibits.js

Removed Paths:
-------------
trunk/phase3/includes/upload/UploadFromChunks.php
trunk/phase3/js2/
trunk/phase3/mwScriptLoader.php
trunk/phase3/mwScriptLoader.php5
trunk/phase3/skins/common/preview.js

Modified: trunk/phase3/config/Installer.php
===================================================================
--- trunk/phase3/config/Installer.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/config/Installer.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -533,24 +533,6 @@
cannot use these for object caching.</li>' );
}

-$conf->phpCliPath = false;
-$phpClilocations = array_merge(
- array(
- "/usr/bin",
- "/usr/local/bin",
- "/opt/csw/bin",
- "/usr/gnu/bin",
- "/usr/sfw/bin" ),
- explode( PATH_SEPARATOR, getenv( "PATH" ) ) );
-$phpClinames = array( "php", "php.exe" );
-foreach ($phpClilocations as $loc) {
- $exe = locate_executable($loc, $phpClinames);
- if ($exe !== false) {
- $conf->phpCliPath= $exe;
- break;
- }
-}
-
$conf->diff3 = false;
$diff3locations = array_merge(
array(
@@ -2043,8 +2025,6 @@

\$wgDiff3 = \"{$slconf['diff3']}\";

-\$wgPhpCliPath = \"{$slconf['phpCliPath']}\";
-
# When you make changes to this configuration file, this will make
# sure that cached pages are cleared.
\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );

Modified: trunk/phase3/includes/AutoLoader.php
===================================================================
--- trunk/phase3/includes/AutoLoader.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/AutoLoader.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -131,9 +131,6 @@
'IndexPager' => 'includes/Pager.php',
'Interwiki' => 'includes/Interwiki.php',
'IP' => 'includes/IP.php',
- 'JSMin' => 'js2/mwEmbed/php/minify/JSMin.php',
- 'JSMinException' => 'js2/mwEmbed/php/minify/JSMin.php',
- 'jsScriptLoader' => 'js2/mwEmbed/jsScriptLoader.php',
'Job' => 'includes/JobQueue.php',
'LCStore_DB' => 'includes/LocalisationCache.php',
'LCStore_CDB' => 'includes/LocalisationCache.php',
@@ -200,7 +197,6 @@
'ReverseChronologicalPager' => 'includes/Pager.php',
'Revision' => 'includes/Revision.php',
'RSSFeed' => 'includes/Feed.php',
- 'simpleFileCache' => 'js2/mwEmbed/jsScriptLoader.php',
'Sanitizer' => 'includes/Sanitizer.php',
'SiteConfiguration' => 'includes/SiteConfiguration.php',
'SiteStats' => 'includes/SiteStats.php',
@@ -232,7 +228,6 @@
'UploadFromStash' => 'includes/upload/UploadFromStash.php',
'UploadFromFile' => 'includes/upload/UploadFromFile.php',
'UploadFromUrl' => 'includes/upload/UploadFromUrl.php',
- 'UploadFromChunks' => 'includes/upload/UploadFromChunks.php',
'User' => 'includes/User.php',
'UserArray' => 'includes/UserArray.php',
'UserArrayFromResult' => 'includes/UserArray.php',
@@ -608,37 +603,6 @@

);

-// Autoloader for JavaScript files (path is from the MediaWiki folder)
-global $wgJSAutoloadLocalClasses;
-$wgJSAutoloadLocalClasses = array(
- 'ajax' => 'skins/common/ajax.js',
- 'ajaxwatch' => 'skins/common/ajaxwatch.js',
- 'allmessages' => 'skins/common/allmessages.js',
- 'block' => 'skins/common/block.js',
- 'changepassword' => 'skins/common/changepassword.js',
- 'diff' => 'skins/common/diff.js',
- 'edit' => 'skins/common/edit.js',
- 'enhancedchanges.js' => 'skins/common/enhancedchanges.js',
- 'history' => 'skins/common/history.js',
- 'htmlform' => 'skins/common/htmlform.js',
- 'IEFixes' => 'skins/common/IEFixes.js',
- 'metadata' => 'skins/common/metadata.js',
- 'mwsuggest' => 'skins/common/mwsuggest.js',
- 'prefs' => 'skins/common/prefs.js',
- 'preview' => 'skins/common/preview.js',
- 'protect' => 'skins/common/protect.js',
- 'rightclickedit' => 'skins/common/rightclickedit.js',
- 'sticky' => 'skins/common/sticky.js',
- 'upload' => 'skins/common/upload.js',
- 'wikibits' => 'skins/common/wikibits.js',
-
- // phase 2 javascript:
- 'uploadPage' => 'js2/uploadPage.js',
- 'editPage' => 'js2/editPage.js',
- 'ajaxCategories' => 'js2/ajaxcategories.js',
- 'apiProxyPage' => 'js2/apiProxyPage.js'
-);
-
class AutoLoader {
/**
* autoload - take a class name and attempt to load it

Modified: trunk/phase3/includes/DefaultSettings.php
===================================================================
--- trunk/phase3/includes/DefaultSettings.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/DefaultSettings.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -456,7 +456,7 @@
$wgCacheSharedUploads = true;
/**
* Allow for upload to be copied from an URL. Requires Special:Upload?source=web
-* timeout for Copy Uploads is set by wgAsyncHTTPTimeout & wgSyncHTTPTimeout
+* The timeout for copy uploads is set by $wgHTTPTimeout.
*/
$wgAllowCopyUploads = false;

@@ -467,16 +467,7 @@
*/
$wgMaxUploadSize = 1024*1024*100; # 100MB

-
/**
- * Enable Firefogg support. Adds support for in-browser transcoding to Ogg
- * Theora, chunked uploads for large image files and client side hash checks.
- *
- * Ignored unless $wgEnableJS2system is true.
- */
-$wgEnableFirefogg = true;
-
-/**
* Point the upload navigation link to an external URL
* Useful if you want to use a shared repository by default
* without disabling local uploads (use $wgEnableUploads = false for that)
@@ -2795,69 +2786,6 @@
*/
$wgAutoloadClasses = array();

-/*
- * Array mapping JavaScript class to web path for use by the script loader.
- * This is populated in AutoLoader.php.
- */
-$wgJSAutoloadClasses = array();
-
-/*
- * boolean; if the script loader should be used to group all javascript requests.
- * more about the script loader: http://www.mediawiki.org/wiki/ScriptLoader
- *
- * (its recommended you DO NOT enable the script loader without also enabling $wgUseFileCache
- * (or have mediaWiki behind a proxy) otherwise all new js requests will result in script server js processing.
- */
-$wgEnableScriptLoader = false;
-
-/*
- * $wgScriptModifiedCheck should run a file modified check on javascript files when
- * generating unique request ids for javascript include using the script-loader
- *
- * note this will only check core scripts that are directly included on the page.
- * (not scripts loaded after the initial page display since after initial page
- * display scripts inherit the unique request id)
- *
- * and or you can update $wgStyleVersion
- */
-$wgScriptModifiedFileCheck = true;
-
-/*
- * $wgScriptModifiedMsgCheck Checks MediaWiki NS for latest
- * Revision for generating the request id.
- *
- */
-$wgScriptModifiedMsgCheck = false;
-
-/*
- * enable js2 Script System
- * if enabled we include jquery, mv_embed and js2 versions of editPage.js
- */
-$wgEnableJS2system = false;
-
-/*
- * enable api iframe proxy
- */
-$wgEnableIframeApiProxy = false;
-
-/*
- * boolean; if we should enable javascript localization (it loads loadGM json
- * call with mediaWiki msgs)
- */
-$wgEnableScriptLocalization = true;
-
-/*
- * path for mwEmbed normally js2/mwEmbed/
- */
-$wgMwEmbedDirectory = "js2/mwEmbed/";
-
-/*
- * Turn on debugging for the javascript script-loader & forces fresh copies
- * of javascript
- */
-$wgDebugJavaScript = false;
-
-
/**
* An array of extension types and inside that their names, versions, authors,
* urls, descriptions and pointers to localized description msgs. Note that
@@ -3399,15 +3327,6 @@
);

/**
- * Experimental preview feature to fetch rendered text
- * over an XMLHttpRequest from JavaScript instead of
- * forcing a submit and reload of the whole page.
- * Leave disabled unless you're testing it.
- * Needs JS2 ($wgEnableJS2) to be activated.
- */
-$wgLivePreview = false;
-
-/**
* Disable the internal MySQL-based search, to allow it to be
* implemented by an extension instead.
*/
@@ -3687,24 +3606,11 @@
$wgAllowSpecialInclusion = true;

/**
- * Timeout for HTTP requests done at script execution time
- * default is (default php.ini script time 30s - 5s for everything else)
+ * Timeout for HTTP requests done via CURL
*/
-$wgSyncHTTPTimeout = 25;
+$wgHTTPTimeout = 25;

/**
-* Timeout for asynchronous HTTP requests that run in a background PHP process
-* default set to 20 min
-*/
-$wgAsyncHTTPTimeout = 60*20;
-
-/*
- * if AsyncDownload is enabled (works on unix platforms)
- * fix for windows is pending.
- */
-$wgEnableAsyncDownload = false;
-
-/**
* Proxy to use for CURL requests.
*/
$wgHTTPProxy = false;
@@ -3771,12 +3677,6 @@
$wgAjaxUploadDestCheck = true;

/**
- * Enable the AJAX upload interface (needed for large http uploads & to display
- * progress on uploads for browsers that support it)
- */
-$wgAjaxUploadInterface = true;
-
-/**
* Enable previewing licences via AJAX
*/
$wgAjaxLicensePreview = true;
@@ -3837,11 +3737,6 @@
$wgMaxShellTime = 180;

/**
-* Executable path of the PHP cli binary (php/php5). Should be set up on install.
-*/
-$wgPhpCli = '/usr/bin/php';
-
-/**
* DJVU settings
* Path of the djvudump executable
* Enable this and $wgDjvuRenderer to enable djvu rendering
@@ -4314,20 +4209,6 @@
$wgMemoryLimit = "50M";

/**
- * Whether or not to use the AJAX categories system.
- * Note that this requires JS2 and the script loader.
- */
-$wgUseAJAXCategories = false;
-
-/**
- * Only enable AJAXCategories on configured namespaces. Default is all.
- *
- * Example:
- * $wgAJAXCategoriesNamespaces = array( NS_MAIN, NS_PROJECT );
- */
-$wgAJAXCategoriesNamespaces = array();
-
-/**
* To disable file delete/restore temporarily
*/
$wgUploadMaintenance = false;

Modified: trunk/phase3/includes/EditPage.php
===================================================================
--- trunk/phase3/includes/EditPage.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/EditPage.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -368,7 +368,7 @@
* the newly-edited page.
*/
function edit() {
- global $wgOut, $wgRequest, $wgEnableJS2system;
+ global $wgOut, $wgRequest;
// Allow extensions to modify/prevent this form or submission
if ( !wfRunHooks( 'AlternateEdit', array( $this ) ) ) {
return;
@@ -397,9 +397,6 @@

$wgOut->addScriptFile( 'edit.js' );

- if( $wgEnableJS2system )
- $wgOut->addScriptClass( 'editPage' );
-
$permErrors = $this->getEditPermissionErrors();
if ( $permErrors ) {
wfDebug( __METHOD__ . ": User can't edit\n" );
@@ -1718,22 +1715,6 @@
}
}

- /**
- * Live Preview lets us fetch rendered preview page content and
- * add it to the page without refreshing the whole page.
- * If not supported by the browser it will fall through to the normal form
- * submission method.
- *
- * This function outputs a script tag to support live preview, and
- * returns an onclick handler which should be added to the attributes
- * of the preview button
- */
- function doLivePreviewScript() {
- global $wgOut, $wgTitle;
- $wgOut->addScriptFile( 'preview.js' );
- return "";
- }
-
protected function showTosSummary() {
$msg = 'editpage-tos-summary';
// Give a chance for site and per-namespace customizations of
@@ -2285,46 +2266,18 @@
$buttons['save'] = Xml::element('input', $temp, '');

++$tabindex; // use the same for preview and live preview
- if ( $this->useLivePreview() ) {
- $this->doLivePreviewScript(); // Add to output
+ $temp = array(
+ 'id' => 'wpPreview',
+ 'name' => 'wpPreview',
+ 'type' => 'submit',
+ 'tabindex' => $tabindex,
+ 'value' => wfMsg( 'showpreview' ),
+ 'accesskey' => wfMsg( 'accesskey-preview' ),
+ 'title' => wfMsg( 'tooltip-preview' ) . ' [' . wfMsg( 'accesskey-preview' ) . ']',
+ );
+ $buttons['preview'] = Xml::element( 'input', $temp, '' );
+ $buttons['live'] = '';

- $temp = array(
- 'id' => 'wpPreview',
- 'name' => 'wpPreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg( 'showpreview' ),
- 'accesskey' => '',
- 'title' => wfMsg( 'tooltip-preview' ).' ['.wfMsg( 'accesskey-preview' ).']',
- );
- $buttons['preview'] = Xml::element('input', $temp, '');
-
- $temp = array(
- 'id' => 'wpLivePreview',
- 'name' => 'wpLivePreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg( 'showlivepreview' ),
- 'accesskey' => wfMsg( 'accesskey-preview' ),
- 'title' => '',
- 'style' => 'display: none;',
- );
-
- $buttons['live'] = Xml::element( 'input', $temp, '' );
- } else {
- $temp = array(
- 'id' => 'wpPreview',
- 'name' => 'wpPreview',
- 'type' => 'submit',
- 'tabindex' => $tabindex,
- 'value' => wfMsg( 'showpreview' ),
- 'accesskey' => wfMsg( 'accesskey-preview' ),
- 'title' => wfMsg( 'tooltip-preview' ) . ' [' . wfMsg( 'accesskey-preview' ) . ']',
- );
- $buttons['preview'] = Xml::element( 'input', $temp, '' );
- $buttons['live'] = '';
- }
-
$temp = array(
'id' => 'wpDiff',
'name' => 'wpDiff',
@@ -2341,21 +2294,6 @@
}

/**
- * Whether to use live preview for this page
- * This disables live preview when editing css/js user subpages so that the
- * user can preview them (bug 3421)
- *
- * @return Boolean
- */
- public function useLivePreview() {
- global $wgLivePreview, $wgUser;
-
- return $wgLivePreview && $wgUser->getOption( 'uselivepreview' ) &&
- !( ( $this->mTitle->isCssSubpage() && $this->mTitle->userCanEditCssSubpage() ) ||
- ( $this->mTitle->isJsSubpage() && $this->mTitle->userCanEditCssSubpage() ) );
- }
-
- /**
* Output preview text only. This can be sucked into the edit page
* via JavaScript, and saves the server time rendering the skin as
* well as theoretically being more robust on the client (doesn't

Modified: trunk/phase3/includes/GlobalFunctions.php
===================================================================
--- trunk/phase3/includes/GlobalFunctions.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/GlobalFunctions.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -2362,45 +2362,6 @@
}

/**
- * Executes a shell command in the background. Returns true if successful.
- *
- * @param $cmd String
- */
-function wfShellBackgroundExec( $cmd ) {
- wfDebug( "wfShellBackgroundExec: $cmd\n" );
-
- if ( !wfShellExecEnabled() ) {
- return false;
- }
-
- if ( wfIsWindows() ) {
- shell_exec( "start /b $cmd >nul" );
- return true;
- } else {
- $pid = shell_exec( "nohup $cmd > /dev/null & echo $!" );
- return (bool)$pid;
- }
-}
-
-/**
- * Return true if we can execute a shell command (i.e. not safe mode, etc.)
- */
-function wfShellExecEnabled() {
- if( wfIniGetBool( 'safe_mode' ) ) {
- wfDebug( "wfShellExec can't run in safe_mode, PHP's exec functions are too broken.\n" );
- return false;
- }
- $functions = explode( ',', ini_get( 'disable_functions' ) );
- $functions = array_map( 'trim', $functions );
- $functions = array_map( 'strtolower', $functions );
- if ( in_array( 'passthru', $functions ) ) {
- wfDebug( "passthru is in disabled_functions\n" );
- return false;
- }
- return true;
-}
-
-/**
* Workaround for http://bugs.php.net/bug.php?id=45132
* escapeshellarg() destroys non-ASCII characters if LANG is not a UTF-8 locale
*/

Modified: trunk/phase3/includes/HTMLForm.php
===================================================================
--- trunk/phase3/includes/HTMLForm.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/HTMLForm.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -152,9 +152,9 @@
static function addJS() {
if( self::$jsAdded ) return;

- global $wgOut;
+ global $wgOut, $wgStylePath;

- $wgOut->addScriptClass( 'htmlform' );
+ $wgOut->addScriptFile( "$wgStylePath/common/htmlform.js" );
}

/**

Modified: trunk/phase3/includes/HttpFunctions.php
===================================================================
--- trunk/phase3/includes/HttpFunctions.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/HttpFunctions.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -1,247 +1,121 @@
<?php
+
/**
- * HTTP handling class
* @defgroup HTTP HTTP
* @file
* @ingroup HTTP
*/

+/**
+ * Various HTTP related functions
+ * @ingroup HTTP
+ */
class Http {
- const SYNC_DOWNLOAD = 1; // syncronous upload (in a single request)
- const ASYNC_DOWNLOAD = 2; // asynchronous upload

- var $body = '';
-
- public static function request( $method, $url, $opts = array() ) {
- $opts['method'] = ( strtoupper( $method ) == 'GET' || strtoupper( $method ) == 'POST' )
- ? strtoupper( $method ) : null;
- $req = HttpRequest::newRequest( $url, $opts );
- $status = $req->doRequest();
- if( $status->isOK() ) {
- return $status->value;
- } else {
- wfDebug( 'http error: ' . $status->getWikiText() );
- return false;
- }
- }
-
/**
* Simple wrapper for Http::request( 'GET' )
+ * @see Http::request()
*/
- public static function get( $url, $timeout = false, $opts = array() ) {
- global $wgSyncHTTPTimeout;
- if( $timeout )
- $opts['timeout'] = $timeout;
- return Http::request( 'GET', $url, $opts );
+ public static function get( $url, $timeout = 'default', $opts = array() ) {
+ return Http::request( "GET", $url, $timeout, $opts );
}

/**
* Simple wrapper for Http::request( 'POST' )
+ * @see Http::request()
*/
- public static function post( $url, $opts = array() ) {
- return Http::request( 'POST', $url, $opts );
+ public static function post( $url, $timeout = 'default', $opts = array() ) {
+ return Http::request( "POST", $url, $timeout, $opts );
}

- public static function doDownload( $url, $target_file_path, $dl_mode = self::SYNC_DOWNLOAD,
- $redirectCount = 0 )
- {
- global $wgPhpCli, $wgMaxUploadSize, $wgMaxRedirects;
- // do a quick check to HEAD to insure the file size is not > $wgMaxUploadSize
- $headRequest = HttpRequest::newRequest( $url, array( 'headers_only' => true ) );
- $headResponse = $headRequest->doRequest();
- if( !$headResponse->isOK() ) {
- return $headResponse;
- }
- $head = $headResponse->value;
-
- // check for redirects:
- if( isset( $head['Location'] ) && strrpos( $head[0], '302' ) !== false ) {
- if( $redirectCount < $wgMaxRedirects ) {
- if( self::isValidURI( $head['Location'] ) ) {
- return self::doDownload( $head['Location'], $target_file_path,
- $dl_mode, $redirectCount++ );
- } else {
- return Status::newFatal( 'upload-proto-error' );
- }
- } else {
- return Status::newFatal( 'upload-too-many-redirects' );
- }
- }
- // we did not get a 200 ok response:
- if( strrpos( $head[0], '200 OK' ) === false ) {
- return Status::newFatal( 'upload-http-error', htmlspecialchars( $head[0] ) );
- }
-
- $content_length = ( isset( $head['Content-Length'] ) ) ? $head['Content-Length'] : null;
- if( $content_length ) {
- if( $content_length > $wgMaxUploadSize ) {
- return Status::newFatal( 'requested file length ' . $content_length .
- ' is greater than $wgMaxUploadSize: ' . $wgMaxUploadSize );
- }
- }
-
- // check if we can find phpCliPath (for doing a background shell request to
- // php to do the download:
- if( $wgPhpCli && wfShellExecEnabled() && $dl_mode == self::ASYNC_DOWNLOAD ) {
- wfDebug( __METHOD__ . "\nASYNC_DOWNLOAD\n" );
- //setup session and shell call:
- return self::initBackgroundDownload( $url, $target_file_path, $content_length );
- } else {
- wfDebug( __METHOD__ . "\nSYNC_DOWNLOAD\n" );
- // SYNC_DOWNLOAD download as much as we can in the time we have to execute
- $opts['method'] = 'GET';
- $opts['target_file_path'] = $target_file_path;
- $req = HttpRequest::newRequest( $url, $opts );
- return $req->doRequest();
- }
- }
-
/**
- * a non blocking request (generally an exit point in the application)
- * should write to a file location and give updates
- *
+ * Get the contents of a file by HTTP
+ * @param $method string HTTP method. Usually GET/POST
+ * @param $url string Full URL to act on
+ * @param $timeout int Seconds to timeout. 'default' falls to $wgHTTPTimeout
+ * @param $curlOptions array Optional array of extra params to pass
+ * to curl_setopt()
*/
- private static function initBackgroundDownload( $url, $target_file_path,
- $content_length = null )
- {
- global $IP, $wgPhpCli, $wgServer;
- $status = Status::newGood();
+ public static function request( $method, $url, $timeout = 'default', $curlOptions = array() ) {
+ global $wgHTTPTimeout, $wgHTTPProxy, $wgTitle;

- // generate a session id with all the details for the download (pid, target_file_path )
- $upload_session_key = self::getUploadSessionKey();
- $session_id = session_id();
-
- // store the url and target path:
- $_SESSION['wsDownload'][$upload_session_key]['url'] = $url;
- $_SESSION['wsDownload'][$upload_session_key]['target_file_path'] = $target_file_path;
- // since we request from the cmd line we lose the original host name pass in the session:
- $_SESSION['wsDownload'][$upload_session_key]['orgServer'] = $wgServer;
-
- if( $content_length )
- $_SESSION['wsDownload'][$upload_session_key]['content_length'] = $content_length;
-
- // set initial loaded bytes:
- $_SESSION['wsDownload'][$upload_session_key]['loaded'] = 0;
-
- // run the background download request:
- $cmd = $wgPhpCli . ' ' . $IP . "/maintenance/http_session_download.php " .
- "--sid {$session_id} --usk {$upload_session_key} --wiki " . wfWikiId();
- $pid = wfShellBackgroundExec( $cmd );
- // the pid is not of much use since we won't be visiting this same apache any-time soon.
- if( !$pid )
- return Status::newFatal( 'could not run background shell exec' );
-
- // update the status value with the $upload_session_key (for the user to
- // check on the status of the upload)
- $status->value = $upload_session_key;
-
- // return good status
- return $status;
- }
-
- static function getUploadSessionKey() {
- $key = mt_rand( 0, 0x7fffffff );
- $_SESSION['wsUploadData'][$key] = array();
- return $key;
- }
-
- /**
- * used to run a session based download. Is initiated via the shell.
- *
- * @param $session_id String: the session id to grab download details from
- * @param $upload_session_key String: the key of the given upload session
- * (a given client could have started a few http uploads at once)
- */
- public static function doSessionIdDownload( $session_id, $upload_session_key ) {
- global $wgUser, $wgEnableWriteAPI, $wgAsyncHTTPTimeout, $wgServer,
- $wgSessionsInMemcached, $wgSessionHandler, $wgSessionStarted;
- wfDebug( __METHOD__ . "\n\n doSessionIdDownload :\n\n" );
- // set session to the provided key:
- session_id( $session_id );
- //fire up mediaWiki session system:
- wfSetupSession();
-
- // start the session
- if( session_start() === false ) {
- wfDebug( __METHOD__ . ' could not start session' );
+ // Go ahead and set the timeout if not otherwise specified
+ if ( $timeout == 'default' ) {
+ $timeout = $wgHTTPTimeout;
}
- // get all the vars we need from session_id
- if( !isset( $_SESSION[ 'wsDownload' ][$upload_session_key] ) ) {
- wfDebug( __METHOD__ . ' Error:could not find upload session');
- exit();
- }
- // setup the global user from the session key we just inherited
- $wgUser = User::newFromSession();

- // grab the session data to setup the request:
- $sd =& $_SESSION['wsDownload'][$upload_session_key];
+ wfDebug( __METHOD__ . ": $method $url\n" );
+ # Use curl if available
+ if ( function_exists( 'curl_init' ) ) {
+ $c = curl_init( $url );
+ if ( self::isLocalURL( $url ) ) {
+ curl_setopt( $c, CURLOPT_PROXY, 'localhost:80' );
+ } else if ($wgHTTPProxy) {
+ curl_setopt($c, CURLOPT_PROXY, $wgHTTPProxy);
+ }

- // update the wgServer var ( since cmd line thinks we are localhost
- // when we are really orgServer)
- if( isset( $sd['orgServer'] ) && $sd['orgServer'] ) {
- $wgServer = $sd['orgServer'];
- }
- // close down the session so we can other http queries can get session
- // updates: (if not $wgSessionsInMemcached)
- if( !$wgSessionsInMemcached )
- session_write_close();
+ curl_setopt( $c, CURLOPT_TIMEOUT, $timeout );
+ curl_setopt( $c, CURLOPT_USERAGENT, self :: userAgent() );
+ if ( $method == 'POST' ) {
+ curl_setopt( $c, CURLOPT_POST, true );
+ curl_setopt( $c, CURLOPT_POSTFIELDS, '' );
+ }
+ else
+ curl_setopt( $c, CURLOPT_CUSTOMREQUEST, $method );

- $req = HttpRequest::newRequest( $sd['url'], array(
- 'target_file_path' => $sd['target_file_path'],
- 'upload_session_key'=> $upload_session_key,
- 'timeout' => $wgAsyncHTTPTimeout,
- 'do_close_session_update' => true
- ) );
- // run the actual request .. (this can take some time)
- wfDebug( __METHOD__ . 'do Session Download :: ' . $sd['url'] . ' tf: ' .
- $sd['target_file_path'] . "\n\n");
- $status = $req->doRequest();
- //wfDebug("done with req status is: ". $status->isOK(). ' '.$status->getWikiText(). "\n");
+ # Set the referer to $wgTitle, even in command-line mode
+ # This is useful for interwiki transclusion, where the foreign
+ # server wants to know what the referring page is.
+ # $_SERVER['REQUEST_URI'] gives a less reliable indication of the
+ # referring page.
+ if ( is_object( $wgTitle ) ) {
+ curl_setopt( $c, CURLOPT_REFERER, $wgTitle->getFullURL() );
+ }
+
+ if ( is_array( $curlOptions ) ) {
+ foreach( $curlOptions as $option => $value ) {
+ curl_setopt( $c, $option, $value );
+ }
+ }

- // start up the session again:
- if( session_start() === false ) {
- wfDebug( __METHOD__ . ' ERROR:: Could not start session');
- }
- // grab the updated session data pointer
- $sd =& $_SESSION['wsDownload'][$upload_session_key];
- // if error update status:
- if( !$status->isOK() ) {
- $sd['apiUploadResult'] = FormatJson::encode(
- array( 'error' => $status->getWikiText() )
- );
- }
- // if status okay process upload using fauxReq to api:
- if( $status->isOK() ){
- // setup the FauxRequest
- $fauxReqData = $sd['mParams'];
+ ob_start();
+ curl_exec( $c );
+ $text = ob_get_contents();
+ ob_end_clean();

- // Fix boolean parameters
- foreach( $fauxReqData as $k => $v ) {
- if( $v === false )
- unset( $fauxReqData[$k] );
+ # Don't return the text of error messages, return false on error
+ $retcode = curl_getinfo( $c, CURLINFO_HTTP_CODE );
+ if ( $retcode != 200 ) {
+ wfDebug( __METHOD__ . ": HTTP return code $retcode\n" );
+ $text = false;
}
+ # Don't return truncated output
+ $errno = curl_errno( $c );
+ if ( $errno != CURLE_OK ) {
+ $errstr = curl_error( $c );
+ wfDebug( __METHOD__ . ": CURL error code $errno: $errstr\n" );
+ $text = false;
+ }
+ curl_close( $c );
+ } else {
+ # Otherwise use file_get_contents...
+ # This doesn't have local fetch capabilities...

- $fauxReqData['action'] = 'upload';
- $fauxReqData['format'] = 'json';
- $fauxReqData['internalhttpsession'] = $upload_session_key;
- // evil but no other clean way about it:
- $faxReq = new FauxRequest( $fauxReqData, true );
- $processor = new ApiMain( $faxReq, $wgEnableWriteAPI );
+ $headers = array( "User-Agent: " . self :: userAgent() );
+ if( strcasecmp( $method, 'post' ) == 0 ) {
+ // Required for HTTP 1.0 POSTs
+ $headers[] = "Content-Length: 0";
+ }
+ $opts = array(
+ 'http' => array(
+ 'method' => $method,
+ 'header' => implode( "\r\n", $headers ),
+ 'timeout' => $timeout ) );
+ $ctx = stream_context_create($opts);

- //init the mUpload var for the $processor
- $processor->execute();
- $processor->getResult()->cleanUpUTF8();
- $printer = $processor->createPrinterByName( 'json' );
- $printer->initPrinter( false );
- ob_start();
- $printer->execute();
- $apiUploadResult = ob_get_clean();
-
- // the status updates runner will grab the result form the session:
- $sd['apiUploadResult'] = $apiUploadResult;
+ $text = file_get_contents( $url, false, $ctx );
}
- // close the session:
- session_write_close();
+ return $text;
}

/**
@@ -277,7 +151,7 @@
}
return false;
}
-
+
/**
* Return a standard user-agent we can use for external requests.
*/
@@ -285,366 +159,4 @@
global $wgVersion;
return "MediaWiki/$wgVersion";
}
-
- /**
- * Checks that the given URI is a valid one
- * @param $uri Mixed: URI to check for validity
- */
- public static function isValidURI( $uri ){
- return preg_match(
- '/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/',
- $uri,
- $matches
- );
- }
}
-
-class HttpRequest {
- var $target_file_path;
- var $upload_session_key;
- function __construct( $url, $opt ){
-
- global $wgSyncHTTPTimeout;
- $this->url = $url;
- // set the timeout to default sync timeout (unless the timeout option is provided)
- $this->timeout = ( isset( $opt['timeout'] ) ) ? $opt['timeout'] : $wgSyncHTTPTimeout;
- //check special key default
- if($this->timeout == 'default'){
- $opts['timeout'] = $wgSyncHTTPTimeout;
- }
-
- $this->method = ( isset( $opt['method'] ) ) ? $opt['method'] : 'GET';
- $this->target_file_path = ( isset( $opt['target_file_path'] ) )
- ? $opt['target_file_path'] : false;
- $this->upload_session_key = ( isset( $opt['upload_session_key'] ) )
- ? $opt['upload_session_key'] : false;
- $this->headers_only = ( isset( $opt['headers_only'] ) ) ? $opt['headers_only'] : false;
- $this->do_close_session_update = isset( $opt['do_close_session_update'] );
- $this->postData = isset( $opt['postdata'] ) ? $opt['postdata'] : '';
-
- $this->ssl_verifyhost = (isset( $opt['ssl_verifyhost'] ))? $opt['ssl_verifyhost']: false;
-
- $this->cainfo = (isset( $opt['cainfo'] ))? $op['cainfo']: false;
-
- }
-
- public static function newRequest($url, $opt){
- # select the handler (use curl if available)
- if ( function_exists( 'curl_init' ) ) {
- return new curlHttpRequest($url, $opt);
- } else {
- return new phpHttpRequest($url, $opt);
- }
- }
-
- /**
- * Get the contents of a file by HTTP
- * @param $url string Full URL to act on
- * @param $Opt associative array Optional array of options:
- * 'method' => 'GET', 'POST' etc.
- * 'target_file_path' => if curl should output to a target file
- * 'adapter' => 'curl', 'soket'
- */
- public function doRequest() {
- # Make sure we have a valid url
- if( !Http::isValidURI( $this->url ) )
- return Status::newFatal('bad-url');
- //do the actual request:
- return $this->doReq();
- }
-}
-class curlHttpRequest extends HttpRequest {
- public function doReq(){
- global $wgHTTPProxy, $wgTitle;
-
- $status = Status::newGood();
- $c = curl_init( $this->url );
-
- // proxy setup:
- if ( Http::isLocalURL( $this->url ) ) {
- curl_setopt( $c, CURLOPT_PROXY, 'localhost:80' );
- } elseif ( $wgHTTPProxy ) {
- curl_setopt( $c, CURLOPT_PROXY, $wgHTTPProxy );
- }
-
- curl_setopt( $c, CURLOPT_TIMEOUT, $this->timeout );
- curl_setopt( $c, CURLOPT_USERAGENT, Http::userAgent() );
-
- if($this->ssl_verifyhost)
- curl_setopt( $c, CURLOPT_SSL_VERIFYHOST, $this->ssl_verifyhost);
-
- if($this->cainfo)
- curl_setopt( $c, CURLOPT_CAINFO, $this->cainfo);
-
- if ( $this->headers_only ) {
- curl_setopt( $c, CURLOPT_NOBODY, true );
- curl_setopt( $c, CURLOPT_HEADER, true );
- } elseif ( $this->method == 'POST' ) {
- curl_setopt( $c, CURLOPT_POST, true );
- curl_setopt( $c, CURLOPT_POSTFIELDS, $this->postData );
- // Suppress 'Expect: 100-continue' header, as some servers
- // will reject it with a 417 and Curl won't auto retry
- // with HTTP 1.0 fallback
- curl_setopt( $c, CURLOPT_HTTPHEADER, array( 'Expect:' ) );
- } else {
- curl_setopt( $c, CURLOPT_CUSTOMREQUEST, $this->method );
- }
-
- # Set the referer to $wgTitle, even in command-line mode
- # This is useful for interwiki transclusion, where the foreign
- # server wants to know what the referring page is.
- # $_SERVER['REQUEST_URI'] gives a less reliable indication of the
- # referring page.
- if ( is_object( $wgTitle ) ) {
- curl_setopt( $c, CURLOPT_REFERER, $wgTitle->getFullURL() );
- }
-
- // set the write back function (if we are writing to a file)
- if( $this->target_file_path ) {
- $cwrite = new simpleFileWriter( $this->target_file_path,
- $this->upload_session_key,
- $this->do_close_session_update
- );
- if( !$cwrite->status->isOK() ) {
- wfDebug( __METHOD__ . "ERROR in setting up simpleFileWriter\n" );
- $status = $cwrite->status;
- return $status;
- }
- curl_setopt( $c, CURLOPT_WRITEFUNCTION, array( $cwrite, 'callbackWriteBody' ) );
- }
-
- // start output grabber:
- if( !$this->target_file_path )
- ob_start();
-
- //run the actual curl_exec:
- try {
- if ( false === curl_exec( $c ) ) {
- $error_txt ='Error sending request: #' . curl_errno( $c ) .' '. curl_error( $c );
- wfDebug( __METHOD__ . $error_txt . "\n" );
- $status = Status::newFatal( $error_txt );
- }
- } catch ( Exception $e ) {
- // do something with curl exec error?
- }
- // if direct request output the results to the stats value:
- if( !$this->target_file_path && $status->isOK() ) {
- $status->value = ob_get_contents();
- ob_end_clean();
- }
- // if we wrote to a target file close up or return error
- if( $this->target_file_path ) {
- $cwrite->close();
- if( !$cwrite->status->isOK() ) {
- return $cwrite->status;
- }
- }
-
- if ( $this->headers_only ) {
- $headers = explode( "\n", $status->value );
- $headerArray = array();
- foreach ( $headers as $header ) {
- if ( !strlen( trim( $header ) ) )
- continue;
- $headerParts = explode( ':', $header, 2 );
- if ( count( $headerParts ) == 1 ) {
- $headerArray[] = trim( $header );
- } else {
- list( $key, $val ) = $headerParts;
- $headerArray[trim( $key )] = trim( $val );
- }
- }
- $status->value = $headerArray;
- } else {
- # Don't return the text of error messages, return false on error
- $retcode = curl_getinfo( $c, CURLINFO_HTTP_CODE );
- if ( $retcode != 200 ) {
- wfDebug( __METHOD__ . ": HTTP return code $retcode\n" );
- $status = Status::newFatal( "HTTP return code $retcode\n" );
- }
- # Don't return truncated output
- $errno = curl_errno( $c );
- if ( $errno != CURLE_OK ) {
- $errstr = curl_error( $c );
- wfDebug( __METHOD__ . ": CURL error code $errno: $errstr\n" );
- $status = Status::newFatal( " CURL error code $errno: $errstr\n" );
- }
- }
-
- curl_close( $c );
- // return the result obj
- return $status;
- }
-}
-class phpHttpRequest extends HttpRequest {
- public function doReq() {
- global $wgTitle, $wgHTTPProxy;
- # Check for php.ini allow_url_fopen
- if( !ini_get( 'allow_url_fopen' ) ) {
- return Status::newFatal( 'allow_url_fopen needs to be enabled for http copy to work' );
- }
-
- // start with good status:
- $status = Status::newGood();
-
- if ( $this->headers_only ) {
- $status->value = get_headers( $this->url, 1 );
- return $status;
- }
-
- // setup the headers
- $headers = array( "User-Agent: " . Http::userAgent() );
- if ( is_object( $wgTitle ) ) {
- $headers[] = "Referer: ". $wgTitle->getFullURL();
- }
-
- if( strcasecmp( $this->method, 'post' ) == 0 ) {
- // Required for HTTP 1.0 POSTs
- $headers[] = "Content-Length: 0";
- }
- $fcontext = stream_context_create ( array(
- 'http' => array(
- 'method' => $this->method,
- 'header' => implode( "\r\n", $headers ),
- 'timeout' => $this->timeout )
- )
- );
- $fh = fopen( $this->url, "r", false, $fcontext);
-
- // set the write back function (if we are writing to a file)
- if( $this->target_file_path ) {
- $cwrite = new simpleFileWriter( $this->target_file_path,
- $this->upload_session_key, $this->do_close_session_update );
- if( !$cwrite->status->isOK() ) {
- wfDebug( __METHOD__ . "ERROR in setting up simpleFileWriter\n" );
- $status = $cwrite->status;
- return $status;
- }
-
- // read $fh into the simpleFileWriter (grab in 64K chunks since
- // it's likely a ~large~ media file)
- while ( !feof( $fh ) ) {
- $contents = fread( $fh, 65536 );
- $cwrite->callbackWriteBody( $fh, $contents );
- }
- $cwrite->close();
- // check for simpleFileWriter error:
- if( !$cwrite->status->isOK() ) {
- return $cwrite->status;
- }
- } else {
- // read $fh into status->value
- $status->value = @stream_get_contents( $fh );
- }
- //close the url file wrapper
- fclose( $fh );
-
- // check for "false"
- if( $status->value === false ) {
- $status->error( 'file_get_contents-failed' );
- }
- return $status;
- }
-
-}
-
-/**
- * a simpleFileWriter with session id updates
- */
-class simpleFileWriter {
- var $target_file_path;
- var $status = null;
- var $session_id = null;
- var $session_update_interval = 0; // how often to update the session while downloading
-
- function simpleFileWriter( $target_file_path, $upload_session_key,
- $do_close_session_update = false )
- {
- $this->target_file_path = $target_file_path;
- $this->upload_session_key = $upload_session_key;
- $this->status = Status::newGood();
- $this->do_close_session_update = $do_close_session_update;
- // open the file:
- $this->fp = fopen( $this->target_file_path, 'w' );
- if( $this->fp === false ) {
- $this->status = Status::newFatal( 'HTTP::could-not-open-file-for-writing' );
- }
- // true start time
- $this->prevTime = time();
- }
-
- public function callbackWriteBody( $ch, $data_packet ) {
- global $wgMaxUploadSize, $wgLang;
-
- // write out the content
- if( fwrite( $this->fp, $data_packet ) === false ) {
- wfDebug( __METHOD__ ." ::could-not-write-to-file\n" );
- $this->status = Status::newFatal( 'HTTP::could-not-write-to-file' );
- return 0;
- }
-
- // check file size:
- clearstatcache();
- $this->current_fsize = filesize( $this->target_file_path );
-
- if( $this->current_fsize > $wgMaxUploadSize ) {
- wfDebug( __METHOD__ . " ::http download too large\n" );
- $this->status = Status::newFatal( 'HTTP::file-has-grown-beyond-upload-limit-killing: ' .
- 'downloaded more than ' .
- $wgLang->formatSize( $wgMaxUploadSize ) . ' ' );
- return 0;
- }
- // if more than session_update_interval second have passed update_session_progress
- if( $this->do_close_session_update && $this->upload_session_key &&
- ( ( time() - $this->prevTime ) > $this->session_update_interval ) ) {
- $this->prevTime = time();
- $session_status = $this->update_session_progress();
- if( !$session_status->isOK() ) {
- $this->status = $session_status;
- wfDebug( __METHOD__ . ' update session failed or was canceled');
- return 0;
- }
- }
- return strlen( $data_packet );
- }
-
- public function update_session_progress() {
- global $wgSessionsInMemcached;
- $status = Status::newGood();
- // start the session (if necessary)
- if( !$wgSessionsInMemcached ) {
- wfSuppressWarnings();
- if( session_start() === false ) {
- wfDebug( __METHOD__ . ' could not start session' );
- exit( 0 );
- }
- wfRestoreWarnings();
- }
- $sd =& $_SESSION['wsDownload'][ $this->upload_session_key ];
- // check if the user canceled the request:
- if( isset( $sd['user_cancel'] ) && $sd['user_cancel'] == true ) {
- //@@todo kill the download
- return Status::newFatal( 'user-canceled-request' );
- }
- // update the progress bytes download so far:
- $sd['loaded'] = $this->current_fsize;
-
- // close down the session so we can other http queries can get session updates:
- if( !$wgSessionsInMemcached )
- session_write_close();
-
- return $status;
- }
-
- public function close() {
- // do a final session update:
- if( $this->do_close_session_update ) {
- $this->update_session_progress();
- }
- // close up the file handle:
- if( false === fclose( $this->fp ) ) {
- $this->status = Status::newFatal( 'HTTP::could-not-close-file' );
- }
- }
-
-}

Modified: trunk/phase3/includes/OutputPage.php
===================================================================
--- trunk/phase3/includes/OutputPage.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/OutputPage.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -14,8 +14,6 @@
var $mLastModified = '', $mETag = false;
var $mCategoryLinks = array(), $mCategories = array(), $mLanguageLinks = array();

- var $mScriptLoaderClassList = array();
-
var $mScripts = '', $mLinkColours, $mPageLinkTitle = '', $mHeadItems = array();
var $mInlineMsg = array();

@@ -41,7 +39,6 @@
var $mParseWarnings = array();
var $mSquidMaxage = 0;
var $mRevisionId = null;
- var $mScriptLoader = null;
protected $mTitle = null;

/**
@@ -119,243 +116,24 @@
* @param string $file filename in skins/common or complete on-server path (/foo/bar.js)
*/
function addScriptFile( $file ) {
- global $wgStylePath, $wgScript, $wgUser;
- global $wgEnableScriptLoader, $wgScriptPath;
-
+ global $wgStylePath, $wgStyleVersion, $wgJsMimeType;
if( substr( $file, 0, 1 ) == '/' ) {
$path = $file;
} else {
- $path = "{$wgStylePath}/common/{$file}";
+ $path = "{$wgStylePath}/common/{$file}";
}
-
- // If the class can be determined, use the addScriptClass method
- $js_class = $this->getJsClassFromPath( $path );
- if( $js_class ) {
- $this->addScriptClass( $js_class );
- return true;
- }
-
- //do checks for wiki-titles
- if( strpos( $path, $wgScript ) !== false ) {
- $reqPath = str_replace( $wgScript . '?', '', $path );
- $reqArgs = explode( '&', $reqPath );
- $reqSet = array();
-
- foreach( $reqArgs as $arg ) {
- list( $key, $var ) = explode( '=', $arg );
- $reqSet[$key] = $var;
- }
-
- if( isset( $reqSet['title'] ) && $reqSet != '' ) {
- $jsTitleClass = 'WT:' . $reqSet['title'];
- if( $wgEnableScriptLoader ) {
- // Extract any extra parameters (for now just skin)
- $ext_param = ( isset( $reqSet['useskin'] ) && $reqSet['useskin'] != '' )
- ? '|useskin=' . ucfirst( $reqSet['useskin'] ) : '';
- $this->mScriptLoaderClassList[] = $jsTitleClass . $ext_param ;
- return true;
- }else{
- $this->addScript( Html::linkedScript(
- wfAppendQuery( $path, $this->getURIDparam( $jsTitleClass ) )
- )
- );
- return true;
- }
- }
- }
- // If the script loader could not be used, just add the script to the header
- $this->addScript( Html::linkedScript( wfAppendQuery( $path, $this->getURIDparam() ) ) );
+ $this->addScript(
+ Xml::element( 'script',
+ array(
+ 'type' => $wgJsMimeType,
+ 'src' => "$path?$wgStyleVersion",
+ ),
+ '', false
+ )
+ );
}

/**
- * Add the core scripts that are included on every page, for later output into the header
- *
- * this includes the conditional sitejs
- */
- function addCoreScripts2Top(){
- global $wgEnableScriptLoader, $wgJSAutoloadLocalClasses, $wgScriptPath, $wgEnableJS2system;
- global $wgUser, $wgJsMimeType;
- // @todo We should deprecate wikibits in favor of some mv_embed pieces and jQuery
-
- if( $wgEnableJS2system ){
- $core_classes = array( 'window.jQuery', 'mv_embed', 'wikibits' );
- } else {
- $core_classes = array( 'wikibits' );
- }
-
- //make sure scripts are on top:
- $postScripts = $this->mScripts;
- $this->mScripts = '';
-
- if( $wgEnableScriptLoader ){
- //directly add script_loader call for addCoreScripts2Top
- $this->mScripts = $this->getScriptLoaderJs( $core_classes );
- } else {
- $so = '';
- foreach( $core_classes as $js_class ){
- $this->addScriptClass( $js_class );
- }
- }
- //now re-append any scripts that got added prior to the addCoreScripts2Top call
- $this->mScripts = $this->mScripts . $postScripts;
- }
-
- /**
- * @param string $js_class Name of the JavaScript class
- * @return boolean False if the class wasn't found, true on success
- */
- function addScriptClass( $js_class ){
- global $wgDebugJavaScript, $wgJSAutoloadLocalClasses, $wgJSAutoloadClasses,
- $wgEnableScriptLoader, $wgStyleVersion, $wgScriptPath, $wgStylePath, $wgEnableJS2system;
-
- $path = jsScriptLoader::getJsPathFromClass( $js_class );
- if( $path !== false ){
- if( $wgEnableScriptLoader ) {
- // Register it with the script loader
- if( !in_array( $js_class, $this->mScriptLoaderClassList ) ) {
- $this->mScriptLoaderClassList[] = $js_class;
- }
- } else {
- // Source the script directly
- $prefix = "skins/common/";
- if( substr( $path, 0, 1 ) == '/' ) {
- // straight path
- } elseif( substr( $path, 0, strlen( $prefix ) ) == $prefix ) {
- // Respect $wgStypePath
- $path = "{$wgStylePath}/common/" . substr( $path, strlen( $prefix ) );
- } else {
- $path = $wgScriptPath . '/' . $path;
- }
- $this->addScript( Html::linkedScript( $path . "?" . $this->getURIDparam( $js_class ) ) );
-
- // Merge in language text (if js2 is on and we have loadGM function & scriptLoader is "off")
- if( $wgEnableJS2system ){
- if( !$this->mScriptLoader )
- $this->mScriptLoader = new jsScriptLoader();
-
- $inlineMsg = $this->mScriptLoader->getInlineLoadGMFromClass( $js_class );
- if( $inlineMsg != '' )
- $this->addScript( Html::inlineScript( $inlineMsg ));
- }
- }
- return true;
- }
- //print "could not find: $js_class\n";
- wfDebug( __METHOD__ . ' could not find js_class: ' . $js_class );
- return false; // could not find the class
- }
-
- /**
- * Get the <script> tag which will invoke the script loader
- * @param $classAry A class array which, if given, overrides $this->mScriptLoaderClassList
- */
- function getScriptLoaderJs( $classAry = array() ) {
- global $wgRequest, $wgDebugJavaScript;
- // If no class array was provided, use mScriptLoaderClassList
- if( !count( $classAry ) ) {
- $classAry = $this->mScriptLoaderClassList;
- }
- $class_list = implode( ',', $classAry );
-
- $debug_param = ( $wgDebugJavaScript ||
- $wgRequest->getVal( 'debug' ) == 'true' ||
- $wgRequest->getVal( 'debug' ) == '1' )
- ? '&debug=true' : '';
-
- return Html::linkedScript( wfScript( 'mwScriptLoader' ) .
- "?class={$class_list}{$debug_param}&" . $this->getURIDparam( $classAry) ) . "\n";
- }
-
- /**
- * Get the unique request ID parameter for the script-loader request
- */
- function getURIDparam( $classAry = array() ) {
- global $wgDebugJavaScript, $wgStyleVersion, $IP, $wgScriptModifiedFileCheck;
- global $wgLang, $wgScriptModifiedMsgCheck;
-
- //Always the language key param to keep urls distinct per language
- $uriParam = 'uselang=' . $wgLang->getCode();
-
- if( $wgDebugJavaScript ) {
- return $uriParam . '&urid=' . time();
- } else {
- //support single class_name attr
- if( gettype( $classAry) == 'string' ){
- $classAry = array( $classAry );
- }
- $ftime = $frev = 0;
- foreach( $classAry as $class ) {
- // Add the latest revision ID if the class set includes a WT (wiki title)
- if( substr($class, 0, 3) == 'WT:'){
- $title_str = substr($class, 3);
- $t = Title::newFromText( $title_str );
- if( $t && $t->exists() ) {
- if( $t->getLatestRevID() > $frev )
- $frev = $t->getLatestRevID();
- }
- }else{
- //check for file modified time:
- if( $wgScriptModifiedFileCheck ) {
- $js_path = jsScriptLoader::getJsPathFromClass( $class );
- if( $js_path ) {
- $cur_ftime = filemtime ( $IP ."/". $js_path );
- if( $cur_ftime > $ftime )
- $ftime = $cur_ftime;
- }
- }
- }
- }
- //build the actual unique request id:
- $uriParam .= "&urid={$wgStyleVersion}";
-
- // Add the file modification time if set
- if( $ftime != 0 )
- $uriParam .= "_" . $ftime;
-
- //add the wiki rev id if set
- if( $frev != 0 )
- $uriParam.= "_" . $frev;
-
- //add the latest msg rev id if $wgScriptModifiedMsgCheck is enabled:
- if( $wgScriptModifiedMsgCheck ){
- $dbr = wfGetDB( DB_SLAVE );
- // Grab the latest mediaWiki msg rev id:
- $res = $dbr->select( 'recentchanges',
- 'rc_id',
- array( 'rc_namespace'=> NS_MEDIAWIKI ),
- __METHOD__,
- array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => 1 ,
- 'USE INDEX' => array('recentchanges' => 'rc_timestamp' )
- )
- );
- if( $dbr->numRows($res) != 0){
- $rc = $dbr->fetchObject( $res );
- if( $rc->rc_id ){
- $uriParam.= '_' . $rc->rc_id;
- }
- }
- //@@todo we could otherwise use the the SVN version if not already covered by $wgStyleVersion above
- }
- return $uriParam;
- }
- }
- /**
- * Given a script path, get the JS class name, or false if no such path is registered.
- * @param $path string
- */
- function getJsClassFromPath( $path ) {
- global $wgJSAutoloadClasses, $wgJSAutoloadLocalClasses, $wgScriptPath;
-
- $scriptLoaderPaths = array_merge( $wgJSAutoloadClasses, $wgJSAutoloadLocalClasses );
- foreach( $scriptLoaderPaths as $js_class => $js_path ) {
- $js_path = "{$wgScriptPath}/{$js_path}";
- if( $path == $js_path )
- return $js_class;
- }
- return false;
- }
-
- /**
* Add a self-contained script tag with the given contents
* @param string $script JavaScript text, no <script> tags
*/
@@ -367,12 +145,7 @@
* Get all registered JS and CSS tags for the header.
*/
function getScript() {
- global $wgEnableScriptLoader;
- if( $wgEnableScriptLoader ){
- return $this->mScripts . "\n" . $this->getScriptLoaderJs() . $this->getHeadItems();
- } else {
- return $this->mScripts . $this->getHeadItems();
- }
+ return $this->mScripts . $this->getHeadItems();
}

function getHeadItems() {
@@ -1204,9 +977,6 @@

$sk = $wgUser->getSkin();

- // Add our core scripts to output
- $this->addCoreScripts2Top();
-
if ( $wgUseAjax ) {
$this->addScriptFile( 'ajax.js' );

@@ -1225,17 +995,6 @@
$this->addScriptFile( 'rightclickedit.js' );
}

- global $wgUseAJAXCategories, $wgEnableJS2system;
- if ($wgUseAJAXCategories && $wgEnableJS2system) {
- global $wgAJAXCategoriesNamespaces;
-
- $title = $this->getTitle();
-
- if( empty( $wgAJAXCategoriesNamespaces ) || in_array( $title->getNamespace(), $wgAJAXCategoriesNamespaces ) ) {
- $this->addScriptClass( 'ajaxCategories' );
- }
- }
-
if( $wgUniversalEditButton ) {
if( isset( $wgArticle ) && $this->getTitle() && $this->getTitle()->quickUserCan( 'edit' )
&& ( $this->getTitle()->exists() || $this->getTitle()->quickUserCan( 'create' ) ) ) {
@@ -1775,7 +1534,7 @@
public function headElement( Skin $sk, $includeStyle = true ) {
global $wgDocType, $wgDTD, $wgContLanguageCode, $wgOutputEncoding, $wgMimeType;
global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
- global $wgContLang, $wgUseTrackbacks, $wgStyleVersion, $wgEnableScriptLoader, $wgHtml5;
+ global $wgContLang, $wgUseTrackbacks, $wgStyleVersion, $wgHtml5;

$this->addMeta( "http:Content-Type", "$wgMimeType; charset={$wgOutputEncoding}" );
if ( $sk->commonPrintStylesheet() ) {
@@ -1821,9 +1580,6 @@
$ret .= Html::inlineStyle( $sk->usercss );
}

- if( $wgEnableScriptLoader )
- $ret .= $this->getScriptLoaderJs();
-
if ($wgUseTrackbacks && $this->isArticleRelated())
$ret .= $this->getTitle()->trackbackRDF();

@@ -1838,8 +1594,10 @@
*/
function getHeadScripts( Skin $sk ) {
global $wgUser, $wgRequest, $wgJsMimeType, $wgUseSiteJs;
+ global $wgStylePath, $wgStyleVersion;

- $vars = Skin::makeGlobalVariablesScript( $sk->getSkinName() );
+ $scripts = Skin::makeGlobalVariablesScript( $sk->getSkinName() );
+ $scripts .= Html::linkedScript( "{$wgStylePath}/common/wikibits.js?$wgStyleVersion" );

//add site JS if enabled:
if( $wgUseSiteJs ) {
@@ -1866,7 +1624,8 @@
}
}

- return $vars . "\n" . $this->mScripts;
+ $scripts .= "\n" . $this->mScripts;
+ return $scripts;
}

protected function addDefaultMeta() {

Modified: trunk/phase3/includes/Preferences.php
===================================================================
--- trunk/phase3/includes/Preferences.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/Preferences.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -637,7 +637,7 @@
}

static function editingPreferences( $user, &$defaultPreferences ) {
- global $wgUseExternalEditor, $wgLivePreview;
+ global $wgUseExternalEditor;

## Editing #####################################
$defaultPreferences['cols'] =
@@ -739,14 +739,6 @@
'section' => 'editing/advancedediting',
'label-message' => 'tog-forceeditsummary',
);
- if ( $wgLivePreview ) {
- $defaultPreferences['uselivepreview'] =
- array(
- 'type' => 'toggle',
- 'section' => 'editing/advancedediting',
- 'label-message' => 'tog-uselivepreview',
- );
- }
}

static function rcPreferences( $user, &$defaultPreferences ) {

Modified: trunk/phase3/includes/Setup.php
===================================================================
--- trunk/phase3/includes/Setup.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/Setup.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -337,17 +337,6 @@
wfProfileOut( $fname.'-misc2' );
wfProfileIn( $fname.'-extensions' );

-# load the $wgExtensionMessagesFiles for the script loader
-# this can't be done in a normal extension type way
-# since the script-loader is an entry point
-#
-$wgExtensionMessagesFiles['mwEmbed'] = "{$IP}/js2/mwEmbed/php/languages/mwEmbed.i18n.php";
-
-# Include the js2/mwEmbed autoLoadClasses if js2 is enabled
-if( $wgEnableJS2system ){
- require_once("$IP/js2/mwEmbed/php/jsAutoloadLocalClasses.php");
-}
-
# Extension setup functions for extensions other than skins
# Entries should be added to this variable during the inclusion
# of the extension file. This allows the extension to perform

Modified: trunk/phase3/includes/Skin.php
===================================================================
--- trunk/phase3/includes/Skin.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/Skin.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -361,9 +361,9 @@
global $wgBreakFrames, $wgRequest, $wgVariantArticlePath, $wgActionPaths;
global $wgUseAjax, $wgAjaxWatch;
global $wgVersion, $wgEnableAPI, $wgEnableWriteAPI;
- global $wgRestrictionTypes, $wgLivePreview;
+ global $wgRestrictionTypes;
global $wgMWSuggestTemplate, $wgDBname, $wgEnableMWSuggest;
- global $wgSitename, $wgEnableIframeApiProxy, $wgEnableJS2system;
+ global $wgSitename;

$ns = $wgTitle->getNamespace();
$nsname = MWNamespace::exists( $ns ) ? MWNamespace::getCanonicalName( $ns ) : $wgTitle->getNsText();
@@ -426,7 +426,6 @@
if( SpecialPage::resolveAlias( $wgTitle->getDBkey() ) == "Upload" ) {
global $wgFileExtensions, $wgAjaxUploadInterface;
$vars['wgFileExtensions'] = $wgFileExtensions;
- $vars['wgAjaxUploadInterface'] = $wgAjaxUploadInterface;
}

if( $wgUseAjax && $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ){
@@ -439,24 +438,6 @@
foreach( $wgRestrictionTypes as $type )
$vars['wgRestriction' . ucfirst( $type )] = $wgTitle->getRestrictions( $type );

- if ( $wgLivePreview && $wgUser->getOption( 'uselivepreview' ) ) {
- $vars['wgLivepreviewMessageLoading'] = wfMsg( 'livepreview-loading' );
- $vars['wgLivepreviewMessageReady'] = wfMsg( 'livepreview-ready' );
- $vars['wgLivepreviewMessageFailed'] = wfMsg( 'livepreview-failed' );
- $vars['wgLivepreviewMessageError'] = wfMsg( 'livepreview-error' );
- }
-
- //add api proxy var and script link if on the special proxy page:
- if( $wgEnableJS2system &&
- $wgTitle->getNamespace() == NS_MEDIAWIKI &&
- $wgTitle->getDBKey() == 'ApiProxy' )
- {
- $vars['wgEnableIframeApiProxy'] = $wgEnableIframeApiProxy;
- //also add the apiProxy Page script if we are on that page
- if( $wgEnableIframeApiProxy )
- $wgOut->addScriptClass( 'apiProxyPage' );
- }
-
if ( $wgOut->isArticleRelated() && $wgUseAjax && $wgAjaxWatch && $wgUser->isLoggedIn() ) {
$msgs = (object)array();
foreach ( array( 'watch', 'unwatch', 'watching', 'unwatching' ) as $msgName ) {

Modified: trunk/phase3/includes/api/ApiUpload.php
===================================================================
--- trunk/phase3/includes/api/ApiUpload.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/api/ApiUpload.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -60,59 +60,10 @@

// One and only one of the following parameters is needed
$this->requireOnlyOneParameter( $this->mParams,
- 'sessionkey', 'file', 'url', 'enablechunks' );
+ 'sessionkey', 'file', 'url' );

- if ( $this->mParams['enablechunks'] ) {
+ if( $this->mParams['sessionkey'] ) {
/**
- * Chunked upload mode
- */
-
- $this->mUpload = new UploadFromChunks();
- $status = $this->mUpload->initializeFromParams( $this->mParams, $request );
-
- if( isset( $status['error'] ) )
- $this->dieUsageMsg( $status['error'] );
-
- } elseif ( !empty( $this->mParams['internalhttpsession'] ) ) {
- /**
- * Internal http mode
- */
-
- $sd = & $_SESSION['wsDownload'][ $this->mParams['internalhttpsession'] ];
-
- $this->mUpload = new UploadFromFile();
-
- $this->mUpload->initialize( $this->mParams['filename'],
- $sd['target_file_path'],
- filesize( $sd['target_file_path'] )
- );
- } elseif ( $this->mParams['httpstatus'] && $this->mParams['sessionkey'] ) {
- /**
- * Return the status of the given background upload session_key:
- */
- // Check the session key
- if( !isset( $_SESSION['wsDownload'][$this->mParams['sessionkey']] ) )
- return $this->dieUsageMsg( array( 'invalid-session-key' ) );
-
- $sd =& $_SESSION['wsDownload'][$this->mParams['sessionkey']];
- // Keep passing down the upload sessionkey
- $statusResult = array(
- 'upload_session_key' => $this->mParams['sessionkey']
- );
-
- // put values into the final apiResult if available
- if( isset( $sd['apiUploadResult'] ) )
- $statusResult['apiUploadResult'] = $sd['apiUploadResult'];
- if( isset( $sd['loaded'] ) )
- $statusResult['loaded'] = $sd['loaded'];
- if( isset( $sd['content_length'] ) )
- $statusResult['content_length'] = $sd['content_length'];
-
- return $this->getResult()->addValue( null,
- $this->getModuleName(), $statusResult );
-
- } elseif( $this->mParams['sessionkey'] ) {
- /**
* Upload stashed in a previous request
*/
// Check the session key
@@ -150,29 +101,12 @@

$this->mUpload = new UploadFromUrl();
$this->mUpload->initialize( $this->mParams['filename'],
- $this->mParams['url'], $this->mParams['asyncdownload'] );
+ $this->mParams['url'] );

$status = $this->mUpload->fetchFile();
if( !$status->isOK() ) {
return $this->dieUsage( $status->getWikiText(), 'fetchfileerror' );
}
-
- // check if we doing a async request set session info and return the upload_session_key)
- if( $this->mUpload->isAsync() ){
- $upload_session_key = $status->value;
- // update the session with anything with the params we will need to finish up the upload later on:
- if( !isset( $_SESSION['wsDownload'][$upload_session_key] ) )
- $_SESSION['wsDownload'][$upload_session_key] = array();
-
- $sd =& $_SESSION['wsDownload'][$upload_session_key];
-
- // copy mParams for finishing up after:
- $sd['mParams'] = $this->mParams;
-
- return $this->getResult()->addValue( null, $this->getModuleName(),
- array( 'upload_session_key' => $upload_session_key )
- );
- }
}
}

@@ -327,7 +261,6 @@
}

public function getAllowedParams() {
- global $wgEnableAsyncDownload;
$params = array(
'filename' => null,
'comment' => array(
@@ -338,20 +271,12 @@
'watch' => false,
'ignorewarnings' => false,
'file' => null,
- 'enablechunks' => null,
- 'chunksessionkey' => null,
- 'chunk' => null,
- 'done' => false,
'url' => null,
- 'httpstatus' => false,
'sessionkey' => null,
);

if ( $this->getMain()->isInternalMode() )
$params['internalhttpsession'] = null;
- if($wgEnableAsyncDownload){
- $params['asyncdownload'] = false;
- }
return $params;

}
@@ -365,18 +290,10 @@
'watch' => 'Watch the page',
'ignorewarnings' => 'Ignore any warnings',
'file' => 'File contents',
- 'enablechunks' => 'Set to use chunk mode; see http://firefogg.org/dev/chunk_post.html for protocol',
- 'chunksessionkey' => 'Used to sync uploading of chunks',
- 'chunk' => 'Chunk contents',
- 'done' => 'Set when the last chunk is being uploaded',
'url' => 'Url to fetch the file from',
- 'asyncdownload' => 'Set to download the url asynchronously. Useful for large files that will take more than php max_execution_time to download',
- 'httpstatus' => 'Set to return the status of an asynchronous upload (specify the key in sessionkey)',
'sessionkey' => array(
- 'Session key returned by a previous upload that failed due to warnings, or',
- '(with httpstatus) The upload_session_key of an asynchronous upload',
+ 'Session key returned by a previous upload that failed due to warnings',
),
- 'internalhttpsession' => 'Used internally',
);
}

@@ -384,12 +301,9 @@
return array(
'Upload a file, or get the status of pending uploads. Several methods are available:',
' * Upload file contents directly, using the "file" parameter',
- ' * Upload a file in chunks, using the "enablechunks", "chunk", and "chunksessionkey", and "done" parameters',
- ' * Have the MediaWiki server fetch a file from a URL, using the "url" and "asyncdownload" parameters',
- ' * Retrieve the status of an asynchronous upload, using the "httpstatus" and "sessionkey" parameters',
' * Complete an earlier upload that failed due to warnings, using the "sessionkey" parameter',
'Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when',
- 'sending the "file" or "chunk" parameters. Note also that queries using session keys must be',
+ 'sending the "file" parameter. Note also that queries using session keys must be',
'done in the same login session as the query that originally returned the key (i.e. do not',
'log out and then log back in). Also you must get and send an edit token before doing any upload stuff.'
);
@@ -399,12 +313,8 @@
return array(
'Upload from a URL:',
' api.php?action=upload&filename=Wiki.png&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png',
- 'Get the status of an asynchronous upload:',
- ' api.php?action=upload&filename=Wiki.png&httpstatus=1&sessionkey=upload_session_key',
'Complete an upload that failed due to warnings:',
' api.php?action=upload&filename=Wiki.png&sessionkey=sessionkey&ignorewarnings=1',
- 'Begin a chunked upload:',
- ' api.php?action=upload&filename=Wiki.png&enablechunks=1'
);
}


Modified: trunk/phase3/includes/filerepo/FSRepo.php
===================================================================
--- trunk/phase3/includes/filerepo/FSRepo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/filerepo/FSRepo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -227,33 +227,6 @@
return $status;
}

- function append( $srcPath, $toAppendPath ) {
- $status = $this->newGood();
-
- // Resolve the virtual URL
- if ( self::isVirtualUrl( $srcPath ) ) {
- $srcPath = $this->resolveVirtualUrl( $srcPath );
- }
- // Make sure the files are there
- if ( !is_file( $srcPath ) )
- $status->fatal( 'append-src-filenotfound', $srcPath );
-
- if ( !is_file( $toAppendPath ) )
- $status->fatal( 'append-toappend-filenotfound', $toAppendPath );
-
- // Do the append
- if( file_put_contents( $srcPath, file_get_contents( $toAppendPath ), FILE_APPEND ) ) {
- $status->value = $srcPath;
- } else {
- $status->fatal( 'fileappenderror', $toAppendPath, $srcPath);
- }
-
- // Remove the source file
- unlink( $toAppendPath );
-
- return $status;
- }
-
/**
* Checks existence of specified array of files.
*

Modified: trunk/phase3/includes/filerepo/FileRepo.php
===================================================================
--- trunk/phase3/includes/filerepo/FileRepo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/filerepo/FileRepo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -397,8 +397,6 @@
*/
abstract function storeTemp( $originalName, $srcPath );

- abstract function append( $srcPath, $toAppendPath );
-
/**
* Remove a temporary file or mark it for garbage collection
* @param string $virtualUrl The virtual URL returned by storeTemp

Modified: trunk/phase3/includes/filerepo/ForeignAPIRepo.php
===================================================================
--- trunk/phase3/includes/filerepo/ForeignAPIRepo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/filerepo/ForeignAPIRepo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -63,9 +63,6 @@
function storeTemp( $originalName, $srcPath ) {
return false;
}
- function append( $srcPath, $toAppendPath ){
- return false;
- }
function publishBatch( $triplets, $flags = 0 ) {
return false;
}

Modified: trunk/phase3/includes/filerepo/NullRepo.php
===================================================================
--- trunk/phase3/includes/filerepo/NullRepo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/filerepo/NullRepo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -14,9 +14,6 @@
function storeTemp( $originalName, $srcPath ) {
return false;
}
- function append( $srcPath, $toAppendPath ){
- return false;
- }
function publishBatch( $triplets, $flags = 0 ) {
return false;
}

Modified: trunk/phase3/includes/specials/SpecialUpload.php
===================================================================
--- trunk/phase3/includes/specials/SpecialUpload.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/specials/SpecialUpload.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -727,7 +727,7 @@
'section' => 'source',
'id' => 'wpUploadFileURL',
'label-message' => 'sourceurl',
- 'upload-type' => 'URL',
+ 'upload-type' => 'url',
'radio' => &$radio,
'help' => wfMsgExt( 'upload-maxfilesize',
array( 'parseinline', 'escapenoentities' ),
@@ -898,7 +898,6 @@
*/
protected function addUploadJS( ) {
global $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview;
- global $wgEnableFirefogg, $wgEnableJS2system;
global $wgOut;

$useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
@@ -907,23 +906,15 @@
$scriptVars = array(
'wgAjaxUploadDestCheck' => $wgUseAjax && $wgAjaxUploadDestCheck,
'wgAjaxLicensePreview' => $wgUseAjax && $wgAjaxLicensePreview,
- 'wgEnableFirefogg' => (bool)$wgEnableFirefogg,
'wgUploadAutoFill' => !$this->mForReUpload,
'wgUploadSourceIds' => $this->mSourceIds,
);

$wgOut->addScript( Skin::makeVariablesScript( $scriptVars ) );

- // For <charinsert> support; not provided by js2 yet
+ // For <charinsert> support
$wgOut->addScriptFile( 'edit.js' );
-
- if ( $wgEnableJS2system ) {
- // JS2 upload scripts
- $wgOut->addScriptClass( 'uploadPage' );
- } else {
- // Legacy upload javascript
- $wgOut->addScriptFile( 'upload.js' );
- }
+ $wgOut->addScriptFile( 'upload.js' );
}

/**

Modified: trunk/phase3/includes/upload/UploadBase.php
===================================================================
--- trunk/phase3/includes/upload/UploadBase.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/upload/UploadBase.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -471,19 +471,6 @@
return $status;
}

- /**
- * Append a file to a stashed file.
- *
- * @param string $srcPath Path to file to append from
- * @param string $toAppendPath Path to file to append to
- * @return Status Status
- */
- public function appendToUploadFile( $srcPath, $toAppendPath ){
- $repo = RepoGroup::singleton()->getLocalRepo();
- $status = $repo->append( $srcPath, $toAppendPath );
- return $status;
- }
-
/**
* Stash a file in a temporary directory for later processing,
* and save the necessary descriptive info into the session.

Deleted: trunk/phase3/includes/upload/UploadFromChunks.php
===================================================================
--- trunk/phase3/includes/upload/UploadFromChunks.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/upload/UploadFromChunks.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -1,243 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup upload
- *
- * @author Michael Dale
- *
- * first destination checks are made (if ignorewarnings is not checked) errors / warning is returned.
- *
- * we return the uploadUrl
- * we then accept chunk uploads from the client.
- * return chunk id on each POSTED chunk
- * once the client posts done=1 concatenated the files together.
- * more info at: http://firefogg.org/dev/chunk_post.html
- */
-class UploadFromChunks extends UploadBase {
-
- var $chunk_mode; // init, chunk, done
- var $mSessionKey = false;
- var $status = array();
-
- const INIT = 1;
- const CHUNK = 2;
- const DONE = 3;
- public function initializeFromRequest( &$request ){
- //should merge initializeFromParams (but just needs to be working atm)
- }
- public function initializeFromParams( $param, &$request ) {
- $this->initFromSessionKey( $param['chunksessionkey'], $request );
- // set the chunk mode:
- if( !$this->mSessionKey && !$param['done'] ){
- // session key not set init the chunk upload system:
- $this->chunk_mode = UploadFromChunks::INIT;
- $this->mDesiredDestName = $param['filename'];
- } else if( $this->mSessionKey && !$param['done'] ){
- // this is a chunk piece
- $this->chunk_mode = UploadFromChunks::CHUNK;
- } else if( $this->mSessionKey && $param['done'] ){
- // this is the last chunk
- $this->chunk_mode = UploadFromChunks::DONE;
- }
- if( $this->chunk_mode == UploadFromChunks::CHUNK ||
- $this->chunk_mode == UploadFromChunks::DONE ){
- // set chunk related vars:
- $this->mTempPath = $request->getFileTempName( 'chunk' );
- $this->mFileSize = $request->getFileSize( 'chunk' );
- }
-
- return $this->status;
- }
- static function isValidRequest( $request ) {
- $sessionData = $request->getSessionData( 'wsUploadData' );
- if( !self::isValidSessionKey(
- $request->getInt( 'wpSessionKey' ),
- $sessionData ) )
- return false;
- // check for the file:
- return (bool)$request->getFileTempName( 'file' );
- }
- /* check warnings depending on chunk_mode */
- function checkWarnings(){
- if( $this->chunk_mode == UploadFromChunks::DONE ){
- return parent::checkWarnings();
- }else{
- return array();
- }
- }
- function isEmptyFile(){
- // does not apply to chunk init
- if( $this->chunk_mode == UploadFromChunks::INIT ){
- return false;
- } else {
- return parent::isEmptyFile();
- }
- }
- /**
- * Verify whether the upload is sane.
- * Returns self::OK or else an array with error information
- */
- function verifyUpload() {
- // verify once DONE uploading chunks
- if( $this->chunk_mode == UploadFromChunks::DONE ){
- return parent::verifyUpload();
- }else{
- return array( 'status' => self::OK );
- }
- }
-
- // only run verifyFile on completed uploaded chunks
- function verifyFile(){
- if( $this->chunk_mode == UploadFromChunks::DONE ){
- // first append last chunk (so we can do a real verifyFile check... (check file type etc)
- $status = $this->doChunkAppend();
- if( $status->isOK() ){
- $this->mTempPath = $this->getRealPath( $this->mTempAppendPath );
- // verify the completed merged chunks as if it was the file that got uploaded:
- return parent::verifyFile( $this->mTempPath );
- } else {
- // conflict of status returns (have to return the error ary) ... why we don't consistantly use a status object is beyond me..
- return $status->getErrorsArray();
- }
- } else {
- return true;
- }
- }
-
- // pretty ugly inter-mixing of mParam and local vars
- function setupChunkSession( $summary, $comment, $watch ) {
- $this->mSessionKey = $this->getSessionKey();
- $_SESSION['wsUploadData'][$this->mSessionKey] = array(
- 'mComment' => $comment,
- 'mSummary' => $summary,
- 'mWatch' => $watch,
- 'mIgnorewarnings' => true, //ignore warning on chunk uploads (for now)
- 'mFilteredName' => $this->mFilteredName,
- 'mTempAppendPath' => null, // the repo append path (not temporary local node mTempPath)
- 'mDesiredDestName' => $this->mDesiredDestName,
- 'version' => self::SESSION_VERSION,
- );
- return $this->mSessionKey;
- }
-
- function initFromSessionKey( $sessionKey, $request ){
- if( !$sessionKey || empty( $sessionKey ) ){
- return false;
- }
- $this->mSessionKey = $sessionKey;
- // load the sessionData array:
- $sessionData = $request->getSessionData( 'wsUploadData' );
-
- if( isset( $sessionData[$this->mSessionKey]['version'] ) &&
- $sessionData[$this->mSessionKey]['version'] == self::SESSION_VERSION ) {
- // update the local object from the session
- $this->mComment = $sessionData[$this->mSessionKey]['mComment'];
- $this->mSummary = $sessionData[$this->mSessionKey]['mSummary'];
- $this->mWatch = $sessionData[$this->mSessionKey]['mWatch'];
- $this->mIgnorewarnings = $sessionData[$this->mSessionKey]['mIgnorewarnings'];
- $this->mFilteredName = $sessionData[$this->mSessionKey]['mFilteredName'];
- $this->mTempAppendPath = $sessionData[$this->mSessionKey]['mTempAppendPath'];
- $this->mDesiredDestName = $sessionData[$this->mSessionKey]['mDesiredDestName'];
- } else {
- $this->status = array( 'error' => 'missing session data' );
- return false;
- }
- }
-
- // Lets us return an api result (as flow for chunk uploads is kind of different than others.
- function performUpload( $summary = '', $comment = '', $watch = '', $user ){
- global $wgUser;
-
- if( $this->chunk_mode == UploadFromChunks::INIT ){
- // firefogg expects a specific result per:
- // http://www.firefogg.org/dev/chunk_post.html
-
- // it's okay to return the token here because
- // a) the user must have requested the token to get here and
- // b) should only happen over POST
- // c) (we need the token to validate chunks are coming from a non-xss request)
- $token = urlencode( $wgUser->editToken() );
- ob_clean();
- echo FormatJson::encode( array(
- 'uploadUrl' => wfExpandUrl( wfScript( 'api' ) ) . "?action=upload&".
- "token={$token}&format=json&enablechunks=true&chunksessionkey=".
- $this->setupChunkSession( $summary, $comment, $watch ) ) );
- exit( 0 );
- } else if( $this->chunk_mode == UploadFromChunks::CHUNK ){
- $status = $this->doChunkAppend();
- if( $status->isOK() ){
- // return success:
- // firefogg expects a specific result per:
- // http://www.firefogg.org/dev/chunk_post.html
- ob_clean();
- echo FormatJson::encode( array(
- 'result' => 1,
- 'filesize' => filesize( $this->getRealPath( $this->mTempAppendPath ) )
- )
- );
- exit( 0 );
- /*return array(
- 'result' => 1
- );*/
- } else {
- return $status;
- }
- } else if( $this->chunk_mode == UploadFromChunks::DONE ){
- // update the values from the local (session init) if not passed again)
- if( $summary == '' )
- $summary = $this->mSummary;
-
- if( $comment == '' )
- $comment = $this->mComment;
-
- if( $watch == '' )
- $watch = $this->mWatch;
-
- $status = parent::performUpload( $summary, $comment, $watch, $user );
-
- if( !$status->isGood() ) {
- return $status;
- }
- $file = $this->getLocalFile();
- // firefogg expects a specific result per:
- // http://www.firefogg.org/dev/chunk_post.html
- ob_clean();
- echo FormatJson::encode( array(
- 'result' => 1,
- 'done' => 1,
- 'resultUrl' => $file->getDescriptionUrl()
- )
- );
- exit( 0 );
- }
- }
-
- // append the given chunk to the temporary uploaded file. (if no temporary uploaded file exists created it.
- function doChunkAppend(){
- global $wgMaxUploadSize;
- // if we don't have a mTempAppendPath to generate a file from the chunk packaged var:
- if( !$this->mTempAppendPath ){
- // get temp name:
- // make a chunk store path. (append tmp file to chunk)
- $status = $this->saveTempUploadedFile( $this->mDestName, $this->mTempPath );
-
- if( $status->isOK() ) {
- $this->mTempAppendPath = $status->value;
- $_SESSION['wsUploadData'][$this->mSessionKey]['mTempAppendPath'] = $this->mTempAppendPath;
- }
- return $status;
- } else {
- if( is_file( $this->getRealPath( $this->mTempAppendPath ) ) ){
- $status = $this->appendToUploadFile( $this->mTempAppendPath, $this->mTempPath );
- } else {
- $status = Status::newFatal( 'filenotfound', $this->mTempAppendPath );
- }
- //check to make sure we have not expanded beyond $wgMaxUploadSize
- if( filesize( $this->getRealPath( $this->mTempAppendPath ) ) > $wgMaxUploadSize )
- $status = Status::newFatal( 'largefileserver' );
-
- return $status;
- }
- }
-
-}

Modified: trunk/phase3/includes/upload/UploadFromUrl.php
===================================================================
--- trunk/phase3/includes/upload/UploadFromUrl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/includes/upload/UploadFromUrl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -11,9 +11,6 @@
class UploadFromUrl extends UploadBase {
protected $mTempDownloadPath;

- // by default do a SYNC_DOWNLOAD
- protected $dl_mode = Http::SYNC_DOWNLOAD;
-
/**
* Checks if the user is allowed to use the upload-by-URL feature. If the
* user is allowed, pass on permissions checking to the parent.
@@ -33,32 +30,19 @@
}

/**
- * Entry point for API upload:: ASYNC_DOWNLOAD (if possible)
+ * Entry point for API upload
*/
- public function initialize( $name, $url, $asyncdownload, $na = false ) {
- global $wgTmpDirectory, $wgPhpCli;
+ public function initialize( $name, $url, $na = false ) {
+ global $wgTmpDirectory;

- // check for $asyncdownload request:
- if( $asyncdownload ){
- if( $wgPhpCli && wfShellExecEnabled() ){
- $this->dl_mode = Http::ASYNC_DOWNLOAD;
- } else {
- $this->dl_mode = Http::SYNC_DOWNLOAD;
- }
- }
-
$localFile = tempnam( $wgTmpDirectory, 'WEBUPLOAD' );
parent::initialize( $name, $localFile, 0, true );

$this->mUrl = trim( $url );
}

- public function isAsync(){
- return $this->dl_mode == Http::ASYNC_DOWNLOAD;
- }
-
/**
- * Entry point for SpecialUpload no ASYNC_DOWNLOAD possible
+ * Entry point for SpecialUpload
* @param $request Object: WebRequest object
*/
public function initializeFromRequest( &$request ) {
@@ -73,33 +57,81 @@
}

/**
+ * @param $request Object: WebRequest object
+ */
+ public static function isValidRequest( $request ){
+ if( !$request->getVal( 'wpUploadFileURL' ) )
+ return false;
+ // check that is a valid url:
+ return self::isValidUrl( $request->getVal( 'wpUploadFileURL' ) );
+ }
+
+ public static function isValidUrl( $url ) {
+ // Only allow HTTP or FTP for now
+ return (bool)preg_match( '!^(http://|ftp://)!', $url );
+ }
+
+ /**
* Do the real fetching stuff
*/
- public function fetchFile() {
- // Entry point for SpecialUpload
- if( Http::isValidURI( $this->mUrl ) === false ) {
+ function fetchFile() {
+ if( !self::isValidUrl( $this->mUrl ) ) {
return Status::newFatal( 'upload-proto-error' );
}
+ $res = $this->curlCopy();
+ if( $res !== true ) {
+ return Status::newFatal( $res );
+ }
+ return Status::newGood();
+ }
+
+ /**
+ * Safe copy from URL
+ * Returns true if there was an error, false otherwise
+ */
+ private function curlCopy() {
+ global $wgOut;

- // Now do the actual download to the target file:
- $status = Http::doDownload( $this->mUrl, $this->mTempPath, $this->dl_mode );
+ # Open temporary file
+ $this->mCurlDestHandle = @fopen( $this->mTempPath, "wb" );
+ if( $this->mCurlDestHandle === false ) {
+ # Could not open temporary file to write in
+ return 'upload-file-error';
+ }

- // Update the local filesize var:
- $this->mFileSize = filesize( $this->mTempPath );
+ $ch = curl_init();
+ curl_setopt( $ch, CURLOPT_HTTP_VERSION, 1.0); # Probably not needed, but apparently can work around some bug
+ curl_setopt( $ch, CURLOPT_TIMEOUT, 10); # 10 seconds timeout
+ curl_setopt( $ch, CURLOPT_LOW_SPEED_LIMIT, 512); # 0.5KB per second minimum transfer speed
+ curl_setopt( $ch, CURLOPT_URL, $this->mUrl);
+ curl_setopt( $ch, CURLOPT_WRITEFUNCTION, array( $this, 'uploadCurlCallback' ) );
+ curl_exec( $ch );
+ $error = curl_errno( $ch );
+ curl_close( $ch );

- return $status;
+ fclose( $this->mCurlDestHandle );
+ unset( $this->mCurlDestHandle );
+
+ if( $error )
+ return "upload-curl-error$errornum";
+
+ return true;
}
-
+
/**
- * @param $request Object: WebRequest object
+ * Callback function for CURL-based web transfer
+ * Write data to file unless we've passed the length limit;
+ * if so, abort immediately.
+ * @access private
*/
- public static function isValidRequest( $request ){
- if( !$request->getVal( 'wpUploadFileURL' ) )
- return false;
- // check that is a valid url:
- return Http::isValidURI( $request->getVal( 'wpUploadFileURL' ) );
+ function uploadCurlCallback( $ch, $data ) {
+ global $wgMaxUploadSize;
+ $length = strlen( $data );
+ $this->mFileSize += $length;
+ if( $this->mFileSize > $wgMaxUploadSize ) {
+ return 0;
+ }
+ fwrite( $this->mCurlDestHandle, $data );
+ return $length;
}
-
-
-
-}
\ No newline at end of file
+}

Modified: trunk/phase3/languages/messages/MessagesAf.php
===================================================================
--- trunk/phase3/languages/messages/MessagesAf.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesAf.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -553,7 +553,6 @@
'readonly_lag' => 'Die databasis is outomaties gesluit terwyl die slaafdatabasisse sinchroniseer met die meester',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
-'fileappenderror' => 'Kon nie "$1" agteraan "$2" voeg nie.',
'filecopyerror' => 'Kon nie lêer van "$1" na "$2" kopieer nie.',
'filerenameerror' => 'Kon nie lêernaam van "$1" na "$2" wysig nie.',
'filedeleteerror' => 'Kon nie lêer "$1" skrap nie.',

Modified: trunk/phase3/languages/messages/MessagesAr.php
===================================================================
--- trunk/phase3/languages/messages/MessagesAr.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesAr.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -775,7 +775,6 @@
'readonly_lag' => 'تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي',
'internalerror' => 'خطأ داخلي',
'internalerror_info' => 'خطأ داخلي: $1',
-'fileappenderror' => 'تعذّرت إضافة "$1" إلى "$2".',
'filecopyerror' => 'لم يمكن نسخ الملف "$1" إلى "$2".',
'filerenameerror' => 'لم يمكن إعادة تسمية الملف "$1" إلى "$2".',
'filedeleteerror' => 'لم يمكن حذف الملف "$1".',

Modified: trunk/phase3/languages/messages/MessagesArz.php
===================================================================
--- trunk/phase3/languages/messages/MessagesArz.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesArz.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -643,7 +643,6 @@
'readonly_lag' => 'قاعدة البيانات اتقفلت اوتوماتيكى علشان تقدر السيرفرات الفرعية تلحق السيرفر الرئيسي',
'internalerror' => 'غلط داخلي',
'internalerror_info' => 'غلط داخلي: $1',
-'fileappenderror' => 'ماقدرناش نضيف "$1" على "$2".',
'filecopyerror' => 'ما قدرنا ش ننسخ الملف "$1" لـ "$2".',
'filerenameerror' => 'ما قدر نا ش نغير اسم الملف "$1" لـ "$2".',
'filedeleteerror' => 'ما قدرنا ش نمسح الملف "$1".',

Modified: trunk/phase3/languages/messages/MessagesBe_tarask.php
===================================================================
--- trunk/phase3/languages/messages/MessagesBe_tarask.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesBe_tarask.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -602,7 +602,6 @@
'readonly_lag' => 'База зьвестак была аўтаматычна заблякаваная да выкананьня сынхранізацыі паміж першасным і другаснымі базамі зьвестак',
'internalerror' => 'Унутраная памылка',
'internalerror_info' => 'Унутраная памылка: $1',
-'fileappenderror' => 'Не атрымалася далучыць «$1» да «$2».',
'filecopyerror' => 'Немагчыма cкапіяваць файл «$1» у «$2».',
'filerenameerror' => 'Немагчыма перайменаваць файл «$1» у «$2».',
'filedeleteerror' => 'Немагчыма выдаліць файл «$1».',

Modified: trunk/phase3/languages/messages/MessagesBpy.php
===================================================================
--- trunk/phase3/languages/messages/MessagesBpy.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesBpy.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -404,7 +404,6 @@
'readonly_lag' => 'ডাটাবেজহান তার তুন তাই বন্ধ ইসে, তার তলর ডাটাবেজ অতাই মানক ডাটাবেজহানর লগ দরে পারবাতা বুলিয়া',
'internalerror' => 'বিতরর লাল',
'internalerror_info' => 'ভিতরর লাল: $1',
-'fileappenderror' => '"$1" লগে "$2" মিল করানি নাইল।',
'filecopyerror' => '"$1" ত্ত "$2" ফাইল কপি করানি নুৱারলাং',
'filerenameerror' => '"$1" ফাইলগর নাঙহান সিলকরিয়া "$2" থনা নাইল।',
'filedeleteerror' => '"$1" ফাইলগ পুসানি সম্ভব নাইল।',

Modified: trunk/phase3/languages/messages/MessagesBr.php
===================================================================
--- trunk/phase3/languages/messages/MessagesBr.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesBr.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -456,7 +456,6 @@
'readonly_lag' => "Stanket eo bet ar bank roadennoù ent emgefre p'emañ an eilservijerioù oc'h adpakañ o dale e-keñver ar pennservijer",
'internalerror' => 'Fazi diabarzh',
'internalerror_info' => 'Fazi diabarzh : $1',
-'fileappenderror' => 'Dibosupl ouzhpennañ « $1 » da « $2 ».',
'filecopyerror' => 'Dibosupl eilañ « $1 » war-du « $2 ».',
'filerenameerror' => 'Dibosupl da adenvel « $1 » e « $2 ».',
'filedeleteerror' => 'Dibosupl da ziverkañ « $1 ».',

Modified: trunk/phase3/languages/messages/MessagesBs.php
===================================================================
--- trunk/phase3/languages/messages/MessagesBs.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesBs.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -623,7 +623,6 @@
'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
'internalerror' => 'Unutrašnja greška',
'internalerror_info' => 'Interna greška: $1',
-'fileappenderror' => 'Ne može se primijeniti "$1" na "$2".',
'filecopyerror' => 'Ne može se kopirati "$1" na "$2".',
'filerenameerror' => 'Ne može se promjeniti ime datoteke "$1" u "$2".',
'filedeleteerror' => 'Ne može se izbrisati datoteka "$1".',

Modified: trunk/phase3/languages/messages/MessagesCa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -537,7 +537,6 @@
'readonly_lag' => "La base de dades s'ha bloquejat automàticament mentre els servidors esclaus se sincronitzen amb el mestre",
'internalerror' => 'Error intern',
'internalerror_info' => 'Error intern: $1',
-'fileappenderror' => 'No he pogut afegir "$1" a "$2".',
'filecopyerror' => "No s'ha pogut copiar el fitxer «$1» com «$2».",
'filerenameerror' => "No s'ha pogut reanomenar el fitxer «$1» com «$2».",
'filedeleteerror' => "No s'ha pogut eliminar el fitxer «$1».",

Modified: trunk/phase3/languages/messages/MessagesCeb.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCeb.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCeb.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -415,7 +415,6 @@
'readonly_lag' => 'Ang database awtomatikong na-lock samtang ang mga slave database server mo-catch up sa master',
'internalerror' => 'Internal nga sayop',
'internalerror_info' => 'Internal nga sayop: $1',
-'fileappenderror' => 'Dili ma-append ang "$1" ngadto sa "$2".',
'filecopyerror' => 'Dili makopya ang payl nga "$1" ngadto sa "$2".',
'filerenameerror' => 'Dili mailisag ngalan ang payl "$1" ngadto sa "$2".',
'filedeleteerror' => 'Dili mapapas ang payl "$1".',

Modified: trunk/phase3/languages/messages/MessagesCkb_arab.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCkb_arab.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCkb_arab.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -462,7 +462,6 @@
'readonly_lag' => 'بنكه‌دراوه‌كه‌ به‌شێوه‌ی خۆكار به‌ندكراوه‌، له‌كاتێكدا بنكه‌دراوه‌ی ڕاژه‌كاره‌كه‌ ڕۆڵی له‌خۆگرتن ده‌گێڕێت',
'internalerror' => 'هه‌ڵه‌یه‌كی ناوخۆیی ڕویدا',
'internalerror_info' => 'هه‌ڵه‌ی ناوخۆیی: $1',
-'fileappenderror' => 'نه‌تواندرا "$1" بخرێته‌سه‌ر "$2".',
'filecopyerror' => 'په‌ڕگه‌ی „$1“ ڕوونوس نابێت بۆ „$2“ .',
'filerenameerror' => 'ناوی په‌ڕگه‌ی "$1" نه‌گۆڕدرا بۆ "$2".',
'filedeleteerror' => 'بسڕدرێته‌وه‌"$1" نه‌توانرا په‌ڕگه‌ی',

Modified: trunk/phase3/languages/messages/MessagesCrh_cyrl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCrh_cyrl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCrh_cyrl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -456,7 +456,6 @@
'readonly_lag' => 'Малюмат базасынынъ экилемджи сервери бирлемджи серверинен синхронизирленгендже малюмат базасы денъиштирильмемеси ичюн автоматик оларакъ блок этильди.',
'internalerror' => 'Ички хата',
'internalerror_info' => 'Ички хата: $1',
-'fileappenderror' => '«$1» файлы «$2» файлына къошулып оламай.',
'filecopyerror' => '"$1" файлы "$2" файлына копияланып оламай.',
'filerenameerror' => 'файлнынъ "$1" деген ады "$2" оларакъ денъиштирилип оламай.',
'filedeleteerror' => '"$1" файлы ёкъ этилип оламай.',

Modified: trunk/phase3/languages/messages/MessagesCrh_latn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCrh_latn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCrh_latn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -453,7 +453,6 @@
'readonly_lag' => 'Malümat bazasınıñ ekilemci serveri birlemci serverinen sinhronizirlengence malümat bazası deñiştirilmemesi içün avtomatik olaraq blok etildi.',
'internalerror' => 'İçki hata',
'internalerror_info' => 'İçki hata: $1',
-'fileappenderror' => '"$1" faylı "$2" faylına qoşulıp olamay.',
'filecopyerror' => '"$1" faylı "$2" faylına kopiyalanıp olamay.',
'filerenameerror' => 'faylnıñ "$1" degen adı "$2" olaraq deñiştirilip olamay.',
'filedeleteerror' => '"$1" faylı yoq etilip olamay.',

Modified: trunk/phase3/languages/messages/MessagesCs.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCs.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCs.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -687,7 +687,6 @@
'readonly_lag' => 'Databáze byla automaticky dočasně uzamčena kvůli zpoždění ostatních databázových serverů oproti hlavnímu',
'internalerror' => 'Vnitřní chyba',
'internalerror_info' => 'Vnitřní chyba: $1',
-'fileappenderror' => 'Nepodařilo se připojit „$1“ k „$2“.',
'filecopyerror' => 'Nebylo možné zkopírovat soubor „$1“ na „$2“.',
'filerenameerror' => 'Nebylo možné přejmenovat soubor „$1“ na „$2“.',
'filedeleteerror' => 'Nebylo možné smazat soubor „$1“.',

Modified: trunk/phase3/languages/messages/MessagesCy.php
===================================================================
--- trunk/phase3/languages/messages/MessagesCy.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesCy.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -467,7 +467,6 @@
'readonly_lag' => "Mae'r databas wedi'i gloi'n awtomatig tra bod y gwas-weinyddion yn asio gyda'r prif weinydd",
'internalerror' => 'Gwall mewnol',
'internalerror_info' => 'Gwall mewnol: $1',
-'fileappenderror' => 'Ni ellid atodi "$1" wrth "$2".',
'filecopyerror' => 'Wedi methu copïo\'r ffeil "$1" i "$2".',
'filerenameerror' => "Wedi methu ail-enwi'r ffeil '$1' yn '$2'.",
'filedeleteerror' => 'Wedi methu dileu\'r ffeil "$1".',

Modified: trunk/phase3/languages/messages/MessagesDa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesDa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesDa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -511,7 +511,6 @@
'readonly_lag' => 'Databasen er automatisk blevet låst mens slave database serverne synkronisere med master databasen',
'internalerror' => 'Intern fejl',
'internalerror_info' => 'Internal fejl: $1',
-'fileappenderror' => 'Kunne ikke tilføje "$1" til "$2".',
'filecopyerror' => 'Kunne ikke kopiere filen "$1" til "$2".',
'filerenameerror' => 'Kunne ikke omdøbe filen "$1" til "$2".',
'filedeleteerror' => 'Kunne ikke slette filen "$1".',

Modified: trunk/phase3/languages/messages/MessagesDe.php
===================================================================
--- trunk/phase3/languages/messages/MessagesDe.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesDe.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -691,7 +691,6 @@
'readonly_lag' => 'Die Datenbank wurde automatisch für Schreibzugriffe gesperrt, damit sich die verteilten Datenbankserver (slaves) mit dem Hauptdatenbankserver (master) abgleichen können.',
'internalerror' => 'Interner Fehler',
'internalerror_info' => 'Interner Fehler: $1',
-'fileappenderror' => 'Konnte „$1“ nicht an „$2“ anhängen.',
'filecopyerror' => 'Die Datei „$1“ konnte nicht nach „$2“ kopiert werden.',
'filerenameerror' => 'Die Datei „$1“ konnte nicht nach „$2“ umbenannt werden.',
'filedeleteerror' => 'Die Datei „$1“ konnte nicht gelöscht werden.',

Modified: trunk/phase3/languages/messages/MessagesDiq.php
===================================================================
--- trunk/phase3/languages/messages/MessagesDiq.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesDiq.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -374,7 +374,6 @@
'readonly_lag' => 'Pêşkeşwanê caygeri u pêşkeşwane esıli wextaki xebityeyi database kılit bı.',
'internalerror' => 'Xeta zerreki',
'internalerror_info' => 'Xeta zerreki: $1',
-'fileappenderror' => 'Dosyayê "$1" têyor nêbeno dosyayê "$2" ri.',
'filecopyerror' => '"$1" qaydê na "$2" dosya nêbeno.',
'filerenameerror' => 'nameyê "$1" dosya nêvuriya no name "$2" ri.',
'filedeleteerror' => 'Na "$1" dosya hewn a nêşi .',

Modified: trunk/phase3/languages/messages/MessagesDsb.php
===================================================================
--- trunk/phase3/languages/messages/MessagesDsb.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesDsb.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -510,7 +510,6 @@
'readonly_lag' => 'Datowa banka jo awtomatiski se zacyniła, aby wótwisne serwery se mógli z głownym serwerom wurownowaś.',
'internalerror' => 'Interna zmólka',
'internalerror_info' => 'Interna zmólka: $1',
-'fileappenderror' => 'Njejo móžno było "$1" k "$2" pśipowjesyś.',
'filecopyerror' => 'Njejo było móžno dataju „$1” k „$2” kopěrowaś.',
'filerenameerror' => 'Njejo było móžno dataju „$1” do „$2” pśemjenjowaś.',
'filedeleteerror' => 'Njejo było móžno dataju „$1” wulašowaś.',

Modified: trunk/phase3/languages/messages/MessagesEl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -688,7 +688,6 @@
'readonly_lag' => 'Η βάση δεδομένων έχει κλειδωθεί αυτόματα για να μπορέσουν οι επιμέρους servers των αντιγράφων της βάσης δεδομένων (slaves) να καλύψουν τη διαφορά με τον κεντρικό server του πρωτοτύπου της βάσης (master).',
'internalerror' => 'Εσωτερικό σφάλμα',
'internalerror_info' => 'Εσωτερικό σφάλμα: $1',
-'fileappenderror' => 'Δεν ήταν δυνατή η προσάρτηση του αρχείου "$1" στο "$2".',
'filecopyerror' => 'Δεν ήταν δυνατή η αντιγραφή του αρχείου "$1" στο "$2".',
'filerenameerror' => 'Δεν είναι δυνατή η μετονομασία του αρχείου "$1" σε "$2".',
'filedeleteerror' => 'Δεν ήταν δυνατή η διαγραφή του αρχείου "$1".',

Modified: trunk/phase3/languages/messages/MessagesEn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -981,7 +981,6 @@
'readonly_lag' => 'The database has been automatically locked while the slave database servers catch up to the master',
'internalerror' => 'Internal error',
'internalerror_info' => 'Internal error: $1',
-'fileappenderror' => 'Could not append "$1" to "$2".',
'filecopyerror' => 'Could not copy file "$1" to "$2".',
'filerenameerror' => 'Could not rename file "$1" to "$2".',
'filedeleteerror' => 'Could not delete file "$1".',

Modified: trunk/phase3/languages/messages/MessagesEo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -531,7 +531,6 @@
'readonly_lag' => 'La datumbazo estis aŭtomate ŝlosita dum la subdatumbazo atingas la ĉefan datumbazon.',
'internalerror' => 'Interna eraro',
'internalerror_info' => 'Interna eraro: $1',
-'fileappenderror' => 'Ne eblis postaldoni "$1" al "$2".',
'filecopyerror' => 'Neeblis kopii dosieron "$1" al "$2".',
'filerenameerror' => 'Neeblis alinomi dosieron "$1" al "$2".',
'filedeleteerror' => 'Neeblis forigi dosieron "$1".',

Modified: trunk/phase3/languages/messages/MessagesEs.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEs.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEs.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -583,7 +583,6 @@
'readonly_lag' => 'La base de datos se ha bloqueado temporalmente mientras los servidores se sincronizan.',
'internalerror' => 'Error interno',
'internalerror_info' => 'Error interno: $1',
-'fileappenderror' => 'No se ha podido añadir "$1" a "$2".',
'filecopyerror' => 'No se pudo copiar el archivo "$1" a "$2".',
'filerenameerror' => 'No se pudo renombrar el archivo "$1" a "$2".',
'filedeleteerror' => 'No se pudo borrar el archivo "$1".',

Modified: trunk/phase3/languages/messages/MessagesEt.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEt.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEt.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -622,7 +622,6 @@
'missingarticle-diff' => '(redaktsioonid: $1, $2)',
'internalerror' => 'Sisemine viga',
'internalerror_info' => 'Sisemine viga: $1',
-'fileappenderror' => 'Faili "$1" ei saanud lisada failile "$2".',
'filecopyerror' => 'Ei saanud faili "$1" kopeerida nimega "$2".',
'filerenameerror' => 'Ei saanud faili "$1" failiks "$2" ümber nimetada.',
'filedeleteerror' => 'Faili nimega "$1" ei ole võimalik kustutada.',

Modified: trunk/phase3/languages/messages/MessagesEu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesEu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -477,7 +477,6 @@
'readonly_lag' => 'Datu-basea automatikoki blokeatu da menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
'internalerror' => 'Barne errorea',
'internalerror_info' => 'Barne errorea: $1',
-'fileappenderror' => 'Ezin da gehitu "$1" "$2"(e)ra.',
'filecopyerror' => 'Ezin izan da "$1" fitxategia "$2"(e)ra kopiatu.',
'filerenameerror' => 'Ezin izan zaio "$1" fitxategiari "$2" izen berria eman.',
'filedeleteerror' => 'Ezin izan da "$1" fitxategia ezabatu.',

Modified: trunk/phase3/languages/messages/MessagesFa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesFa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesFa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -757,7 +757,6 @@
'readonly_lag' => 'پایگاه داده به طور خودکار قفل شده‌است تا نسخه‌های پشتیبان با نسخهٔ اصلی هماهنگ شوند.',
'internalerror' => 'خطای داخلی',
'internalerror_info' => 'خطای داخلی: $1',
-'fileappenderror' => 'نمی‌توان «$1» را به «$2» الحاق کرد.',
'filecopyerror' => 'نتوانستم از پروندهٔ «$1» روی «$2» نسخه‌برداری کنم.',
'filerenameerror' => 'نتوانستم پروندهٔ «$1» را به «$2» تغییر نام دهم.',
'filedeleteerror' => 'نتوانستم پروندهٔ «$1» را حذف کنم',

Modified: trunk/phase3/languages/messages/MessagesFi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesFi.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesFi.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -646,7 +646,6 @@
'readonly_lag' => 'Tietokanta on automaattisesti lukittu, jotta kaikki tietokantapalvelimet saisivat kaikki tuoreet muutokset',
'internalerror' => 'Sisäinen virhe',
'internalerror_info' => 'Sisäinen virhe: $1',
-'fileappenderror' => 'Tiedostoa ”$1” ei voitu lisätä tiedostoon ”$2”.',
'filecopyerror' => 'Tiedostoa <b>$1</b> ei voitu kopioida tiedostoksi <b>$2</b>.',
'filerenameerror' => 'Tiedostoa <b>$1</b> ei voitu nimetä uudelleen nimellä <b>$2</b>.',
'filedeleteerror' => 'Tiedostoa <b>$1</b> ei voitu poistaa.',

Modified: trunk/phase3/languages/messages/MessagesFr.php
===================================================================
--- trunk/phase3/languages/messages/MessagesFr.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesFr.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -688,7 +688,6 @@
'readonly_lag' => 'La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal.',
'internalerror' => 'Erreur interne',
'internalerror_info' => 'Erreur interne : $1',
-'fileappenderror' => 'Impossible d’ajouter « $1 » à « $2 ».',
'filecopyerror' => 'Impossible de copier le fichier « $1 » vers « $2 ».',
'filerenameerror' => 'Impossible de renommer le fichier « $1 » en « $2 ».',
'filedeleteerror' => 'Impossible de supprimer le fichier « $1 ».',

Modified: trunk/phase3/languages/messages/MessagesFrp.php
===================================================================
--- trunk/phase3/languages/messages/MessagesFrp.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesFrp.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -659,7 +659,6 @@
'readonly_lag' => 'La bâsa de balyês at étâ vèrrolyê ôtomaticament pendent que los sèrvors secondèros ratrapont lor retârd sur lo sèrvor principâl.',
'internalerror' => 'Èrror de dedens',
'internalerror_info' => 'Èrror de dedens : $1',
-'fileappenderror' => 'Empossiblo d’apondre « $1 » a « $2 ».',
'filecopyerror' => 'Empossiblo de copiyér lo fichiér « $1 » vers « $2 ».',
'filerenameerror' => 'Empossiblo de renomar lo fichiér « $1 » en « $2 ».',
'filedeleteerror' => 'Empossiblo de suprimar lo fichiér « $1 ».',

Modified: trunk/phase3/languages/messages/MessagesFy.php
===================================================================
--- trunk/phase3/languages/messages/MessagesFy.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesFy.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -490,7 +490,6 @@
'readonly_lag' => 'De database is automatysk beskoattele wylst de ûndergeskikte databaseservers syngronisearje mei de haadserver.',
'internalerror' => 'Ynterne fout',
'internalerror_info' => 'Ynterne fout: $1',
-'fileappenderror' => 'It tafoegjen fan "$1" oan "$2" is mislearre.',
'filecopyerror' => 'Koe triem "$1" net kopiearje as "$2".',
'filerenameerror' => 'Koe triem "$1" net werneame as "$2".',
'filedeleteerror' => 'Koe triem "$1" net wiskje.',

Modified: trunk/phase3/languages/messages/MessagesGl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesGl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesGl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -547,7 +547,6 @@
'readonly_lag' => 'A base de datos bloqueouse automaticamente mentres os servidores escravos da base de datos se actualizan desde o máster',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
-'fileappenderror' => 'Non se puido engadir "$1" a "$2".',
'filecopyerror' => 'Non se deu copiado o ficheiro "$1" a "$2".',
'filerenameerror' => 'Non se pode cambiar o nome do ficheiro "$1" a "$2".',
'filedeleteerror' => 'Non se deu borrado o ficheiro "$1".',

Modified: trunk/phase3/languages/messages/MessagesGrc.php
===================================================================
--- trunk/phase3/languages/messages/MessagesGrc.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesGrc.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -388,7 +388,6 @@
'readonly_lag' => 'Ἡ βάσις δεδομένων πέφρακται αὐτομάτως ἐνόσω αἱ ἐπὶ μέρους ἐξυπηρετητικαὶ μηχαναὶ τῶν ἀντιγράφων τῆς βάσεως δεδομένων καλύψωσιν τὴν διαφορὰν μεταξὺ σφῶν καὶ τῆς κεντρικῆς ἐξυπηρετητικῆς μηχανῆς τοῦ πρωτοτύπου τῆς βάσεως',
'internalerror' => 'Ἐσώτερον σφάλμα',
'internalerror_info' => 'Ἐσώτερον σφάλμα: $1',
-'fileappenderror' => 'Οὐκ ἦτο δυνατὴ ἡ προσάρτησις τοῦ "$1" εἰς τὸ "$2".',
'filecopyerror' => 'Οὐκ ἦν δυνατὴ ἡ ἀντιγραφὴ τοῦ ἀρχείου "$1" εἰς τὸ "$2".',
'filerenameerror' => 'Οὐκ ἦν δυνατὴ ἡ μετωνομασία τοῦ ἀρχείου "$1" ὡς "$2".',
'filedeleteerror' => 'Οὐκ ἦν δυνατὴ ἡ διαγραφὴ τοῦ ἀρχείου "$1".',

Modified: trunk/phase3/languages/messages/MessagesGsw.php
===================================================================
--- trunk/phase3/languages/messages/MessagesGsw.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesGsw.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -466,7 +466,6 @@
'readonly_lag' => 'D Datebank isch automatisch gperrt wore, wil di verteilte Datebankserver (Sklave) mien mit em Hauptdatebankserver (Meischter) abgliche wäre.',
'internalerror' => 'Interner Fähler',
'internalerror_info' => 'Interne Fähler: $1',
-'fileappenderror' => 'Het „$1“ nit an „$2“ chenne anhänke.',
'filecopyerror' => 'Datei "$1" het nit noch "$2" kopiert werre kinne.',
'filerenameerror' => 'D Datei "$1" het nit in "$2" umgnennt werre kinne.',
'filedeleteerror' => 'Datei "$1" het nit glöscht werre kinne.',

Modified: trunk/phase3/languages/messages/MessagesGu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesGu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesGu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -478,7 +478,6 @@
'missingarticle-diff' => '(ભેદ: $1, $2)',
'internalerror' => 'આંતરિક ત્રુટિ',
'internalerror_info' => 'આંતરિક ત્રુટિ: $1',
-'fileappenderror' => '"$1" ને "$2" શાથે જોડી શકાશે નહીં.',
'filecopyerror' => '"$1" થી "$2"માં નકલ નાકામયાબ.',
'filerenameerror' => '"$1" નું નામ બદલીને "$2" કરવામાં નાકામયાબ.',
'filedeleteerror' => '"$1" ફાઇલ હટાવી ન શકાઇ.',

Modified: trunk/phase3/languages/messages/MessagesHe.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHe.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHe.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -682,7 +682,6 @@
'readonly_lag' => 'בסיס הנתונים ננעל אוטומטית כדי לאפשר לבסיסי הנתונים המשניים להתעדכן מהבסיס הראשי.',
'internalerror' => 'שגיאה פנימית',
'internalerror_info' => 'שגיאה פנימית: $1',
-'fileappenderror' => 'הצמדת "$1" לסוף "$2" נכשלה.',
'filecopyerror' => 'העתקת "$1" ל־"$2" נכשלה.',
'filerenameerror' => 'שינוי השם של "$1" ל־"$2" נכשל.',
'filedeleteerror' => 'מחיקת "$1" נכשלה.',

Modified: trunk/phase3/languages/messages/MessagesHi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHi.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHi.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -413,7 +413,6 @@
'readonly_lag' => 'उपमुख्य डाटाबेस सर्व्हर्‌स मुख्य डाटाबेस सर्व्हर तक पहूंचने से पहले ही मुख्य डाटाबेस सर्व्हर लॉक हो गया है ।',
'internalerror' => 'आन्तरिक गलती',
'internalerror_info' => 'आन्तरिक गलती: $1',
-'fileappenderror' => '"$1" के आगे "$2" नहीं जुड़ पाया',
'filecopyerror' => '"$1" फ़ाईलकी "$2" यह कापी नहीं बना पायें ।',
'filerenameerror' => '"$1" फ़ाईल का नाम बदलकर "$2" नहीं कर पायें ।',
'filedeleteerror' => '"$1" फ़ाईलको हटा नहीं सकें ।',

Modified: trunk/phase3/languages/messages/MessagesHif_latn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHif_latn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHif_latn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -370,7 +370,6 @@
'readonly_lag' => 'Database apne se band hoi gais hai jab tak ki duusra database, khaas database ke sanghe kaam nai kare lage.',
'internalerror' => 'Bhitri galti',
'internalerror_info' => 'Bhitri galti: $1',
-'fileappenderror' => '"$1" ke "$2" se nai jorre sakaa hae.',
'filecopyerror' => 'File "$1" ke "$2" pe copy nai kare sakaa.',
'filerenameerror' => 'File "$1" ke naam badal ke "$2" nai kare sakaa.',
'filedeleteerror' => 'File "$1" ke nai mitae sakaa.',

Modified: trunk/phase3/languages/messages/MessagesHr.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHr.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHr.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -652,7 +652,6 @@
'readonly_lag' => 'Baza podataka je automatski zaključana dok se sekundarni bazni poslužitelji ne usklade s glavnim',
'internalerror' => 'Pogreška sustava',
'internalerror_info' => 'Interna pogreška: $1',
-'fileappenderror' => 'Nije bilo moguće dodati "$1" u "$2".',
'filecopyerror' => 'Ne mogu kopirati datoteku "$1" u "$2".',
'filerenameerror' => 'Ne mogu preimenovati datoteku "$1" u "$2".',
'filedeleteerror' => 'Ne mogu obrisati datoteku "$1".',

Modified: trunk/phase3/languages/messages/MessagesHsb.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHsb.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHsb.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -489,7 +489,6 @@
'readonly_lag' => 'Datowa banka bu awtomatisce zawrjena, mjeztym zo pospytuja wotwisne serwery datowych bankow hłowny serwer docpěć',
'internalerror' => 'Znutřkowny zmylk',
'internalerror_info' => 'Znutřkowny zmylk: $1',
-'fileappenderror' => 'Njeje móžno było "$1" k "$2" připowěsnyć.',
'filecopyerror' => 'Njebě móžno dataju „$1” k „$2” kopěrować.',
'filerenameerror' => 'Njebě móžno dataju „$1” na „$2” přemjenować.',
'filedeleteerror' => 'Njebě móžno dataju „$1” wušmórnyć.',

Modified: trunk/phase3/languages/messages/MessagesHu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -646,7 +646,6 @@
'readonly_lag' => 'Az adatbázis automatikusan zárolásra került, amíg a mellékkiszolgálók utolérik a főkiszolgálót.',
'internalerror' => 'Belső hiba',
'internalerror_info' => 'Belső hiba: $1',
-'fileappenderror' => 'Nem sikerült hozzáfűzni a(z) „$1” fájlt a(z) „$2” fájlhoz.',
'filecopyerror' => 'Nem tudtam átmásolni a(z) „$1” fájlt „$2” névre.',
'filerenameerror' => 'Nem tudtam átnevezni a(z) „$1” fájlt „$2” névre.',
'filedeleteerror' => 'Nem tudtam törölni a(z) „$1” fájlt.',

Modified: trunk/phase3/languages/messages/MessagesHy.php
===================================================================
--- trunk/phase3/languages/messages/MessagesHy.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesHy.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -627,7 +627,6 @@
'readonly_lag' => 'Տվյալների բազան ավտոմատիկ կողպվել է ժամանակավորապես՝ մինչև ՏԲ-ի երկրորդական սերվերը չհամաժամանակեցվի առաջնայինի հետ։',
'internalerror' => 'Ներքին սխալ',
'internalerror_info' => 'Ներքին սխալ. $1',
-'fileappenderror' => 'Չհաջողվեց ավելացնել «$1» «$2»-ին։',
'filecopyerror' => 'Չհաջողվեց պատճենել «$1» ֆայլը «$2» ֆայլի մեջ։',
'filerenameerror' => 'Չհաջողվեց «$1» ֆայլը վերանվանել «$2»։',
'filedeleteerror' => 'Չհաջողվեց ջնջել «$1» ֆայլը։',

Modified: trunk/phase3/languages/messages/MessagesIa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesIa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesIa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -489,7 +489,6 @@
'readonly_lag' => 'Le base de datos ha essite automaticamente blocate durante que le servitores de base de datos secundari se synchronisa con le servitor principal.',
'internalerror' => 'Error interne',
'internalerror_info' => 'Error interne: $1',
-'fileappenderror' => 'Non poteva adjunger "$1" a "$2".',
'filecopyerror' => 'Impossibile copiar file "$1" a "$2".',
'filerenameerror' => 'Impossibile renominar file "$1" a "$2".',
'filedeleteerror' => 'Impossibile deler file "$1".',

Modified: trunk/phase3/languages/messages/MessagesId.php
===================================================================
--- trunk/phase3/languages/messages/MessagesId.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesId.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -645,7 +645,6 @@
'readonly_lag' => 'Basis data telah dikunci otomatis selagi basis data sekunder melakukan sinkronisasi dengan basis data utama',
'internalerror' => 'Kesalahan internal',
'internalerror_info' => 'Kesalahan internal: $1',
-'fileappenderror' => 'Tidak dapat memasukkan "$1" ke "$2".',
'filecopyerror' => 'Tidak dapat menyalin berkas "$1" ke "$2".',
'filerenameerror' => 'Tidak dapat mengubah nama berkas "$1" menjadi "$2".',
'filedeleteerror' => 'Tidak dapat menghapus berkas "$1".',

Modified: trunk/phase3/languages/messages/MessagesIs.php
===================================================================
--- trunk/phase3/languages/messages/MessagesIs.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesIs.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -549,7 +549,6 @@
'readonly_lag' => 'Gagnagrunninum hefur verið læst sjálfkrafa á meðan undirvefþjónarnir reyna að hafa í við aðalvefþjóninn',
'internalerror' => 'Kerfisvilla',
'internalerror_info' => 'Innri villa: $1',
-'fileappenderror' => 'Gat ekki bætt „$1“ við „$2“.',
'filecopyerror' => 'Gat ekki afritað skjal "$1" á "$2".',
'filerenameerror' => 'Gat ekki endurnefnt skrána „$1“ í „$2“.',
'filedeleteerror' => 'Gat ekki eytt skránni „$1“.',

Modified: trunk/phase3/languages/messages/MessagesIt.php
===================================================================
--- trunk/phase3/languages/messages/MessagesIt.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesIt.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -586,7 +586,6 @@
'readonly_lag' => 'Il database è stato bloccato automaticamente per consentire ai server con i database slave di sincronizzarsi con il master',
'internalerror' => 'Errore interno',
'internalerror_info' => 'Errore interno: $1',
-'fileappenderror' => 'Impossibile aggiungere "$1" a "$2".',
'filecopyerror' => 'Impossibile copiare il file "$1" in "$2".',
'filerenameerror' => 'Impossibile rinominare il file "$1" in "$2".',
'filedeleteerror' => 'Impossibile cancellare il file "$1".',

Modified: trunk/phase3/languages/messages/MessagesJa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesJa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesJa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -639,7 +639,6 @@
'readonly_lag' => 'データベースはスレーブ・サーバーがマスター・サーバーに同期するまで自動的にロックされています',
'internalerror' => '内部処理エラー',
'internalerror_info' => '内部処理エラー: $1',
-'fileappenderror' => '「$1」を「$2」に追加できませんでした。',
'filecopyerror' => 'ファイル "$1" を "$2" へコピーできませんでした。',
'filerenameerror' => 'ファイル名を "$1" から "$2" へ変更できませんでした。',
'filedeleteerror' => 'ファイル "$1" を削除できませんでした。',

Modified: trunk/phase3/languages/messages/MessagesJv.php
===================================================================
--- trunk/phase3/languages/messages/MessagesJv.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesJv.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -393,7 +393,6 @@
'readonly_lag' => 'Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama',
'internalerror' => 'Kasalahan internal',
'internalerror_info' => 'Kaluputan internal: $1',
-'fileappenderror' => 'Ora bisa nglebokaké "$1" menyang "$2".',
'filecopyerror' => 'Ora bisa nulad berkas "$1" menyang "$2".',
'filerenameerror' => 'Ora bisa ngowahi saka "$1" dadi "$2".',
'filedeleteerror' => 'Ora bisa mbusak berkas "$1".',

Modified: trunk/phase3/languages/messages/MessagesKa.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKa.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKa.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -462,7 +462,6 @@
'readonly_lag' => 'მონაცემთა ბაზა ავტომატურად დაიხურა, სანამ შვილობილი ბაზის სერვერები მთავარ ბაზასთან სინქრონიზაციას ახდენს',
'internalerror' => 'შიდა შეცდომა',
'internalerror_info' => 'შიდა შეცდომა: $1',
-'fileappenderror' => 'ვერ მოხერხდა "$1" შეერთება "$2"-თან',
'filecopyerror' => '"$1" ფაილის "$2"-ზე კოპირება ვერ მოხერხდა.',
'filerenameerror' => 'ფაილის სახელის შეცვლა "$1"-დან "$2"-ზე ვერ მოხერხდა.',
'filedeleteerror' => 'ფაილის "$1" წაშლა ვერ მოხერხდა.',

Modified: trunk/phase3/languages/messages/MessagesKiu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKiu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKiu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -376,7 +376,6 @@
'readonly_lag' => "Panga daeyu otomatikman qapan biye ''slave-database-servers''i ra be hata ''master''i",
'internalerror' => 'Xeta zerrey',
'internalerror_info' => 'Xeta zerrey: $1',
-'fileappenderror' => 'Dosya "$1"ine dosya "$2"ine ser nêbena.',
'filecopyerror' => 'Dosya "$1"i kopya nêbiye be dosya "$2".',
'filerenameerror' => 'Namê dosya "$1"i nêvuriya be dosya "$2".',
'filedeleteerror' => 'Dosya "$1"i nêesteriye.',

Modified: trunk/phase3/languages/messages/MessagesKm.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKm.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKm.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -599,7 +599,6 @@
'readonly_lag' => 'មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោដោយស្វ័យប្រវត្តិ ខណៈពេលដែលម៉ាស៊ីនបម្រើ(server)មូលដ្ឋានទិន្នន័យរង​កំពុង​ទាក់ទង​ទៅម៉ាស៊ីនបម្រើ​មូលដ្ឋានទិន្នន័យមេ',
'internalerror' => 'កំហុសផ្នែកខាងក្នុង',
'internalerror_info' => 'កំហុសផ្នែកខាងក្នុង៖ $1',
-'fileappenderror' => 'មិនអាចបន្ថែម "$1" ទៅខាងចុង "$2" បានទេ។',
'filecopyerror' => 'មិនអាចចម្លងឯកសារ"$1" ទៅ "$2"បានទេ។',
'filerenameerror' => 'មិនអាចប្តូរឈ្មោះឯកសារពី"$1" ទៅ "$2"បានទេ។',
'filedeleteerror' => 'មិនអាចលុបឯកសារ"$1"បានទេ។',

Modified: trunk/phase3/languages/messages/MessagesKo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -621,7 +621,6 @@
'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 갱신하는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
'internalerror' => '내부 오류',
'internalerror_info' => '내부 오류: $1',
-'fileappenderror' => '‘$1’ 파일을 ‘$2’에 덧붙일 수 없습니다.',
'filecopyerror' => '‘$1’ 파일을 ‘$2’(으)로 복사할 수 없습니다.',
'filerenameerror' => '‘$1’ 파일을 ‘$2’(으)로 옮길 수 없습니다.',
'filedeleteerror' => '‘$1’ 파일을 삭제할 수 없습니다.',

Modified: trunk/phase3/languages/messages/MessagesKrc.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKrc.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKrc.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -370,7 +370,6 @@
'readonly_lag' => 'Информация база, экинчи сервер биринчи сервер бла синхронизацияны тындыргъынчы, тюрлендириуледен автомат джабылыб турады.',
'internalerror' => 'Ич хата',
'internalerror_info' => 'Ич хата: $1',
-'fileappenderror' => '«$1» файл «$2» файлгъа къошулмайды.',
'filecopyerror' => '«$2» файлны «$1» файлгъа копия этиб болмайды.',
'filerenameerror' => '«$1» файлны атын «$2» атха алышдырыргъа болмайды.',
'filedeleteerror' => '«$1» файлны кетерирге болмайды.',

Modified: trunk/phase3/languages/messages/MessagesKsh.php
===================================================================
--- trunk/phase3/languages/messages/MessagesKsh.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesKsh.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -557,7 +557,6 @@
'readonly_lag' => 'De Daatebank es för en koote Zigg jesperrt, för de Daate avzejliche.',
'internalerror' => 'De Wiki-Soffwär hät ene Fähler jefunge',
'internalerror_info' => 'Enne ennere Fäähler en de ßofwäer es opjetrodde: $1',
-'fileappenderror' => 'Mer kunnte „$1“ nit aan „$2“ aanhange.',
'filecopyerror' => 'Kunnt de Datei „$1“ nit noh „$2“ kopeere.',
'filerenameerror' => 'Kunnt de Datei „$1“ nit op „$2“ ömdäufe.',
'filedeleteerror' => 'Kunnt de Datei „$1“ nit fottschmieße.',

Modified: trunk/phase3/languages/messages/MessagesLb.php
===================================================================
--- trunk/phase3/languages/messages/MessagesLb.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesLb.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -497,7 +497,6 @@
'readonly_lag' => "D'Datebank gouf automatesch gespaart fir datt d'Zweetserveren (slaves) nees mat dem Haaptserver (master) synchron geschalt kënne ginn.",
'internalerror' => 'Interne Feeler',
'internalerror_info' => 'Interne Feeler: $1',
-'fileappenderror' => '"$1" konnt net bäi "$2" derbäigesat ginn.',
'filecopyerror' => 'De Fichier "$1" konnt net op "$2" kopéiert ginn.',
'filerenameerror' => 'De Fichier "$1" konnt net op "$2" ëmbenannt ginn.',
'filedeleteerror' => 'De Fichier "$1" konnt net geläscht ginn.',

Modified: trunk/phase3/languages/messages/MessagesLt.php
===================================================================
--- trunk/phase3/languages/messages/MessagesLt.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesLt.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -529,7 +529,6 @@
'readonly_lag' => 'Duomenų bazė buvo automatiškai užrakinta, kol pagalbinės duomenų bazės prisivys pagrindinę',
'internalerror' => 'Vidinė klaida',
'internalerror_info' => 'Vidinė klaida: $1',
-'fileappenderror' => 'Nepavyko pridėti „$1“ prie „$2“.',
'filecopyerror' => 'Nepavyksta kopijuoti failo iš „$1“ į „$2“.',
'filerenameerror' => 'Nepavyksta pervardinti failo iš „$1“ į „$2“.',
'filedeleteerror' => 'Nepavyksta ištrinti failo „$1“.',

Modified: trunk/phase3/languages/messages/MessagesLzh.php
===================================================================
--- trunk/phase3/languages/messages/MessagesLzh.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesLzh.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -413,7 +413,6 @@
'missingarticle-diff' => '(異:$1,$2)',
'internalerror' => '家誤',
'internalerror_info' => '家誤:$1',
-'fileappenderror' => '無附"$1"至"$2"也。',
'filecopyerror' => '"$1"謄"$2",未可為也。',
'filerenameerror' => '"$2"替"$1"名,未可為也。',
'filedeleteerror' => '"$1"未可刪也。',

Modified: trunk/phase3/languages/messages/MessagesMg.php
===================================================================
--- trunk/phase3/languages/messages/MessagesMg.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesMg.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -486,7 +486,6 @@
Mihidy ho azy aloha ny banky angona mandra-pahatratran'ny serveur andevo ny tompony",
'internalerror' => "Tsy fetezana anatin'ny rindrankajy",
'internalerror_info' => 'Tsy fetezana ety anatiny : $1',
-'fileappenderror' => "Tsy afaka ampiana amin'ny « $2 » « $1 ».",
'filecopyerror' => 'Tsy voadika ho "$2" ilay rakitra"$1".',
'filerenameerror' => 'Tsy voaova ho "$2" ny anaran\'ilay rakitra "$1".',
'filedeleteerror' => 'Tsy voafafa ilay rakitra "$1".',

Modified: trunk/phase3/languages/messages/MessagesMk.php
===================================================================
--- trunk/phase3/languages/messages/MessagesMk.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesMk.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -623,7 +623,6 @@
'readonly_lag' => 'Базата е автоматски заклучена додека помошните сервери не се синхронизираат',
'internalerror' => 'Внатрешна грешка',
'internalerror_info' => 'Внатрешна грешка: $1',
-'fileappenderror' => 'Не можe да се додаде "$1" на "$2".',
'filecopyerror' => 'Не можe да се копира податотеката "$1" во "$2".',
'filerenameerror' => 'Не може да се преименува податотеката "$1" во "$2".',
'filedeleteerror' => 'Не може да се избрише податотеката "$1".',

Modified: trunk/phase3/languages/messages/MessagesMl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesMl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesMl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -632,7 +632,6 @@
'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെര്‍വറുകള്‍ മാസ്റ്റര്‍ വരെ പിടിച്ചിരിക്കുന്നു',
'internalerror' => 'ആന്തരികമായ പ്രശ്നം',
'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
-'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേര്‍ക്കുവാന്‍ സാധിച്ചില്ല.',
'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകര്‍ത്താന്‍ സാധിച്ചില്ല.',
'filerenameerror' => 'പ്രമാണം "$1", "$2" എന്ന തലക്കെട്ടിലേയ്ക്കു മാറ്റാന്‍ സാധിച്ചില്ല.',
'filedeleteerror' => '"$1" നീക്കം ചെയ്യാന്‍ സാധിച്ചില്ല.',

Modified: trunk/phase3/languages/messages/MessagesMn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesMn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesMn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -388,7 +388,6 @@
'readonly_lag' => 'Хоёрдогч серверүүд анхдагчдаа гүйцэж ирэх хүртэл мэдээллийн санг автоматаар түгжлээ.',
'internalerror' => 'Дотоод алдаа',
'internalerror_info' => 'Дотоод алдаа: $1',
-'fileappenderror' => '"$1"-г "$2-нд нэмж чадсангүй.',
'filecopyerror' => 'Файлыг "$1"-с "$2" руу хуулж чадсангүй.',
'filerenameerror' => 'Файлын нэрийг "$1"-с "$2" болгож өөрчилж чадсангүй.',
'filedeleteerror' => '"$1" файлыг устгаж чадсангүй.',

Modified: trunk/phase3/languages/messages/MessagesMs.php
===================================================================
--- trunk/phase3/languages/messages/MessagesMs.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesMs.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -509,7 +509,6 @@
'readonly_lag' => 'Pangkalan data telah dikunci secara automatik sementara semua pelayan pangkalan data diselaraskan.',
'internalerror' => 'Ralat dalaman',
'internalerror_info' => 'Ralat dalaman: $1',
-'fileappenderror' => 'Tidak dapat menambah "$1" kepada "$2".',
'filecopyerror' => 'Fail "$1" tidak dapat disalin kepada "$2".',
'filerenameerror' => 'Nama fail "$1" tidak dapat ditukarkan kepada "$2".',
'filedeleteerror' => 'Fail "$1" tidak dapat dihapuskan.',

Modified: trunk/phase3/languages/messages/MessagesNds_nl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesNds_nl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesNds_nl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -651,7 +651,6 @@
'readonly_lag' => 'De databanke is autematisch beveilig, zodat de onder-eschikken servers zich kunnen synchroniseren mit de centrale server.',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
-'fileappenderror' => 'Kon "$1" neet bie "$2" doon.',
'filecopyerror' => 'Kon bestaand "$1" neet naor "$2" kopiëren.',
'filerenameerror' => 'Bestaansnaamwieziging "$1" naor "$2" neet meugelijk.',
'filedeleteerror' => 'Kon bestaand "$1" neet vortdoon.',

Modified: trunk/phase3/languages/messages/MessagesNe.php
===================================================================
--- trunk/phase3/languages/messages/MessagesNe.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesNe.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -372,7 +372,6 @@
'missingarticle-diff' => '(डिफ diff: $1, $2)',
'internalerror' => 'आन्तरिक त्रुटि',
'internalerror_info' => 'आन्तरिक त्रुटि: $1',
-'fileappenderror' => ' "$2".लाई"$1" मा जोडन सकिएन ।',
'filecopyerror' => 'फाइल "$1" लाई "$2" मा प्रतिलिपी गर्न सकिएन ।',
'filerenameerror' => 'फाइल "$1" को नाम "$2" मा परिवर्तन गर्न सकिएन ।',
'filedeleteerror' => 'फाइल "$1" मेट्न सकिएन ।',

Modified: trunk/phase3/languages/messages/MessagesNl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesNl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesNl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -665,7 +665,6 @@
'readonly_lag' => 'De database is automatisch vergrendeld terwijl de ondergeschikte databaseservers synchroniseren met de hoofdserver.',
'internalerror' => 'Interne fout',
'internalerror_info' => 'Interne fout: $1',
-'fileappenderror' => 'Het was niet mogelijk "$1" toe te voegen aan "$2".',
'filecopyerror' => 'Bestand “$1” kon niet naar “$2” gekopieerd worden.',
'filerenameerror' => '“$1” kon niet tot “$2” hernoemd worden.',
'filedeleteerror' => 'Bestand “$1” kon niet verwijderd worden.',

Modified: trunk/phase3/languages/messages/MessagesNn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesNn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesNn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -616,7 +616,6 @@
'readonly_lag' => 'Databasen er mellombels skriveverna for at databasetenarane skal kunna synkronisere seg mot kvarandre',
'internalerror' => 'Intern feil',
'internalerror_info' => 'Intern feil: $1',
-'fileappenderror' => 'Kunne ikkje leggja "$1" til "$2".',
'filecopyerror' => 'Kunne ikkje kopiere fila frå «$1» til «$2».',
'filerenameerror' => 'Kunne ikkje døype om fila frå «$1» til «$2».',
'filedeleteerror' => 'Kunne ikkje slette fila «$1».',

Modified: trunk/phase3/languages/messages/MessagesNo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesNo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesNo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -581,7 +581,6 @@
'readonly_lag' => 'Databasen er automatisk skrivebeskyttet så slavetjenerne kan ta igjen mestertjeneren',
'internalerror' => 'Intern feil',
'internalerror_info' => 'Intern feil: $1',
-'fileappenderror' => 'Kunne ikke legge "$1" til "$2".',
'filecopyerror' => 'Klarte ikke å kopiere filen «$1» til «$2».',
'filerenameerror' => 'Klarte ikke å døpe om filen «$1» til «$2».',
'filedeleteerror' => 'Klarte ikke å slette filen «$1».',

Modified: trunk/phase3/languages/messages/MessagesOc.php
===================================================================
--- trunk/phase3/languages/messages/MessagesOc.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesOc.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -647,7 +647,6 @@
'readonly_lag' => 'La banca de donadas es estada automaticament clavada pendent que los servidors segondaris ratrapan lor retard sul servidor principal.',
'internalerror' => 'Error intèrna',
'internalerror_info' => 'Error intèrna: $1',
-'fileappenderror' => "Impossible d'apondre « $1 » a « $2 ».",
'filecopyerror' => 'Impossible de copiar lo fichièr « $1 » cap a « $2 ».',
'filerenameerror' => 'Impossible de tornar nomenar lo fichièr « $1 » en « $2 ».',
'filedeleteerror' => 'Impossible de suprimir lo fichièr « $1 ».',

Modified: trunk/phase3/languages/messages/MessagesPl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesPl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesPl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -581,7 +581,6 @@
'readonly_lag' => 'Baza danych została automatycznie zablokowana na czas potrzebny do wykonania synchronizacji zmian między serwerem głównym i serwerami pośredniczącymi.',
'internalerror' => 'Błąd wewnętrzny',
'internalerror_info' => 'Błąd wewnętrzny – $1',
-'fileappenderror' => 'Nie udało się dołączyć „$1” do „$2”.',
'filecopyerror' => 'Nie można skopiować pliku „$1” do „$2”.',
'filerenameerror' => 'Nie można zmienić nazwy pliku „$1” na „$2”.',
'filedeleteerror' => 'Nie można usunąć pliku „$1”.',

Modified: trunk/phase3/languages/messages/MessagesPms.php
===================================================================
--- trunk/phase3/languages/messages/MessagesPms.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesPms.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -397,7 +397,6 @@
'readonly_lag' => "La base dat a l'é staita blocà n'automàtich antramentr che le màchine dël sircùit secondari (slave) as buto an pari con cole dël prinsipal (master)",
'internalerror' => 'Eror intern',
'internalerror_info' => 'Eror antern: $1',
-'fileappenderror' => 'As peul pa pendse "$1" a "$2".',
'filecopyerror' => 'A l\'é pa stàit possibil copié l\'archivi "$1" coma "$2".',
'filerenameerror' => 'A l\'é pa podusse cangeje nòm a l\'archivi "$1" an "$2".',
'filedeleteerror' => 'A l\'é pa podusse scancelé l\'archivi "$1".',

Modified: trunk/phase3/languages/messages/MessagesPt.php
===================================================================
--- trunk/phase3/languages/messages/MessagesPt.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesPt.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -642,7 +642,6 @@
'readonly_lag' => 'A base de dados foi automaticamente trancada enquanto os servidores secundários se sincronizam com o primário',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
-'fileappenderror' => 'Não foi possível adicionar "$1" a "$2".',
'filecopyerror' => 'Não foi possível copiar o ficheiro "$1" para "$2".',
'filerenameerror' => 'Não foi possível renomear o ficheiro "$1" para "$2".',
'filedeleteerror' => 'Não foi possível eliminar o ficheiro "$1".',

Modified: trunk/phase3/languages/messages/MessagesPt_br.php
===================================================================
--- trunk/phase3/languages/messages/MessagesPt_br.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesPt_br.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -630,7 +630,6 @@
'readonly_lag' => 'O banco de dados foi automaticamente bloqueado enquanto os servidores secundários se sincronizam com o principal',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
-'fileappenderror' => 'Não foi possível adicionar "$1" a "$2".',
'filecopyerror' => 'Não foi possível copiar o arquivo "$1" para "$2".',
'filerenameerror' => 'Não foi possível renomear o arquivo "$1" para "$2".',
'filedeleteerror' => 'Não foi possível eliminar o arquivo "$1".',

Modified: trunk/phase3/languages/messages/MessagesQu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesQu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesQu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -615,7 +615,6 @@
'readonly_lag' => "Willañiqintinqa mit'alla hark'asqam, sirwiqkuna kikinpachachastin.",
'internalerror' => 'Ukhu pantasqa',
'internalerror_info' => 'Ukhu pantasqa: $1',
-'fileappenderror' => 'Manam atinichu "$1"-ta "$2"-man yapayta.',
'filecopyerror' => 'Manam atinichu willañiqita "$1"-manta "$2"-man iskaychayta.',
'filerenameerror' => 'Manam atinichu willañiqip sutinta "$1"-manta "$2"-man hukchayta.',
'filedeleteerror' => 'Manam atinichu "$1" sutiyuq willañiqita qulluyta.',

Modified: trunk/phase3/languages/messages/MessagesRo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesRo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesRo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -636,7 +636,6 @@
'readonly_lag' => 'Baza de date a fost închisă automatic în timp ce serverele secundare ale bazei de date îl urmează pe cel principal.',
'internalerror' => 'Eroare internă',
'internalerror_info' => 'Eroare internă: $1',
-'fileappenderror' => 'Nu se poate adăuga "$1" în "$2".',
'filecopyerror' => 'Fişierul "$1" nu a putut fi copiat la "$2".',
'filerenameerror' => 'Fişierul "$1" nu a putut fi mutat la "$2".',
'filedeleteerror' => 'Fişierul "$1" nu a putut fi şters.',

Modified: trunk/phase3/languages/messages/MessagesRoa_tara.php
===================================================================
--- trunk/phase3/languages/messages/MessagesRoa_tara.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesRoa_tara.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -382,7 +382,6 @@
'readonly_lag' => "'U database ha state automaticamende blocchete purcè le server de le database ca depennene da 'u master onne sciute in eccezzione",
'internalerror' => 'Errore inderne',
'internalerror_info' => 'Errore inderne: $1',
-'fileappenderror' => 'Non ge se pò \'nzeccà "$1" a "$2".',
'filecopyerror' => 'Non ge pozze cupià \'u fail "$1" jndr\'à "$2".',
'filerenameerror' => 'Non ge pozze cangià \'u nome d\'u fail "$1" jndr\'à "$2".',
'filedeleteerror' => 'Non ge pozze scangillà \'u fail "$1".',

Modified: trunk/phase3/languages/messages/MessagesRu.php
===================================================================
--- trunk/phase3/languages/messages/MessagesRu.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesRu.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -613,7 +613,6 @@
'readonly_lag' => 'База данных автоматически заблокирована от изменений на время, пока вторичный сервер БД не синхронизируется с первичным.',
'internalerror' => 'Внутренняя ошибка',
'internalerror_info' => 'Внутренняя ошибка: $1',
-'fileappenderror' => 'Не удалось присоединить «$1» к «$2».',
'filecopyerror' => 'Невозможно скопировать файл «$1» в «$2».',
'filerenameerror' => 'Невозможно переименовать файл «$1» в «$2».',
'filedeleteerror' => 'Невозможно удалить файл «$1».',

Modified: trunk/phase3/languages/messages/MessagesSah.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSah.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSah.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -391,7 +391,6 @@
'readonly_lag' => 'Билии олоҕун хос сиэрбэрдэрэ сүрүн сиэрбэри кытта мэнэйдэһэр кэмнэригэр билии олоҕо хатанна',
'internalerror' => 'Ис алҕас (внутренняя ошибка)',
'internalerror_info' => 'Ис алҕас: $1',
-'fileappenderror' => 'Маны "$1" манна "$2" холбуур табыллыбата.',
'filecopyerror' => '"$1" диэн билэ "$2"-а кыайан төгүллэммэт.',
'filerenameerror' => '"$1" диэн билэ аатын "$2" диэҥҥэ кыайан уларытыллыбат.',
'filedeleteerror' => '"$1" диэн билэ кыайан сотторуллубат.',

Modified: trunk/phase3/languages/messages/MessagesScn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesScn.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesScn.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -485,7 +485,6 @@
'readonly_lag' => 'Lu database hà statu bluccatu automaticamenti, mentri li server cu li database slave si sincrunìzzanu cu lu master',
'internalerror' => 'Erruri nternu',
'internalerror_info' => 'Erruri nternu: $1',
-'fileappenderror' => 'Nun è possibi junciri "$1" a "$2".',
'filecopyerror' => 'Mpussìbbili cupiari lu file "$1" n "$2".',
'filerenameerror' => 'Mpussìbbili rinuminari lu file "$1" \'n "$2".',
'filedeleteerror' => 'Mpussìbbili cancillari lu file "$1".',

Modified: trunk/phase3/languages/messages/MessagesSh.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSh.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSh.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -339,7 +339,6 @@
'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
'internalerror' => 'Interna pogreška',
'internalerror_info' => 'Interna greška: $1',
-'fileappenderror' => 'Ne može se primijeniti "$1" na "$2".',
'filecopyerror' => 'Ne može se kopirati "$1" na "$2".',
'filerenameerror' => 'Ne može se promjeniti ime datoteke "$1" u "$2".',
'filedeleteerror' => 'Ne može se izbrisati datoteka "$1".',

Modified: trunk/phase3/languages/messages/MessagesSi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSi.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSi.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -533,7 +533,6 @@
'readonly_lag' => 'ගෝල දත්ත-ගබඩා සර්වරයන්හි ක්‍රියාශීලිත්වය ගුරු සර්වර මට්ටමට පත් වන තෙක් දත්ත-ගබඩාව ස්වයංක්‍රීය ලෙස ඇවුරුමකට ලක්ව ඇත',
'internalerror' => 'අභ්‍යන්තර දෝෂය',
'internalerror_info' => 'අභ්‍යන්තර දෝෂය: $1',
-'fileappenderror' => '"$2" වෙත "$1" යා කල නොහැක.',
'filecopyerror' => '"$1" ගොනුව "$2" වෙත පිටපත් කිරීමට නොහැකි විය.',
'filerenameerror' => '"$1" ගොනුව "$2" බවට යළි-නම්-කිරීම සිදු කල නොහැකි විය.',
'filedeleteerror' => '"$1" ගොනුව මකා-දැමිය නොහැකි විය.',

Modified: trunk/phase3/languages/messages/MessagesSk.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSk.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSk.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -632,7 +632,6 @@
'readonly_lag' => 'Databáza bola automaticky zamknutá pokým záložné databázové servery nedoženú hlavný server',
'internalerror' => 'Vnútorná chyba',
'internalerror_info' => 'Vnútorná chyba: $1',
-'fileappenderror' => 'Nepodarilo sa pridať „$1“ k „$2“.',
'filecopyerror' => 'Nebolo možné skopírovať súbor „$1“ na „$2“.',
'filerenameerror' => 'Nebolo možné premenovať súbor „$1“ na „$2“.',
'filedeleteerror' => 'Nebolo možné vymazať súbor „$1“.',

Modified: trunk/phase3/languages/messages/MessagesSl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -492,7 +492,6 @@
'readonly_lag' => 'Podatkovna zbirka se je samodejno zaklenila, dokler se podrejeni strežniki ne uskladijo z glavnim.',
'internalerror' => 'Notranja napaka',
'internalerror_info' => 'Notranja napaka: $1',
-'fileappenderror' => 'Ne morem pripeti »$1« v »$2«.',
'filecopyerror' => 'Datoteke »$1« ni mogoče prepisati v »$2«.',
'filerenameerror' => 'Datoteke »$1« ni mogoče preimenovati v »$2«.',
'filedeleteerror' => 'Datoteke »$1« ni mogoče izbrisati.',

Modified: trunk/phase3/languages/messages/MessagesSli.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSli.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSli.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -371,7 +371,6 @@
'readonly_lag' => 'Die Datenbank wurde automatisch für Schreibzugriffe gesperrt, damit sich die verteilten Datenbankserver (slaves) mit dem Hauptdatenbankserver (master) abgleichen können.',
'internalerror' => 'Interner Fehler',
'internalerror_info' => 'Interner Fehler: $1',
-'fileappenderror' => 'Konnte „$1“ ne oa „$2“ oahänga.',
'filecopyerror' => 'Die Datei „$1“ konnte nicht nach „$2“ kopiert werden.',
'filerenameerror' => 'Die Datei „$1“ konnte nicht nach „$2“ umbenannt werden.',
'filedeleteerror' => 'Die Datei „$1“ konnte nicht gelöscht werden.',

Modified: trunk/phase3/languages/messages/MessagesStq.php
===================================================================
--- trunk/phase3/languages/messages/MessagesStq.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesStq.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -385,7 +385,6 @@
'readonly_lag' => 'Ju Doatenboank wuud automatisk foar Schrieuwtougriepe speerd, deermäd sik do ferdeelde Doatenboankservere (slaves) mäd dän Hauddoatenboankserver (master) ouglieke konnen.',
'internalerror' => 'Interne Failer',
'internalerror_info' => 'Interne Failer: $1',
-'fileappenderror' => 'Kuud „$1“ nit an „$2“ anhongje.',
'filecopyerror' => 'Kuude Doatäi "$1" nit ätter "$2" kopierje.',
'filerenameerror' => 'Kuude Doatäi "$1" nit ätter "$2" uumenaame.',
'filedeleteerror' => 'Kuude Doatäi "$1" nit läskje.',

Modified: trunk/phase3/languages/messages/MessagesSv.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSv.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSv.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -649,7 +649,6 @@
'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
'internalerror' => 'Internt fel',
'internalerror_info' => 'Internt fel: $1',
-'fileappenderror' => 'Kunde inte bifoga "$1" till "$2".',
'filecopyerror' => 'Kunde inte kopiera filen "$1" till "$2".',
'filerenameerror' => 'Kunde inte byta namn på filen "$1" till "$2".',
'filedeleteerror' => 'Kunde inte radera filen "$1".',

Modified: trunk/phase3/languages/messages/MessagesSw.php
===================================================================
--- trunk/phase3/languages/messages/MessagesSw.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesSw.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -479,7 +479,6 @@
'readonly_lag' => 'Kihifadhidata kimejifunga chenyewe wakati seva za kifadhidata joli imedakwa na seva ya utawala',
'internalerror' => 'Hitilafu ya ndani',
'internalerror_info' => 'Hitilafu ya ndani: $1',
-'fileappenderror' => 'Haikuweza kuongeza "$1" hadi "$2".',
'filecopyerror' => 'Haikuweza kunakili faili "$1" kwa "$2".',
'filerenameerror' => 'Haikuweza kubadilisha jina la faili "$1" kwa "$2".',
'filedeleteerror' => 'Haikuweza kufuta faili "$1".',

Modified: trunk/phase3/languages/messages/MessagesTe.php
===================================================================
--- trunk/phase3/languages/messages/MessagesTe.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesTe.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -488,7 +488,6 @@
'readonly_lag' => 'అనుచర (స్లేవ్) డేటాబేసు సర్వర్లు, ప్రధాన (మాస్టరు) సర్వరును అందుకునేందుకుగాను, డేటాబేసు ఆటోమాటిక్‌గా లాకు అయింది.',
'internalerror' => 'అంతర్గత లోపం',
'internalerror_info' => 'అంతర్గత లోపం: $1',
-'fileappenderror' => '"$1" ని "$2" తో కూర్చలేకపోతున్నాం',
'filecopyerror' => 'ఫైలు "$1"ని "$2"కు కాపీ చెయ్యటం కుదరలేదు.',
'filerenameerror' => 'ఫైలు "$1" పేరును "$2"గా మార్చటం కుదరలేదు.',
'filedeleteerror' => 'ఫైలు "$1"ని తీసివేయటం కుదరలేదు.',

Modified: trunk/phase3/languages/messages/MessagesTh.php
===================================================================
--- trunk/phase3/languages/messages/MessagesTh.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesTh.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -531,7 +531,6 @@
'readonly_lag' => 'ฐานข้อมูลถูกล็อกอัตโนมัติขณะที่เซิร์ฟเวอร์ฐานข้อมูลรองกำลังปรับปรุงตามฐานข้อมูลหลัก',
'internalerror' => 'เกิดความผิดพลาดภายใน',
'internalerror_info' => 'เกิดความผิดพลาดภายใน: $1',
-'fileappenderror' => 'ไม่สามารถต่อท้าย "$2" ด้วย "$1"',
'filecopyerror' => 'ไม่สามารถคัดลอกไฟล์ "$1" ไปที่ "$2"',
'filerenameerror' => 'ไม่สามารถเปลี่ยนชื่อไฟล์ "$1" เป็น "$2"',
'filedeleteerror' => 'ไม่สามารถลบไฟล์ "$1"',

Modified: trunk/phase3/languages/messages/MessagesTk.php
===================================================================
--- trunk/phase3/languages/messages/MessagesTk.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesTk.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -391,7 +391,6 @@
'readonly_lag' => 'Ätiýaçlyk serwerler esasy serwere boýunça täzelenýärkä, maglumat bazasy awtomatik usulda gulplandy.',
'internalerror' => 'Içerki säwlik',
'internalerror_info' => 'Içerki säwlik: $1',
-'fileappenderror' => '"$1" faýlyny "$2" faýlyna goşup bolmady.',
'filecopyerror' => '"$1" faýlyny "$2" faýlyna göçürip bolmady.',
'filerenameerror' => '"$1" faýlynyň adyny "$2" diýip üýtgedip bolmady.',
'filedeleteerror' => '"$1" faýlyny öçürip bolmady.',

Modified: trunk/phase3/languages/messages/MessagesTr.php
===================================================================
--- trunk/phase3/languages/messages/MessagesTr.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesTr.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -506,7 +506,6 @@
'readonly_lag' => 'Yedek sunucular ana sunucu ile güncellemeye çalışırken veritabanı otomatik olarak kilitlendi.',
'internalerror' => 'Yazılım hatası',
'internalerror_info' => 'İç hata: $1',
-'fileappenderror' => '"$1" dosyası "$2" dosyasına eklenemiyor.',
'filecopyerror' => '"$1" "$2" dosyasına kopyalanamıyor.',
'filerenameerror' => '"$1" dosyasının ismi "$2" olarak değiştirilemedi.',
'filedeleteerror' => '"$1" dosyası silinemedi.',

Modified: trunk/phase3/languages/messages/MessagesTt_cyrl.php
===================================================================
--- trunk/phase3/languages/messages/MessagesTt_cyrl.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesTt_cyrl.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -485,7 +485,6 @@
'readonly_lag' => 'Мәгълүматлар базасы, өстәмә сервер төп сервер белән синхронизацияләшкәнче, үзгәрүләрдән автомат рәвештә ябылды.',
'internalerror' => 'Эчке хата',
'internalerror_info' => 'Эчке хата: $1',
-'fileappenderror' => '"$1" һәм "$2" не кушып булмады.',
'filecopyerror' => '«$2» файлына «$1» файлының копиясен ясап булмый.',
'filerenameerror' => '«$1» файлының исемен «$2» исеменә алыштырып булмый.',
'filedeleteerror' => '«$1» файлын сыздырып булмый.',

Modified: trunk/phase3/languages/messages/MessagesUk.php
===================================================================
--- trunk/phase3/languages/messages/MessagesUk.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesUk.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -584,7 +584,6 @@
'readonly_lag' => 'База даних автоматично заблокована від змін, доки вторинний сервер БД не синхронізується з первинним.',
'internalerror' => 'Внутрішня помилка',
'internalerror_info' => 'Внутрішня помилка: $1',
-'fileappenderror' => 'Не вдалося приєднати «$1» до «$2».',
'filecopyerror' => 'Неможливо скопіювати файл «$1» в «$2».',
'filerenameerror' => 'Неможливо перейменувати файл «$1» в «$2».',
'filedeleteerror' => 'Неможливо вилучити файл «$1».',

Modified: trunk/phase3/languages/messages/MessagesVec.php
===================================================================
--- trunk/phase3/languages/messages/MessagesVec.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesVec.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -492,7 +492,6 @@
'readonly_lag' => 'El database el xe stà blocà automaticamente par consentirghe ai server coi database slave de sincronizarse col master',
'internalerror' => 'Eròr interno',
'internalerror_info' => 'Eror interno: $1',
-'fileappenderror' => 'No se pode zontar "$1" con "$2".',
'filecopyerror' => 'No xè stà possibiłe copiare el file "$1" come "$2".',
'filerenameerror' => 'No xè stà possibile rinominare el file "$1" in "$2".',
'filedeleteerror' => 'No xè stà possibiłe scancełare el file "$1".',

Modified: trunk/phase3/languages/messages/MessagesVep.php
===================================================================
--- trunk/phase3/languages/messages/MessagesVep.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesVep.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -427,7 +427,6 @@
'readonly_lag' => 'Andmusiden baz om luklostadud avtomatižešti pordoks aigad, kuni sinhroniziruiše ezmäškerdaine da toškerdaine serverad',
'internalerror' => 'Südäipetuz',
'internalerror_info' => 'Südäipetuz: $1',
-'fileappenderror' => 'Ei voi ližata «$1»-failad «$2»-failha.',
'filecopyerror' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
'filerenameerror' => 'Ei voi udesnimitada "$1"-failad "$2"-tahoze.',
'filedeleteerror' => 'Ei voi čuta poiš "$1"-failad.',

Modified: trunk/phase3/languages/messages/MessagesVi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesVi.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesVi.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -618,7 +618,6 @@
'readonly_lag' => 'Cơ sở dữ liệu bị khóa tự động trong khi các máy chủ cập nhật thông tin của nhau.',
'internalerror' => 'Lỗi nội bộ',
'internalerror_info' => 'Lỗi nội bộ: $1',
-'fileappenderror' => 'Không thể nối “$1” vào “$2”.',
'filecopyerror' => 'Không thể chép tập tin “$1” đến “$2”.',
'filerenameerror' => 'Không thể đổi tên tập tin “$1” thành “$2”.',
'filedeleteerror' => 'Không thể xóa tập tin “$1”.',

Modified: trunk/phase3/languages/messages/MessagesWo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesWo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesWo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -433,7 +433,6 @@
'readonly_lag' => 'Dàttub njoxe bi daa caabi boppam ngir may ñaareelu joxekaay yi dap joxekaay bu njëkk bi.',
'internalerror' => 'Njuumte gu biir',
'internalerror_info' => 'Njuumte gu biir : $1',
-'fileappenderror' => 'Maneesul a yokk "$1" ci "$2".',
'filecopyerror' => 'Duppig dencukaay bii di « $1 » jëm « $2 » antuwul.',
'filerenameerror' => 'Tuddewaatug « $1 » niki « $2 » antuwul.',
'filedeleteerror' => 'Farug dencukaay bii di « $1 » antuwul.',

Modified: trunk/phase3/languages/messages/MessagesYi.php
===================================================================
--- trunk/phase3/languages/messages/MessagesYi.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesYi.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -508,7 +508,6 @@
'readonly_lag' => 'די דאטעבאזע איז געווארן אויטאמטיש אפגעשפארט כדי צו דערמעגליכן פאר די אונטער דאטע באזע סערווערס צו ווערן דערהיינטיגט פון דעם אויבער סערווער.',
'internalerror' => 'אינערווייניגער פֿעלער',
'internalerror_info' => 'אינערווייניגער פֿעלער: $1',
-'fileappenderror' => 'האט נישט געקענט צולייגן "$1" צו "$2".',
'filecopyerror' => 'קאפי "$1" צו "$2" איז נישט דורך.',
'filerenameerror' => 'נאמען טוישן פאר "$1" צו "$2" איז נישט דורך.',
'filedeleteerror' => 'אויסמעקן "$1" נישט דורך.',

Modified: trunk/phase3/languages/messages/MessagesYo.php
===================================================================
--- trunk/phase3/languages/messages/MessagesYo.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesYo.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -337,7 +337,6 @@
'missingarticle-diff' => '(Ìyàtọ̀: $1, $2)',
'internalerror' => 'Àsìṣe inú',
'internalerror_info' => 'Àsìṣe inú: $1',
-'fileappenderror' => 'Kò le so "$1" pọ̀ mọ́ "$2".',
'filecopyerror' => 'Àwòkọ faili "$1" sí "$2" kò ṣe é ṣe.',
'filerenameerror' => 'Àtúnsọlórúkọ faili "$1" sí "$2" kò ṣe é ṣe.',
'filedeleteerror' => 'Ìparẹ́ faili "$1" kò ṣe é ṣe.',

Modified: trunk/phase3/languages/messages/MessagesYue.php
===================================================================
--- trunk/phase3/languages/messages/MessagesYue.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesYue.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -497,7 +497,6 @@
'readonly_lag' => '當從伺服器追緊主伺服器時,資料庫會自動被鎖',
'internalerror' => '內部錯誤',
'internalerror_info' => '內部錯誤: $1',
-'fileappenderror' => '唔可以附加 "$1" 去 "$2"。',
'filecopyerror' => '檔案 "$1" 抄唔到去 "$2"。',
'filerenameerror' => '檔案 "$1" 唔改得做 "$2"。',
'filedeleteerror' => '檔案 "$1" 唔刪得。',

Modified: trunk/phase3/languages/messages/MessagesZh_hans.php
===================================================================
--- trunk/phase3/languages/messages/MessagesZh_hans.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesZh_hans.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -545,7 +545,6 @@
'readonly_lag' => '从数据库服务器正在从主服务器上更新,数据库已被自动锁定',
'internalerror' => '内部错误',
'internalerror_info' => '内部错误:$1',
-'fileappenderror' => '无法将“$1”附加到“$2”。',
'filecopyerror' => '无法将文件“$1”复制到“$2”。',
'filerenameerror' => '无法将文件“$1”重命名为“$2”。',
'filedeleteerror' => '无法删除文件“$1”。',

Modified: trunk/phase3/languages/messages/MessagesZh_hant.php
===================================================================
--- trunk/phase3/languages/messages/MessagesZh_hant.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/languages/messages/MessagesZh_hant.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -527,7 +527,6 @@
'readonly_lag' => '附屬資料庫伺服器正在將快取更新到主伺服器,資料庫已被自動鎖定',
'internalerror' => '內部錯誤',
'internalerror_info' => '內部錯誤: $1',
-'fileappenderror' => '不能附加"$1"到"$2"。',
'filecopyerror' => '無法複製檔案"$1"到"$2"。',
'filerenameerror' => '無法重新命名檔案"$1"到"$2"。',
'filedeleteerror' => '無法刪除檔案"$1"。',

Modified: trunk/phase3/maintenance/language/messages.inc
===================================================================
--- trunk/phase3/maintenance/language/messages.inc 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/maintenance/language/messages.inc 2009-11-26 12:00:36 UTC (rev 59446)
@@ -363,7 +363,6 @@
'readonly_lag',
'internalerror',
'internalerror_info',
- 'fileappenderror',
'filecopyerror',
'filerenameerror',
'filedeleteerror',

Deleted: trunk/phase3/mwScriptLoader.php
===================================================================
--- trunk/phase3/mwScriptLoader.php 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/mwScriptLoader.php 2009-11-26 12:00:36 UTC (rev 59446)
@@ -1,63 +0,0 @@
-<?php
-/**
- * mwScriptLoader.php
- * Script Loading Library for MediaWiki
- *
- * @file
- * @author Michael Dale mdale [at] wikimedia
- * @date feb, 2009
- * @link http://www.mediawiki.org/wiki/ScriptLoader Documentation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-//first do a quick static check for the cached file
-define('MW_CACHE_SCRIPT_CHECK', true);
-require_once( dirname(__FILE__) . '/js2/mwEmbed/jsScriptLoader.php');
-$myScriptLoader = new jsScriptLoader();
-if( $myScriptLoader->outputFromCache() ){
- exit();
-}
-
-//Else load up mediaWiki stuff and continue scriptloader processing:
-
-// include WebStart.php
-ob_start();
-require_once('includes/WebStart.php');
-$webstartwhitespace = ob_end_clean();
-
-wfProfileIn( 'mwScriptLoader.php' );
-
-if( $wgRequest->isPathInfoBad() ){
- wfHttpError( 403, 'Forbidden',
- 'Invalid file extension found in PATH_INFO. ' .
- 'mwScriptLoader must be accessed through the primary script entry point.' );
- return;
-}
-// Verify the script loader is on:
-if ( !$wgEnableScriptLoader ) {
- echo '/*ScriptLoader is not enabled for this site. To enable add the following line to your LocalSettings.php';
- echo '<pre><b>$wgEnableScriptLoader=true;</b></pre>*/';
- echo 'alert(\'Script loader is disabled\');';
- die( 1 );
-}
-
-//load the language file and
-// Run jsScriptLoader action:
-$myScriptLoader->doScriptLoader();
-
-
-wfProfileOut( 'mwScriptLoader.php' );

Deleted: trunk/phase3/mwScriptLoader.php5
===================================================================
--- trunk/phase3/mwScriptLoader.php5 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/mwScriptLoader.php5 2009-11-26 12:00:36 UTC (rev 59446)
@@ -1 +0,0 @@
-<?php require './mwScriptLoader.php';
\ No newline at end of file

Deleted: trunk/phase3/skins/common/preview.js
===================================================================
--- trunk/phase3/skins/common/preview.js 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/skins/common/preview.js 2009-11-26 12:00:36 UTC (rev 59446)
@@ -1,58 +0,0 @@
-/**
- * Live preview script for MediaWiki
- */
-
-function setupLivePreview() {
- var livePreviewButton = $j('#wpLivePreview');
-
- $j('#wpPreview').hide();
- livePreviewButton.show();
-
- livePreviewButton.click( doLivePreview );
-}
-
-function doLivePreview( e ) {
- e.preventDefault();
- var previewText = $j('#wpTextbox1').val();
-
- var editToken = $j( '[name="wpEditToken"]' ).attr( 'value' );
- var editTime = $j( '[name="wpEdittime"]' ).attr( 'value' );
- var startTime = $j( '[name="wpStarttime"]' ).attr( 'value' );
-
- var postData = { 'action' : 'submit', 'wpTextbox1' : previewText, 'wpPreview' : true,
- 'wpEditToken' : editToken, 'wpEdittime': editTime, 'wpStarttime': startTime, 'title' : wgPageName };
-
- // Hide active diff, used templates, old preview if shown
- $j('#wikiDiff').slideUp();
- $j('#wikiPreview').slideUp();
- $j('.templatesUsed').slideUp();
- $j('.hiddencats').slideUp();
-
- // Display a loading graphic
- var loadSpinner = $j('<div class="mw-ajax-loader"/>');
- $j('#wikiPreview').before( loadSpinner );
-
- var page = $j('<html/>');
- page.load( wgScript+'?action=submit',
- postData,
- function() {
- var copyElements = ['#wikiPreview', '.templatesUsed', '.hiddencats',
- '#catlinks'];
-
- for( var i=0; i<copyElements.length; ++i) {
- // For all the specified elements, find the elements in the loaded page
- // and the real page, empty the element in the real page, and fill it
- // with the content of the loaded page
- var copyContent = page.find( copyElements[i] ).contents();
- $j(copyElements[i]).empty().append( copyContent );
- var newClasses = page.find( copyElements[i] ).attr('class');
- $j(copyElements[i]).attr( 'class', newClasses );
- }
-
- loadSpinner.remove();
-
- $j('#wikiPreview').slideDown();
- } );
-}
-
-js2AddOnloadHook( setupLivePreview );

Modified: trunk/phase3/skins/common/wikibits.js
===================================================================
--- trunk/phase3/skins/common/wikibits.js 2009-11-26 09:39:52 UTC (rev 59445)
+++ trunk/phase3/skins/common/wikibits.js 2009-11-26 12:00:36 UTC (rev 59446)
@@ -36,7 +36,6 @@
var onloadFuncts = [];
}

-// code that is dependent on js2 functions should use js2AddOnloadHook
function addOnloadHook(hookFunct) {
// Allows add-on scripts to add onload functions
if(!doneOnloadHook) {



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

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.