Page MenuHomePhabricator

D9103.id21618.diff
No OneTemporary

D9103.id21618.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -661,6 +661,7 @@
'DrydockLease' => 'applications/drydock/storage/DrydockLease.php',
'DrydockLeaseController' => 'applications/drydock/controller/DrydockLeaseController.php',
'DrydockLeaseListController' => 'applications/drydock/controller/DrydockLeaseListController.php',
+ 'DrydockLeaseListView' => 'applications/drydock/view/DrydockLeaseListView.php',
'DrydockLeaseQuery' => 'applications/drydock/query/DrydockLeaseQuery.php',
'DrydockLeaseReleaseController' => 'applications/drydock/controller/DrydockLeaseReleaseController.php',
'DrydockLeaseSearchEngine' => 'applications/drydock/query/DrydockLeaseSearchEngine.php',
@@ -671,6 +672,7 @@
'DrydockLog' => 'applications/drydock/storage/DrydockLog.php',
'DrydockLogController' => 'applications/drydock/controller/DrydockLogController.php',
'DrydockLogListController' => 'applications/drydock/controller/DrydockLogListController.php',
+ 'DrydockLogListView' => 'applications/drydock/view/DrydockLogListView.php',
'DrydockLogQuery' => 'applications/drydock/query/DrydockLogQuery.php',
'DrydockLogSearchEngine' => 'applications/drydock/query/DrydockLogSearchEngine.php',
'DrydockManagementCloseWorkflow' => 'applications/drydock/management/DrydockManagementCloseWorkflow.php',
@@ -687,6 +689,7 @@
'DrydockResourceCloseController' => 'applications/drydock/controller/DrydockResourceCloseController.php',
'DrydockResourceController' => 'applications/drydock/controller/DrydockResourceController.php',
'DrydockResourceListController' => 'applications/drydock/controller/DrydockResourceListController.php',
+ 'DrydockResourceListView' => 'applications/drydock/view/DrydockResourceListView.php',
'DrydockResourceQuery' => 'applications/drydock/query/DrydockResourceQuery.php',
'DrydockResourceSearchEngine' => 'applications/drydock/query/DrydockResourceSearchEngine.php',
'DrydockResourceStatus' => 'applications/drydock/constants/DrydockResourceStatus.php',
@@ -3305,11 +3308,8 @@
1 => 'PhabricatorPolicyInterface',
),
'DrydockLeaseController' => 'DrydockController',
- 'DrydockLeaseListController' =>
- array(
- 0 => 'DrydockLeaseController',
- 1 => 'PhabricatorApplicationSearchResultsControllerInterface',
- ),
+ 'DrydockLeaseListController' => 'DrydockLeaseController',
+ 'DrydockLeaseListView' => 'AphrontView',
'DrydockLeaseQuery' => 'DrydockQuery',
'DrydockLeaseReleaseController' => 'DrydockLeaseController',
'DrydockLeaseSearchEngine' => 'PhabricatorApplicationSearchEngine',
@@ -3323,11 +3323,8 @@
1 => 'PhabricatorPolicyInterface',
),
'DrydockLogController' => 'DrydockController',
- 'DrydockLogListController' =>
- array(
- 0 => 'DrydockLogController',
- 1 => 'PhabricatorApplicationSearchResultsControllerInterface',
- ),
+ 'DrydockLogListController' => 'DrydockLogController',
+ 'DrydockLogListView' => 'AphrontView',
'DrydockLogQuery' => 'DrydockQuery',
'DrydockLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
'DrydockManagementCloseWorkflow' => 'DrydockManagementWorkflow',
@@ -3347,11 +3344,8 @@
),
'DrydockResourceCloseController' => 'DrydockResourceController',
'DrydockResourceController' => 'DrydockController',
- 'DrydockResourceListController' =>
- array(
- 0 => 'DrydockResourceController',
- 1 => 'PhabricatorApplicationSearchResultsControllerInterface',
- ),
+ 'DrydockResourceListController' => 'DrydockResourceController',
+ 'DrydockResourceListView' => 'AphrontView',
'DrydockResourceQuery' => 'DrydockQuery',
'DrydockResourceSearchEngine' => 'PhabricatorApplicationSearchEngine',
'DrydockResourceStatus' => 'DrydockConstants',
diff --git a/src/applications/drydock/controller/DrydockBlueprintViewController.php b/src/applications/drydock/controller/DrydockBlueprintViewController.php
--- a/src/applications/drydock/controller/DrydockBlueprintViewController.php
+++ b/src/applications/drydock/controller/DrydockBlueprintViewController.php
@@ -38,7 +38,10 @@
->setViewer($viewer)
->execute();
- $resource_list = $this->buildResourceListView($resources);
+ $resource_list = id(new DrydockResourceListView())
+ ->setUser($viewer)
+ ->setResources($resources)
+ ->render();
$resource_list->setNoDataString(pht('This blueprint has no resources.'));
$pager = new AphrontPagerView();
diff --git a/src/applications/drydock/controller/DrydockController.php b/src/applications/drydock/controller/DrydockController.php
--- a/src/applications/drydock/controller/DrydockController.php
+++ b/src/applications/drydock/controller/DrydockController.php
@@ -8,145 +8,4 @@
return $this->buildSideNavView()->getMenu();
}
- protected function buildLogTableView(array $logs) {
- assert_instances_of($logs, 'DrydockLog');
-
- $user = $this->getRequest()->getUser();
-
- $rows = array();
- foreach ($logs as $log) {
- $resource_uri = '/resource/'.$log->getResourceID().'/';
- $resource_uri = $this->getApplicationURI($resource_uri);
-
- $lease_uri = '/lease/'.$log->getLeaseID().'/';
- $lease_uri = $this->getApplicationURI($lease_uri);
-
- $rows[] = array(
- phutil_tag(
- 'a',
- array(
- 'href' => $resource_uri,
- ),
- $log->getResourceID()),
- phutil_tag(
- 'a',
- array(
- 'href' => $lease_uri,
- ),
- $log->getLeaseID()),
- $log->getMessage(),
- phabricator_date($log->getEpoch(), $user),
- );
- }
-
- $table = new AphrontTableView($rows);
- $table->setDeviceReadyTable(true);
- $table->setHeaders(
- array(
- 'Resource',
- 'Lease',
- 'Message',
- 'Date',
- ));
- $table->setShortHeaders(
- array(
- 'R',
- 'L',
- 'Message',
- '',
- ));
- $table->setColumnClasses(
- array(
- '',
- '',
- 'wide',
- '',
- ));
-
- return $table;
- }
-
- protected function buildLeaseListView(array $leases) {
- assert_instances_of($leases, 'DrydockLease');
-
- $viewer = $this->getRequest()->getUser();
- $view = new PHUIObjectItemListView();
-
- foreach ($leases as $lease) {
- $item = id(new PHUIObjectItemView())
- ->setUser($viewer)
- ->setHeader($lease->getLeaseName())
- ->setHref($this->getApplicationURI('/lease/'.$lease->getID().'/'));
-
- if ($lease->hasAttachedResource()) {
- $resource = $lease->getResource();
-
- $resource_href = '/resource/'.$resource->getID().'/';
- $resource_href = $this->getApplicationURI($resource_href);
-
- $resource_name = $resource->getName();
-
- $item->addAttribute(
- phutil_tag(
- 'a',
- array(
- 'href' => $resource_href,
- ),
- $resource_name));
- }
-
- $status = DrydockLeaseStatus::getNameForStatus($lease->getStatus());
- $item->addAttribute($status);
- $item->setEpoch($lease->getDateCreated());
-
- if ($lease->isActive()) {
- $item->setBarColor('green');
- } else {
- $item->setBarColor('red');
- }
-
- $view->addItem($item);
- }
-
- return $view;
- }
-
- protected function buildResourceListView(array $resources) {
- assert_instances_of($resources, 'DrydockResource');
-
- $user = $this->getRequest()->getUser();
- $view = new PHUIObjectItemListView();
-
- foreach ($resources as $resource) {
- $name = pht('Resource %d', $resource->getID()).': '.$resource->getName();
-
- $item = id(new PHUIObjectItemView())
- ->setHref($this->getApplicationURI('/resource/'.$resource->getID().'/'))
- ->setHeader($name);
-
- $status = DrydockResourceStatus::getNameForStatus($resource->getStatus());
- $item->addAttribute($status);
-
- switch ($resource->getStatus()) {
- case DrydockResourceStatus::STATUS_PENDING:
- $item->setBarColor('yellow');
- break;
- case DrydockResourceStatus::STATUS_OPEN:
- $item->setBarColor('green');
- break;
- case DrydockResourceStatus::STATUS_DESTROYED:
- $item->setBarColor('black');
- break;
- default:
- $item->setBarColor('red');
- break;
- }
-
- $view->addItem($item);
- }
-
- return $view;
- }
-
-
}
diff --git a/src/applications/drydock/controller/DrydockLeaseListController.php b/src/applications/drydock/controller/DrydockLeaseListController.php
--- a/src/applications/drydock/controller/DrydockLeaseListController.php
+++ b/src/applications/drydock/controller/DrydockLeaseListController.php
@@ -1,7 +1,6 @@
<?php
-final class DrydockLeaseListController extends DrydockLeaseController
- implements PhabricatorApplicationSearchResultsControllerInterface {
+final class DrydockLeaseListController extends DrydockLeaseController {
private $queryKey;
@@ -23,12 +22,4 @@
return $this->delegateToController($controller);
}
- public function renderResultsList(
- array $leases,
- PhabricatorSavedQuery $query) {
- assert_instances_of($leases, 'DrydockLease');
-
- return $this->buildLeaseListView($leases);
- }
-
}
diff --git a/src/applications/drydock/controller/DrydockLeaseViewController.php b/src/applications/drydock/controller/DrydockLeaseViewController.php
--- a/src/applications/drydock/controller/DrydockLeaseViewController.php
+++ b/src/applications/drydock/controller/DrydockLeaseViewController.php
@@ -39,7 +39,10 @@
->withLeaseIDs(array($lease->getID()))
->executeWithOffsetPager($pager);
- $log_table = $this->buildLogTableView($logs);
+ $log_table = id(new DrydockLogListView())
+ ->setUser($viewer)
+ ->setLogs($logs)
+ ->render();
$log_table->appendChild($pager);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/drydock/controller/DrydockLogListController.php b/src/applications/drydock/controller/DrydockLogListController.php
--- a/src/applications/drydock/controller/DrydockLogListController.php
+++ b/src/applications/drydock/controller/DrydockLogListController.php
@@ -1,7 +1,6 @@
<?php
-final class DrydockLogListController extends DrydockLogController
- implements PhabricatorApplicationSearchResultsControllerInterface {
+final class DrydockLogListController extends DrydockLogController {
private $queryKey;
@@ -23,12 +22,4 @@
return $this->delegateToController($controller);
}
- public function renderResultsList(
- array $logs,
- PhabricatorSavedQuery $query) {
- assert_instances_of($logs, 'DrydockLog');
-
- return $this->buildLogTableView($logs);
- }
-
}
diff --git a/src/applications/drydock/controller/DrydockResourceListController.php b/src/applications/drydock/controller/DrydockResourceListController.php
--- a/src/applications/drydock/controller/DrydockResourceListController.php
+++ b/src/applications/drydock/controller/DrydockResourceListController.php
@@ -1,7 +1,6 @@
<?php
-final class DrydockResourceListController extends DrydockResourceController
- implements PhabricatorApplicationSearchResultsControllerInterface {
+final class DrydockResourceListController extends DrydockResourceController {
private $queryKey;
@@ -23,12 +22,4 @@
return $this->delegateToController($controller);
}
- public function renderResultsList(
- array $resources,
- PhabricatorSavedQuery $query) {
- assert_instances_of($resources, 'DrydockResource');
-
- return $this->buildResourceListView($resources);
- }
-
}
diff --git a/src/applications/drydock/controller/DrydockResourceViewController.php b/src/applications/drydock/controller/DrydockResourceViewController.php
--- a/src/applications/drydock/controller/DrydockResourceViewController.php
+++ b/src/applications/drydock/controller/DrydockResourceViewController.php
@@ -36,7 +36,10 @@
->withResourceIDs(array($resource->getID()))
->execute();
- $lease_list = $this->buildLeaseListView($leases);
+ $lease_list = id(new DrydockLeaseListView())
+ ->setUser($viewer)
+ ->setLeases($leases)
+ ->render();
$lease_list->setNoDataString(pht('This resource has no leases.'));
$pager = new AphrontPagerView();
@@ -48,7 +51,10 @@
->withResourceIDs(array($resource->getID()))
->executeWithOffsetPager($pager);
- $log_table = $this->buildLogTableView($logs);
+ $log_table = id(new DrydockLogListView())
+ ->setUser($viewer)
+ ->setLogs($logs)
+ ->render();
$log_table->appendChild($pager);
$crumbs = $this->buildApplicationCrumbs();
diff --git a/src/applications/drydock/query/DrydockLeaseSearchEngine.php b/src/applications/drydock/query/DrydockLeaseSearchEngine.php
--- a/src/applications/drydock/query/DrydockLeaseSearchEngine.php
+++ b/src/applications/drydock/query/DrydockLeaseSearchEngine.php
@@ -3,6 +3,10 @@
final class DrydockLeaseSearchEngine
extends PhabricatorApplicationSearchEngine {
+ public function getApplicationClassName() {
+ return 'PhabricatorApplicationDrydock';
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
@@ -78,4 +82,15 @@
return parent::buildSavedQueryFromBuiltin($query_key);
}
+ protected function renderResultList(
+ array $leases,
+ PhabricatorSavedQuery $saved,
+ array $handles) {
+
+ return id(new DrydockLeaseListView())
+ ->setUser($this->requireViewer())
+ ->setLeases($leases)
+ ->render();
+ }
+
}
diff --git a/src/applications/drydock/query/DrydockLogSearchEngine.php b/src/applications/drydock/query/DrydockLogSearchEngine.php
--- a/src/applications/drydock/query/DrydockLogSearchEngine.php
+++ b/src/applications/drydock/query/DrydockLogSearchEngine.php
@@ -3,6 +3,10 @@
final class DrydockLogSearchEngine
extends PhabricatorApplicationSearchEngine {
+ public function getApplicationClassName() {
+ return 'PhabricatorApplicationDrydock';
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
@@ -45,4 +49,15 @@
return parent::buildSavedQueryFromBuiltin($query_key);
}
+ protected function renderResultList(
+ array $logs,
+ PhabricatorSavedQuery $query,
+ array $handles) {
+
+ return id(new DrydockLogListView())
+ ->setUser($this->requireViewer())
+ ->setLogs($logs)
+ ->render();
+ }
+
}
diff --git a/src/applications/drydock/query/DrydockResourceSearchEngine.php b/src/applications/drydock/query/DrydockResourceSearchEngine.php
--- a/src/applications/drydock/query/DrydockResourceSearchEngine.php
+++ b/src/applications/drydock/query/DrydockResourceSearchEngine.php
@@ -3,6 +3,10 @@
final class DrydockResourceSearchEngine
extends PhabricatorApplicationSearchEngine {
+ public function getApplicationClassName() {
+ return 'PhabricatorApplicationDrydock';
+ }
+
public function buildSavedQueryFromRequest(AphrontRequest $request) {
$saved = new PhabricatorSavedQuery();
@@ -77,4 +81,15 @@
return parent::buildSavedQueryFromBuiltin($query_key);
}
+ protected function renderResultList(
+ array $resources,
+ PhabricatorSavedQuery $query,
+ array $handles) {
+
+ return id(new DrydockResourceListView())
+ ->setUser($this->requireViewer())
+ ->setResources($resources)
+ ->render();
+ }
+
}
diff --git a/src/applications/drydock/view/DrydockLeaseListView.php b/src/applications/drydock/view/DrydockLeaseListView.php
new file mode 100644
--- /dev/null
+++ b/src/applications/drydock/view/DrydockLeaseListView.php
@@ -0,0 +1,56 @@
+<?php
+
+final class DrydockLeaseListView extends AphrontView {
+
+ private $leases;
+
+ public function setLeases(array $leases) {
+ assert_instances_of($leases, 'DrydockLease');
+ $this->leases = $leases;
+ return $this;
+ }
+
+ public function render() {
+ $leases = $this->leases;
+ $viewer = $this->getUser();
+
+ $view = new PHUIObjectItemListView();
+
+ foreach ($leases as $lease) {
+ $item = id(new PHUIObjectItemView())
+ ->setUser($viewer)
+ ->setHeader($lease->getLeaseName())
+ ->setHref('/drydock/lease/'.$lease->getID().'/');
+
+ if ($lease->hasAttachedResource()) {
+ $resource = $lease->getResource();
+
+ $resource_href = '/drydock/resource/'.$resource->getID().'/';
+ $resource_name = $resource->getName();
+
+ $item->addAttribute(
+ phutil_tag(
+ 'a',
+ array(
+ 'href' => $resource_href,
+ ),
+ $resource_name));
+ }
+
+ $status = DrydockLeaseStatus::getNameForStatus($lease->getStatus());
+ $item->addAttribute($status);
+ $item->setEpoch($lease->getDateCreated());
+
+ if ($lease->isActive()) {
+ $item->setBarColor('green');
+ } else {
+ $item->setBarColor('red');
+ }
+
+ $view->addItem($item);
+ }
+
+ return $view;
+ }
+
+}
diff --git a/src/applications/drydock/view/DrydockLogListView.php b/src/applications/drydock/view/DrydockLogListView.php
new file mode 100644
--- /dev/null
+++ b/src/applications/drydock/view/DrydockLogListView.php
@@ -0,0 +1,69 @@
+<?php
+
+final class DrydockLogListView extends AphrontView {
+
+ private $logs;
+
+ public function setLogs(array $logs) {
+ assert_instances_of($logs, 'DrydockLog');
+ $this->logs = $logs;
+ return $this;
+ }
+
+ public function render() {
+ $logs = $this->logs;
+ $viewer = $this->getUser();
+
+ $view = new PHUIObjectItemListView();
+
+ $rows = array();
+ foreach ($logs as $log) {
+ $resource_uri = '/drydock/resource/'.$log->getResourceID().'/';
+ $lease_uri = '/drydock/lease/'.$log->getLeaseID().'/';
+
+ $rows[] = array(
+ phutil_tag(
+ 'a',
+ array(
+ 'href' => $resource_uri,
+ ),
+ $log->getResourceID()),
+ phutil_tag(
+ 'a',
+ array(
+ 'href' => $lease_uri,
+ ),
+ $log->getLeaseID()),
+ $log->getMessage(),
+ phabricator_date($log->getEpoch(), $viewer),
+ );
+ }
+
+ $table = new AphrontTableView($rows);
+ $table->setDeviceReadyTable(true);
+ $table->setHeaders(
+ array(
+ 'Resource',
+ 'Lease',
+ 'Message',
+ 'Date',
+ ));
+ $table->setShortHeaders(
+ array(
+ 'R',
+ 'L',
+ 'Message',
+ '',
+ ));
+ $table->setColumnClasses(
+ array(
+ '',
+ '',
+ 'wide',
+ '',
+ ));
+
+ return $table;
+ }
+
+}
diff --git a/src/applications/drydock/view/DrydockResourceListView.php b/src/applications/drydock/view/DrydockResourceListView.php
new file mode 100644
--- /dev/null
+++ b/src/applications/drydock/view/DrydockResourceListView.php
@@ -0,0 +1,49 @@
+<?php
+
+final class DrydockResourceListView extends AphrontView {
+
+ private $resources;
+
+ public function setResources(array $resources) {
+ assert_instances_of($resources, 'DrydockResource');
+ $this->resources = $resources;
+ return $this;
+ }
+
+ public function render() {
+ $resources = $this->resources;
+ $viewer = $this->getUser();
+
+ $view = new PHUIObjectItemListView();
+ foreach ($resources as $resource) {
+ $name = pht('Resource %d', $resource->getID()).': '.$resource->getName();
+
+ $item = id(new PHUIObjectItemView())
+ ->setHref('/drydock/resource/'.$resource->getID().'/')
+ ->setHeader($name);
+
+ $status = DrydockResourceStatus::getNameForStatus($resource->getStatus());
+ $item->addAttribute($status);
+
+ switch ($resource->getStatus()) {
+ case DrydockResourceStatus::STATUS_PENDING:
+ $item->setBarColor('yellow');
+ break;
+ case DrydockResourceStatus::STATUS_OPEN:
+ $item->setBarColor('green');
+ break;
+ case DrydockResourceStatus::STATUS_DESTROYED:
+ $item->setBarColor('black');
+ break;
+ default:
+ $item->setBarColor('red');
+ break;
+ }
+
+ $view->addItem($item);
+ }
+
+ return $view;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Sun, May 19, 3:30 AM (2 w, 1 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6301639
Default Alt Text
D9103.id21618.diff (20 KB)

Event Timeline