Page MenuHomePhabricator

D20131.id.diff
No OneTemporary

D20131.id.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -9,7 +9,7 @@
'names' => array(
'conpherence.pkg.css' => '3c8a0668',
'conpherence.pkg.js' => '020aebcf',
- 'core.pkg.css' => '08baca0c',
+ 'core.pkg.css' => '7a73ffc5',
'core.pkg.js' => '5c737607',
'differential.pkg.css' => 'b8df73d4',
'differential.pkg.js' => '67c9ea4c',
@@ -157,7 +157,7 @@
'rsrc/css/phui/phui-header-view.css' => '93cea4ec',
'rsrc/css/phui/phui-hovercard.css' => '6ca90fa0',
'rsrc/css/phui/phui-icon-set-selector.css' => '7aa5f3ec',
- 'rsrc/css/phui/phui-icon.css' => '281f964d',
+ 'rsrc/css/phui/phui-icon.css' => '4cbc684a',
'rsrc/css/phui/phui-image-mask.css' => '62c7f4d2',
'rsrc/css/phui/phui-info-view.css' => '37b8d9ce',
'rsrc/css/phui/phui-invisible-character-view.css' => 'c694c4a4',
@@ -823,7 +823,7 @@
'phui-hovercard' => '074f0783',
'phui-hovercard-view-css' => '6ca90fa0',
'phui-icon-set-selector-css' => '7aa5f3ec',
- 'phui-icon-view-css' => '281f964d',
+ 'phui-icon-view-css' => '4cbc684a',
'phui-image-mask-css' => '62c7f4d2',
'phui-info-view-css' => '37b8d9ce',
'phui-inline-comment-view-css' => '48acce5b',
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -1115,6 +1115,16 @@
$transaction_open = true;
}
+ // We can technically test any object for CAN_INTERACT, but we can
+ // run into some issues in doing so (for example, in project unit tests).
+ // For now, only test for CAN_INTERACT if the object is explicitly a
+ // lockable object.
+
+ $was_locked = false;
+ if ($object instanceof PhabricatorEditEngineLockableInterface) {
+ $was_locked = !PhabricatorPolicyFilter::canInteract($actor, $object);
+ }
+
foreach ($xactions as $xaction) {
$this->applyInternalEffects($object, $xaction);
}
@@ -1132,6 +1142,10 @@
}
foreach ($xactions as $xaction) {
+ if ($was_locked) {
+ $xaction->setIsLockOverrideTransaction(true);
+ }
+
$xaction->setObjectPHID($object->getPHID());
if ($xaction->getComment()) {
$xaction->setPHID($xaction->generatePHID());
diff --git a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
--- a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
+++ b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
@@ -169,6 +169,14 @@
return (bool)$this->getMetadataValue('core.mfa', false);
}
+ public function setIsLockOverrideTransaction($override) {
+ return $this->setMetadataValue('core.lock-override', $override);
+ }
+
+ public function getIsLockOverrideTransaction() {
+ return (bool)$this->getMetadataValue('core.lock-override', false);
+ }
+
public function attachComment(
PhabricatorApplicationTransactionComment $comment) {
$this->comment = $comment;
@@ -1529,6 +1537,12 @@
return false;
}
}
+
+ // Don't group lock override and non-override transactions together.
+ $is_override = $this->getIsLockOverrideTransaction();
+ if ($is_override != $xaction->getIsLockOverrideTransaction()) {
+ return false;
+ }
}
return true;
diff --git a/src/applications/transactions/view/PhabricatorApplicationTransactionView.php b/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
--- a/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
+++ b/src/applications/transactions/view/PhabricatorApplicationTransactionView.php
@@ -416,7 +416,8 @@
->setColor($xaction->getColor())
->setHideCommentOptions($this->getHideCommentOptions())
->setIsSilent($xaction->getIsSilentTransaction())
- ->setIsMFA($xaction->getIsMFATransaction());
+ ->setIsMFA($xaction->getIsMFATransaction())
+ ->setIsLockOverride($xaction->getIsLockOverrideTransaction());
list($token, $token_removed) = $xaction->getToken();
if ($token) {
diff --git a/src/view/phui/PHUIIconView.php b/src/view/phui/PHUIIconView.php
--- a/src/view/phui/PHUIIconView.php
+++ b/src/view/phui/PHUIIconView.php
@@ -19,6 +19,7 @@
private $iconColor;
private $iconBackground;
private $tooltip;
+ private $emblemColor;
public function setHref($href) {
$this->href = $href;
@@ -66,6 +67,15 @@
return $this;
}
+ public function setEmblemColor($emblem_color) {
+ $this->emblemColor = $emblem_color;
+ return $this;
+ }
+
+ public function getEmblemColor() {
+ return $this->emblemColor;
+ }
+
protected function getTagName() {
$tag = 'span';
if ($this->href) {
@@ -106,6 +116,10 @@
$this->appendChild($this->text);
}
+ if ($this->emblemColor) {
+ $classes[] = 'phui-icon-emblem phui-icon-emblem-'.$this->emblemColor;
+ }
+
$sigil = null;
$meta = array();
if ($this->tooltip) {
diff --git a/src/view/phui/PHUITimelineEventView.php b/src/view/phui/PHUITimelineEventView.php
--- a/src/view/phui/PHUITimelineEventView.php
+++ b/src/view/phui/PHUITimelineEventView.php
@@ -31,6 +31,7 @@
private $pinboardItems = array();
private $isSilent;
private $isMFA;
+ private $isLockOverride;
public function setAuthorPHID($author_phid) {
$this->authorPHID = $author_phid;
@@ -197,6 +198,15 @@
return $this->isMFA;
}
+ public function setIsLockOverride($is_override) {
+ $this->isLockOverride = $is_override;
+ return $this;
+ }
+
+ public function getIsLockOverride() {
+ return $this->isLockOverride;
+ }
+
public function setReallyMajorEvent($me) {
$this->reallyMajorEvent = $me;
return $this;
@@ -597,7 +607,8 @@
// not expect to have received any mail or notifications.
if ($this->getIsSilent()) {
$extra[] = id(new PHUIIconView())
- ->setIcon('fa-bell-slash', 'red')
+ ->setIcon('fa-bell-slash', 'white')
+ ->setEmblemColor('red')
->setTooltip(pht('Silent Edit'));
}
@@ -605,9 +616,17 @@
// provide a hint that it was extra authentic.
if ($this->getIsMFA()) {
$extra[] = id(new PHUIIconView())
- ->setIcon('fa-vcard', 'pink')
+ ->setIcon('fa-vcard', 'white')
+ ->setEmblemColor('pink')
->setTooltip(pht('MFA Authenticated'));
}
+
+ if ($this->getIsLockOverride()) {
+ $extra[] = id(new PHUIIconView())
+ ->setIcon('fa-chain-broken', 'white')
+ ->setEmblemColor('violet')
+ ->setTooltip(pht('Lock Overridden'));
+ }
}
$extra = javelin_tag(
diff --git a/webroot/rsrc/css/phui/phui-icon.css b/webroot/rsrc/css/phui/phui-icon.css
--- a/webroot/rsrc/css/phui/phui-icon.css
+++ b/webroot/rsrc/css/phui/phui-icon.css
@@ -183,3 +183,24 @@
text-decoration: none;
color: #fff;
}
+
+
+.phui-icon-emblem {
+ border-radius: 4px;
+}
+
+.phui-timeline-extra .phui-icon-emblem {
+ padding: 4px 6px;
+}
+
+.phui-icon-emblem-violet {
+ background-color: {$violet};
+}
+
+.phui-icon-emblem-red {
+ background-color: {$red};
+}
+
+.phui-icon-emblem-pink {
+ background-color: {$pink};
+}

File Metadata

Mime Type
text/plain
Expires
Thu, May 16, 4:20 AM (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6287733
Default Alt Text
D20131.id.diff (7 KB)

Event Timeline