Ricordisamoa has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/236537

Change subject: [WIP] wbeditentity: use specific summary if only label or 
description changes
......................................................................

[WIP] wbeditentity: use specific summary if only label or description changes

Bug: T67846
Change-Id: Ia95e4aef9b67858bc8f0ca1e320b9af6cdd1a2da
---
M repo/includes/api/EditEntity.php
1 file changed, 22 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/37/236537/1

diff --git a/repo/includes/api/EditEntity.php b/repo/includes/api/EditEntity.php
index 4304cf9..89c3f92 100644
--- a/repo/includes/api/EditEntity.php
+++ b/repo/includes/api/EditEntity.php
@@ -12,6 +12,8 @@
 use Title;
 use UsageException;
 use Wikibase\ChangeOp\ChangeOp;
+use Wikibase\ChangeOp\ChangeOpLabel;
+use Wikibase\ChangeOp\ChangeOpDescription;
 use Wikibase\ChangeOp\ChangeOps;
 use Wikibase\ChangeOp\FingerprintChangeOpFactory;
 use Wikibase\ChangeOp\SiteLinkChangeOpFactory;
@@ -252,10 +254,15 @@
 
                $changeOps = $this->getChangeOps( $data, $entity );
 
-               $this->applyChangeOp( $changeOps, $entity );
+               $applied = false;
+               $summary = $this->getSummary( $params, $entity, 
$changeOps->getChangeOps(), $applied );
+
+               if ( !$applied ) {
+                       $this->applyChangeOp( $changeOps, $entity );
+               }
 
                $this->buildResult( $entity );
-               return $this->getSummary( $params );
+               return $summary;
        }
 
        /**
@@ -263,12 +270,23 @@
         *
         * @return Summary
         */
-       private function getSummary( array $params ) {
+       private function getSummary( array $params, Entity &$entity, array 
$changeOps, &$applied ) {
                //TODO: Construct a nice and meaningful summary from the 
changes that get applied!
                //      Perhaps that could be based on the resulting diff?]
                $summary = $this->createSummary( $params );
                if ( isset( $params['id'] ) xor ( isset( $params['site'] ) && 
isset( $params['title'] ) ) ) {
-                       $summary->setAction( $params['clear'] === false ? 
'update' : 'override' );
+                       if ( $params['clear'] !== false ) {
+                               $summary->setAction( 'override' );
+                       } elseif (
+                               count( $changeOps ) === 1 &&
+                               ( $changeOps[0] instanceof ChangeOpLabel || 
$changeOps[0] instanceof ChangeOpDescription )
+                       ) {
+                               $summary->setModuleName( $changeOps[0] 
instanceof ChangeOpLabel ? 'wbsetlabel' : 'wbsetdescription' );
+                               $this->applyChangeOp( $changeOps[0], $entity, 
$summary );
+                               $applied = true;
+                       } else {
+                               $summary->setAction( 'update' );
+                       }
                } else {
                        $summary->setAction( 'create' );
                }#

-- 
To view, visit https://gerrit.wikimedia.org/r/236537
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia95e4aef9b67858bc8f0ca1e320b9af6cdd1a2da
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisa...@openmailbox.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to