From: Derk-Jan Hartman Date: Mon, 30 Mar 2015 21:19:37 +0000 (+0200) Subject: Introduce wikipage.editform hook X-Git-Tag: 1.31.0-rc.0~11295^2 X-Git-Url: https://git.cyclocoop.org/%28%28?a=commitdiff_plain;h=8d0dcb863701e78cb4b066f176da89091bba67b3;p=lhc%2Fweb%2Fwiklou.git Introduce wikipage.editform hook * New wikipage.editform hook (Bug T53583) * Make editpage module emit wikipage.editform * Make collapsibleFooter setup the .hiddencats .limitreport and .templatesUsed elements from the wikipage.editform hook Bug: T55918 Change-Id: I515f7cdf4a6bbff2da3670946a12dc8027507226 --- diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js index 7ae51abae6..bf1142b30b 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js @@ -1,21 +1,21 @@ -jQuery( document ).ready( function ( $ ) { - var collapsibleLists, i, handleOne; +( function ( mw, $ ) { + var collapsibleLists, handleOne; // Collapsible lists of categories and templates collapsibleLists = [ { - $list: $( '.templatesUsed ul' ), - $toggler: $( '.mw-templatesUsedExplanation' ), + listSel: '.templatesUsed ul', + togglerSel: '.mw-templatesUsedExplanation', cookieName: 'templates-used-list' }, { - $list: $( '.hiddencats ul' ), - $toggler: $( '.mw-hiddenCategoriesExplanation' ), + listSel: '.hiddencats ul', + togglerSel: '.mw-hiddenCategoriesExplanation', cookieName: 'hidden-categories-list' }, { - $list: $( '.preview-limit-report-wrapper' ), - $toggler: $( '.mw-limitReportExplanation' ), + listSel: '.preview-limit-report-wrapper', + togglerSel: '.mw-limitReportExplanation', cookieName: 'preview-limit-report' } ]; @@ -47,8 +47,15 @@ jQuery( document ).ready( function ( $ ) { } ); }; - for ( i = 0; i < collapsibleLists.length; i++ ) { - // Pass to a function for iteration-local variables - handleOne( collapsibleLists[i].$list, collapsibleLists[i].$toggler, collapsibleLists[i].cookieName ); - } -} ); + mw.hook( 'wikipage.editform' ).add( function ( $editForm ) { + var i; + for ( i = 0; i < collapsibleLists.length; i++ ) { + // Pass to a function for iteration-local variables + handleOne( + $editForm.find( collapsibleLists[i].listSel ), + $editForm.find( collapsibleLists[i].togglerSel ), + collapsibleLists[i].cookieName + ); + } + } ); +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.js b/resources/src/mediawiki.action/mediawiki.action.edit.js index 01a25f3b85..c9834f0488 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.js @@ -1,23 +1,40 @@ /*! * Scripts for action=edit at domready */ -jQuery( function ( $ ) { - var editBox, scrollTop, $editForm; +( function ( mw, $ ) { + 'use strict'; - // Make sure edit summary does not exceed byte limit - $( '#wpSummary' ).byteLimit( 255 ); + /** + * Fired when the editform is added to the edit page + * + * Similar to the {@link mw.hook#event-wikipage_content wikipage.content hook} + * $editForm can still be detached when this hook is fired. + * + * @event wikipage_editform + * @member mw.hook + * @param {jQuery} $editForm The most appropriate element containing the + * editform, usually #editform. + */ - // Restore the edit box scroll state following a preview operation, - // and set up a form submission handler to remember this state. - editBox = document.getElementById( 'wpTextbox1' ); - scrollTop = document.getElementById( 'wpScrolltop' ); - $editForm = $( '#editform' ); - if ( $editForm.length && editBox && scrollTop ) { - if ( scrollTop.value ) { - editBox.scrollTop = scrollTop.value; + $( function () { + var editBox, scrollTop, $editForm; + + // Make sure edit summary does not exceed byte limit + $( '#wpSummary' ).byteLimit( 255 ); + + // Restore the edit box scroll state following a preview operation, + // and set up a form submission handler to remember this state. + editBox = document.getElementById( 'wpTextbox1' ); + scrollTop = document.getElementById( 'wpScrolltop' ); + $editForm = $( '#editform' ); + mw.hook( 'wikipage.editform' ).fire( $editForm ); + if ( $editForm.length && editBox && scrollTop ) { + if ( scrollTop.value ) { + editBox.scrollTop = scrollTop.value; + } + $editForm.submit( function () { + scrollTop.value = editBox.scrollTop; + } ); } - $editForm.submit( function () { - scrollTop.value = editBox.scrollTop; - } ); - } -} ); + } ); +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js index 5074d942b7..6026a8c019 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js @@ -225,6 +225,7 @@ ) ); } + mw.hook( 'wikipage.editform' ).fire( $editform ); } ); request.always( function () { $spinner.remove();