Deepali has uploaded a new change for review. https://gerrit.wikimedia.org/r/141301
Change subject: Implement options to format text to improve readability ...................................................................... Implement options to format text to improve readability Bug:65329 Change-Id: I1ac4ef10a08f398a0907f33853480e2bc557f920 --- M BookManagerv2.hooks.php M BookManagerv2.php M i18n/en.json A images/Gear_font_awesome.png A images/dark.png A images/justify.png A images/left_align.png A images/light.png A images/right_align.png M modules/ext.BookManagerv2.css M modules/ext.BookManagerv2.js M modules/ext.BookManagerv2js.css 12 files changed, 291 insertions(+), 11 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BookManagerv2 refs/changes/01/141301/1 diff --git a/BookManagerv2.hooks.php b/BookManagerv2.hooks.php index 5af91b0..e80b833 100644 --- a/BookManagerv2.hooks.php +++ b/BookManagerv2.hooks.php @@ -73,7 +73,7 @@ * @return string HTML string */ public static function readingInterfaceUX( $prev, $next, $chapterList, $metadata, - $currentPageTitle + $currentPageTitle, $readabiltyOptions ) { if ( $prev === null && $next === null && $chapterList === null && $metadata === null ) { @@ -86,6 +86,23 @@ $html = Html::openElement( 'div', array( 'class' => 'mw-bookmanagerv2-nav-wrap' ) ) . Html::openElement( 'div', array( 'class' => 'mw-bookmanagerv2-nav-constrain' ) ) . Html::openElement( 'div', array( 'class' => 'mw-bookmanagerv2-nav-bar' ) ); + if ( $readabiltyOptions ) { + $imgHtml = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'Gear_font_awesome.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $html .= Linker::link( + $currentPageTitle, + $imgHtml, + array( 'class' => array( + 'mw-bookmanagerv2-nav-icon', + 'mw-bookmanagerv2-nav-read-opt' ) ), + array(), + array() + ); + } if ( $metadata ) { $imgHtml = Html::element( 'img', array( 'class' => 'mw-bookmanagerv2-nav-data', @@ -145,6 +162,14 @@ ); } $html .= Html::closeElement( 'div' ) + . Html::openElement( 'div', array() ) + . Html::rawElement( 'div', array( + 'class' => array( + 'mw-bookmanagerv2-nav-dropdown', + 'mw-bookmanagerv2-nav-read-opt' ) + ), + $readabiltyOptions + ) . Html::rawElement( 'div', array( 'class' => array( 'mw-bookmanagerv2-nav-dropdown', @@ -163,6 +188,7 @@ ), $chapterList ) + . Html::closeElement( 'div' ) . Html::closeElement( 'div' ) . Html::closeElement( 'div' ) . Html::closeElement( 'div' ); @@ -422,6 +448,172 @@ } /** + * Generates HTML for the readability options. + * + * @return string HTML unordered list element + */ + public static function createReadabilityOptions() { + $html = ''; + global $wgExtensionAssetsPath; + $imagePath = $wgExtensionAssetsPath . "/BookManagerv2/images/"; + $leftImg = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'left_align.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $rightImg = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'right_align.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $justImg = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'justify.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $lightImg = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'light.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $darkImg = Html::element( 'img', array( + 'class' => 'mw-bookmanagerv2-nav-read-opt', + 'src' => $imagePath . 'dark.png', + 'alt' => wfMessage( 'bookmanagerv2-read-opt' )->text(), + 'title' => wfMessage( 'bookmanagerv2-read-opt' )->text() + ), '' ); + $fontOptions = Html::openElement( 'optgroup', array( + 'style' => 'font-family:sans-serif' + ) ) + . Html::rawElement( 'option', array( + 'value' => 'sans-serif' + ), + 'Sans-Serif' + ) + . Html::closeElement( 'optgroup' ) + . Html::openElement( 'optgroup', array( + 'style' => 'font-family:serif' + ) ) + . Html::rawElement( 'option', array( + 'value' => 'serif' + ), + 'Serif' + ) + . Html::closeElement( 'optgroup' ) + . Html::openElement( 'optgroup', array( + 'style' => 'font-family:Trebuchet MS' + ) ) + . Html::rawElement( 'option', array( + 'value' => 'Trebuchet MS' + ), + 'Trebuchet MS' + ) + . Html::closeElement( 'optgroup' ) + . Html::openElement( 'optgroup', array( + 'style' => 'font-family:Verdana' + ) ) + . Html::rawElement( 'option', array( + 'value' => 'Verdana' + ), + 'Verdana' + ) + . Html::closeElement( 'optgroup' ) + . Html::openElement( 'optgroup', array( + 'style' => 'font-family:Georgia' + ) ) + . Html::rawElement( 'option', array( + 'value' => 'Georgia' + ), + 'Georgia' + ) + . Html::closeElement( 'optgroup' ); + $html .= Html::openElement( 'ul', array() ) + . Html::openElement( 'li', array() ) + . Html::rawElement( 'span', array( + 'class' => 'mw-bookmanagerv2-read-opt-label' + ), 'Text Size:' ) + . Html::rawElement( 'input', array( + 'type' => 'range', + 'class' => 'mw-bookmanagerv2-size', + 'value' => '90', + 'min ' => '75', + 'max ' => '250' + ), + '' + ) + . Html::closeElement( 'li' ) + . Html::openElement( 'li', array() ) + . Html::rawElement( 'span', array( + 'class' => 'mw-bookmanagerv2-read-opt-label' + ), 'Font:' ) + . Html::openElement( 'select', array( + 'class' => 'mw-bookmanagerv2-font', + 'name' => 'mw-bookmanagerv2-font' + ), + '' + ) + . $fontOptions + . Html::closeElement( 'select' ) + . Html::closeElement( 'li' ) + . Html::openElement( 'li', array() ) + . Html::rawElement( 'span', array( + 'class' => 'mw-bookmanagerv2-read-opt-label' + ), 'Linespacing:' ) + . Html::rawElement( 'input', array( + 'type' => 'range', + 'class' => 'mw-bookmanagerv2-line-spacing', + 'name' => 'mw-bookmanagerv2-line-spacing', + 'min ' => '100', + 'max ' => '300', + 'value' => '180' + ), + '' + ) + . Html::closeElement( 'li' ) + . Html::openElement( 'li', array() ) + . Html::rawElement( 'span', array( + 'class' => 'mw-bookmanagerv2-read-opt-label' + ), 'Justification:' ) + . Html::rawElement( 'button', array( + 'class' => 'mw-bookmanagerv2-left-align' + ), + $leftImg + ) + . Html::rawElement( 'button', array( + 'class' => 'mw-bookmanagerv2-right-align' + ), + $rightImg + ) + . Html::rawElement( 'button', array( + 'class' => 'mw-bookmanagerv2-justify' + ), + $justImg + ) + . Html::closeElement( 'li' ) + . Html::openElement( 'li', array() ) + . Html::rawElement( 'span', array( + 'class' => 'mw-bookmanagerv2-read-opt-label' + ), 'Background:' ) + . Html::rawElement( 'button', array( + 'class' => 'mw-bookmanagerv2-light-bg' + ), + $lightImg + ) + . Html::rawElement( 'button', array( + 'class' => 'mw-bookmanagerv2-dark-bg' + ), + $darkImg + ) + . Html::closeElement( 'li' ) + . Html::closeElement( 'ul' ); + return $html; + } + + /** * Adds the navigation bar if the page is in the mainspace, and if it contains * a category of the format [[Category:Book:Book Title]], where * [[Book:Book Title]] is an existing page that contains a valid JSON @@ -431,7 +623,7 @@ global $wgContentNamespaces, $wgBookManagerv2NavigationNamespaces, $wgBookManagerv2Metadata, $wgBookManagerv2ChapterList, $wgBookManagerv2PrevNext, $wgBookManagerv2JsonFrontend, - $wgBookManagerv2NavigationBars; + $wgBookManagerv2NavigationBars, $wgBookManagerv2ReadabilityOptions; $request = $out->getRequest(); @@ -540,8 +732,13 @@ } else { $metadata = null; } + if ( $wgBookManagerv2ReadabilityOptions ) { + $readabilityOptions = self::createReadabilityOptions(); + } else { + $readabilityOptions = null; + } $navbar = self::readingInterfaceUX( $prev, $next, $chapterList, - $metadata, $jsonPageTitle ); + $metadata, $jsonPageTitle, $readabilityOptions ); $out->prependHtml( $navbar ); } } else if ( $out->getTitle()->inNamespace( NS_BOOK ) && $wgBookManagerv2JsonFrontend ) { diff --git a/BookManagerv2.php b/BookManagerv2.php index 378bb86..b5c2ae8 100644 --- a/BookManagerv2.php +++ b/BookManagerv2.php @@ -226,6 +226,12 @@ /** * @var bool + * If set to false, this hides the readability options from the navigation bar. + */ +$wgBookManagerv2ReadabilityOptions = true; + +/** + * @var bool * If set to false, this hides the previous/next links from the navigation bar. */ $wgBookManagerv2PrevNext = true; diff --git a/i18n/en.json b/i18n/en.json index 550d007..25b21c7 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -83,5 +83,6 @@ "bookmanagerv2-rename-title": "Rename this section", "bookmanagerv2-sections-complete-notification": "No more sections to add", "bookmanagerv2-import-sections-placeholder": "Title of the page to import table of contents from.", - "bookmanagerv2-import-sections-title": "Import table of contents" + "bookmanagerv2-import-sections-title": "Import table of contents", + "bookmanagerv2-read-opt": "Change readability settings" } \ No newline at end of file diff --git a/images/Gear_font_awesome.png b/images/Gear_font_awesome.png new file mode 100644 index 0000000..02f6b27 --- /dev/null +++ b/images/Gear_font_awesome.png Binary files differ diff --git a/images/dark.png b/images/dark.png new file mode 100644 index 0000000..a921d75 --- /dev/null +++ b/images/dark.png Binary files differ diff --git a/images/justify.png b/images/justify.png new file mode 100644 index 0000000..4e3f8bd --- /dev/null +++ b/images/justify.png Binary files differ diff --git a/images/left_align.png b/images/left_align.png new file mode 100644 index 0000000..4e5565d --- /dev/null +++ b/images/left_align.png Binary files differ diff --git a/images/light.png b/images/light.png new file mode 100644 index 0000000..4fc73d1 --- /dev/null +++ b/images/light.png Binary files differ diff --git a/images/right_align.png b/images/right_align.png new file mode 100644 index 0000000..d379b85 --- /dev/null +++ b/images/right_align.png Binary files differ diff --git a/modules/ext.BookManagerv2.css b/modules/ext.BookManagerv2.css index 7d72747..cc6473b 100644 --- a/modules/ext.BookManagerv2.css +++ b/modules/ext.BookManagerv2.css @@ -88,3 +88,18 @@ ol li.indent-5 { margin-left: 50px; } + +.mw-bookmanagerv2-read-opt-label { + display: inline-block; + width: 40%; +} + +.mw-bookmanagerv2-nav-read-opt button { + padding: 6px; + margin: 6px; +} + +.mw-bookmanagerv2-nav-read-opt button img { + width: 18px; + height: 17px; +} \ No newline at end of file diff --git a/modules/ext.BookManagerv2.js b/modules/ext.BookManagerv2.js index eb836e9..39bd31e 100644 --- a/modules/ext.BookManagerv2.js +++ b/modules/ext.BookManagerv2.js @@ -20,15 +20,16 @@ // If the metadata dropdown doesn't exist and the table of // contents one does, shift the TOC one left - if ( $( 'a.mw-bookmanagerv2-nav-data' ).length === 0 - && $( 'a.mw-bookmanagerv2-nav-toc' ).length !== 0 ) { - $( 'div.mw-bookmanagerv2-nav-toc' ).css( 'margin-left', '0px' ); - } + // if ( $( 'a.mw-bookmanagerv2-nav-data' ).length === 0 + // && $( 'a.mw-bookmanagerv2-nav-read-opt' ).length === 0 + // && $( 'a.mw-bookmanagerv2-nav-toc' ).length !== 0 ) { + // $( 'div.mw-bookmanagerv2-nav-toc' ).css( 'margin-left', '0px' ); + // } // When the metadata icon is clicked, hide the table // of contents dropdown and toggle the metadata one $( 'a.mw-bookmanagerv2-nav-data' ).click( function () { - $( 'div.mw-bookmanagerv2-nav-toc' ).hide(); + $( 'div.mw-bookmanagerv2-nav-data' ).siblings().hide(); $( 'div.mw-bookmanagerv2-nav-data' ).toggle(); return false; }); @@ -36,9 +37,52 @@ // When the contents icon is clicked, hide the metadata // dropdown and toggle the table of contents one $( 'a.mw-bookmanagerv2-nav-toc' ).click( function () { - $( 'div.mw-bookmanagerv2-nav-data' ).hide(); + $( 'div.mw-bookmanagerv2-nav-toc' ).siblings().hide(); $( 'div.mw-bookmanagerv2-nav-toc' ).toggle(); return false; }); + // When the contents icon is clicked, hide the metadata + // dropdown and toggle the table of contents one + $( 'a.mw-bookmanagerv2-nav-read-opt' ).click( function () { + $( 'div.mw-bookmanagerv2-nav-read-opt' ).siblings().hide(); + $( 'div.mw-bookmanagerv2-nav-read-opt' ).toggle(); + return false; + }); + + $( '.mw-bookmanagerv2-left-align' ).click( function () { + $( 'div#mw-content-text p' ).css( 'text-align', 'left' ); + }); + + $( '.mw-bookmanagerv2-right-align' ).click( function () { + $( 'div#mw-content-text p' ).css( 'text-align', 'right' ); + }); + + $( '.mw-bookmanagerv2-justify' ).click( function () { + $( 'div#mw-content-text p' ).css( 'text-align', 'justify' ); + }); + + $( '.mw-bookmanagerv2-light-bg' ).click( function () { + $( 'div#mw-content-text' ).removeClass( 'darkbg' ); + $( 'div#mw-content-text p' ).css( 'color', '#252525' ); + }); + + $( '.mw-bookmanagerv2-dark-bg' ).click( function () { + $( 'div#mw-content-text' ).removeClass( 'lightbg' ); + $( 'div#mw-content-text' ).addClass( 'darkbg' ); + $( 'div#mw-content-text p' ).css( 'color', '#ffffff' ); + }); + + $( '.mw-bookmanagerv2-font' ).change( function () { + $( 'div#mw-content-text p' ).css( 'font-family', $( this ).val() ); + }); + + $( '.mw-bookmanagerv2-size' ).change( function () { + $( 'div#mw-content-text p' ).css( 'font-size', $( this ).val() + '%' ); + }); + + $( '.mw-bookmanagerv2-line-spacing' ).change( function () { + $( 'div#mw-content-text p' ).css( 'line-height', $( this ).val() + '%' ); + }); + }(jQuery)); diff --git a/modules/ext.BookManagerv2js.css b/modules/ext.BookManagerv2js.css index 85735b5..b83b4e3 100644 --- a/modules/ext.BookManagerv2js.css +++ b/modules/ext.BookManagerv2js.css @@ -58,8 +58,20 @@ margin: 0; } -div.mw-bookmanagerv2-nav-toc { +div.mw-bookmanagerv2-nav-1 { + margin-left: 0px; +} + +div.mw-bookmanagerv2-nav-2 { margin-left: 45px; +} + +div.mw-bookmanagerv2-nav-3 { + margin-left: 90px; +} + +div.mw-bookmanagerv2-nav-3 { + margin-left: 135px; } div.mw-bookmanagerv2-nav-dropdown .title { @@ -89,3 +101,8 @@ span.mw-bookmanagerv2-link-divider { margin: 0 2px; } + +.darkbg { + background-color: #3f3f3f; + padding: 14px; +} \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/141301 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1ac4ef10a08f398a0907f33853480e2bc557f920 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/BookManagerv2 Gerrit-Branch: master Gerrit-Owner: Deepali <djdeepalijain...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits