From e2ba8f7591569bf7406392834dcb8c938d481147 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 15 Sep 2016 16:28:42 +0000 Subject: [PATCH] Revert "Remove jquery.arrowSteps module" It should probably be deprecated first after all. This reverts commit 6fba9a7dc6ac969676c57f85b09bbdac9067a2bd. Bug: T144974 Change-Id: I830fbfc2e453be6b18d43775a8aa1a366690907c --- RELEASE-NOTES-1.28 | 1 - jsduck.json | 1 + resources/Resources.php | 5 + .../images/jquery.arrowSteps.divider-ltr.png | Bin 0 -> 126 bytes .../images/jquery.arrowSteps.divider-rtl.png | Bin 0 -> 126 bytes .../images/jquery.arrowSteps.head-ltr.png | Bin 0 -> 301 bytes .../images/jquery.arrowSteps.head-rtl.png | Bin 0 -> 297 bytes .../images/jquery.arrowSteps.tail-ltr.png | Bin 0 -> 222 bytes .../images/jquery.arrowSteps.tail-rtl.png | Bin 0 -> 219 bytes resources/src/jquery/jquery.arrowSteps.css | 45 ++++++++ resources/src/jquery/jquery.arrowSteps.js | 98 ++++++++++++++++++ 11 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 resources/src/jquery/images/jquery.arrowSteps.divider-ltr.png create mode 100644 resources/src/jquery/images/jquery.arrowSteps.divider-rtl.png create mode 100644 resources/src/jquery/images/jquery.arrowSteps.head-ltr.png create mode 100644 resources/src/jquery/images/jquery.arrowSteps.head-rtl.png create mode 100644 resources/src/jquery/images/jquery.arrowSteps.tail-ltr.png create mode 100644 resources/src/jquery/images/jquery.arrowSteps.tail-rtl.png create mode 100644 resources/src/jquery/jquery.arrowSteps.css create mode 100644 resources/src/jquery/jquery.arrowSteps.js diff --git a/RELEASE-NOTES-1.28 b/RELEASE-NOTES-1.28 index 116dc2ad88..1f4b8dc75b 100644 --- a/RELEASE-NOTES-1.28 +++ b/RELEASE-NOTES-1.28 @@ -169,7 +169,6 @@ changes to languages because of Phabricator reports. 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 == diff --git a/jsduck.json b/jsduck.json index ad955063bc..5b183656ab 100644 --- a/jsduck.json +++ b/jsduck.json @@ -19,6 +19,7 @@ "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", diff --git a/resources/Resources.php b/resources/Resources.php index ff39537cb1..63c349079a 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -165,6 +165,11 @@ return [ ], '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', ], diff --git a/resources/src/jquery/images/jquery.arrowSteps.divider-ltr.png b/resources/src/jquery/images/jquery.arrowSteps.divider-ltr.png new file mode 100644 index 0000000000000000000000000000000000000000..84ed2a2d63a11217814941e9f6775b47df1daea3 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^T0rd2!3-o}-#`(@ zk|4ie28U-i(tsQ_PZ!6Kid%0_Eo5Y1;9y?x^Z(_28t<8 literal 0 HcmV?d00001 diff --git a/resources/src/jquery/images/jquery.arrowSteps.divider-rtl.png b/resources/src/jquery/images/jquery.arrowSteps.divider-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..c212aeb7c3196912639d2a39dee3870175b08089 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^T0rd2!3-oZ%-{`WMJT6Uhwn(<$W8LF&cSh`&>5h{d}+__Il~v$Gauf W7y>@L_#+C`!QkoY=d#Wzp$PyQ;V3)+ literal 0 HcmV?d00001 diff --git a/resources/src/jquery/images/jquery.arrowSteps.head-ltr.png b/resources/src/jquery/images/jquery.arrowSteps.head-ltr.png new file mode 100644 index 0000000000000000000000000000000000000000..e6546bfd10473358eb44e4f365fc2e4566296232 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)`!g{ENmd*7JwS>xz$e7@{`+6cumAl2|G$|1 z37{$l=8_=4;Q#*_uAky{1adEUx;TbZFg`hN$auhkgJnaqBa4v#t<`VBggcvAjNgm< z-u<=nYw7F9*Mhg#<<;K(wd3oRwezFnx7+2}mcD*|?fTmOXn&%Wd_I&FA%5-pxmsZc zh9d?7w|UI|FtVKR6xbK;zm|Qj;J);*V#oC7*Nm5&I6imTmYx^ibj~;X{GL@DR{ATd zo^4IJP$_xWc)vo^x&Gzze%`(D_EnwHbf2uoHC&vktdreTnpe%V`6hOg-7Z}uA{Xd4 N22WQ%mvv4FO#qFZiGctB literal 0 HcmV?d00001 diff --git a/resources/src/jquery/images/jquery.arrowSteps.head-rtl.png b/resources/src/jquery/images/jquery.arrowSteps.head-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..2af30b96146248a0a215888e573df5e510dfaea8 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)`!g{ENmd*7JwS>xz$e7@|NsBXum8ON{@0Eb zUz~x0j3q&S!3+-1ZlnP@=R92;Ln;{G-f?Few$rQhzQ(-TNv;6@!hQSgUcY|m`DXUn$Q#>> zZdb(~*|*nH==ZmWu5YZ1l{dbxi9Nh;w~5lXyR(HizVBPpQTrVzbGlY=qyBl{Bm3rr t3I6_c-Sy4tP{pM9SSi8ZSphq5LE(o-mN7DWD)_{43pIDYziYqa$Gy+&;`giV4<7w~ufE{p-uKcm tHShnhh~KxK4-`5F68f*bV}|`-#+E_!@p)8Ogi7*Y}Edu*fN0S5u5jrpG>oV*s6q^F6#ysKYPzV~j$hj&%G zKR&qowe0c1-LKysYc9WjyO;g_y6w{Z_hR$S<@W5pmuCZ0m>ly%ls}II;ygPC%i@Wd TADLKzZej3r^>bP0l+XkK*Kk)E literal 0 HcmV?d00001 diff --git a/resources/src/jquery/jquery.arrowSteps.css b/resources/src/jquery/jquery.arrowSteps.css new file mode 100644 index 0000000000..d24fcc950e --- /dev/null +++ b/resources/src/jquery/jquery.arrowSteps.css @@ -0,0 +1,45 @@ +.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; +} diff --git a/resources/src/jquery/jquery.arrowSteps.js b/resources/src/jquery/jquery.arrowSteps.js new file mode 100644 index 0000000000..b0c36c6548 --- /dev/null +++ b/resources/src/jquery/jquery.arrowSteps.js @@ -0,0 +1,98 @@ +/*! + * 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. + * + *
    + *
  • Guard!
  • + *
  • Turn!
  • + *
  • Parry!
  • + *
  • Dodge!
  • + *
  • Spin!
  • + *
  • Ha!
  • + *
  • Thrust!
  • + *
+ * + * + * + * @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 ) ); -- 2.20.1