jenkins-bot has submitted this change and it was merged.
Change subject: Add pagination support
......................................................................
Add pagination support
Number of discs/pages is set up up front based on the total number of
suggestions.
Pages are rendered on demand, and buttons are enabled/disabled,
corresponding with the discs.
Works for any number of suggestions (0 is already handled, 1 to 9
works with the dynamic pagination)
For IE, show only IE 8+ for now.
Change-Id: I8423168691e8cd9e7a0c6b39d8ffca80195403df
---
M GettingStarted.php
M i18n/en.json
M i18n/qqq.json
A resources/lightbulb/images/next-disabled.png
A resources/lightbulb/images/next-disabled.svg
A resources/lightbulb/images/next.png
A resources/lightbulb/images/next.svg
A resources/lightbulb/images/prev-disabled.png
A resources/lightbulb/images/prev-disabled.svg
A resources/lightbulb/images/prev.png
A resources/lightbulb/images/prev.svg
M resources/lightbulb/lightbulb.flyout.js
M resources/lightbulb/lightbulb.flyout.less
M resources/lightbulb/lightbulb.postEdit.js
R resources/lightbulb/lightbulb.suggestionRenderer.js
15 files changed, 415 insertions(+), 20 deletions(-)
Approvals:
Phuedx: Looks good to me, approved
jenkins-bot: Verified
diff --git a/GettingStarted.php b/GettingStarted.php
index e3666e4..5718118 100644
--- a/GettingStarted.php
+++ b/GettingStarted.php
@@ -192,6 +192,7 @@
// should be extracted from the GuidedTour library, but, for
// now, it's enough to emulate it.
'ext.guidedTour.styles',
+ 'jquery.client',
'mediawiki.user',
'schema.TaskRecommendationLightbulbClick',
),
@@ -199,6 +200,8 @@
'gettingstarted-lightbulb-recommendations-personal-tool',
'gettingstarted-lightbulb-heading',
'gettingstarted-lightbulb-text',
+ 'gettingstarted-lightbulb-flyout-back',
+ 'gettingstarted-lightbulb-flyout-next',
)
) + $gettingStartedModuleInfo;
@@ -206,7 +209,7 @@
'styles' => 'lightbulb/lightbulb.common.less',
'scripts' => array(
'lightbulb/lightbulb.parser.js',
- 'lightbulb/lightbulb.suggestionView.js',
+ 'lightbulb/lightbulb.suggestionRenderer.js',
),
'dependencies' => array(
'mediawiki.util',
diff --git a/i18n/en.json b/i18n/en.json
index ce7cba4..a2a33d1 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -70,5 +70,7 @@
"gettingstarted-lightbulb-notification-body-lastedited": "Edited $1",
"gettingstarted-lightbulb-recommendations-personal-tool":
"Recommendations",
"gettingstarted-lightbulb-heading": "Pages to improve",
- "gettingstarted-lightbulb-text": "Recommended based on your last edit."
+ "gettingstarted-lightbulb-text": "Recommended based on your last edit.",
+ "gettingstarted-lightbulb-flyout-back": "Back",
+ "gettingstarted-lightbulb-flyout-next": "Next"
}
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 5fe5d49..c099e62 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -72,5 +72,7 @@
"gettingstarted-lightbulb-notification-body-lastedited": "When the
similar article was last edited. Parameters:\n* $1 - Time from now string
generated by moment.js",
"gettingstarted-lightbulb-recommendations-personal-tool": "The title of
the Recommendations personal tool.\n{{Identical|Recommendation}}",
"gettingstarted-lightbulb-heading": "Heading on the flyout that the
user sees when they use the Recommendations personal tool.",
- "gettingstarted-lightbulb-text": "Text on the flyout that the user sees
when they use the Recommendations personal tool."
+ "gettingstarted-lightbulb-text": "Text on the flyout that the user sees
when they use the Recommendations personal tool.",
+ "gettingstarted-lightbulb-flyout-back": "Title text of button that
shows previous suggestions in Recommendations flyout, if any",
+ "gettingstarted-lightbulb-flyout-next": "Title text of button that
shows next suggestions in Recommendations flyout, if any"
}
diff --git a/resources/lightbulb/images/next-disabled.png
b/resources/lightbulb/images/next-disabled.png
new file mode 100644
index 0000000..42e7109
--- /dev/null
+++ b/resources/lightbulb/images/next-disabled.png
Binary files differ
diff --git a/resources/lightbulb/images/next-disabled.svg
b/resources/lightbulb/images/next-disabled.svg
new file mode 100644
index 0000000..b6cf30c
--- /dev/null
+++ b/resources/lightbulb/images/next-disabled.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version:
6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 14 14"
+ enable-background="new 0 0 56 56"
+ xml:space="preserve"
+ inkscape:version="0.48.5 r10040"
+ width="100%"
+ height="100%"
+ sodipodi:docname="next-disabled.svg"
+
inkscape:export-filename="/home/matthew/Code/Wikimedia/vagrant-latest/mediawiki/extensions/GettingStarted/resources/lightbulb/images/next-disabled.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><metadata
+ id="metadata2997"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs2995" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview2993"
+ showgrid="false"
+ fit-margin-left="3.15"
+ fit-margin-right="3.15"
+ fit-margin-top="0.9"
+ fit-margin-bottom="0.9"
+ inkscape:zoom="4.2142857"
+ inkscape:cx="5.85"
+ inkscape:cy="7.8"
+ inkscape:window-x="295"
+ inkscape:window-y="59"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" /><g
+ id="g2987"
+ transform="translate(-22.15,-21.8)"><g
+ id="g2989"><polygon
+ points="25.3,24.3 26.9,22.7 33,28.8 26.9,34.9 25.3,33.2 29.8,28.8 "
+ id="polygon2991"
+ style="fill:#cccccc" /></g></g></svg>
\ No newline at end of file
diff --git a/resources/lightbulb/images/next.png
b/resources/lightbulb/images/next.png
new file mode 100644
index 0000000..ab5f688
--- /dev/null
+++ b/resources/lightbulb/images/next.png
Binary files differ
diff --git a/resources/lightbulb/images/next.svg
b/resources/lightbulb/images/next.svg
new file mode 100644
index 0000000..1d3d43a
--- /dev/null
+++ b/resources/lightbulb/images/next.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version:
6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 14 14"
+ enable-background="new 0 0 56 56"
+ xml:space="preserve"
+ inkscape:version="0.48.5 r10040"
+ width="100%"
+ height="100%"
+ sodipodi:docname="next.svg"
+
inkscape:export-filename="/home/matthew/Code/Wikimedia/vagrant-latest/mediawiki/extensions/GettingStarted/resources/lightbulb/images/next.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1366"
+ inkscape:window-height="714"
+ id="namedview3006"
+ showgrid="false"
+ fit-margin-left="3.15"
+ fit-margin-right="3.15"
+ fit-margin-top="0.9"
+ fit-margin-bottom="0.9"
+ inkscape:zoom="4.2142857"
+ inkscape:cx="5.85"
+ inkscape:cy="7.8"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" /><g
+ id="g3000"
+ transform="translate(-22.15,-21.8)"><g
+ id="g3002"><polygon
+ points="25.3,24.3 26.9,22.7 33,28.8 26.9,34.9 25.3,33.2 29.8,28.8 "
+ id="polygon3004"
+ style="fill:#7a7a7a" /></g></g></svg>
\ No newline at end of file
diff --git a/resources/lightbulb/images/prev-disabled.png
b/resources/lightbulb/images/prev-disabled.png
new file mode 100644
index 0000000..da4170e
--- /dev/null
+++ b/resources/lightbulb/images/prev-disabled.png
Binary files differ
diff --git a/resources/lightbulb/images/prev-disabled.svg
b/resources/lightbulb/images/prev-disabled.svg
new file mode 100644
index 0000000..1df0e3d
--- /dev/null
+++ b/resources/lightbulb/images/prev-disabled.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version:
6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 14 14"
+ enable-background="new 0 0 56 56"
+ xml:space="preserve"
+ inkscape:version="0.48.5 r10040"
+ width="100%"
+ height="100%"
+ sodipodi:docname="prev-disabled.svg"
+
inkscape:export-filename="/home/matthew/Code/Wikimedia/vagrant-latest/mediawiki/extensions/GettingStarted/resources/lightbulb/images/prev-disabled.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><metadata
+ id="metadata3023"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3021" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1366"
+ inkscape:window-height="714"
+ id="namedview3019"
+ showgrid="false"
+ fit-margin-top="0.9"
+ fit-margin-left="3.15"
+ fit-margin-right="3.15"
+ fit-margin-bottom="0.9"
+ inkscape:zoom="4.2142857"
+ inkscape:cx="5.85"
+ inkscape:cy="7.7999998"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" /><g
+ id="g3013"
+ transform="translate(-22.15,-21.8)"><g
+ id="g3015"><polygon
+ points="31.4,22.7 33,24.3 28.6,28.8 33,33.2 31.4,34.9 25.3,28.8 "
+ id="polygon3017"
+ style="fill:#cccccc" /></g></g></svg>
\ No newline at end of file
diff --git a/resources/lightbulb/images/prev.png
b/resources/lightbulb/images/prev.png
new file mode 100644
index 0000000..429d99b
--- /dev/null
+++ b/resources/lightbulb/images/prev.png
Binary files differ
diff --git a/resources/lightbulb/images/prev.svg
b/resources/lightbulb/images/prev.svg
new file mode 100644
index 0000000..a937f3f
--- /dev/null
+++ b/resources/lightbulb/images/prev.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version:
6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 14 14"
+ enable-background="new 0 0 56 56"
+ xml:space="preserve"
+ inkscape:version="0.48.5 r10040"
+ width="100%"
+ height="100%"
+ sodipodi:docname="prev.svg"><metadata
+ id="metadata13"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/></cc:Work></rdf:RDF></metadata><defs
+ id="defs11" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1366"
+ inkscape:window-height="714"
+ id="namedview9"
+ showgrid="false"
+ fit-margin-top="0.9"
+ fit-margin-left="3.15"
+ fit-margin-right="3.15"
+ fit-margin-bottom="0.9"
+ inkscape:zoom="4.2142857"
+ inkscape:cx="5.8499997"
+ inkscape:cy="7.8000001"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Layer_1" /><g
+ id="g3"
+ transform="translate(-22.15,-21.8)"><g
+ id="g5"><polygon
+ points="31.4,22.7 33,24.3 28.6,28.8 33,33.2 31.4,34.9 25.3,28.8 "
+ id="polygon7"
+ style="fill:#7a7a7a" /></g></g></svg>
\ No newline at end of file
diff --git a/resources/lightbulb/lightbulb.flyout.js
b/resources/lightbulb/lightbulb.flyout.js
index 5739a26..8bedcf8 100644
--- a/resources/lightbulb/lightbulb.flyout.js
+++ b/resources/lightbulb/lightbulb.flyout.js
@@ -1,11 +1,17 @@
( function ( mw, $ ) {
- var flyoutTemplate =
+ var MAX_SUGGESTION_PER_PAGE_COUNT = 3,
+ MAX_PAGE_COUNT = 3,
+ flyoutTemplate =
'<div class="lightbulb-flyout guider">\
<h1></h1>\
<p></p>\
<ol class="lightbulb-suggestions">\
</ol>\
+ <div
class="mw-gettingstarted-lightbulb-flyout-pagination">\
+ <button class="mw-ui-button
mw-gettingstarted-lightbulb-flyout-pagination-button-icon
mw-gettingstarted-lightbulb-flyout-back"></button>\
+ <button class="mw-ui-button
mw-gettingstarted-lightbulb-flyout-pagination-button-icon
mw-gettingstarted-lightbulb-flyout-next"></button>\
+ </div>\
<div class="guider_arrow guider_arrow_up
guider_arrow_center">\
<div
class="guider_arrow_inner_container">\
<div
class="guider_arrow_inner"></div>\
@@ -18,7 +24,9 @@
</li>',
POKEY_HEIGHT = 42, // (px) (See mediawiki.libs.guiders.js, L183)
FLYOUT_WIDTH = 390, // (px)
- parser = new mw.gettingStarted.lightbulb.Parser();
+ parser = new mw.gettingStarted.lightbulb.Parser(),
+ suggestionRenderer = new
mw.gettingStarted.lightbulb.SuggestionRenderer(),
+ currentFlyoutPageIndex; // 0-based
function renderFlyout() {
@@ -31,17 +39,91 @@
return $flyout;
}
+ /**
+ * Adds the suggestions to the flyout. This sets up pagination and
shows the
+ * first page of suggestions.
+ *
+ * @param {jQuery} $flyout Flyout jQuery set
+ * @param {Array} suggestions Array of suggestions from the parser
+ */
function addSuggestionsToFlyout( $flyout, suggestions ) {
- var $suggestions = $flyout.find( '.lightbulb-suggestions' ),
- suggestionView = new
mw.gettingStarted.lightbulb.SuggestionView();
+ var $nextButton,
+ $pagination = $flyout.find(
'.mw-gettingstarted-lightbulb-flyout-pagination' ),
+ pageCount = Math.ceil( suggestions.length /
MAX_SUGGESTION_PER_PAGE_COUNT ),
+ i;
- $.each( suggestions, function ( i, suggestion ) {
- var $suggestion = suggestionView.render( suggestion ),
- $li = $( '<li></li>' ).append( $suggestion );
+ $pagination.find( '.mw-gettingstarted-lightbulb-flyout-back' )
+ .attr( 'title', mw.msg(
'gettingstarted-lightbulb-flyout-back' ) )
+ .click( function () {
+ currentFlyoutPageIndex--;
+ renderFlyoutPage( $flyout, suggestions,
currentFlyoutPageIndex, pageCount );
+ } );
- $suggestions.append( $li );
- } );
+
+ $nextButton = $pagination
+ .find( '.mw-gettingstarted-lightbulb-flyout-next' )
+ .attr( 'title', mw.msg(
'gettingstarted-lightbulb-flyout-next' ) )
+ .click( function () {
+ currentFlyoutPageIndex++;
+ renderFlyoutPage( $flyout, suggestions,
currentFlyoutPageIndex, pageCount );
+ } );
+ if ( pageCount > 1 ) {
+ for ( i = 0; i < pageCount; i++ ) {
+ $( '<span> ' )
+ .attr( 'class',
'mw-gettingstarted-lightbulb-flyout-pagination-disc' )
+ .text( '●' )
+ .insertBefore( $nextButton );
+ }
+ } else {
+ $pagination.hide();
+ }
+
+ currentFlyoutPageIndex = 0;
+ renderFlyoutPage( $flyout, suggestions, currentFlyoutPageIndex,
pageCount );
}
+
+ /**
+ * Updates the flyout to render a particular page
+ *
+ * @param {jQuery} $flyout jQuery set for flyout
+ * @param {Array} suggestions Full list of suggestions
+ * @param {Number} pageIndex Page index to show, 0-based
+ * @param {Number} pageCount Number of pages
+ */
+ function renderFlyoutPage( $flyout, suggestions, pageIndex, pageCount )
{
+ var $suggestions = $flyout.find( '.lightbulb-suggestions' ),
+ $newSuggestions = $( '<ol>' ).attr( 'class',
'lightbulb-suggestions' ),
+ suggestion,
+ $suggestion,
+ $prevButton,
+ $nextButton,
+ suggestionStartIndex = pageIndex *
MAX_SUGGESTION_PER_PAGE_COUNT,
+ $li,
+ i;
+
+ for ( i = 0; i < MAX_SUGGESTION_PER_PAGE_COUNT && (
suggestionStartIndex + i ) < suggestions.length; i++ ) {
+ suggestion = suggestions[suggestionStartIndex + i];
+ $suggestion = suggestionRenderer.render( suggestion );
+ $li = $( '<li></li>' ).append( $suggestion );
+
+ $newSuggestions.append( $li );
+ }
+
+ // There can be 0 discs, in which case this is a noop.
+ $flyout.find(
'.mw-gettingstarted-lightbulb-flyout-pagination-disc' )
+ .removeClass(
'mw-gettingstarted-lightbulb-flyout-selected-page' )
+ .eq( pageIndex )
+ .addClass(
'mw-gettingstarted-lightbulb-flyout-selected-page' );
+
+ $prevButton = $flyout.find(
'.mw-gettingstarted-lightbulb-flyout-back' )
+ .prop( 'disabled', pageIndex === 0 );
+
+ $nextButton = $flyout.find(
'.mw-gettingstarted-lightbulb-flyout-next' )
+ .prop( 'disabled', pageIndex === ( pageCount - 1 ) );
+
+ $suggestions.replaceWith( $newSuggestions );
+ }
+
function renderLightbulb() {
var $lightbulb = $( lightbulbTemplate );
@@ -70,7 +152,14 @@
} );
}
- $( function () {
+ // TODO (mattflaschen, 2014-08-11): Generate this server-side
+ // hide it for no JS, and by default, and show it if it's a supported
browser
+ // (or hide it for blacklisted ones)
+
+ /**
+ * Adds lightbulb icon (for flyout) and renders flyout except
suggestions
+ */
+ function addFlyout() {
var $lightbulb = renderLightbulb(),
$flyout = renderFlyout();
@@ -94,7 +183,7 @@
.done( function ( title ) {
api.getSuggestions( {
excludedTitle: title,
- count: 3,
+ count:
MAX_SUGGESTION_PER_PAGE_COUNT * MAX_PAGE_COUNT,
thumbSize: 70
} ).done( function ( response ) {
var suggestions = parser.parse(
response );
@@ -111,6 +200,14 @@
$( '#p-personal ul' ).prepend( $lightbulb );
$( document.body ).append( $flyout );
- } );
+ }
+ $( function () {
+ // This will return true for IE >= 8 and non-IE browsers
+ if ( $.client.test( {
+ msie: [ [ '>=', 8 ] ]
+ } ) ) {
+ addFlyout();
+ }
+ } );
} ( mediaWiki, jQuery ) );
diff --git a/resources/lightbulb/lightbulb.flyout.less
b/resources/lightbulb/lightbulb.flyout.less
index 9803849..5f3906b 100644
--- a/resources/lightbulb/lightbulb.flyout.less
+++ b/resources/lightbulb/lightbulb.flyout.less
@@ -1,5 +1,6 @@
@import "mediawiki.ui/variables";
@import "mediawiki.mixins";
+@import "mediawiki.ui/variables";
@flyoutWidth: 390px;
@@ -38,6 +39,67 @@
}
}
+.mw-gettingstarted-lightbulb-flyout-pagination {
+ margin-top: 35px;
+ text-align: center;
+}
+
+// Also override corresponding .mw-ui-button states, since they don't work for
the icon
+.mw-gettingstarted-lightbulb-flyout-pagination-button-icon,
+.mw-gettingstarted-lightbulb-flyout-pagination-button-icon.mw-ui-button:active,
+.mw-gettingstarted-lightbulb-flyout-pagination-button-icon.mw-ui-button[disabled]:hover
{
+ background-color: #fff;
+ width: 60px;
+ height: 40px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 14px 14px;
+ padding: 12px 22px;
+}
+
+.mw-gettingstarted-lightbulb-flyout-back,
+.mw-gettingstarted-lightbulb-flyout-back.mw-ui-button:active {
+ margin-right: 17px;
+ .background-image-svg('images/prev.svg', 'images/prev.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-back[disabled],
+.mw-gettingstarted-lightbulb-flyout-back[disabled]:hover {
+ .background-image-svg('images/prev-disabled.svg',
'images/prev-disabled.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-next,
+.mw-gettingstarted-lightbulb-flyout-next.mw-ui-button:active {
+ margin-left: 17px;
+ .background-image-svg('images/next.svg', 'images/next.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-next[disabled],
+.mw-gettingstarted-lightbulb-flyout-next[disabled]:hover {
+ .background-image-svg('images/next-disabled.svg',
'images/next-disabled.png');
+}
+
+.mw-gettingstarted-lightbulb-flyout-pagination-disc {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ cursor: default;
+
+ font-size: 22px;
+
+ vertical-align: middle;
+
+ color: @colorGray13;
+}
+
+.mw-gettingstarted-lightbulb-flyout-pagination-disc.mw-gettingstarted-lightbulb-flyout-selected-page
{
+ color: @colorGray7;
+}
+
.lightbulb-suggestions {
list-style-type: none;
margin: 0;
diff --git a/resources/lightbulb/lightbulb.postEdit.js
b/resources/lightbulb/lightbulb.postEdit.js
index df3da0c..b027f8f 100644
--- a/resources/lightbulb/lightbulb.postEdit.js
+++ b/resources/lightbulb/lightbulb.postEdit.js
@@ -15,13 +15,13 @@
function createNotification( suggestions, headerMsg ) {
var $notification = $( notificationTemplate ),
$notificationBody = $notification.find(
'.lightbulb-notification-body' ),
- suggestionView = new
mw.gettingStarted.lightbulb.SuggestionView();
+ suggestionRenderer = new
mw.gettingStarted.lightbulb.SuggestionRenderer();
$notification.find( 'h1' ).text( headerMsg );
$notificationBody.find( 'p' ).text( notificationBodyMsg );
$.each( suggestions, function ( i, suggestion ) {
- $notificationBody.append( suggestionView.render(
suggestion ) );
+ $notificationBody.append( suggestionRenderer.render(
suggestion ) );
} );
$notification.find( '.lightbulb-notification-hide' )
diff --git a/resources/lightbulb/lightbulb.suggestionView.js
b/resources/lightbulb/lightbulb.suggestionRenderer.js
similarity index 90%
rename from resources/lightbulb/lightbulb.suggestionView.js
rename to resources/lightbulb/lightbulb.suggestionRenderer.js
index 0f04909..d43cfd8 100644
--- a/resources/lightbulb/lightbulb.suggestionView.js
+++ b/resources/lightbulb/lightbulb.suggestionRenderer.js
@@ -11,9 +11,9 @@
</div>\
</div>';
- function SuggestionView() {}
+ function SuggestionRenderer() {}
- SuggestionView.prototype.render = function( suggestion ) {
+ SuggestionRenderer.prototype.render = function( suggestion ) {
var $result = $( template ),
lastEdited,
url = mw.util.getUrl( suggestion.title );
@@ -57,6 +57,6 @@
mw.gettingStarted = mw.gettingStarted || {};
mw.gettingStarted.lightbulb = mw.gettingStarted.lightbulb || {};
- mw.gettingStarted.lightbulb.SuggestionView = SuggestionView;
+ mw.gettingStarted.lightbulb.SuggestionRenderer = SuggestionRenderer;
} ( mediaWiki, jQuery ) );
--
To view, visit https://gerrit.wikimedia.org/r/151267
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8423168691e8cd9e7a0c6b39d8ffca80195403df
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/GettingStarted
Gerrit-Branch: master
Gerrit-Owner: Mattflaschen <[email protected]>
Gerrit-Reviewer: Mattflaschen <[email protected]>
Gerrit-Reviewer: Phuedx <[email protected]>
Gerrit-Reviewer: Robmoen <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Swalling <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits