jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/391342 )
Change subject: Allow users to prevent new users from sending them email. ...................................................................... Allow users to prevent new users from sending them email. Users now have the option to prevent Newbie users from sending them emails. Bug: T138165 Change-Id: I5d5332e50971fbcd1fa630d6bd03bdf757a9d1f1 --- M includes/DefaultSettings.php M includes/Preferences.php M includes/htmlform/fields/HTMLUsersMultiselectField.php M includes/specials/SpecialEmailuser.php M languages/i18n/en.json M languages/i18n/qqq.json M resources/Resources.php A resources/src/mediawiki.special/mediawiki.special.preferences.personalEmail.js 8 files changed, 58 insertions(+), 7 deletions(-) Approvals: jenkins-bot: Verified Kaldari: Looks good to me, approved diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index a7b34a1..e50b7a7 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -4851,6 +4851,7 @@ 'editfont' => 'monospace', 'editondblclick' => 0, 'editsectiononrightclick' => 0, + 'email-allow-new-users' => 1, 'enotifminoredits' => 0, 'enotifrevealaddr' => 0, 'enotifusertalkpages' => 1, diff --git a/includes/Preferences.php b/includes/Preferences.php index 878462d..33a975d 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -534,12 +534,22 @@ if ( $config->get( 'EnableUserEmail' ) && $user->isAllowed( 'sendemail' ) ) { $defaultPreferences['disablemail'] = [ + 'id' => 'wpAllowEmail', 'type' => 'toggle', 'invert' => true, 'section' => 'personal/email', 'label-message' => 'allowemail', 'disabled' => $disableEmailPrefs, ]; + + $defaultPreferences['email-allow-new-users'] = [ + 'id' => 'wpAllowEmailFromNewUsers', + 'type' => 'toggle', + 'section' => 'personal/email', + 'label-message' => 'email-allow-new-users-label', + 'disabled' => $disableEmailPrefs, + ]; + $defaultPreferences['ccmeonemails'] = [ 'type' => 'toggle', 'section' => 'personal/email', @@ -547,10 +557,7 @@ 'disabled' => $disableEmailPrefs, ]; - if ( $config->get( 'EnableUserEmailBlacklist' ) - && !$disableEmailPrefs - && !(bool)$user->getOption( 'disablemail' ) - ) { + if ( $config->get( 'EnableUserEmailBlacklist' ) ) { $lookup = CentralIdLookup::factory(); $ids = $user->getOption( 'email-blacklist', [] ); $names = $ids ? $lookup->namesFromCentralIds( $ids, $user ) : []; @@ -560,6 +567,7 @@ 'label-message' => 'email-blacklist-label', 'section' => 'personal/email', 'default' => implode( "\n", $names ), + 'disabled' => $disableEmailPrefs, ]; } } diff --git a/includes/htmlform/fields/HTMLUsersMultiselectField.php b/includes/htmlform/fields/HTMLUsersMultiselectField.php index f094745..46cc6d3 100644 --- a/includes/htmlform/fields/HTMLUsersMultiselectField.php +++ b/includes/htmlform/fields/HTMLUsersMultiselectField.php @@ -56,6 +56,14 @@ public function getInputOOUI( $value ) { $params = [ 'name' => $this->mName ]; + if ( isset( $this->mParams['id'] ) ) { + $params['id'] = $this->mParams['id']; + } + + if ( isset( $this->mParams['disabled'] ) ) { + $params['disabled'] = $this->mParams['disabled']; + } + if ( isset( $this->mParams['default'] ) ) { $params['default'] = $this->mParams['default']; } diff --git a/includes/specials/SpecialEmailuser.php b/includes/specials/SpecialEmailuser.php index d57ba09..06ca04f 100644 --- a/includes/specials/SpecialEmailuser.php +++ b/includes/specials/SpecialEmailuser.php @@ -238,9 +238,8 @@ return 'nowikiemail'; } - if ( - $target->getEditCount() === 0 - && ( $sender === null || !$sender->isAllowed( 'sendemail-new-users' ) ) + if ( $target->getEditCount() === 0 && + ( $sender === null || !$sender->isAllowed( 'sendemail-new-users' ) ) ) { // Determine if target has any other logged actions. $dbr = wfGetDB( DB_REPLICA ); @@ -262,6 +261,14 @@ } } + if ( $sender !== null && !$target->getOption( 'email-allow-new-users' ) && + $sender->isNewbie() + ) { + wfDebug( "User does not allow user emails from new users.\n" ); + + return 'nowikiemail'; + } + if ( $sender !== null ) { $blacklist = $target->getOption( 'email-blacklist', [] ); if ( $blacklist ) { diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 1c2bab9..5e7c8cb 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -1064,6 +1064,7 @@ "timezoneregion-indian": "Indian Ocean", "timezoneregion-pacific": "Pacific Ocean", "allowemail": "Allow other users to email me", + "email-allow-new-users-label": "Allow emails from brand-new users", "email-blacklist-label": "Prohibit these users from emailing me:", "prefs-searchoptions": "Search", "prefs-namespaces": "Namespaces", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index a527ed0..f3f44c8 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -1259,6 +1259,7 @@ "timezoneregion-indian": "Used in \"Time zone\" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], \"date and time\" tab.\n{{Related|Timezoneregion}}", "timezoneregion-pacific": "Used in \"Time zone\" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], \"date and time\" tab.\n{{Related|Timezoneregion}}", "allowemail": "Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", + "email-allow-new-users-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", "email-blacklist-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", "prefs-searchoptions": "{{Identical|Search}}", "prefs-namespaces": "Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]\n{{Identical|Namespace}}", diff --git a/resources/Resources.php b/resources/Resources.php index 3d075e2..b494429 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -2117,6 +2117,7 @@ 'resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js', 'resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js', 'resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js', + 'resources/src/mediawiki.special/mediawiki.special.preferences.personalEmail.js', ], 'messages' => [ 'prefs-tabs-navigation-hint', diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.personalEmail.js b/resources/src/mediawiki.special/mediawiki.special.preferences.personalEmail.js new file mode 100644 index 0000000..f934d59 --- /dev/null +++ b/resources/src/mediawiki.special/mediawiki.special.preferences.personalEmail.js @@ -0,0 +1,24 @@ +/*! + * JavaScript for Special:Preferences: Email preferences better UX + */ +( function ( $ ) { + $( function () { + var allowEmail, allowEmailFromNewUsers; + + allowEmail = $( '#wpAllowEmail' ); + allowEmailFromNewUsers = $( '#wpAllowEmailFromNewUsers' ); + + function toggleDisabled() { + if ( allowEmail.is( ':checked' ) && allowEmail.is( ':enabled' ) ) { + allowEmailFromNewUsers.prop( 'disabled', false ); + } else { + allowEmailFromNewUsers.prop( 'disabled', true ); + } + } + + if ( allowEmail ) { + allowEmail.on( 'change', toggleDisabled ); + toggleDisabled(); + } + } ); +}( jQuery ) ); -- To view, visit https://gerrit.wikimedia.org/r/391342 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5d5332e50971fbcd1fa630d6bd03bdf757a9d1f1 Gerrit-PatchSet: 14 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Dbarratt <dbarr...@wikimedia.org> Gerrit-Reviewer: Dbarratt <dbarr...@wikimedia.org> Gerrit-Reviewer: Dmaza <dm...@wikimedia.org> Gerrit-Reviewer: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com> Gerrit-Reviewer: Kaldari <rkald...@wikimedia.org> Gerrit-Reviewer: Legoktm <lego...@member.fsf.org> Gerrit-Reviewer: MaxSem <maxsem.w...@gmail.com> Gerrit-Reviewer: Niharika29 <nko...@wikimedia.org> Gerrit-Reviewer: Siebrand <siebr...@kitano.nl> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits