phpunit.php: --regex and --keep-uploads. Instead of --regex, use --filter.
Instead of --keep-uploads, use the same option to parserTests.php, but you
must specify a directory with --upload-dir.
-* The 'jquery.arrowSteps' ResourceLoader module was removed.
== Compatibility ==
);
$this->rlExemptStyleModules = $exemptGroups;
- // Manually handled by getBottomScripts()
- $userModule = $rl->getModule( 'user' );
- $userState = $userModule->isKnownEmpty( $context ) && !$this->isUserJsPreview()
- ? 'ready'
- : 'loading';
- $this->rlUserModuleState = $exemptStates['user'] = $userState;
+ $isUserModuleFiltered = !$this->filterModules( [ 'user' ] );
+ // If this page filters out 'user', makeResourceLoaderLink will drop it.
+ // Avoid indefinite "loading" state or untrue "ready" state (T145368).
+ if ( !$isUserModuleFiltered ) {
+ // Manually handled by getBottomScripts()
+ $userModule = $rl->getModule( 'user' );
+ $userState = $userModule->isKnownEmpty( $context ) && !$this->isUserJsPreview()
+ ? 'ready'
+ : 'loading';
+ $this->rlUserModuleState = $exemptStates['user'] = $userState;
+ }
$rlClient = new ResourceLoaderClientHtml( $context, $this->getTarget() );
$rlClient->setConfig( $this->getJSVars() );
"resources/src/mediawiki.toolbar",
"resources/src/mediawiki.widgets",
"resources/src/jquery/jquery.accessKeyLabel.js",
+ "resources/src/jquery/jquery.arrowSteps.js",
"resources/src/jquery/jquery.autoEllipsis.js",
"resources/src/jquery/jquery.badge.js",
"resources/src/jquery/jquery.byteLength.js",
"tog-enotifminoredits": "Email me also for minor edits of pages and files",
"tog-enotifrevealaddr": "Reveal my email address in notification emails",
"tog-shownumberswatching": "Show the number of watching users",
- "tog-oldsig": "Existing signature:",
+ "tog-oldsig": "Your existing signature:",
"tog-fancysig": "Treat signature as wikitext (without an automatic link)",
"tog-uselivepreview": "Use live preview",
"tog-forceeditsummary": "Prompt me when entering a blank edit summary",
"tog-showhiddencats": "Show hidden categories",
"tog-norollbackdiff": "Don't show diff after performing a rollback",
"tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes",
- "tog-prefershttps": "Always use a secure connection when logged in",
+ "tog-prefershttps": "Always use a secure connection while logged in",
"underline-always": "Always",
"underline-never": "Never",
"underline-default": "Skin or browser default",
"category-file-count-limited": "The following {{PLURAL:$1|file is|$1 files are}} in the current category.",
"listingcontinuesabbrev": "cont.",
"index-category": "Indexed pages",
- "noindex-category": "Noindexed pages",
+ "noindex-category": "Non-indexed pages",
"broken-file-category": "Pages with broken file links",
"categoryviewer-pagedlinks": "($1) ($2)",
"category-header-numerals": "$1–$2",
"newwindow": "(opens in new window)",
"cancel": "Cancel",
"moredotdotdot": "More...",
- "morenotlisted": "This list is not complete.",
+ "morenotlisted": "This list may be incomplete.",
"mypage": "Page",
"mytalk": "Talk",
"anontalk": "Talk",
* @author Yanteng3
*/
+$fallback = 'zh-hant'; // T125373
+
$specialPageAliases = [
'Activeusers' => [ '躍簿' ],
'Allmessages' => [ '官話' ],
],
'scripts' => 'resources/lib/jquery/jquery.appear.js',
],
+ 'jquery.arrowSteps' => [
+ 'scripts' => 'resources/src/jquery/jquery.arrowSteps.js',
+ 'styles' => 'resources/src/jquery/jquery.arrowSteps.css',
+ 'targets' => [ 'desktop', 'mobile' ],
+ ],
'jquery.async' => [
'scripts' => 'resources/lib/jquery/jquery.async.js',
],
--- /dev/null
+.arrowSteps {
+ list-style-type: none;
+ list-style-image: none;
+ border: 1px solid #666;
+ position: relative;
+}
+
+.arrowSteps li {
+ float: left;
+ padding: 0px;
+ margin: 0px;
+ border: 0 none;
+}
+
+.arrowSteps li div {
+ padding: 0.5em;
+ text-align: center;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.arrowSteps li.arrow div {
+ /* @embed */
+ background: url( images/jquery.arrowSteps.divider-ltr.png ) no-repeat right center;
+}
+
+/* applied to the element preceding the highlighted step */
+.arrowSteps li.arrow.tail div {
+ /* @embed */
+ background: url( images/jquery.arrowSteps.tail-ltr.png ) no-repeat right center;
+}
+
+/* this applies to all highlighted, including the last */
+.arrowSteps li.head div {
+ /* @embed */
+ background: url( images/jquery.arrowSteps.head-ltr.png ) no-repeat left center;
+ font-weight: bold;
+}
+
+/* this applies to all highlighted arrows except the last */
+.arrowSteps li.arrow.head div {
+ /* TODO: eliminate duplication of jquery.arrowSteps.head.png embedding */
+ /* @embed */
+ background: url( images/jquery.arrowSteps.head-ltr.png ) no-repeat right center;
+}
--- /dev/null
+/*!
+ * jQuery arrowSteps plugin
+ * Copyright Neil Kandalgaonkar, 2010
+ *
+ * This work is licensed under the terms of the GNU General Public License,
+ * version 2 or later.
+ * (see http://www.fsf.org/licensing/licenses/gpl.html).
+ * Derivative works and later versions of the code must be free software
+ * licensed under the same or a compatible license.
+ */
+
+/**
+ * @class jQuery.plugin.arrowSteps
+ */
+( function ( $ ) {
+ /**
+ * Show users their progress through a series of steps, via a row of items that fit
+ * together like arrows. One item can be highlighted at a time.
+ *
+ * <ul id="robin-hood-daffy">
+ * <li id="guard"><div>Guard!</div></li>
+ * <li id="turn"><div>Turn!</div></li>
+ * <li id="parry"><div>Parry!</div></li>
+ * <li id="dodge"><div>Dodge!</div></li>
+ * <li id="spin"><div>Spin!</div></li>
+ * <li id="ha"><div>Ha!</div></li>
+ * <li id="thrust"><div>Thrust!</div></li>
+ * </ul>
+ *
+ * <script>
+ * $( '#robin-hood-daffy' ).arrowSteps();
+ * </script>
+ *
+ * @return {jQuery}
+ * @chainable
+ */
+ $.fn.arrowSteps = function () {
+ var $steps, width, arrowWidth, $stepDiv,
+ $el = this,
+ paddingSide = $( 'body' ).hasClass( 'rtl' ) ? 'padding-left' : 'padding-right';
+
+ $el.addClass( 'arrowSteps' );
+ $steps = $el.find( 'li' );
+
+ width = parseInt( 100 / $steps.length, 10 );
+ $steps.css( 'width', width + '%' );
+
+ // Every step except the last one has an arrow pointing forward:
+ // at the right hand side in LTR languages, and at the left hand side in RTL.
+ // Also add in the padding for the calculated arrow width.
+ $stepDiv = $steps.filter( ':not(:last-child)' ).addClass( 'arrow' ).find( 'div' );
+
+ // Execute when complete page is fully loaded, including all frames, objects and images
+ $( window ).on( 'load', function () {
+ arrowWidth = parseInt( $el.outerHeight(), 10 );
+ $stepDiv.css( paddingSide, arrowWidth.toString() + 'px' );
+ } );
+
+ $el.data( 'arrowSteps', $steps );
+
+ return this;
+ };
+
+ /**
+ * Highlights the element selected by the selector.
+ *
+ * $( '#robin-hood-daffy' ).arrowStepsHighlight( '#guard' );
+ * // 'Guard!' is highlighted.
+ *
+ * // ... user completes the 'guard' step ...
+ *
+ * $( '#robin-hood-daffy' ).arrowStepsHighlight( '#turn' );
+ * // 'Turn!' is highlighted.
+ *
+ * @param {string} selector
+ */
+ $.fn.arrowStepsHighlight = function ( selector ) {
+ var $previous,
+ $steps = this.data( 'arrowSteps' );
+ $.each( $steps, function ( i, step ) {
+ var $step = $( step );
+ if ( $step.is( selector ) ) {
+ if ( $previous ) {
+ $previous.addClass( 'tail' );
+ }
+ $step.addClass( 'head' );
+ } else {
+ $step.removeClass( 'head tail lasthead' );
+ }
+ $previous = $step;
+ } );
+ };
+
+ /**
+ * @class jQuery
+ * @mixins jQuery.plugin.arrowSteps
+ */
+}( jQuery ) );