Differential D20277 Diff 48414 src/applications/project/order/PhabricatorProjectColumnStatusOrder.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/order/PhabricatorProjectColumnStatusOrder.php
- This file was added.
<?php | |||||
final class PhabricatorProjectColumnStatusOrder | |||||
extends PhabricatorProjectColumnOrder { | |||||
const ORDERKEY = 'status'; | |||||
public function getDisplayName() { | |||||
return pht('Group by Status'); | |||||
} | |||||
protected function newMenuIconIcon() { | |||||
return 'fa-check'; | |||||
} | |||||
public function getHasHeaders() { | |||||
return true; | |||||
} | |||||
public function getCanReorder() { | |||||
return true; | |||||
} | |||||
public function getMenuOrder() { | |||||
return 3000; | |||||
} | |||||
protected function newHeaderKeyForObject($object) { | |||||
return $this->newHeaderKeyForStatus($object->getStatus()); | |||||
} | |||||
private function newHeaderKeyForStatus($status) { | |||||
return sprintf('status(%s)', $status); | |||||
} | |||||
protected function newSortVectorsForObjects(array $objects) { | |||||
$status_sequence = $this->newStatusSequence(); | |||||
$vectors = array(); | |||||
foreach ($objects as $object_key => $object) { | |||||
$vectors[$object_key] = array( | |||||
(int)idx($status_sequence, $object->getStatus(), 0), | |||||
); | |||||
} | |||||
return $vectors; | |||||
} | |||||
private function newStatusSequence() { | |||||
$statuses = ManiphestTaskStatus::getTaskStatusMap(); | |||||
return array_combine( | |||||
array_keys($statuses), | |||||
range(1, count($statuses))); | |||||
} | |||||
protected function newHeadersForObjects(array $objects) { | |||||
$headers = array(); | |||||
$statuses = ManiphestTaskStatus::getTaskStatusMap(); | |||||
$sequence = $this->newStatusSequence(); | |||||
foreach ($statuses as $status_key => $status_name) { | |||||
$header_key = $this->newHeaderKeyForStatus($status_key); | |||||
$sort_vector = array( | |||||
(int)idx($sequence, $status_key, 0), | |||||
); | |||||
$status_icon = ManiphestTaskStatus::getStatusIcon($status_key); | |||||
$status_color = ManiphestTaskStatus::getStatusColor($status_key); | |||||
$icon_view = id(new PHUIIconView()) | |||||
->setIcon($status_icon, $status_color); | |||||
$header = $this->newHeader() | |||||
->setHeaderKey($header_key) | |||||
->setSortVector($sort_vector) | |||||
->setName($status_name) | |||||
->setIcon($icon_view) | |||||
->setEditProperties( | |||||
array( | |||||
'value' => $status_key, | |||||
)); | |||||
$headers[] = $header; | |||||
} | |||||
return $headers; | |||||
} | |||||
protected function newColumnTransactions($object, array $header) { | |||||
$new_status = idx($header, 'value'); | |||||
if ($object->getStatus() === $new_status) { | |||||
return null; | |||||
} | |||||
$xactions = array(); | |||||
$xactions[] = $this->newTransaction($object) | |||||
->setTransactionType(ManiphestTaskStatusTransaction::TRANSACTIONTYPE) | |||||
->setNewValue($new_status); | |||||
return $xactions; | |||||
} | |||||
} |