mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-09-24 02:48:18 +00:00
Merge "ConfirmEdit CAPTCHA support"
This commit is contained in:
commit
922443f68f
|
@ -99,7 +99,11 @@
|
|||
"dependencies": [
|
||||
"ext.discussionTools.init",
|
||||
"mediawiki.widgets.AbandonEditDialog"
|
||||
]
|
||||
],
|
||||
"optionalDependencies": {
|
||||
"ConfirmEdit": "ext.confirmEdit.CaptchaInputWidget"
|
||||
},
|
||||
"factory": "DiscussionToolsData::addOptionalDependencies"
|
||||
},
|
||||
"ext.discussionTools.ReplyWidgetPlain": {
|
||||
"packageFiles": [
|
||||
|
|
|
@ -116,4 +116,23 @@ class DiscussionToolsData {
|
|||
}, $messagesKeys )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add optional dependencies to a ResourceLoader module definition depending on loaded extensions.
|
||||
*
|
||||
* @param array $info
|
||||
* @return ResourceLoaderModule
|
||||
*/
|
||||
public static function addOptionalDependencies( array $info ) {
|
||||
$extensionRegistry = ExtensionRegistry::getInstance();
|
||||
|
||||
foreach ( $info['optionalDependencies'] as $ext => $deps ) {
|
||||
if ( $extensionRegistry->isLoaded( $ext ) ) {
|
||||
$info['dependencies'] = array_merge( $info['dependencies'], (array)$deps );
|
||||
}
|
||||
}
|
||||
|
||||
$class = $info['class'] ?? ResourceLoaderFileModule::class;
|
||||
return new $class( $info );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -267,6 +267,8 @@ function save( widget, parsoidData ) {
|
|||
baserevid: pageData.oldId,
|
||||
starttimestamp: pageData.startTimeStamp,
|
||||
etag: pageData.etag,
|
||||
captchaid: widget.captchaInput && widget.captchaInput.getCaptchaId(),
|
||||
captchaword: widget.captchaInput && widget.captchaInput.getCaptchaWord(),
|
||||
assert: mw.user.isAnon() ? 'anon' : 'user',
|
||||
assertuser: mw.user.getName() || undefined,
|
||||
dttags: [
|
||||
|
|
|
@ -421,15 +421,39 @@ ReplyWidget.prototype.onReplyClick = function () {
|
|||
pagedeleted: 'editPageDeleted'
|
||||
};
|
||||
|
||||
widget.errorMessage = new OO.ui.MessageWidget( {
|
||||
type: 'error',
|
||||
label: widget.api.getErrorMessage( data )
|
||||
} );
|
||||
widget.errorMessage.$element.insertBefore( widget.replyBodyWidget.$element );
|
||||
|
||||
if ( data.edit && data.edit.captcha ) {
|
||||
code = 'captcha';
|
||||
if ( widget.captchaMessage ) {
|
||||
widget.captchaMessage.$element.detach();
|
||||
}
|
||||
widget.captchaInput = undefined;
|
||||
|
||||
if ( OO.getProp( data, 'visualeditoredit', 'edit', 'captcha' ) ) {
|
||||
code = 'captcha';
|
||||
|
||||
widget.captchaInput = new mw.libs.confirmEdit.CaptchaInputWidget(
|
||||
OO.getProp( data, 'visualeditoredit', 'edit', 'captcha' )
|
||||
);
|
||||
// Save when pressing 'Enter' in captcha field as it is single line.
|
||||
widget.captchaInput.on( 'enter', function () {
|
||||
widget.onReplyClick();
|
||||
} );
|
||||
|
||||
widget.captchaMessage = new OO.ui.MessageWidget( {
|
||||
type: 'notice',
|
||||
label: widget.captchaInput.$element
|
||||
} );
|
||||
widget.captchaMessage.$element.insertAfter( widget.$preview );
|
||||
|
||||
widget.captchaInput.focus();
|
||||
widget.captchaInput.scrollElementIntoView();
|
||||
|
||||
} else {
|
||||
widget.errorMessage = new OO.ui.MessageWidget( {
|
||||
type: 'error',
|
||||
label: widget.api.getErrorMessage( data )
|
||||
} );
|
||||
widget.errorMessage.$element.insertBefore( widget.replyBodyWidget.$element );
|
||||
}
|
||||
|
||||
logger( {
|
||||
action: 'saveFailure',
|
||||
message: code,
|
||||
|
|
|
@ -51,7 +51,9 @@
|
|||
padding: 0.5em 1em;
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
height: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&:before {
|
||||
|
@ -64,15 +66,14 @@
|
|||
}
|
||||
}
|
||||
|
||||
.oo-ui-messageWidget {
|
||||
.oo-ui-messageWidget,
|
||||
.dt-ui-replyWidget-preview {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
&-anonWarning {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0.5em;
|
||||
|
||||
&.oo-ui-messageWidget-block {
|
||||
padding: 8px 12px;
|
||||
|
|
Loading…
Reference in a new issue