Anomie has uploaded a new change for review.
https://gerrit.wikimedia.org/r/208112
Change subject: ChangeTags: Don't show UI when no editable tags exist
......................................................................
ChangeTags: Don't show UI when no editable tags exist
This also picks up I72ca7371, which was necessary for a successful
merge.
Bug: T97773
Change-Id: I001f15ca6f58bc9318eed84aa8ace2bddcb1b315
(cherry picked from commit a2415baa1a3c94abe83d0e2af274c4753775515e)
---
M includes/actions/HistoryAction.php
M includes/changetags/ChangeTags.php
M includes/logging/LogEventsList.php
M includes/specials/SpecialLog.php
4 files changed, 47 insertions(+), 16 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/12/208112/1
diff --git a/includes/actions/HistoryAction.php
b/includes/actions/HistoryAction.php
index 83185e4..f4f2a2a 100644
--- a/includes/actions/HistoryAction.php
+++ b/includes/actions/HistoryAction.php
@@ -504,7 +504,7 @@
if ( $user->isAllowed( 'deleterevision' ) ) {
$actionButtons .= $this->getRevisionButton(
'revisiondelete', 'showhideselectedversions' );
}
- if ( $user->isAllowed( 'changetags' ) ) {
+ if ( ChangeTags::showTagEditingUI( $user ) ) {
$actionButtons .= $this->getRevisionButton(
'editchangetags', 'history-edit-tags' );
}
if ( $actionButtons ) {
@@ -631,14 +631,14 @@
$del = '';
$user = $this->getUser();
$canRevDelete = $user->isAllowed( 'deleterevision' );
- $canModifyTags = $user->isAllowed( 'changetags' );
+ $showTagEditUI = ChangeTags::showTagEditingUI( $user );
// Show checkboxes for each revision, to allow for revision
deletion and
// change tags
- if ( $canRevDelete || $canModifyTags ) {
+ if ( $canRevDelete || $showTagEditUI ) {
$this->preventClickjacking();
// If revision was hidden from sysops and we don't need
the checkbox
// for anything else, disable it
- if ( !$canModifyTags && !$rev->userCan(
Revision::DELETED_RESTRICTED, $user ) ) {
+ if ( !$showTagEditUI && !$rev->userCan(
Revision::DELETED_RESTRICTED, $user ) ) {
$del = Xml::check( 'deleterevisions', false,
array( 'disabled' => 'disabled' ) );
// Otherwise, enable the checkbox...
} else {
diff --git a/includes/changetags/ChangeTags.php
b/includes/changetags/ChangeTags.php
index 43f957c..5b0c234 100644
--- a/includes/changetags/ChangeTags.php
+++ b/includes/changetags/ChangeTags.php
@@ -1219,4 +1219,22 @@
$wgMemc->set( $key, $out, 300 );
return $out;
}
+
+ /**
+ * Indicate whether change tag editing UI is relevant
+ *
+ * Returns true if the user has the necessary right and there are any
+ * editable tags defined.
+ *
+ * This intentionally doesn't check "any addable || any deletable",
because
+ * it seems like it would be more confusing than useful if the
checkboxes
+ * suddenly showed up because some abuse filter stopped defining a tag
and
+ * then suddenly disappeared when someone deleted all uses of that tag.
+ *
+ * @param User $user
+ * @return bool
+ */
+ public static function showTagEditingUI( User $user ) {
+ return $user->isAllowed( 'changetags' ) &&
(bool)self::listExplicitlyDefinedTags();
+ }
}
diff --git a/includes/logging/LogEventsList.php
b/includes/logging/LogEventsList.php
index 8b28821..dfe3136 100644
--- a/includes/logging/LogEventsList.php
+++ b/includes/logging/LogEventsList.php
@@ -26,7 +26,7 @@
class LogEventsList extends ContextSource {
const NO_ACTION_LINK = 1;
const NO_EXTRA_USER_LINKS = 2;
- const USE_REVDEL_CHECKBOXES = 4;
+ const USE_CHECKBOXES = 4;
public $flags;
@@ -44,7 +44,7 @@
* a Skin object. Use of Skin is deprecated.
* @param null $unused Unused; used to be an OutputPage object.
* @param int $flags Can be a combination of self::NO_ACTION_LINK,
- * self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
+ * self::NO_EXTRA_USER_LINKS or self::USE_CHECKBOXES.
*/
public function __construct( $context, $unused = null, $flags = 0 ) {
if ( $context instanceof IContextSource ) {
@@ -341,14 +341,27 @@
*/
private function getShowHideLinks( $row ) {
// We don't want to see the links and
- // no one can hide items from the suppress log.
- if ( ( $this->flags == self::NO_ACTION_LINK )
- || $row->log_type == 'suppress'
- ) {
+ if ( $this->flags == self::NO_ACTION_LINK ) {
return '';
}
- $del = '';
+
$user = $this->getUser();
+
+ // If change tag editing is available to this user, return the
checkbox
+ if ( $this->flags & self::USE_CHECKBOXES &&
ChangeTags::showTagEditingUI( $user ) ) {
+ return Xml::check(
+ 'showhiderevisions',
+ false,
+ array( 'name' => 'ids[' . $row->log_id . ']' )
+ );
+ }
+
+ // no one can hide items from the suppress log.
+ if ( $row->log_type == 'suppress' ) {
+ return '';
+ }
+
+ $del = '';
// Don't show useless checkbox to people who cannot hide log
entries
if ( $user->isAllowed( 'deletedhistory' ) ) {
$canHide = $user->isAllowed( 'deletelogentry' );
@@ -358,7 +371,7 @@
$canViewThisSuppressedEntry = $canViewSuppressedOnly &&
$entryIsSuppressed;
if ( $row->log_deleted || $canHide ) {
// Show checkboxes instead of links.
- if ( $canHide && $this->flags &
self::USE_REVDEL_CHECKBOXES && !$canViewThisSuppressedEntry ) {
+ if ( $canHide && $this->flags &
self::USE_CHECKBOXES && !$canViewThisSuppressedEntry ) {
// If event was hidden from sysops
if ( !self::userCan( $row,
LogPage::DELETED_RESTRICTED, $user ) ) {
$del = Xml::check(
'deleterevisions', false, array( 'disabled' => 'disabled' ) );
diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php
index f16e5ba..e44ce5f 100644
--- a/includes/specials/SpecialLog.php
+++ b/includes/specials/SpecialLog.php
@@ -165,7 +165,7 @@
$loglist = new LogEventsList(
$this->getContext(),
null,
- LogEventsList::USE_REVDEL_CHECKBOXES
+ LogEventsList::USE_CHECKBOXES
);
$pager = new LogPager(
$loglist,
@@ -218,10 +218,10 @@
private function getActionButtons( $formcontents ) {
$user = $this->getUser();
$canRevDelete = $user->isAllowedAll( 'deletedhistory',
'deletelogentry' );
- $canModifyTags = $user->isAllowed( 'changetags' );
+ $showTagEditUI = ChangeTags::showTagEditingUI( $user );
# If the user doesn't have the ability to delete log entries
nor edit tags,
# don't bother showing them the button(s).
- if ( !$canRevDelete && !$canModifyTags ) {
+ if ( !$canRevDelete && !$showTagEditUI ) {
return $formcontents;
}
@@ -246,7 +246,7 @@
$this->msg( 'showhideselectedlogentries'
)->text()
) . "\n";
}
- if ( $canModifyTags ) {
+ if ( $showTagEditUI ) {
$buttons .= Html::element(
'button',
array(
--
To view, visit https://gerrit.wikimedia.org/r/208112
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I001f15ca6f58bc9318eed84aa8ace2bddcb1b315
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.26wmf3
Gerrit-Owner: Anomie <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits