Avoid duplicate accesskey hints on OOUI widgets
Values returned by `Linker::tooltipAndAccesskeyAttribs()` and `Linker::titleAttrib( ..., 'withaccess' )` include an accesskey hint in the title text. This is unnecessary when used for OOjs UI widgets, since after the changes from T168408 they display an accesskey hint automatically. Also fixed some other accesskey bugs in HTMLForm which probably no one ever ran into. Bug: T168408 Change-Id: I63285b5bce3341875a6d82eba059623bf105ca62
This commit is contained in:
parent
58c66f541a
commit
8c1a1a62a1
7 changed files with 45 additions and 16 deletions
|
|
@ -3076,7 +3076,7 @@ class EditPage {
|
|||
'tabindex' => 1,
|
||||
'size' => 60,
|
||||
'spellcheck' => 'true',
|
||||
] + Linker::tooltipAndAccesskeyAttribs( 'summary' );
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -3097,6 +3097,7 @@ class EditPage {
|
|||
$inputAttrs = null, $spanLabelAttrs = null
|
||||
) {
|
||||
$inputAttrs = $this->getSummaryInputAttributes( $inputAttrs );
|
||||
$inputAttrs += Linker::tooltipAndAccesskeyAttribs( 'summary' );
|
||||
|
||||
$spanLabelAttrs = ( is_array( $spanLabelAttrs ) ? $spanLabelAttrs : [] ) + [
|
||||
'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary',
|
||||
|
|
@ -3132,6 +3133,10 @@ class EditPage {
|
|||
$inputAttrs = OOUI\Element::configFromHtmlAttributes(
|
||||
$this->getSummaryInputAttributes( $inputAttrs )
|
||||
);
|
||||
$inputAttrs += [
|
||||
'title' => Linker::titleAttrib( 'summary' ),
|
||||
'accessKey' => Linker::accesskey( 'summary' ),
|
||||
];
|
||||
|
||||
// For compatibility with old scripts and extensions, we want the legacy 'id' on the `<input>`
|
||||
$inputAttrs['inputId'] = $inputAttrs['id'];
|
||||
|
|
@ -4277,7 +4282,7 @@ HTML
|
|||
$accesskey = null;
|
||||
if ( isset( $options['tooltip'] ) ) {
|
||||
$accesskey = $this->context->msg( "accesskey-{$options['tooltip']}" )->text();
|
||||
$title = Linker::titleAttrib( $options['tooltip'], 'withaccess' );
|
||||
$title = Linker::titleAttrib( $options['tooltip'] );
|
||||
}
|
||||
if ( isset( $options['title-message'] ) ) {
|
||||
$title = $this->context->msg( $options['title-message'] )->text();
|
||||
|
|
@ -4355,8 +4360,7 @@ HTML
|
|||
$attribs = [
|
||||
'name' => 'wpSave',
|
||||
'tabindex' => ++$tabindex,
|
||||
] + Linker::tooltipAndAccesskeyAttribs( 'save' );
|
||||
|
||||
];
|
||||
if ( $this->oouiEnabled ) {
|
||||
$saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
|
||||
$buttons['save'] = new OOUI\ButtonInputWidget( [
|
||||
|
|
@ -4368,11 +4372,13 @@ HTML
|
|||
'label' => $buttonLabel,
|
||||
'infusable' => true,
|
||||
'type' => 'submit',
|
||||
'title' => Linker::titleAttrib( 'save' ),
|
||||
'accessKey' => Linker::accesskey( 'save' ),
|
||||
] + $saveConfig );
|
||||
} else {
|
||||
$buttons['save'] = Html::submitButton(
|
||||
$buttonLabel,
|
||||
$attribs + [ 'id' => 'wpSave' ],
|
||||
$attribs + Linker::tooltipAndAccesskeyAttribs( 'save' ) + [ 'id' => 'wpSave' ],
|
||||
[ 'mw-ui-progressive' ]
|
||||
);
|
||||
}
|
||||
|
|
@ -4380,7 +4386,7 @@ HTML
|
|||
$attribs = [
|
||||
'name' => 'wpPreview',
|
||||
'tabindex' => ++$tabindex,
|
||||
] + Linker::tooltipAndAccesskeyAttribs( 'preview' );
|
||||
];
|
||||
if ( $this->oouiEnabled ) {
|
||||
$previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
|
||||
$buttons['preview'] = new OOUI\ButtonInputWidget( [
|
||||
|
|
@ -4390,18 +4396,20 @@ HTML
|
|||
'useInputTag' => true,
|
||||
'label' => $this->context->msg( 'showpreview' )->text(),
|
||||
'infusable' => true,
|
||||
'type' => 'submit'
|
||||
'type' => 'submit',
|
||||
'title' => Linker::titleAttrib( 'preview' ),
|
||||
'accessKey' => Linker::accesskey( 'preview' ),
|
||||
] + $previewConfig );
|
||||
} else {
|
||||
$buttons['preview'] = Html::submitButton(
|
||||
$this->context->msg( 'showpreview' )->text(),
|
||||
$attribs + [ 'id' => 'wpPreview' ]
|
||||
$attribs + Linker::tooltipAndAccesskeyAttribs( 'preview' ) + [ 'id' => 'wpPreview' ]
|
||||
);
|
||||
}
|
||||
$attribs = [
|
||||
'name' => 'wpDiff',
|
||||
'tabindex' => ++$tabindex,
|
||||
] + Linker::tooltipAndAccesskeyAttribs( 'diff' );
|
||||
];
|
||||
if ( $this->oouiEnabled ) {
|
||||
$diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
|
||||
$buttons['diff'] = new OOUI\ButtonInputWidget( [
|
||||
|
|
@ -4412,11 +4420,13 @@ HTML
|
|||
'label' => $this->context->msg( 'showdiff' )->text(),
|
||||
'infusable' => true,
|
||||
'type' => 'submit',
|
||||
'title' => Linker::titleAttrib( 'diff' ),
|
||||
'accessKey' => Linker::accesskey( 'diff' ),
|
||||
] + $diffConfig );
|
||||
} else {
|
||||
$buttons['diff'] = Html::submitButton(
|
||||
$this->context->msg( 'showdiff' )->text(),
|
||||
$attribs + [ 'id' => 'wpDiff' ]
|
||||
$attribs + Linker::tooltipAndAccesskeyAttribs( 'diff' ) + [ 'id' => 'wpDiff' ]
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -976,7 +976,7 @@ abstract class HTMLFormField {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the attributes required for the tooltip and accesskey.
|
||||
* Returns the attributes required for the tooltip and accesskey, for Html::element() etc.
|
||||
*
|
||||
* @return array Attributes
|
||||
*/
|
||||
|
|
@ -988,6 +988,22 @@ abstract class HTMLFormField {
|
|||
return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the attributes required for the tooltip and accesskey, for OOUI widgets' config.
|
||||
*
|
||||
* @return array Attributes
|
||||
*/
|
||||
public function getTooltipAndAccessKeyOOUI() {
|
||||
if ( empty( $this->mParams['tooltip'] ) ) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return [
|
||||
'title' => Linker::titleAttrib( $this->mParams['tooltip'] ),
|
||||
'accessKey' => Linker::accesskey( $this->mParams['tooltip'] ),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the given attributes from the parameters
|
||||
*
|
||||
|
|
|
|||
|
|
@ -66,7 +66,10 @@ class OOUIHTMLForm extends HTMLForm {
|
|||
}
|
||||
|
||||
if ( isset( $this->mSubmitTooltip ) ) {
|
||||
$attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
|
||||
$attribs += [
|
||||
'title' => Linker::titleAttrib( $this->mSubmitTooltip ),
|
||||
'accessKey' => Linker::accesskey( $this->mSubmitTooltip ),
|
||||
];
|
||||
}
|
||||
|
||||
$attribs['classes'] = [ 'mw-htmlform-submit' ];
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class HTMLCheckField extends HTMLFormField {
|
|||
$value = !$value;
|
||||
}
|
||||
|
||||
$attr = $this->getTooltipAndAccessKey();
|
||||
$attr = $this->getTooltipAndAccessKeyOOUI();
|
||||
$attr['id'] = $this->mID;
|
||||
$attr['name'] = $this->mName;
|
||||
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
|
|||
public function getInputOOUI( $value ) {
|
||||
$this->mParent->getOutput()->addModules( 'oojs-ui-widgets' );
|
||||
|
||||
$attr = $this->getTooltipAndAccessKey();
|
||||
$attr = [];
|
||||
$attr['id'] = $this->mID;
|
||||
$attr['name'] = "{$this->mName}[]";
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class HTMLTextAreaField extends HTMLFormField {
|
|||
throw new Exception( "OOUIHTMLForm does not support the 'cols' parameter for textareas" );
|
||||
}
|
||||
|
||||
$attribs = $this->getTooltipAndAccessKey();
|
||||
$attribs = $this->getTooltipAndAccessKeyOOUI();
|
||||
|
||||
if ( $this->mClass !== '' ) {
|
||||
$attribs['classes'] = [ $this->mClass ];
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ class HTMLTextField extends HTMLFormField {
|
|||
$value = '';
|
||||
}
|
||||
|
||||
$attribs = $this->getTooltipAndAccessKey();
|
||||
$attribs = $this->getTooltipAndAccessKeyOOUI();
|
||||
|
||||
if ( $this->mClass !== '' ) {
|
||||
$attribs['classes'] = [ $this->mClass ];
|
||||
|
|
|
|||
Loading…
Reference in a new issue