Tpt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/87527


Change subject: Major refactoring of the JS part of the page edition system
......................................................................

Major refactoring of the JS part of the page edition system

Reduce size of module folder names.
Create a new module specific for the edition of page pages.
Improve the page edition UI
Fix a small bug with Page: without index page

Change-Id: I8195325d7b17b3675792139f43593ee50e6e7096
---
M ProofreadPage.body.php
M ProofreadPage.i18n.php
M ProofreadPage.php
M includes/page/EditProofreadPagePage.php
R modules/article/ext.proofreadpage.article.js
A modules/ext.proofreadpage.base.css
D modules/ext.proofreadpage.base/ext.proofreadpage.base.css
D modules/ext.proofreadpage.index/ext.proofreadpage.index.js
D modules/ext.proofreadpage.page/ext.proofreadpage.page.css
D modules/ext.proofreadpage.page/ext.proofreadpage.page.js
R modules/index/ext.proofreadpage.index.css
A modules/index/ext.proofreadpage.index.js
R modules/index/images/help-question.gif
R modules/jquery/jquery.panZoom.js
A modules/page/ext.proofreadpage.page.css
A modules/page/ext.proofreadpage.page.edit.css
A modules/page/ext.proofreadpage.page.edit.js
A modules/page/ext.proofreadpage.page.js
R modules/page/images/Button_category_plus.png
R modules/page/images/Button_examine.png
R modules/page/images/Button_multicol.png
R modules/page/images/Button_pan_down.png
R modules/page/images/Button_pan_left.png
R modules/page/images/Button_pan_right.png
R modules/page/images/Button_pan_up.png
R modules/page/images/Button_zoom_in.png
R modules/page/images/Button_zoom_out.png
27 files changed, 321 insertions(+), 286 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ProofreadPage 
refs/changes/27/87527/1

diff --git a/ProofreadPage.body.php b/ProofreadPage.body.php
index 01de00d..85fa49a 100644
--- a/ProofreadPage.body.php
+++ b/ProofreadPage.body.php
@@ -876,7 +876,7 @@
                if( $title->inNamespace( self::getPageNamespaceId() ) ) {
                        $page = ProofreadPagePage::newFromTitle( $title );
                        $indexPage = $page->getIndex();
-                       if ( $indexPage !== null ) {
+                       if ( $indexPage ) {
                                list( $prevTitle, $nextTitle ) = 
$indexPage->getPreviousAndNextPages( $page->getTitle() );
                                if ( $prevTitle !== null ) {
                                        if( !$prevTitle->exists() ) {
diff --git a/ProofreadPage.i18n.php b/ProofreadPage.i18n.php
index 524573b..022ae68 100644
--- a/ProofreadPage.i18n.php
+++ b/ProofreadPage.i18n.php
@@ -89,7 +89,6 @@
        'proofreadpage-indexoai-eprint-content-text' => 'Metadata of books 
managed by ProofreadPage.',
        'proofreadpage-indexoai-error-schemanotfound' => 'Schema not found',
        'proofreadpage-indexoai-error-schemanotfound-text' => 'The $1 schema 
have not been found.',
-       'proofreadpage-toggle-headerfooter' => 'Toggle this area',
        'proofreadpage-disambiguationspage' => 'Template:disambig',
 );
 
@@ -191,7 +190,6 @@
        'proofreadpage-indexoai-error-schemanotfound' => 'Title of the error 
when a requested XML Schema does not exist.',
        'proofreadpage-indexoai-error-schemanotfound-text' => 'Text of the 
error when a requested XML schema does not exist. Parameters:
 * $1 is name of the schema.',
-       'proofreadpage-toggle-headerfooter' => 'Toggle the visibility of 
header/footer input area',
        'proofreadpage-disambiguationspage' => 'This message is the name of the 
template used for marking disambiguation pages. It is used to find all pages 
which link to disambiguation pages.
 
 {{doc-important|Don\'t translate the "Template:" part!}}
diff --git a/ProofreadPage.php b/ProofreadPage.php
index c7ef0a2..62bf6c3 100644
--- a/ProofreadPage.php
+++ b/ProofreadPage.php
@@ -99,21 +99,22 @@
 );
 $wgResourceModules += array(
        'jquery.panZoom' => $prpResourceTemplate + array(
-               'scripts' => 'jquery.panZoom/jquery.panZoom.js'
+               'scripts' => 'jquery/jquery.panZoom.js',
+               'dependencies' => array( 'jquery.ui.draggable' )
        ),
        'ext.proofreadpage.base' => $prpResourceTemplate + array(
-               'styles'  => 
'ext.proofreadpage.base/ext.proofreadpage.base.css',
+               'styles'  => 'ext.proofreadpage.base.css',
        ),
        'ext.proofreadpage.page' => $prpResourceTemplate + array(
-               'scripts' => 'ext.proofreadpage.page/ext.proofreadpage.page.js',
-               'styles'  => 
'ext.proofreadpage.page/ext.proofreadpage.page.css',
-               'dependencies' => array( 'ext.proofreadpage.base', 
'mediawiki.legacy.wikibits', 'mediawiki.util', 'jquery.panZoom' ),
+               'styles'  => 'page/ext.proofreadpage.page.css',
+               'scripts' => 'page/ext.proofreadpage.page.js',
+               'dependencies' => array( 'ext.proofreadpage.base', 
'jquery.panZoom' )
+       ),
+       'ext.proofreadpage.page.edit' => $prpResourceTemplate + array(
+               'styles'  => 'page/ext.proofreadpage.page.edit.css',
+               'scripts' => 'page/ext.proofreadpage.page.edit.js',
+               'dependencies' => array( 'ext.proofreadpage.page', 
'mediawiki.user' ),
                'messages' => array(
-                       'proofreadpage_header',
-                       'proofreadpage_body',
-                       'proofreadpage_footer',
-                       'proofreadpage_toggleheaders',
-                       'proofreadpage_page_status',
                        'proofreadpage_quality0_category',
                        'proofreadpage_quality1_category',
                        'proofreadpage_quality2_category',
@@ -128,16 +129,15 @@
                        'proofreadpage-button-zoom-in-label',
                        'proofreadpage-button-toggle-layout-label',
                        'proofreadpage-preferences-showheaders-label',
-                       'proofreadpage-toggle-headerfooter',
                )
        ),
        'ext.proofreadpage.article' => $prpResourceTemplate + array(
-               'scripts' => 
'ext.proofreadpage.article/ext.proofreadpage.article.js',
+               'scripts' => 'article/ext.proofreadpage.article.js',
                'dependencies' => array( 'ext.proofreadpage.base' )
        ),
        'ext.proofreadpage.index' => $prpResourceTemplate + array(
-               'scripts' => 
'ext.proofreadpage.index/ext.proofreadpage.index.js',
-               'styles'  => 
'ext.proofreadpage.index/ext.proofreadpage.index.css',
+               'scripts' => 'index/ext.proofreadpage.index.js',
+               'styles'  => 'index/ext.proofreadpage.index.css',
                'dependencies' => array( 'ext.proofreadpage.base', 
'jquery.tipsy' )
        ),
 );
diff --git a/includes/page/EditProofreadPagePage.php 
b/includes/page/EditProofreadPagePage.php
index 4513eaf..0e5a300 100644
--- a/includes/page/EditProofreadPagePage.php
+++ b/includes/page/EditProofreadPagePage.php
@@ -74,24 +74,25 @@
                $wgOut->addHTML(
                        Html::openElement( 'div', array( 'class' => 
'prp-page-container' )  ) .
                        Html::openElement( 'div', array( 'class' => 
'prp-page-content' ) ) .
-                       Html::openElement( 'div', array( 'class' => 'wpHeader') 
) .
-                       Html::element( 'label', array( 'for' => 
'wpHeaderTextbox'), wfMessage( 'proofreadpage_header' ) ) .
+                       Html::openElement( 'div', array( 'class' => 
'prp-page-edit-header' ) ) .
+                       Html::element( 'label', array( 'for' => 
'wpHeaderTextbox' ), wfMessage( 'proofreadpage_header' )->text() ) .
                        Html::textarea( 'wpHeaderTextbox', 
$content->getHeader(), $headerAttributes ) .
-                       Html::element( 'button', array( 'name' => 'hideHeader', 
'type' => 'button' ), wfMessage( 'proofreadpage-toggle-headerfooter' )->plain() 
) .
                        Html::closeElement( 'div' ) .
-                       Html::element( 'label', array( 'for' => 'wpTextbox1'), 
wfMessage( 'proofreadpage_body' ) ) .
+                       Html::openElement( 'div', array( 'class' => 
'prp-page-edit-body' ) ) .
+                       Html::element( 'label', array( 'for' => 'wpTextbox1' ), 
wfMessage( 'proofreadpage_body' )->text() ) .
                        Html::textarea( 'wpTextbox1', $content->getBody(), 
$bodyAttributes ) .
-                       Html::openElement( 'div', array( 'class' => 'wpFooter') 
) .
-                       Html::element( 'label', array( 'for' => 
'wpFooterTextbox'), wfMessage( 'proofreadpage_footer' ) ) .
                        Html::closeElement( 'div' ) .
+                       Html::openElement( 'div', array( 'class' => 
'prp-page-edit-footer' ) ) .
+                       Html::element( 'label', array( 'for' => 
'wpFooterTextbox' ), wfMessage( 'proofreadpage_footer' )->text() ) .
                        Html::textarea( 'wpFooterTextbox', 
$content->getFooter(), $footerAttributes ) .
-                       Html::element( 'button', array( 'name' => 'hideFooter', 
'type' => 'button' ), wfMessage( 'proofreadpage-toggle-headerfooter' )->plain() 
) .
+                       Html::closeElement( 'div' ) .
                        Html::closeElement( 'div' ) .
                        Html::openElement( 'div', array( 'class' => 
'prp-page-image' ) ) .
                        $page->getImageHtml( array( 'max-width' => 800 ) ) .
                        Html::closeElement( 'div' ) .
                        Html::closeElement( 'div' )
                );
+               $wgOut->addModules( 'ext.proofreadpage.page.edit' );
        }
 
        /**
diff --git a/modules/ext.proofreadpage.article/ext.proofreadpage.article.js 
b/modules/article/ext.proofreadpage.article.js
similarity index 100%
rename from modules/ext.proofreadpage.article/ext.proofreadpage.article.js
rename to modules/article/ext.proofreadpage.article.js
diff --git a/modules/ext.proofreadpage.base.css 
b/modules/ext.proofreadpage.base.css
new file mode 100644
index 0000000..b0165bb
--- /dev/null
+++ b/modules/ext.proofreadpage.base.css
@@ -0,0 +1,16 @@
+/* Quality links */
+.quality4 {
+       background-color: #90ff90;
+}
+.quality3 {
+       background-color: #ffe867;
+}
+.quality2 {
+       background-color: #b0b0ff;
+}
+.quality1 {
+       background-color: #ffa0a0;
+}
+.quality0 {
+       background-color: #ddd;
+}
\ No newline at end of file
diff --git a/modules/ext.proofreadpage.base/ext.proofreadpage.base.css 
b/modules/ext.proofreadpage.base/ext.proofreadpage.base.css
deleted file mode 100644
index bcb455b..0000000
--- a/modules/ext.proofreadpage.base/ext.proofreadpage.base.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Quality links */
-.quality4 {
-       background-color: #90ff90;
-}
-.quality3 {
-       background-color: #ffe867;
-}
-.quality2 {
-       background-color: #b0b0ff;
-}
-.quality1 {
-       background-color: #ffa0a0;
-}
-.quality0 {
-       background-color: #ddd;
-}
-
-/* Presentation of page pages */
-/*TODO: ie6 and ie7 support*/
-.prp-page-container {
-       display: table;
-       width: 100%;
-}
-.prp-page-image {
-       display: table-cell;
-       width: 50%;
-       vertical-align: top;
-       overflow: hidden;
-       position: absolute;
-}
-.prp-page-content {
-       display: table-cell;
-       width: 50%;
-       padding-right: 0.5em;
-       vertical-align: top;
-       position: relative;
-}
-#prp-page-qualityheader {
-       width: 100%;
-}
diff --git a/modules/ext.proofreadpage.index/ext.proofreadpage.index.js 
b/modules/ext.proofreadpage.index/ext.proofreadpage.index.js
deleted file mode 100644
index 4d41492..0000000
--- a/modules/ext.proofreadpage.index/ext.proofreadpage.index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Author : ThomasV - License : GPL
-
-// the index template is a system message.
-// another message in i18n lists the parameters
-
-jQuery( function( $ ) {
-
-       // Set up the help system
-       $( '.prp-help-field' ).tipsy( {
-               'gravity': 'nw'
-       } );
-});
diff --git a/modules/ext.proofreadpage.page/ext.proofreadpage.page.css 
b/modules/ext.proofreadpage.page/ext.proofreadpage.page.css
deleted file mode 100644
index d445e96..0000000
--- a/modules/ext.proofreadpage.page/ext.proofreadpage.page.css
+++ /dev/null
@@ -1,21 +0,0 @@
-#prp_header,
-#prp_footer {
-       line-height: 1.5em;
-}
-
-#prp_header label,
-#prp_footer label {
-       color: gray;
-       font-size: 80%;
-}
-
-/* Adjustments for WikiEditor extension */
-.wikiEditor-ui-text #wpTextbox1,
-.wikiEditor-ui-text #wpHeaderTextbox,
-.wikiEditor-ui-text #wpFooterTextbox {
-       border: none;
-       padding: 0;
-       line-height: 1.5em;
-       margin: 0 !important;
-       resize: vertical;
-}
\ No newline at end of file
diff --git a/modules/ext.proofreadpage.page/ext.proofreadpage.page.js 
b/modules/ext.proofreadpage.page/ext.proofreadpage.page.js
deleted file mode 100644
index 756dec8..0000000
--- a/modules/ext.proofreadpage.page/ext.proofreadpage.page.js
+++ /dev/null
@@ -1,169 +0,0 @@
-// Author : ThomasV - License : GPL
-
-( function( $, mw ) {
-       $( "input[name='wpQuality']" ).click( function() {
-               var text = mw.msg( 'proofreadpage_quality' + this.value + 
'_category' );
-               document.editform.elements[ 'wpSummary' ].value = '/* ' + text 
+ ' */ ';
-       });
-
-       $( "button[name='hideHeader']" ).click( function() {
-               if ( $( "textarea[id='wpHeaderTextbox']" ).is( ":visible" ) ) {
-                       $( "textarea[id='wpHeaderTextbox']" ).hide();
-                       $( "button[name='hideHeader']" ).text( mw.msg( 
'proofreadpage-toggle-headerfooter' ) );
-               } else {
-                       $( "textarea[id='wpHeaderTextbox']" ).show();
-                       $( "button[name='hideHeader']" ).text( mw.msg( 
'proofreadpage-toggle-headerfooter' ) );
-               }
-       } );
-       $( "button[name='hideFooter']" ).click( function() {
-               if ( $( "textarea[id='wpFooterTextbox']" ).is(":visible") ) {
-                       $( "textarea[id='wpFooterTextbox']" ).hide();
-                       $( "button[name='hideFooter']" ).text( mw.msg( 
'proofreadpage-toggle-headerfooter' ) );
-               } else {
-                       $( "textarea[id='wpFooterTextbox']" ).show();
-                       $( "button[name='hideFooter']" ).text( mw.msg( 
'proofreadpage-toggle-headerfooter' ) );
-               }
-       } );
-} ( jQuery, mediaWiki ) );
-
-function initPanZoom() {
-       $('.prp-page-image img').panZoom({
-               'debug' : false
-       });
-}
-
-function prStartup() {
-       jQuery( function() {
-               prAddButtons();
-               initPanZoom();
-       });
-}
-
-function prAddButtons() {
-
-       if( !proofreadPageIsEdit ) {
-               return;
-       }
-       var tools = {
-               'section': 'proofreadpage-tools',
-               'groups': {
-                       'zoom': {
-                               'label': mw.msg( 'proofreadpage-group-zoom' ),
-                               'tools': {
-                                       'zoom-in': {
-                                               label: mw.msg( 
'proofreadpage-button-zoom-in-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_zoom_in.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('zoomIn');
-                                                       }
-                                               }
-                                       },
-                                       'zoom-out': {
-                                               label: mw.msg( 
'proofreadpage-button-zoom-out-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_zoom_out.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('zoomOut');
-                                                       }
-                                               }
-                                       },
-                                       'reset-zoom': {
-                                               label: mw.msg( 
'proofreadpage-button-reset-zoom-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_examine.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('fit');
-                                                       }
-                                               }
-                                       },
-                                       'pan-up': {
-                                               label: mw.msg( 
'proofreadpage-button-pan-up-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_pan_up.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('panUp');
-                                                       }
-                                               }
-                                       },
-                                       'pan-down': {
-                                               label: mw.msg( 
'proofreadpage-button-pan-down-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_pan_down.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('panDown');
-                                                       }
-                                               }
-                                       },
-                                       'pan-left': {
-                                               label: mw.msg( 
'proofreadpage-button-pan-left-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_pan_left.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('panLeft');
-                                                       }
-                                               }
-                                       },
-                                       'pan-right': {
-                                               label: mw.msg( 
'proofreadpage-button-pan-right-label' ),
-                                               type: 'button',
-                                               icon: mw.config.get( 
'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/ext.proofreadpage.page/images/Button_pan_right.png',
-                                               action: {
-                                                       type: 'callback',
-                                                       execute: function() {
-                                                               $( 
'.prp-page-image img' ).panZoom('panRight');
-                                                       }
-                                               }
-                                       }
-                               }
-                       },
-               }
-       };
-
-       var $edit = $( '#wpTextbox1' );
-       if( mw.user.options.get('usebetatoolbar') ) {
-               mw.loader.using( 'ext.wikiEditor.toolbar', function() {
-                       $edit.wikiEditor( 'addToToolbar', {
-                               'sections': {
-                                       'proofreadpage-tools': {
-                                               'type': 'toolbar',
-                                               'label': mw.msg( 
'proofreadpage-section-tools' )
-                                       }
-                               }
-                       } )
-                       .wikiEditor( 'addToToolbar', tools);
-               });
-       } else {
-               $.each( tools.groups, function( group, list ) {
-                       $.each( list.tools, function( id, def ) {
-                               mw.toolbar.addButton( {
-                                       imageFile: def.icon,
-                                       imageId: 'mw-editbutton-' + id,
-                                       speedTip: def.label
-                               } );
-                       $( '#mw-editbutton-' + id ).click( def.action.execute );
-                       } );
-               } );
-       }
-}
-
-if ( mw.user.options.get( 'usebetatoolbar' ) && jQuery.inArray( 
'ext.wikiEditor.toolbar', mw.loader.getModuleNames() ) > -1 ) {
-       mw.loader.using( 'ext.wikiEditor.toolbar', function() {
-               // Load the whole thing after the toolbar has been constructed
-               prStartup();
-       } );
-} else {
-       prStartup();
-}
diff --git a/modules/ext.proofreadpage.index/ext.proofreadpage.index.css 
b/modules/index/ext.proofreadpage.index.css
similarity index 100%
rename from modules/ext.proofreadpage.index/ext.proofreadpage.index.css
rename to modules/index/ext.proofreadpage.index.css
diff --git a/modules/index/ext.proofreadpage.index.js 
b/modules/index/ext.proofreadpage.index.js
new file mode 100644
index 0000000..46deb64
--- /dev/null
+++ b/modules/index/ext.proofreadpage.index.js
@@ -0,0 +1,11 @@
+( function ( mw, $ ) {
+       'use strict';
+
+       $( document ).ready( function() {
+               // Set up the help system
+               $( '.prp-help-field' ).tipsy( {
+                       'gravity': 'nw'
+               } );
+       } );
+
+} ( mediaWiki, jQuery ) );
\ No newline at end of file
diff --git a/modules/ext.proofreadpage.index/images/help-question.gif 
b/modules/index/images/help-question.gif
similarity index 100%
rename from modules/ext.proofreadpage.index/images/help-question.gif
rename to modules/index/images/help-question.gif
Binary files differ
diff --git a/modules/jquery.panZoom/jquery.panZoom.js 
b/modules/jquery/jquery.panZoom.js
similarity index 92%
rename from modules/jquery.panZoom/jquery.panZoom.js
rename to modules/jquery/jquery.panZoom.js
index ee69628..d12a55f 100644
--- a/modules/jquery.panZoom/jquery.panZoom.js
+++ b/modules/jquery/jquery.panZoom.js
@@ -14,6 +14,7 @@
 */
 
 ( function( $ ) {
+       'use strict';
 
        $.fn.panZoom = function( method ) {
 
@@ -58,7 +59,7 @@
                clickandhold      : true
        };
 
-       var settings = {}
+       var settings = {};
 
        var methods = {
                'init': function ( options ) {
@@ -111,6 +112,17 @@
                        data.position.x2 = data.viewport_dimensions.x;
                        data.position.y2 = data.viewport_dimensions.y;
                        methods.updatePosition.apply( this );
+               },
+
+               'fitWidth': function() {
+                       var data = this.data( 'panZoom' );
+                       data.position.x1 = 0;
+                       data.position.y1 = 0;
+                       data.position.x2 = data.viewport_dimensions.x;
+                       data.position.y2 = data.position.y2 * 
(data.target_dimensions.y / data.target_dimensions.x);
+                       methods.updatePosition.apply( this );
+
+                       data.target_element.parent().height( data.position.y2 );
                },
 
                'zoomIn': function ( steps ) {
@@ -213,7 +225,7 @@
 
        function setupBindings() {
 
-               eventData = { target: this }
+               var eventData = { target: this }
                var data = this.data( 'panZoom' );
 
                // bind up controls
@@ -306,7 +318,7 @@
                                stop: function () { 
$(this).panZoom('dragComplete'); }
                        });
                } else if (settings.draggable) {
-               //   alert('Draggable requires jQuery UI - please include 
jQuery UI or disable draggable to remove this warning.')
+                       console.log('Draggable requires jQuery UI - please 
include jQuery UI or disable draggable to remove this warning.');
                }
 
                // image load
@@ -364,30 +376,30 @@
                }
 
                if (settings.aspect) {
-                       target = data.target_dimensions.ratio;
-                       current = getCurrentAspectRatio.apply(this)
+                       var target = data.target_dimensions.ratio;
+                       var current = getCurrentAspectRatio.apply(this)
                        if (current > target) {
-                               new_width = getHeight.apply(this) * target;
-                               diff = getWidth.apply(this) - new_width;
-                               data.position.x1 = data.position.x1*1 + 
(diff/2);
-                               data.position.x2 = data.position.x2*1 - 
(diff/2);
+                               var new_width = getHeight.apply(this) * target;
+                               var diff = getWidth.apply(this) - new_width;
+                               data.position.x2 = data.position.x2*1 - diff;
                        } else if (current < target) {
-                               new_height = getWidth.apply(this) / target;
+                               var new_height = getWidth.apply(this) / target;
                                diff = getHeight.apply(this) - new_height;
-                               data.position.y1 = data.position.y1*1 + 
(diff/2);
-                               data.position.y2 = data.position.y2*1 - 
(diff/2);
+                               data.position.y2 = data.position.y2*1 - diff;
                        }
                }
 
        }
 
+       var properties = {};
+
        function applyPosition() {
                var data = this.data('panZoom');
 
-               width = getWidth.apply(this);
-               height = getHeight.apply(this);
-               left_offset = getLeftOffset.apply(this);
-               top_offset = getTopOffset.apply(this);
+               var width = getWidth.apply(this);
+               var height = getHeight.apply(this);
+               var left_offset = getLeftOffset.apply(this);
+               var top_offset = getTopOffset.apply(this);
 
                properties = {
                        'top': Math.round(top_offset),
@@ -421,7 +433,7 @@
 
        function getWidth() {
                var data = this.data('panZoom');
-               width = (data.position.x2 - data.position.x1);
+               var width = (data.position.x2 - data.position.x1);
                return width;
        }
 
@@ -432,13 +444,13 @@
 
        function getHeight() {
                var data = this.data('panZoom');
-               height = (data.position.y2 - data.position.y1);
+               var height = (data.position.y2 - data.position.y1);
                return height;
        }
 
        function getTopOffset() {
                var data = this.data('panZoom');
-               top_offset = data.position.y1;
+               var top_offset = data.position.y1;
                return top_offset;
        }
 
@@ -456,7 +468,7 @@
 
        function getStepDimensions() {
                var data = this.data('panZoom');
-               ret = {
+               var ret = {
                        zoom: {
                                x: (settings.zoom_step/100 * 
data.viewport_dimensions.x),
                                y: (settings.zoom_step/100 * 
data.viewport_dimensions.y)
diff --git a/modules/page/ext.proofreadpage.page.css 
b/modules/page/ext.proofreadpage.page.css
new file mode 100644
index 0000000..8a9901e
--- /dev/null
+++ b/modules/page/ext.proofreadpage.page.css
@@ -0,0 +1,25 @@
+.prp-page-container {
+       width: 100%;
+}
+.prp-page-content {
+       float: left;
+       width: 50%;
+}
+
+.prp-page-image {
+       float: right;
+       width: 49%;
+       position: relative;
+       overflow: auto;
+}
+
+#prp-page-qualityheader {
+       width: 100%;
+}
+
+.table-cell-left {
+       display:table-cell;
+}
+.table-cell-right {
+       display:table-cell;
+}
\ No newline at end of file
diff --git a/modules/page/ext.proofreadpage.page.edit.css 
b/modules/page/ext.proofreadpage.page.edit.css
new file mode 100644
index 0000000..06b4357
--- /dev/null
+++ b/modules/page/ext.proofreadpage.page.edit.css
@@ -0,0 +1,20 @@
+.prp-page-content {
+       line-height: 1.5em;
+}
+.prp-page-content label {
+       color: gray;
+       font-size: 80%;
+}
+
+.editOptions {
+       clear: both;
+}
+
+/* Adjustments for WikiEditor extension */
+.wikiEditor-ui-text textarea {
+       border: none;
+       padding: 0;
+       line-height: 1.5em;
+       margin: 0 !important;
+       resize: vertical;
+}
\ No newline at end of file
diff --git a/modules/page/ext.proofreadpage.page.edit.js 
b/modules/page/ext.proofreadpage.page.edit.js
new file mode 100644
index 0000000..a364d90
--- /dev/null
+++ b/modules/page/ext.proofreadpage.page.edit.js
@@ -0,0 +1,180 @@
+( function ( mw, $ ) {
+       'use strict';
+
+       function toggleHeaders( speed ) {
+               $( '.prp-page-edit-header' ).toggle( speed );
+               $( '.prp-page-edit-body label' ).toggle( speed );
+               $( '.prp-page-edit-footer' ).toggle( speed );
+       }
+
+       function setupPreferences() {
+               if( !mw.user.options.get( 'proofreadpage-showheaders' ) ) {
+                       toggleHeaders( undefined );
+               }
+               //TODO: scan on top of the edit system
+       }
+
+       function setupPageQuality() {
+               $( 'input[name="wpQuality"]' ).click( function() {
+                       var text = mw.msg( 'proofreadpage_quality' + this.value 
+ '_category' );
+                       $( 'input#wpSummary' ).val( '/* ' + text + ' */ ' );
+               } );
+       }
+
+       function addButtons() {
+               var iconPath = mw.config.get( 'wgExtensionAssetsPath' ) + 
'/ProofreadPage/modules/page/images/';
+               var tools = {
+                       zoom: {
+                               labelMsg: 'proofreadpage-group-zoom',
+                               tools: {
+                                       'zoom-in': {
+                                               labelMsg: 
'proofreadpage-button-zoom-in-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_zoom_in.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'zoomIn' );
+                                                       }
+                                               }
+                                       },
+                                       'zoom-out': {
+                                               labelMsg: 
'proofreadpage-button-zoom-out-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_zoom_out.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'zoomOut' );
+                                                       }
+                                               }
+                                       },
+                                       'reset-zoom': {
+                                               labelMsg: 
'proofreadpage-button-reset-zoom-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_examine.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'fitWidth' );
+                                                       }
+                                               }
+                                       },
+                                       'pan-up': {
+                                               labelMsg: 
'proofreadpage-button-pan-up-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_pan_up.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'panUp' );
+                                                       }
+                                               }
+                                       },
+                                       'pan-down': {
+                                               labelMsg: 
'proofreadpage-button-pan-down-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_pan_down.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'panDown' );
+                                                       }
+                                               }
+                                       },
+                                       'pan-left': {
+                                               labelMsg: 
'proofreadpage-button-pan-left-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_pan_left.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'panLeft' );
+                                                       }
+                                               }
+                                       },
+                                       'pan-right': {
+                                               labelMsg: 
'proofreadpage-button-pan-right-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_pan_right.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               $( 
'.prp-page-image img' ).panZoom( 'panRight' );
+                                                       }
+                                               }
+                                       }
+                               }
+                       },
+                       other: {
+                               labelMsg: 'proofreadpage-group-other',
+                               tools: {
+                                       'toggle-visibility': {
+                                               labelMsg: 
'proofreadpage-button-toggle-visibility-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_category_plus.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               toggleHeaders( 
'fast' );
+                                                       }
+                                               }
+                                       },
+                                       'toggle-layout': {
+                                               labelMsg: 
'proofreadpage-button-toggle-layout-label',
+                                               type: 'button',
+                                               icon: iconPath + 
'Button_multicol.png',
+                                               action: {
+                                                       type: 'callback',
+                                                       execute: function() {
+                                                               //TODO
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               };
+
+               var $edit = $( '#wpTextbox1' );
+               if( mw.user.options.get( 'usebetatoolbar' ) ) {
+                       mw.loader.using( 'ext.wikiEditor.toolbar', function() {
+                               $edit.wikiEditor( 'addToToolbar', {
+                                       sections: {
+                                               'proofreadpage-tools': {
+                                                       type: 'toolbar',
+                                                       labelMsg: 
'proofreadpage-section-tools',
+                                                       groups: tools
+                                               }
+                                       }
+                               } );
+                       } );
+               } else {
+                       mw.loader.using( 'mediawiki.action.edit', function() {
+                               var $toolbar = $( '#toolbar' );
+
+                               $.each( tools, function( group, list ) {
+                                       $.each( list.tools, function( id, def ) 
{
+                                               $( '<img>' )
+                                                       .attr( {
+                                                               width: 23,
+                                                               height: 22,
+                                                               src: def.icon,
+                                                               alt: mw.msg( 
def.labelMsg ),
+                                                               title: mw.msg( 
def.labelMsg ),
+                                                               class: 
'mw-toolbar-editbutton'
+                                                       } )
+                                                       .click( 
def.action.execute )
+                                                       .appendTo( $toolbar );
+                                       } );
+                               } );
+                       } );
+               }
+       }
+
+       $( document ).ready( function() {
+               setupPreferences();
+               setupPageQuality();
+               addButtons();
+       } );
+
+} ( mediaWiki, jQuery ) );
\ No newline at end of file
diff --git a/modules/page/ext.proofreadpage.page.js 
b/modules/page/ext.proofreadpage.page.js
new file mode 100644
index 0000000..a2cf7a2
--- /dev/null
+++ b/modules/page/ext.proofreadpage.page.js
@@ -0,0 +1,14 @@
+( function ( mw, $ ) {
+       'use strict';
+
+       //init zoom system. The load event is used because the page needs to be 
rendered before calling fitWidth
+       $( document).load( function() {
+               mw.loader.using( 'jquery.panZoom', function() {
+                       var $image = $( '.prp-page-image img' );
+                       $image.panZoom();
+                       $image.panZoom( 'loadImage' );
+                       $image.panZoom( 'fitWidth' );
+               } );
+       } );
+
+} ( mediaWiki, jQuery ) );
\ No newline at end of file
diff --git a/modules/ext.proofreadpage.page/images/Button_category_plus.png 
b/modules/page/images/Button_category_plus.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_category_plus.png
rename to modules/page/images/Button_category_plus.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_examine.png 
b/modules/page/images/Button_examine.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_examine.png
rename to modules/page/images/Button_examine.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_multicol.png 
b/modules/page/images/Button_multicol.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_multicol.png
rename to modules/page/images/Button_multicol.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_pan_down.png 
b/modules/page/images/Button_pan_down.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_pan_down.png
rename to modules/page/images/Button_pan_down.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_pan_left.png 
b/modules/page/images/Button_pan_left.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_pan_left.png
rename to modules/page/images/Button_pan_left.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_pan_right.png 
b/modules/page/images/Button_pan_right.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_pan_right.png
rename to modules/page/images/Button_pan_right.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_pan_up.png 
b/modules/page/images/Button_pan_up.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_pan_up.png
rename to modules/page/images/Button_pan_up.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_zoom_in.png 
b/modules/page/images/Button_zoom_in.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_zoom_in.png
rename to modules/page/images/Button_zoom_in.png
Binary files differ
diff --git a/modules/ext.proofreadpage.page/images/Button_zoom_out.png 
b/modules/page/images/Button_zoom_out.png
similarity index 100%
rename from modules/ext.proofreadpage.page/images/Button_zoom_out.png
rename to modules/page/images/Button_zoom_out.png
Binary files differ

-- 
To view, visit https://gerrit.wikimedia.org/r/87527
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8195325d7b17b3675792139f43593ee50e6e7096
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: pagePagesRefactoring
Gerrit-Owner: Tpt <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to