mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 11:30:55 +01:00
Show an additional "Draft" tag on non-broadcasting revisions in a non-draft state
Summary: Depends on D19284. Ref T13110. It's now possible to get a revision into a "Abandoned + But, Never Promoted From Draft" state. Show this in the header and provide the draft hint above the comment area. Also, remove `shouldBroadcast()`. The method `getShouldBroadcast()` now has the same meaning. Finally, migrate existing drafts to `shouldBroadcast = false` and default `shouldBroadcast` to `true`. If we don't do this, every older revision becomes a non-broadcasting revision because this flag was not explicitly set on revision creation before, only on promotion out of draft. Test Plan: Ran migration; abandoned draft revisions and ended up in a draft + abandoned state. Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13110 Differential Revision: https://secure.phabricator.com/D19285
This commit is contained in:
parent
38e788c99a
commit
615d27c8e9
5 changed files with 46 additions and 15 deletions
20
resources/sql/autopatches/20180403.draft.01.broadcast.php
Normal file
20
resources/sql/autopatches/20180403.draft.01.broadcast.php
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
$table = new DifferentialRevision();
|
||||
$conn = $table->establishConnection('w');
|
||||
|
||||
$drafts = $table->loadAllWhere(
|
||||
'status = %s',
|
||||
DifferentialRevisionStatus::DRAFT);
|
||||
foreach ($drafts as $draft) {
|
||||
$properties = $draft->getProperties();
|
||||
|
||||
$properties[DifferentialRevision::PROPERTY_SHOULD_BROADCAST] = false;
|
||||
|
||||
queryfx(
|
||||
$conn,
|
||||
'UPDATE %T SET properties = %s WHERE id = %d',
|
||||
id(new DifferentialRevision())->getTableName(),
|
||||
phutil_json_encode($properties),
|
||||
$draft->getID());
|
||||
}
|
|
@ -525,11 +525,27 @@ final class DifferentialRevisionViewController extends DifferentialController {
|
|||
$status_tag = id(new PHUITagView())
|
||||
->setName($revision->getStatusDisplayName())
|
||||
->setIcon($revision->getStatusIcon())
|
||||
->setColor($revision->getStatusIconColor())
|
||||
->setColor($revision->getStatusTagColor())
|
||||
->setType(PHUITagView::TYPE_SHADE);
|
||||
|
||||
$view->addProperty(PHUIHeaderView::PROPERTY_STATUS, $status_tag);
|
||||
|
||||
// If the revision is in a status other than "Draft", but not broadcasting,
|
||||
// add an additional "Draft" tag to the header to make it clear that this
|
||||
// revision hasn't promoted yet.
|
||||
if (!$revision->getShouldBroadcast() && !$revision->isDraft()) {
|
||||
$draft_status = DifferentialRevisionStatus::newForStatus(
|
||||
DifferentialRevisionStatus::DRAFT);
|
||||
|
||||
$draft_tag = id(new PHUITagView())
|
||||
->setName($draft_status->getDisplayName())
|
||||
->setIcon($draft_status->getIcon())
|
||||
->setColor($draft_status->getTagColor())
|
||||
->setType(PHUITagView::TYPE_SHADE);
|
||||
|
||||
$view->addTag($draft_tag);
|
||||
}
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ final class DifferentialDraftField
|
|||
public function getWarningsForDetailView() {
|
||||
$revision = $this->getObject();
|
||||
|
||||
if (!$revision->isDraft()) {
|
||||
if ($revision->getShouldBroadcast()) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
|
|
@ -487,7 +487,7 @@ final class DifferentialTransactionEditor
|
|||
PhabricatorLiskDAO $object,
|
||||
array $xactions) {
|
||||
|
||||
if (!$object->shouldBroadcast()) {
|
||||
if (!$object->getShouldBroadcast()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -498,7 +498,7 @@ final class DifferentialTransactionEditor
|
|||
PhabricatorLiskDAO $object,
|
||||
array $xactions) {
|
||||
|
||||
if (!$object->shouldBroadcast()) {
|
||||
if (!$object->getShouldBroadcast()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1152,7 +1152,7 @@ final class DifferentialTransactionEditor
|
|||
|
||||
// If the object is still a draft, prevent "Send me an email" and other
|
||||
// similar rules from acting yet.
|
||||
if (!$object->shouldBroadcast()) {
|
||||
if (!$object->getShouldBroadcast()) {
|
||||
$adapter->setForbiddenAction(
|
||||
HeraldMailableState::STATECONST,
|
||||
DifferentialHeraldStateReasons::REASON_DRAFT);
|
||||
|
|
|
@ -679,6 +679,10 @@ final class DifferentialRevision extends DifferentialDAO
|
|||
return $this->getStatusObject()->getIconColor();
|
||||
}
|
||||
|
||||
public function getStatusTagColor() {
|
||||
return $this->getStatusObject()->getTagColor();
|
||||
}
|
||||
|
||||
public function getStatusObject() {
|
||||
$status = $this->getStatus();
|
||||
return DifferentialRevisionStatus::newForStatus($status);
|
||||
|
@ -704,14 +708,6 @@ final class DifferentialRevision extends DifferentialDAO
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function shouldBroadcast() {
|
||||
if (!$this->isDraft()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getHoldAsDraft() {
|
||||
return $this->getProperty(self::PROPERTY_DRAFT_HOLD, false);
|
||||
}
|
||||
|
@ -721,7 +717,7 @@ final class DifferentialRevision extends DifferentialDAO
|
|||
}
|
||||
|
||||
public function getShouldBroadcast() {
|
||||
return $this->getProperty(self::PROPERTY_SHOULD_BROADCAST, false);
|
||||
return $this->getProperty(self::PROPERTY_SHOULD_BROADCAST, true);
|
||||
}
|
||||
|
||||
public function setShouldBroadcast($should_broadcast) {
|
||||
|
@ -746,7 +742,6 @@ final class DifferentialRevision extends DifferentialDAO
|
|||
return $this->getProperty(self::PROPERTY_LINES_REMOVED);
|
||||
}
|
||||
|
||||
|
||||
public function getBuildableStatus($phid) {
|
||||
$buildables = $this->getProperty(self::PROPERTY_BUILDABLES);
|
||||
if (!is_array($buildables)) {
|
||||
|
|
Loading…
Reference in a new issue