Merge "RCFilters: Change the input icon on interaction"
[lhc/web/wiklou.git] / resources / src / mediawiki.action / mediawiki.action.edit.js
1 /*!
2 * Scripts for action=edit at domready
3 */
4 ( function ( mw, $ ) {
5 'use strict';
6
7 /**
8 * Fired when the editform is added to the edit page
9 *
10 * Similar to the {@link mw.hook#event-wikipage_content wikipage.content hook}
11 * $editForm can still be detached when this hook is fired.
12 *
13 * @event wikipage_editform
14 * @member mw.hook
15 * @param {jQuery} $editForm The most appropriate element containing the
16 * editform, usually #editform.
17 */
18
19 $( function () {
20 var editBox, scrollTop, $editForm;
21
22 if ( $( '#editform' ).hasClass( 'mw-editform-ooui' ) ) {
23 mw.loader.using( 'oojs-ui-core' ).then( function () {
24 var wpSummary = OO.ui.infuse( $( '#wpSummaryWidget' ) );
25
26 // Restore appropriate modifier keys for the accesskey in the 'title' attribute
27 // TODO: This should be an OOjs UI feature, or somehow happen automatically after infusing.
28 wpSummary.$input.updateTooltipAccessKeys();
29
30 // Make sure edit summary does not exceed byte limit
31 wpSummary.$input.byteLimit( 255 );
32
33 // Show a byte-counter to users with how many bytes are left for their edit summary.
34 // TODO: This looks a bit weird, as there is no unit in the UI, just numbers; showing
35 // 'bytes' confused users in testing, and showing 'chars' would be a lie. See T42035.
36 function updateSummaryLabelCount() {
37 wpSummary.setLabel( String( 255 - $.byteLength( wpSummary.getValue() ) ) );
38 }
39 wpSummary.on( 'change', updateSummaryLabelCount );
40 // Initialise value
41 updateSummaryLabelCount();
42 } );
43 } else {
44 // Make sure edit summary does not exceed byte limit
45 $( '#wpSummary' ).byteLimit( 255 );
46 }
47
48 // Restore the edit box scroll state following a preview operation,
49 // and set up a form submission handler to remember this state.
50 editBox = document.getElementById( 'wpTextbox1' );
51 scrollTop = document.getElementById( 'wpScrolltop' );
52 $editForm = $( '#editform' );
53 mw.hook( 'wikipage.editform' ).fire( $editForm );
54 if ( $editForm.length && editBox && scrollTop ) {
55 if ( scrollTop.value ) {
56 editBox.scrollTop = scrollTop.value;
57 }
58 $editForm.submit( function () {
59 scrollTop.value = editBox.scrollTop;
60 } );
61 }
62 } );
63 }( mediaWiki, jQuery ) );