Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15414291
D13925.id33607.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Referenced Files
None
Subscribers
None
D13925.id33607.diff
View Options
diff --git a/resources/sql/autopatches/20150815.owners.status.1.sql b/resources/sql/autopatches/20150815.owners.status.1.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150815.owners.status.1.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_owners.owners_package
+ ADD status VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20150815.owners.status.2.sql b/resources/sql/autopatches/20150815.owners.status.2.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150815.owners.status.2.sql
@@ -0,0 +1,2 @@
+UPDATE {$NAMESPACE}_owners.owners_package
+ SET status = 'active' WHERE status = '';
diff --git a/src/applications/owners/controller/PhabricatorOwnersDetailController.php b/src/applications/owners/controller/PhabricatorOwnersDetailController.php
--- a/src/applications/owners/controller/PhabricatorOwnersDetailController.php
+++ b/src/applications/owners/controller/PhabricatorOwnersDetailController.php
@@ -41,9 +41,20 @@
$properties = $this->buildPackagePropertyView($package);
$properties->setActionList($actions);
+ if ($package->isArchived()) {
+ $header_icon = 'fa-ban';
+ $header_name = pht('Archived');
+ $header_color = 'dark';
+ } else {
+ $header_icon = 'fa-check';
+ $header_name = pht('Active');
+ $header_color = 'bluegrey';
+ }
+
$header = id(new PHUIHeaderView())
->setUser($viewer)
->setHeader($package->getName())
+ ->setStatus($header_icon, $header_color, $header_name)
->setPolicyObject($package);
$panel = id(new PHUIObjectBoxView())
diff --git a/src/applications/owners/controller/PhabricatorOwnersEditController.php b/src/applications/owners/controller/PhabricatorOwnersEditController.php
--- a/src/applications/owners/controller/PhabricatorOwnersEditController.php
+++ b/src/applications/owners/controller/PhabricatorOwnersEditController.php
@@ -34,6 +34,7 @@
$v_owners = mpull($package->getOwners(), 'getUserPHID');
$v_auditing = $package->getAuditingEnabled();
$v_description = $package->getDescription();
+ $v_status = $package->getStatus();
$errors = array();
@@ -44,11 +45,13 @@
$v_owners = $request->getArr('owners');
$v_auditing = ($request->getStr('auditing') == 'enabled');
$v_description = $request->getStr('description');
+ $v_status = $request->getStr('status');
$type_name = PhabricatorOwnersPackageTransaction::TYPE_NAME;
$type_owners = PhabricatorOwnersPackageTransaction::TYPE_OWNERS;
$type_auditing = PhabricatorOwnersPackageTransaction::TYPE_AUDITING;
$type_description = PhabricatorOwnersPackageTransaction::TYPE_DESCRIPTION;
+ $type_status = PhabricatorOwnersPackageTransaction::TYPE_STATUS;
$xactions[] = id(new PhabricatorOwnersPackageTransaction())
->setTransactionType($type_name)
@@ -66,6 +69,12 @@
->setTransactionType($type_description)
->setNewValue($v_description);
+ if (!$is_new) {
+ $xactions[] = id(new PhabricatorOwnersPackageTransaction())
+ ->setTransactionType($type_status)
+ ->setNewValue($v_status);
+ }
+
$editor = id(new PhabricatorOwnersPackageTransactionEditor())
->setActor($viewer)
->setContentSourceFromRequest($request)
@@ -115,8 +124,18 @@
->setDatasource(new PhabricatorProjectOrUserDatasource())
->setLabel(pht('Owners'))
->setName('owners')
- ->setValue($v_owners))
- ->appendChild(
+ ->setValue($v_owners));
+
+ if (!$is_new) {
+ $form->appendChild(
+ id(new AphrontFormSelectControl())
+ ->setLabel(pht('Status'))
+ ->setName('status')
+ ->setValue($v_status)
+ ->setOptions($package->getStatusNameMap()));
+ }
+
+ $form->appendChild(
id(new AphrontFormSelectControl())
->setName('auditing')
->setLabel(pht('Auditing'))
diff --git a/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php b/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
--- a/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
+++ b/src/applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php
@@ -19,6 +19,7 @@
$types[] = PhabricatorOwnersPackageTransaction::TYPE_AUDITING;
$types[] = PhabricatorOwnersPackageTransaction::TYPE_DESCRIPTION;
$types[] = PhabricatorOwnersPackageTransaction::TYPE_PATHS;
+ $types[] = PhabricatorOwnersPackageTransaction::TYPE_STATUS;
return $types;
}
@@ -42,6 +43,8 @@
case PhabricatorOwnersPackageTransaction::TYPE_PATHS:
$paths = $object->getPaths();
return mpull($paths, 'getRef');
+ case PhabricatorOwnersPackageTransaction::TYPE_STATUS:
+ return $object->getStatus();
}
}
@@ -53,6 +56,7 @@
case PhabricatorOwnersPackageTransaction::TYPE_NAME:
case PhabricatorOwnersPackageTransaction::TYPE_DESCRIPTION:
case PhabricatorOwnersPackageTransaction::TYPE_PATHS:
+ case PhabricatorOwnersPackageTransaction::TYPE_STATUS:
return $xaction->getNewValue();
case PhabricatorOwnersPackageTransaction::TYPE_AUDITING:
return (int)$xaction->getNewValue();
@@ -99,6 +103,9 @@
case PhabricatorOwnersPackageTransaction::TYPE_OWNERS:
case PhabricatorOwnersPackageTransaction::TYPE_PATHS:
return;
+ case PhabricatorOwnersPackageTransaction::TYPE_STATUS:
+ $object->setStatus($xaction->getNewValue());
+ return;
}
return parent::applyCustomInternalTransaction($object, $xaction);
@@ -112,6 +119,7 @@
case PhabricatorOwnersPackageTransaction::TYPE_NAME:
case PhabricatorOwnersPackageTransaction::TYPE_DESCRIPTION:
case PhabricatorOwnersPackageTransaction::TYPE_AUDITING:
+ case PhabricatorOwnersPackageTransaction::TYPE_STATUS:
return;
case PhabricatorOwnersPackageTransaction::TYPE_OWNERS:
$old = $xaction->getOldValue();
diff --git a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
--- a/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
+++ b/src/applications/owners/query/PhabricatorOwnersPackageQuery.php
@@ -10,6 +10,7 @@
private $repositoryPHIDs;
private $paths;
private $namePrefix;
+ private $statuses;
private $controlMap = array();
private $controlResults;
@@ -57,6 +58,11 @@
return $this;
}
+ public function withStatuses(array $statuses) {
+ $this->statuses = $statuses;
+ return $this;
+ }
+
public function withControl($repository_phid, array $paths) {
if (empty($this->controlMap[$repository_phid])) {
$this->controlMap[$repository_phid] = array();
@@ -200,6 +206,13 @@
$this->getFragmentsForPaths($this->paths));
}
+ if ($this->statuses !== null) {
+ $where[] = qsprintf(
+ $conn,
+ 'p.status IN (%Ls)',
+ $this->statuses);
+ }
+
if (strlen($this->namePrefix)) {
// NOTE: This is a hacky mess, but this column is currently case
// sensitive and unique.
diff --git a/src/applications/owners/query/PhabricatorOwnersPackageSearchEngine.php b/src/applications/owners/query/PhabricatorOwnersPackageSearchEngine.php
--- a/src/applications/owners/query/PhabricatorOwnersPackageSearchEngine.php
+++ b/src/applications/owners/query/PhabricatorOwnersPackageSearchEngine.php
@@ -31,6 +31,12 @@
->setLabel(pht('Paths'))
->setKey('paths')
->setAliases(array('path')),
+ id(new PhabricatorSearchCheckboxesField())
+ ->setKey('statuses')
+ ->setLabel(pht('Status'))
+ ->setOptions(
+ id(new PhabricatorOwnersPackage())
+ ->getStatusNameMap()),
);
}
@@ -49,6 +55,10 @@
$query->withPaths($map['paths']);
}
+ if ($map['statuses']) {
+ $query->withStatuses($map['statuses']);
+ }
+
return $query;
}
@@ -64,6 +74,7 @@
}
$names += array(
+ 'active' => pht('Active Packages'),
'all' => pht('All Packages'),
);
@@ -77,6 +88,12 @@
switch ($query_key) {
case 'all':
return $query;
+ case 'active':
+ return $query->setParameter(
+ 'statuses',
+ array(
+ PhabricatorOwnersPackage::STATUS_ACTIVE,
+ ));
case 'authority':
return $query->setParameter(
'authorityPHIDs',
@@ -105,6 +122,10 @@
->setHeader($package->getName())
->setHref('/owners/package/'.$id.'/');
+ if ($package->isArchived()) {
+ $item->setDisabled(true);
+ }
+
$list->addItem($item);
}
diff --git a/src/applications/owners/storage/PhabricatorOwnersPackage.php b/src/applications/owners/storage/PhabricatorOwnersPackage.php
--- a/src/applications/owners/storage/PhabricatorOwnersPackage.php
+++ b/src/applications/owners/storage/PhabricatorOwnersPackage.php
@@ -12,14 +12,19 @@
protected $description;
protected $primaryOwnerPHID;
protected $mailKey;
+ protected $status;
private $paths = self::ATTACHABLE;
private $owners = self::ATTACHABLE;
+ const STATUS_ACTIVE = 'active';
+ const STATUS_ARCHIVED = 'archived';
+
public static function initializeNewPackage(PhabricatorUser $actor) {
return id(new PhabricatorOwnersPackage())
->setAuditingEnabled(0)
->attachPaths(array())
+ ->setStatus(self::STATUS_ACTIVE)
->attachOwners(array());
}
@@ -41,6 +46,13 @@
return null;
}
+ public static function getStatusNameMap() {
+ return array(
+ self::STATUS_ACTIVE => pht('Active'),
+ self::STATUS_ARCHIVED => pht('Archived'),
+ );
+ }
+
protected function getConfiguration() {
return array(
// This information is better available from the history table.
@@ -53,6 +65,7 @@
'primaryOwnerPHID' => 'phid?',
'auditingEnabled' => 'bool',
'mailKey' => 'bytes20',
+ 'status' => 'text32',
),
self::CONFIG_KEY_SCHEMA => array(
'key_phid' => null,
@@ -81,6 +94,10 @@
return parent::save();
}
+ public function isArchived() {
+ return ($this->getStatus() == self::STATUS_ARCHIVED);
+ }
+
public function setName($name) {
$this->name = $name;
if (!$this->getID()) {
diff --git a/src/applications/owners/storage/PhabricatorOwnersPackageTransaction.php b/src/applications/owners/storage/PhabricatorOwnersPackageTransaction.php
--- a/src/applications/owners/storage/PhabricatorOwnersPackageTransaction.php
+++ b/src/applications/owners/storage/PhabricatorOwnersPackageTransaction.php
@@ -9,6 +9,7 @@
const TYPE_AUDITING = 'owners.auditing';
const TYPE_DESCRIPTION = 'owners.description';
const TYPE_PATHS = 'owners.paths';
+ const TYPE_STATUS = 'owners.status';
public function getApplicationName() {
return 'owners';
@@ -115,6 +116,19 @@
return pht(
'%s updated paths for this package.',
$this->renderHandleLink($author_phid));
+ case self::TYPE_STATUS:
+ if ($new == PhabricatorOwnersPackage::STATUS_ACTIVE) {
+ if ($old === '') {
+ return;
+ }
+ return pht(
+ '%s activated this package.',
+ $this->renderHandleLink($author_phid));
+ } else if ($new == PhabricatorOwnersPackage::STATUS_ARCHIVED) {
+ return pht(
+ '%s archived this package.',
+ $this->renderHandleLink($author_phid));
+ }
}
return parent::getTitle();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Mar 21, 12:00 AM (3 d, 13 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7714656
Default Alt Text
D13925.id33607.diff (11 KB)
Attached To
Mode
D13925: Allow Owners Packages to be archived
Attached
Detach File
Event Timeline
Log In to Comment