From ba0fc4fa20067528effd4802e53ceeb959640825 Mon Sep 17 00:00:00 2001
From: Pierre Schmitz
Date: Thu, 12 Jan 2012 13:42:29 +0100
Subject: Update to MediaWiki 1.18.1
---
RELEASE-NOTES-1.18 | 43 +-
docs/hooks.txt | 7 +
extensions/ConfirmEdit/FancyCaptcha.class.php | 3 +
extensions/ConfirmEdit/QuestyCaptcha.class.php | 2 +-
includes/AjaxDispatcher.php | 9 +-
includes/DefaultSettings.php | 6 +-
includes/OutputPage.php | 70 +-
includes/RequestContext.php | 25 +
includes/Skin.php | 21 +-
includes/SkinTemplate.php | 24 +-
includes/SpecialPage.php | 9 +
includes/Title.php | 5 +-
includes/User.php | 3 +-
includes/UserMailer.php | 116 +-
includes/Wiki.php | 20 +-
includes/api/ApiQueryRevisions.php | 2 +-
includes/db/Database.php | 13 +
includes/db/DatabaseMysql.php | 2 +-
includes/db/DatabaseOracle.php | 4 +-
includes/filerepo/File.php | 12 +-
includes/installer/CliInstaller.php | 8 +
includes/installer/Installer.php | 9 +-
includes/installer/MysqlInstaller.php | 2 +-
includes/installer/OracleUpdater.php | 32 +
includes/installer/PostgresUpdater.php | 2 +
includes/media/Bitmap.php | 8 +-
includes/media/GIF.php | 12 +-
includes/media/Generic.php | 18 +-
includes/objectcache/DBABagOStuff.php | 11 +-
includes/parser/Parser.php | 22 +-
includes/parser/StripState.php | 7 +-
includes/search/SearchUpdate.php | 2 +-
includes/specials/SpecialAllmessages.php | 10 +-
includes/specials/SpecialBlockList.php | 6 +-
includes/specials/SpecialLinkSearch.php | 32 +-
includes/specials/SpecialMovepage.php | 2 +-
languages/messages/MessagesAf.php | 20 +-
languages/messages/MessagesAn.php | 485 ++-
languages/messages/MessagesAr.php | 74 +-
languages/messages/MessagesArc.php | 35 +-
languages/messages/MessagesArn.php | 734 ++--
languages/messages/MessagesAs.php | 729 ++--
languages/messages/MessagesAst.php | 42 +-
languages/messages/MessagesAz.php | 10 +-
languages/messages/MessagesBa.php | 400 ++-
languages/messages/MessagesBar.php | 111 +-
languages/messages/MessagesBe.php | 525 ++-
languages/messages/MessagesBe_tarask.php | 45 +-
languages/messages/MessagesBg.php | 62 +-
languages/messages/MessagesBjn.php | 308 +-
languages/messages/MessagesBn.php | 70 +-
languages/messages/MessagesBr.php | 49 +-
languages/messages/MessagesCa.php | 34 +-
languages/messages/MessagesCkb.php | 19 +-
languages/messages/MessagesCrh_cyrl.php | 227 +-
languages/messages/MessagesCrh_latn.php | 237 +-
languages/messages/MessagesCs.php | 25 +-
languages/messages/MessagesCu.php | 29 +-
languages/messages/MessagesCy.php | 28 +-
languages/messages/MessagesDa.php | 24 +-
languages/messages/MessagesDe.php | 56 +-
languages/messages/MessagesDe_ch.php | 2 +-
languages/messages/MessagesDe_formal.php | 11 +-
languages/messages/MessagesDiq.php | 77 +-
languages/messages/MessagesDsb.php | 18 +-
languages/messages/MessagesEl.php | 39 +-
languages/messages/MessagesEn.php | 29 +-
languages/messages/MessagesEo.php | 61 +-
languages/messages/MessagesEs.php | 21 +-
languages/messages/MessagesEt.php | 40 +-
languages/messages/MessagesEu.php | 92 +-
languages/messages/MessagesFa.php | 434 +--
languages/messages/MessagesFi.php | 82 +-
languages/messages/MessagesFo.php | 1295 +++++--
languages/messages/MessagesFr.php | 76 +-
languages/messages/MessagesFrp.php | 619 ++--
languages/messages/MessagesFrr.php | 16 +-
languages/messages/MessagesGan_hans.php | 225 +-
languages/messages/MessagesGan_hant.php | 37 +-
languages/messages/MessagesGd.php | 20 +-
languages/messages/MessagesGl.php | 101 +-
languages/messages/MessagesGsw.php | 18 +-
languages/messages/MessagesGu.php | 257 +-
languages/messages/MessagesGv.php | 41 +-
languages/messages/MessagesHe.php | 41 +-
languages/messages/MessagesHi.php | 470 ++-
languages/messages/MessagesHif_latn.php | 87 +-
languages/messages/MessagesHr.php | 107 +-
languages/messages/MessagesHsb.php | 27 +-
languages/messages/MessagesHu.php | 73 +-
languages/messages/MessagesIa.php | 37 +-
languages/messages/MessagesId.php | 22 +-
languages/messages/MessagesIe.php | 122 +-
languages/messages/MessagesIlo.php | 3536 ++++++++++----------
languages/messages/MessagesInh.php | 12 +-
languages/messages/MessagesIs.php | 24 +-
languages/messages/MessagesIt.php | 92 +-
languages/messages/MessagesJa.php | 249 +-
languages/messages/MessagesKa.php | 44 +-
languages/messages/MessagesKg.php | 182 +-
languages/messages/MessagesKiu.php | 65 +-
languages/messages/MessagesKk_cyrl.php | 171 +-
languages/messages/MessagesKm.php | 12 +-
languages/messages/MessagesKn.php | 173 +-
languages/messages/MessagesKo.php | 34 +-
languages/messages/MessagesKri.php | 548 +--
languages/messages/MessagesKsh.php | 12 +-
languages/messages/MessagesKu_latn.php | 107 +-
languages/messages/MessagesKy.php | 610 +++-
languages/messages/MessagesLa.php | 12 +-
languages/messages/MessagesLad.php | 398 ++-
languages/messages/MessagesLb.php | 27 +-
languages/messages/MessagesLi.php | 22 +-
languages/messages/MessagesLiv.php | 3 +-
languages/messages/MessagesLn.php | 88 +-
languages/messages/MessagesLt.php | 1 +
languages/messages/MessagesLv.php | 146 +-
languages/messages/MessagesMai.php | 210 +-
languages/messages/MessagesMap_bms.php | 1327 +++++++-
languages/messages/MessagesMdf.php | 80 +-
languages/messages/MessagesMg.php | 123 +-
languages/messages/MessagesMk.php | 34 +-
languages/messages/MessagesMl.php | 32 +-
languages/messages/MessagesMr.php | 868 +++--
languages/messages/MessagesMs.php | 143 +-
languages/messages/MessagesMt.php | 32 +-
languages/messages/MessagesMyv.php | 61 +-
languages/messages/MessagesNah.php | 10 +-
languages/messages/MessagesNan.php | 555 ++-
languages/messages/MessagesNb.php | 3474 ++++++++++++++++++-
languages/messages/MessagesNds.php | 2 +-
languages/messages/MessagesNds_nl.php | 25 +-
languages/messages/MessagesNe.php | 47 +-
languages/messages/MessagesNl.php | 30 +-
languages/messages/MessagesNn.php | 36 +-
languages/messages/MessagesOr.php | 1385 ++++++--
languages/messages/MessagesPa.php | 39 +-
languages/messages/MessagesPcd.php | 4 +-
languages/messages/MessagesPdc.php | 6 +-
languages/messages/MessagesPl.php | 31 +-
languages/messages/MessagesPms.php | 134 +-
languages/messages/MessagesPnb.php | 12 +-
languages/messages/MessagesPrg.php | 138 +-
languages/messages/MessagesPs.php | 153 +-
languages/messages/MessagesPt.php | 42 +-
languages/messages/MessagesPt_br.php | 13 +-
languages/messages/MessagesQqq.php | 92 +-
languages/messages/MessagesQu.php | 160 +-
languages/messages/MessagesQug.php | 4 +-
languages/messages/MessagesRo.php | 21 +-
languages/messages/MessagesRoa_tara.php | 364 +-
languages/messages/MessagesRu.php | 46 +-
languages/messages/MessagesRue.php | 37 +-
languages/messages/MessagesSa.php | 283 +-
languages/messages/MessagesSah.php | 12 +-
languages/messages/MessagesScn.php | 49 +-
languages/messages/MessagesSh.php | 12 +-
languages/messages/MessagesShi.php | 3 +-
languages/messages/MessagesSi.php | 195 +-
languages/messages/MessagesSk.php | 29 +-
languages/messages/MessagesSl.php | 26 +-
languages/messages/MessagesSo.php | 75 +-
languages/messages/MessagesSq.php | 764 +++--
languages/messages/MessagesSr_ec.php | 56 +-
languages/messages/MessagesSr_el.php | 3139 +++++++++--------
languages/messages/MessagesSv.php | 18 +-
languages/messages/MessagesSw.php | 19 +-
languages/messages/MessagesSzl.php | 10 +-
languages/messages/MessagesTa.php | 1256 +++++--
languages/messages/MessagesTcy.php | 273 +-
languages/messages/MessagesTe.php | 35 +-
languages/messages/MessagesTet.php | 12 +-
languages/messages/MessagesTg_latn.php | 43 +-
languages/messages/MessagesTh.php | 182 +-
languages/messages/MessagesTl.php | 37 +-
languages/messages/MessagesTr.php | 64 +-
languages/messages/MessagesTt_cyrl.php | 3 +-
languages/messages/MessagesUk.php | 72 +-
languages/messages/MessagesVep.php | 360 +-
languages/messages/MessagesVi.php | 47 +-
languages/messages/MessagesVo.php | 28 +-
languages/messages/MessagesWar.php | 352 +-
languages/messages/MessagesXmf.php | 2 +-
languages/messages/MessagesYi.php | 45 +-
languages/messages/MessagesYo.php | 944 ++++--
languages/messages/MessagesZea.php | 634 +++-
languages/messages/MessagesZh.php | 6 +
languages/messages/MessagesZh_cn.php | 3 +
languages/messages/MessagesZh_hans.php | 325 +-
languages/messages/MessagesZh_hant.php | 76 +-
maintenance/Maintenance.php | 27 +-
maintenance/cleanupUploadStash.php | 2 +-
maintenance/eval.php | 2 +-
maintenance/importDump.php | 2 +-
.../archives/patch_recentchanges_fk2_cascade.sql | 5 +
maintenance/oracle/tables.sql | 2 +-
.../postgres/archives/patch-uploadstash.sql | 24 +
.../archives/patch-uploadstash_sequence.sql | 2 +
maintenance/postgres/tables.sql | 25 +
maintenance/update.php | 6 +-
resources/Resources.php | 2 +-
resources/jquery/jquery.delayedBind.js | 5 +
resources/mediawiki/mediawiki.js | 49 +-
resources/mediawiki/mediawiki.util.js | 3 +-
skins/common/images/sort_both.gif | Bin 0 -> 1184 bytes
skins/common/images/sort_down.gif | Bin 0 -> 464 bytes
skins/common/images/sort_up.gif | Bin 0 -> 466 bytes
skins/common/mwsuggest.js | 19 +-
tests/parser/parserTest.inc | 2 +-
tests/phpunit/includes/XmlTest.php | 4 +
tests/phpunit/includes/search/SearchUpdateTest.php | 10 +
tests/phpunit/skins/SideBarTest.php | 30 +
tests/qunit/index.html | 2 +
.../resources/jquery/jquery.delayedBind.test.js | 41 +
214 files changed, 24506 insertions(+), 11139 deletions(-)
create mode 100644 maintenance/oracle/archives/patch_recentchanges_fk2_cascade.sql
create mode 100644 maintenance/postgres/archives/patch-uploadstash.sql
create mode 100644 maintenance/postgres/archives/patch-uploadstash_sequence.sql
create mode 100644 skins/common/images/sort_both.gif
create mode 100644 skins/common/images/sort_down.gif
create mode 100644 skins/common/images/sort_up.gif
create mode 100644 tests/qunit/suites/resources/jquery/jquery.delayedBind.test.js
diff --git a/RELEASE-NOTES-1.18 b/RELEASE-NOTES-1.18
index 182d3152..01f750b2 100644
--- a/RELEASE-NOTES-1.18
+++ b/RELEASE-NOTES-1.18
@@ -3,6 +3,41 @@
Security reminder: MediaWiki does not require PHP's register_globals
setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
+== MediaWiki 1.18.1 ==
+2012-01-11
+
+This a maintenance and security release of the MediaWiki 1.18 branch.
+
+=== Security changes ===
+* (bug 33117) prop=revisions allows deleted text to be exposed through cache pollution.
+
+=== Changes since 1.18.0 ===
+* (bug 32712) Fix for search indexing of pages with certain unicode chars following URL.
+* (bug 3901) Lang, hreflang attribs added to sidebar interlanguage links for screen readers.
+* (bug 30774) mediawiki.html: Add support for numbers and booleans in the
+ attribute values and element contents.
+* (bug 32473) [[Special:PasswordReset]] can not be used on private wiki.
+* (bug 32853) Fixed CACHE_DBA object cache type.
+* (bug 32786) Backward compatibility for extension using 1.17's Database::newFromType().
+* Fixed exception when using Special:WhatLinksHere on a Media: file.
+* (bug 32709) Private Wiki users were always taken to Special:Badtitle on login.
+* (bug 33240) Sort images are missing but referenced in css.
+* (bug 31921) Magic words REVISIONDAY, REVISIONMONTH and REVISIONYEAR were
+ not showing their values on preview.
+* (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
+ for backward compatibility.
+* (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
+ when the function exists but is disabled. Introduced Maintenance::posix_isatty().
+* (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
+ cssText after DOM insertion.
+* (bug 29102) Upgrades no longer fail with the error "Unknown character set: 'mysql4'.
+* (bug 25355) Parser generates edit section links for special pages.
+* (bug 33321) Adding a line to MediaWiki:Sidebar that contains a pipe, but doesn't
+ have any pipes after being transformed by MessageCache, causes exception on
+ all pages.
+* Fixed recentchanges FK violation on page delete and cache purge error in updater
+ for Oracle DB.
+
== MediaWiki 1.18 ==
2011-11-24
@@ -150,8 +185,6 @@ Selected changes since MediaWiki 1.17 that may be of interest:
create a page or new section.
* (bug 8130) Query pages should limit to content namespaces, not just main
namespace.
-* Search suggestions (other than in the Vector skin) will now use the HTML5
- datalist feature where supported, currently only Firefox 4.
* Special:Contribs now redirects to Special:Contributions.
* (bug 6672) Images are now autorotated according to their EXIF orientation.
This only affects thumbnails; the source remains unrotated.
@@ -287,10 +320,10 @@ Selected changes since MediaWiki 1.17 that may be of interest:
Same for signupend on the account creation page.
* (bug 31233) New OutputPage::addJsConfigVars() method to make the output page specific
mw.config map extendable.
+* mw.util.wikiScript has been implemented (like wfScript in GlobalFunctions.php).
=== Bug fixes in 1.18 ===
* (bug 27860) Minor edit after clicking 'new section' tab.
-* mw.util.getScript has been implemented (like wfScript in GlobalFunctions.php).
* (bug 23119) WikiError class and subclasses are now marked as deprecated.
* (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
treated as wikitext on preview.
@@ -711,8 +744,8 @@ changes to languages because of Bugzilla reports.
* (bug 27681) Set $namespaceGenderAliases for Portuguese (pt and pt-br).
* (bug 27785) Fallback language for Kabardian (kbd) is English now.
* (bug 27825) Raw watchlist edit message now uses formatted numbers.
-* (bug 28040) Turkish: properly lower case 'I' to 'ı' (dotless i) and
- uppercase 'i' to 'İ' (dotted i).
+* (bug 28040) Turkish: properly lower case 'I' to 'i' (dotless i) and
+ uppercase 'i' to 'I' (dotted i).
* Conversion script between Syllabics and Latin for the Inuktitut language.
* Date formats for Indonesian (id) updated.
* Bhojpuri (bho) (renamed from "bh").
diff --git a/docs/hooks.txt b/docs/hooks.txt
index ca938555..aca0844a 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -567,6 +567,13 @@ $mediaWiki: Mediawiki object
&$out: OutputPage object
&$skin: Skin object
+'BeforePageRedirect': Prior to sending an HTTP redirect. Gives a chance to
+override how the redirect is output by modifying, or by returning false and
+taking over the output.
+$out: OutputPage object
+&$redirect: URL, modifiable
+&$code: HTTP code (eg '301' or '302'), modifiable
+
'BeforeParserFetchFileAndTitle': before an image is rendered by Parser
$parser: Parser object
$nt: the image title
diff --git a/extensions/ConfirmEdit/FancyCaptcha.class.php b/extensions/ConfirmEdit/FancyCaptcha.class.php
index b2f5c10e..61723656 100644
--- a/extensions/ConfirmEdit/FancyCaptcha.class.php
+++ b/extensions/ConfirmEdit/FancyCaptcha.class.php
@@ -72,6 +72,9 @@ class FancyCaptcha extends SimpleCaptcha {
Xml::element( 'input', array(
'name' => 'wpCaptchaWord',
'id' => 'wpCaptchaWord',
+ 'autocorrect' => 'off',
+ 'autocapitalize' => 'off',
+ 'required',
'tabindex' => 1 ) ) . // tab in before the edit textarea
"
\n";
}
diff --git a/extensions/ConfirmEdit/QuestyCaptcha.class.php b/extensions/ConfirmEdit/QuestyCaptcha.class.php
index 478fcf34..90e4b186 100644
--- a/extensions/ConfirmEdit/QuestyCaptcha.class.php
+++ b/extensions/ConfirmEdit/QuestyCaptcha.class.php
@@ -64,7 +64,7 @@ class QuestyCaptcha extends SimpleCaptcha {
global $wgOut;
$wgOut->setPageTitle( wfMsg( 'captchahelp-title' ) );
$wgOut->addWikiText( wfMsg( 'questycaptchahelp-text' ) );
- if ( $this->storage->cookiesNeeded() ) {
+ if ( CaptchaStore::get()->cookiesNeeded() ) {
$wgOut->addWikiText( wfMsg( 'captchahelp-cookies-needed' ) );
}
}
diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php
index 17b154d6..5bc9f067 100644
--- a/includes/AjaxDispatcher.php
+++ b/includes/AjaxDispatcher.php
@@ -68,7 +68,7 @@ class AjaxDispatcher {
* request.
*/
function performAction() {
- global $wgAjaxExportList, $wgOut;
+ global $wgAjaxExportList, $wgOut, $wgUser;
if ( empty( $this->mode ) ) {
return;
@@ -84,6 +84,13 @@ class AjaxDispatcher {
'Bad Request',
"unknown function " . (string) $this->func_name
);
+ } elseif ( !in_array( 'read', User::getGroupPermissions( array( '*' ) ), true )
+ && !$wgUser->isAllowed( 'read' ) )
+ {
+ wfHttpError(
+ 403,
+ 'Forbidden',
+ 'You must log in to view pages.' );
} else {
wfDebug( __METHOD__ . ' dispatching ' . $this->func_name . "\n" );
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 4248add7..9d387fb5 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -33,7 +33,7 @@ $wgConf = new SiteConfiguration;
/** @endcond */
/** MediaWiki version number */
-$wgVersion = '1.18.0';
+$wgVersion = '1.18.1';
/** Name of the site. It must be changed in LocalSettings.php */
$wgSitename = 'MediaWiki';
@@ -1410,6 +1410,8 @@ $wgQueryCacheLimit = 1000;
$wgWantedPagesThreshold = 1;
/** Enable slow parser functions */
$wgAllowSlowParserFunctions = false;
+/** Allow schema updates */
+$wgAllowSchemaUpdates = true;
/**
* Do DELETE/INSERT for link updates instead of incremental
@@ -1511,6 +1513,8 @@ $wgParserCacheType = CACHE_ANYTHING;
* given, giving a callable function which will generate a suitable cache object.
*
* The other parameters are dependent on the class used.
+ * - CACHE_DBA uses $wgTmpDirectory by default. The 'dir' parameter let you
+ * overrides that.
*/
$wgObjectCaches = array(
CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index 419bbdf7..a3a9592d 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -1223,6 +1223,7 @@ class OutputPage extends ContextSource {
public function parserOptions( $options = null ) {
if ( !$this->mParserOptions ) {
$this->mParserOptions = new ParserOptions;
+ $this->mParserOptions->setEditSection( false );
}
return wfSetVar( $this->mParserOptions, $options );
}
@@ -1799,27 +1800,34 @@ class OutputPage extends ContextSource {
if ( $this->mRedirect != '' ) {
# Standards require redirect URLs to be absolute
$this->mRedirect = wfExpandUrl( $this->mRedirect, PROTO_CURRENT );
- if( $this->mRedirectCode == '301' || $this->mRedirectCode == '303' ) {
- if( !$wgDebugRedirects ) {
- $message = HttpStatus::getMessage( $this->mRedirectCode );
- $response->header( "HTTP/1.1 {$this->mRedirectCode} $message" );
+
+ $redirect = $this->mRedirect;
+ $code = $this->mRedirectCode;
+
+ if( wfRunHooks( "BeforePageRedirect", array( $this, &$redirect, &$code ) ) ) {
+ if( $code == '301' || $code == '303' ) {
+ if( !$wgDebugRedirects ) {
+ $message = HttpStatus::getMessage( $code );
+ $response->header( "HTTP/1.1 $code $message" );
+ }
+ $this->mLastModified = wfTimestamp( TS_RFC2822 );
+ }
+ if ( $wgVaryOnXFP ) {
+ $this->addVaryHeader( 'X-Forwarded-Proto' );
+ }
+ $this->sendCacheControl();
+
+ $response->header( "Content-Type: text/html; charset=utf-8" );
+ if( $wgDebugRedirects ) {
+ $url = htmlspecialchars( $redirect );
+ print "\n\nRedirect\n\n\n";
+ print "Location: $url
\n";
+ print "\n\n";
+ } else {
+ $response->header( 'Location: ' . $redirect );
}
- $this->mLastModified = wfTimestamp( TS_RFC2822 );
- }
- if ( $wgVaryOnXFP ) {
- $this->addVaryHeader( 'X-Forwarded-Proto' );
- }
- $this->sendCacheControl();
-
- $response->header( "Content-Type: text/html; charset=utf-8" );
- if( $wgDebugRedirects ) {
- $url = htmlspecialchars( $this->mRedirect );
- print "\n\nRedirect\n\n\n";
- print "Location: $url
\n";
- print "\n\n";
- } else {
- $response->header( 'Location: ' . $this->mRedirect );
}
+
wfProfileOut( __METHOD__ );
return;
} elseif ( $this->mStatusCode ) {
@@ -1959,6 +1967,8 @@ class OutputPage extends ContextSource {
* Produce the stock "please login to use the wiki" page
*/
public function loginToUse() {
+ global $wgRequest;
+
if( $this->getUser()->isLoggedIn() ) {
throw new PermissionsError( 'read' );
}
@@ -1968,12 +1978,18 @@ class OutputPage extends ContextSource {
$this->setRobotPolicy( 'noindex,nofollow' );
$this->setArticleRelated( false );
+ $returnto = Title::newFromURL( $wgRequest->getVal( 'title', '' ) );
+ $returntoquery = array();
+ if( $returnto ) {
+ $returntoquery = array( 'returnto' => $returnto->getPrefixedText() );
+ }
+
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
$loginLink = Linker::linkKnown(
$loginTitle,
wfMsgHtml( 'loginreqlink' ),
array(),
- array( 'returnto' => $this->getTitle()->getPrefixedText() )
+ $returntoquery
);
$this->addHTML( wfMessage( 'loginreqpagetext' )->rawParams( $loginLink )->parse() .
"\n' );
@@ -2387,7 +2403,8 @@ $templates
foreach ( (array) $modules as $name ) {
$module = $resourceLoader->getModule( $name );
# Check that we're allowed to include this module on this page
- if ( ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS )
+ if ( !$module
+ || ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS )
&& $only == ResourceLoaderModule::TYPE_SCRIPTS )
|| ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_STYLES )
&& $only == ResourceLoaderModule::TYPE_STYLES )
@@ -2603,12 +2620,15 @@ $templates
/**
* Get an array containing the variables to be set in mw.config in JavaScript.
*
+ * DO NOT CALL THIS FROM OUTSIDE OF THIS CLASS OR Skin::makeGlobalVariablesScript().
+ * This is only public until that function is removed. You have been warned.
+ *
* Do not add things here which can be evaluated in ResourceLoaderStartupScript
* - in other words, page-indendent/site-wide variables (without state).
* You will only be adding bloat to the html page and causing page caches to
* have to be purged on configuration changes.
*/
- protected function getJSVars() {
+ public function getJSVars() {
global $wgUseAjax, $wgEnableMWSuggest, $wgContLang;
$title = $this->getTitle();
@@ -2955,7 +2975,11 @@ $templates
$styles = array( 'other' => array(), 'user' => array(), 'site' => array(), 'private' => array(), 'noscript' => array() );
$resourceLoader = $this->getResourceLoader();
foreach ( $this->getModuleStyles() as $name ) {
- $group = $resourceLoader->getModule( $name )->getGroup();
+ $module = $resourceLoader->getModule( $name );
+ if ( !$module ) {
+ continue;
+ }
+ $group = $module->getGroup();
// Modules in groups named "other" or anything different than "user", "site" or "private"
// will be placed in the "other" group
$styles[isset( $styles[$group] ) ? $group : 'other'][] = $name;
diff --git a/includes/RequestContext.php b/includes/RequestContext.php
index 37617457..441a9aec 100644
--- a/includes/RequestContext.php
+++ b/includes/RequestContext.php
@@ -64,6 +64,13 @@ interface IContextSource {
*/
public function getLang();
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLanguage();
+
/**
* Get the Skin object
*
@@ -233,6 +240,15 @@ class RequestContext implements IContextSource {
return $this->lang;
}
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLanguage() {
+ return $this->getLang();
+ }
+
/**
* Set the Skin object
*
@@ -378,6 +394,15 @@ abstract class ContextSource implements IContextSource {
return $this->getContext()->getLang();
}
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLanguage() {
+ return $this->getContext()->getLang();
+ }
+
/**
* Get the Skin object
*
diff --git a/includes/Skin.php b/includes/Skin.php
index a713660c..62a63ebe 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -402,6 +402,20 @@ abstract class Skin extends ContextSource {
wfProfileOut( __METHOD__ );
}
+ /**
+ * Make a
+
@@ -69,6 +70,7 @@
+
diff --git a/tests/qunit/suites/resources/jquery/jquery.delayedBind.test.js b/tests/qunit/suites/resources/jquery/jquery.delayedBind.test.js
new file mode 100644
index 00000000..8688f12e
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.delayedBind.test.js
@@ -0,0 +1,41 @@
+test('jquery.delayedBind with data option', function() {
+ var $fixture = $('').appendTo('body'),
+ data = { magic: "beeswax" },
+ delay = 50;
+
+ $fixture.delayedBind(delay, 'testevent', data, function(event) {
+ start(); // continue!
+ ok(true, 'testevent fired');
+ ok(event.data === data, 'data is passed through delayedBind');
+ });
+
+ expect(2);
+ stop(); // async!
+
+ // We'll trigger it thrice, but it should only happen once.
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+});
+
+test('jquery.delayedBind without data option', function() {
+ var $fixture = $('
').appendTo('body'),
+ data = { magic: "beeswax" },
+ delay = 50;
+
+ $fixture.delayedBind(delay, 'testevent', function(event) {
+ start(); // continue!
+ ok(true, 'testevent fired');
+ });
+
+ expect(1);
+ stop(); // async!
+
+ // We'll trigger it thrice, but it should only happen once.
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+ $fixture.trigger('testevent', {});
+});
+
--
cgit v1.2.3-54-g00ecf