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

Reply via email to