Live Preview: Cope with the edit summary being an OOjs UI widget
authorJames D. Forrester <jforrester@wikimedia.org>
Thu, 20 Jul 2017 15:18:26 +0000 (08:18 -0700)
committerDerk-Jan Hartman <hartman.wiki@gmail.com>
Wed, 9 Aug 2017 19:47:30 +0000 (15:47 -0400)
Bug: T171156
Change-Id: Idb9118421ffbd438dd7b018a8dbf8bb991036232

resources/Resources.php
resources/src/mediawiki.action/mediawiki.action.edit.preview.js

index 45a90d1..a89fb42 100644 (file)
@@ -1452,6 +1452,7 @@ return [
                        'mediawiki.diff.styles',
                        'mediawiki.util',
                        'mediawiki.jqueryMsg',
+                       'oojs-ui-core',
                ],
                'messages' => [
                        // Keep the uses message keys in sync with EditPage#setHeaders
index 2b6fc9d..ec572af 100644 (file)
@@ -3,12 +3,14 @@
  */
 ( function ( mw, $ ) {
 
+       var oojsuieditform;
+
        /**
         * @ignore
         * @param {jQuery.Event} e
         */
        function doLivePreview( e ) {
-               var isDiff, api, parseRequest, diffRequest, postData, copySelectors, section,
+               var isDiff, api, parseRequest, diffRequest, postData, copySelectors, section, summary,
                        $wikiPreview, $wikiDiff, $editform, $textbox, $summary, $copyElements, $spinner, $errorBox;
 
                isDiff = ( e.target.name === 'wpDiff' );
                $wikiDiff = $( '#wikiDiff' );
                $editform = $( '#editform' );
                $textbox = $editform.find( '#wpTextbox1' );
-               $summary = $editform.find( '#wpSummary' );
+
+               if ( oojsuieditform ) {
+                       summary = OO.ui.infuse( $( '#wpSummaryWidget' ) );
+               } else {
+                       $summary = $editform.find( '#wpSummary' );
+               }
+
                $spinner = $( '.mw-spinner-preview' );
                $errorBox = $( '.errorbox' );
                section = $editform.find( '[name="wpSection"]' ).val();
@@ -78,7 +86,7 @@
                        formatversion: 2,
                        action: 'parse',
                        title: mw.config.get( 'wgPageName' ),
-                       summary: $summary.textSelection( 'getContents' ),
+                       summary: oojsuieditform ? summary.getValue() : $summary.val(),
                        prop: ''
                };
 
        }
 
        $( function () {
+               oojsuieditform = $( '#editform' ).hasClass( 'mw-editform-ooui' );
+
                // Do not enable on user .js/.css pages, as there's no sane way of "previewing"
                // the scripts or styles without reloading the page.
                if ( $( '#mw-userjsyoucanpreview' ).length || $( '#mw-usercssyoucanpreview' ).length ) {
                }
 
                if ( !$( '.mw-summary-preview' ).length ) {
-                       $( '#wpSummary' ).after(
+                       $( oojsuieditform ? '#wpSummaryWidget' : '#wpSummary' ).after(
                                $( '<div>' ).addClass( 'mw-summary-preview' )
                        );
                }