jenkins-bot has submitted this change and it was merged.
Change subject: Add confirmation dialog to newsletter deletion form
......................................................................
Add confirmation dialog to newsletter deletion form
With a single misclick, even a widely used newsletter could be deleted.
To be safe and avoid that, let's ask for confirmation from the user
before deleting.
Change-Id: I983f84bea83c043b231d136d3384b37ca456135a
---
M extension.json
M i18n/en.json
M i18n/qqq.json
M includes/specials/SpecialNewsletter.php
A modules/ext.newsletter.delete.js
5 files changed, 61 insertions(+), 0 deletions(-)
Approvals:
01tonythomas: Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index d6a5cb8..2b2da04 100644
--- a/extension.json
+++ b/extension.json
@@ -79,6 +79,19 @@
"newsletter-unsubscribe-success"
]
},
+ "ext.newsletter.delete": {
+ "scripts": "ext.newsletter.delete.js",
+ "position": "bottom",
+ "dependencies": [
+ "oojs-ui"
+ ],
+ "messages": [
+ "newsletter-delete-confirmation",
+ "newsletter-delete-confirm-details",
+ "newsletter-delete-confirm-cancel",
+ "newsletter-delete-confirm-delete"
+ ]
+ },
"ext.newsletter.styles": {
"position": "top",
"styles": "ext.newsletter.css"
diff --git a/i18n/en.json b/i18n/en.json
index 22ee1c9..2f2013f 100755
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -98,6 +98,10 @@
"newsletter-manage-header-action": "Action",
"newsletter-publisher-radiobutton-label": "Publisher",
"newsletter-dropdown-default-message": "Please select one",
+ "newsletter-delete-confirmation": "Are you sure you want to delete this
newsletter?",
+ "newsletter-delete-confirm-details": "Note that this action is not
reversible and data cannot be restored once it has been deleted.",
+ "newsletter-delete-confirm-cancel": "Cancel",
+ "newsletter-delete-confirm-delete": "Delete",
"right-newsletter-create": "Create newsletters",
"action-newsletter-create": "create newsletters",
"right-newsletter-delete": "Delete newsletters",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 813edb7..d824ab9 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -101,6 +101,10 @@
"newsletter-manage-header-action": "{{Identical|Action}}",
"newsletter-publisher-radiobutton-label": "Label of radio button in
'Permissions' column in [[Special:ManageNewsletter]] which is checked if the
user is a publisher of the newsletter\n{{Identical|Publisher}}",
"newsletter-dropdown-default-message": "Default option of drop down
menus to select newsletters in [[Special:ManageNewsletter]].\n\nSee also:\n*
{{msg-mw|Newsletter-name}} (label of the field)",
+ "newsletter-delete-confirmation": "Confirmation message shown when
attempting to delete a newsletter.",
+ "newsletter-delete-confirm-details": "Information message shown after
{{msg-mw|newsletter-delete-confirmation}}.",
+ "newsletter-delete-confirm-cancel": "Label of cancel button shown on
confirmation dialog box when trying to delete a newsletter.",
+ "newsletter-delete-confirm-delete": "Label of delete button shown on
confirmation dialog box when trying to delete a newsletter.",
"right-newsletter-create": "{{doc-right|newsletter-create}}",
"action-newsletter-create": "{{doc-action|newsletter-create}}",
"right-newsletter-delete": "{{doc-right|newsletter-delete}}",
diff --git a/includes/specials/SpecialNewsletter.php
b/includes/specials/SpecialNewsletter.php
index aa51182..aff4632 100644
--- a/includes/specials/SpecialNewsletter.php
+++ b/includes/specials/SpecialNewsletter.php
@@ -514,6 +514,7 @@
}
$out->setPageTitle( $this->msg( 'newsletter-delete' ) );
+ $out->addModules( 'ext.newsletter.delete' ); // Adds
confirmation dialog box
// @todo add reason field when logging is implemented
$form = $this->getHTMLForm( array(), array( $this,
'submitDeleteForm' ) );
@@ -521,6 +522,8 @@
$this->msg( 'newsletter-delete-text' )
->rawParams( htmlspecialchars(
$this->newsletter->getName() ) )->parse()
);
+ $form->setId( 'newsletter-delete-form' );
+ $form->setSubmitID( 'newsletter-delete-button' );
$form->setSubmitTextMsg( 'newsletter-deletenewsletter-button' );
$form->setSubmitDestructive();
diff --git a/modules/ext.newsletter.delete.js b/modules/ext.newsletter.delete.js
new file mode 100644
index 0000000..ecbf7a1
--- /dev/null
+++ b/modules/ext.newsletter.delete.js
@@ -0,0 +1,37 @@
+/**
+ * Ask for confirmation on newsletter deletion form
+ *
+ */
+( function ( mw, $, OO ) {
+ 'use strict';
+ $( '#newsletter-delete-button button' ).on( 'click', function( e ) {
+ var messageDialog = new OO.ui.MessageDialog();
+ var windowManager = new OO.ui.WindowManager();
+
+ $( 'body' ).append( windowManager.$element );
+ windowManager.addWindows( [ messageDialog ] );
+
+ windowManager.openWindow( messageDialog, {
+ title: mw.msg( 'newsletter-delete-confirmation' ),
+ message: mw.msg( 'newsletter-delete-confirm-details' ),
+ actions: [ {
+ label: mw.msg(
'newsletter-delete-confirm-cancel' ),
+ flags: 'safe'
+ }, {
+ label: mw.msg(
'newsletter-delete-confirm-delete' ),
+ action: 'delete',
+ flags: [ 'primary', 'destructive' ]
+ }, ],
+ } )
+ .then( function( opened ) {
+ opened.then( function( closing, data ) {
+ if ( data && data.action === 'delete' ) {
+ // Clicked delete button - submit the
form and do the deletion
+ $( '#newsletter-delete-form' ).submit();
+ }
+ // Clicked cancel button - close dialog box
+ } );
+ } );
+ e.preventDefault();
+ } );
+}( mediaWiki, jQuery, OO ) );
--
To view, visit https://gerrit.wikimedia.org/r/258764
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I983f84bea83c043b231d136d3384b37ca456135a
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/Newsletter
Gerrit-Branch: master
Gerrit-Owner: Glaisher <[email protected]>
Gerrit-Reviewer: 01tonythomas <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Tinaj1234 <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits