@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Convert Drydock to two column layout

Summary: Updates Drydock to use two column + curtain layouts.

Test Plan: Tested what I could get to, need @epriestley to run this locally for edge cases.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Differential Revision: https://secure.phabricator.com/D15467

+123 -112
+18 -17
src/applications/drydock/controller/DrydockAuthorizationViewController.php
··· 26 26 ->setUser($viewer) 27 27 ->setPolicyObject($authorization); 28 28 29 - 30 29 $state = $authorization->getBlueprintAuthorizationState(); 31 30 $icon = DrydockAuthorization::getBlueprintStateIcon($state); 32 31 $name = DrydockAuthorization::getBlueprintStateName($state); 33 32 34 33 $header->setStatus($icon, null, $name); 35 34 36 - $actions = $this->buildActionListView($authorization); 35 + $curtain = $this->buildCurtain($authorization); 37 36 $properties = $this->buildPropertyListView($authorization); 38 - $properties->setActionList($actions); 39 37 40 38 $crumbs = $this->buildApplicationCrumbs(); 41 39 $crumbs->addTextCrumb( ··· 45 43 $blueprint->getBlueprintName(), 46 44 $this->getApplicationURI("blueprint/{$blueprint_id}/")); 47 45 $crumbs->addTextCrumb($title); 46 + $crumbs->setBorder(true); 48 47 49 48 $object_box = id(new PHUIObjectBoxView()) 50 49 ->setHeader($header) 51 50 ->addPropertyList($properties); 52 51 53 - return $this->buildApplicationPage( 54 - array( 55 - $crumbs, 56 - $object_box, 57 - ), 58 - array( 59 - 'title' => $title, 52 + $view = id(new PHUITwoColumnView()) 53 + ->setHeader($header) 54 + ->setCurtain($curtain) 55 + ->addPropertySection(pht('Properties'), $properties); 56 + 57 + return $this->newPage() 58 + ->setTitle($title) 59 + ->setCrumbs($crumbs) 60 + ->appendChild( 61 + array( 62 + $view, 60 63 )); 61 64 62 65 } 63 66 64 - private function buildActionListView(DrydockAuthorization $authorization) { 67 + private function buildCurtain(DrydockAuthorization $authorization) { 65 68 $viewer = $this->getViewer(); 66 69 $id = $authorization->getID(); 67 70 68 - $view = id(new PhabricatorActionListView()) 69 - ->setUser($viewer) 70 - ->setObject($authorization); 71 + $curtain = $this->newCurtainView($authorization); 71 72 72 73 $can_edit = PhabricatorPolicyFilter::hasCapability( 73 74 $viewer, ··· 84 85 $can_authorize = $can_edit && ($state != $state_authorized); 85 86 $can_decline = $can_edit && ($state != $state_declined); 86 87 87 - $view->addAction( 88 + $curtain->addAction( 88 89 id(new PhabricatorActionView()) 89 90 ->setHref($authorize_uri) 90 91 ->setName(pht('Approve Authorization')) ··· 92 93 ->setWorkflow(true) 93 94 ->setDisabled(!$can_authorize)); 94 95 95 - $view->addAction( 96 + $curtain->addAction( 96 97 id(new PhabricatorActionView()) 97 98 ->setHref($decline_uri) 98 99 ->setName(pht('Decline Authorization')) ··· 100 101 ->setWorkflow(true) 101 102 ->setDisabled(!$can_decline)); 102 103 103 - return $view; 104 + return $curtain; 104 105 } 105 106 106 107 private function buildPropertyListView(DrydockAuthorization $authorization) {
+33 -35
src/applications/drydock/controller/DrydockBlueprintViewController.php
··· 19 19 $header = id(new PHUIHeaderView()) 20 20 ->setHeader($title) 21 21 ->setUser($viewer) 22 - ->setPolicyObject($blueprint); 22 + ->setPolicyObject($blueprint) 23 + ->setHeaderIcon('fa-map-o'); 23 24 24 25 if ($blueprint->getIsDisabled()) { 25 26 $header->setStatus('fa-ban', 'red', pht('Disabled')); ··· 27 28 $header->setStatus('fa-check', 'bluegrey', pht('Active')); 28 29 } 29 30 30 - $actions = $this->buildActionListView($blueprint); 31 - $properties = $this->buildPropertyListView($blueprint, $actions); 31 + $curtain = $this->buildCurtain($blueprint); 32 + $properties = $this->buildPropertyListView($blueprint); 32 33 33 34 $crumbs = $this->buildApplicationCrumbs(); 34 35 $crumbs->addTextCrumb(pht('Blueprint %d', $blueprint->getID())); 35 - 36 - $object_box = id(new PHUIObjectBoxView()) 37 - ->setHeader($header) 38 - ->addPropertyList($properties); 36 + $crumbs->setBorder(true); 39 37 40 38 $field_list = PhabricatorCustomField::getObjectFields( 41 39 $blueprint, ··· 49 47 $viewer, 50 48 $properties); 51 49 52 - $resource_box = $this->buildResourceBox($blueprint); 53 - 54 - $authorizations_box = $this->buildAuthorizationsBox($blueprint); 50 + $resources = $this->buildResourceBox($blueprint); 51 + $authorizations = $this->buildAuthorizationsBox($blueprint); 55 52 56 53 $timeline = $this->buildTransactionTimeline( 57 54 $blueprint, ··· 61 58 $log_query = id(new DrydockLogQuery()) 62 59 ->withBlueprintPHIDs(array($blueprint->getPHID())); 63 60 64 - $log_box = $this->buildLogBox( 61 + $logs = $this->buildLogBox( 65 62 $log_query, 66 63 $this->getApplicationURI("blueprint/{$id}/logs/query/all/")); 67 64 68 - return $this->buildApplicationPage( 69 - array( 70 - $crumbs, 71 - $object_box, 72 - $resource_box, 73 - $authorizations_box, 74 - $log_box, 65 + $view = id(new PHUITwoColumnView()) 66 + ->setHeader($header) 67 + ->setCurtain($curtain) 68 + ->addPropertySection(pht('Properties'), $properties) 69 + ->setMainColumn(array( 70 + $resources, 71 + $authorizations, 72 + $logs, 75 73 $timeline, 76 - ), 77 - array( 78 - 'title' => $title, 74 + )); 75 + 76 + return $this->newPage() 77 + ->setTitle($title) 78 + ->setCrumbs($crumbs) 79 + ->appendChild( 80 + array( 81 + $view, 79 82 )); 80 83 81 84 } 82 85 83 - private function buildActionListView(DrydockBlueprint $blueprint) { 86 + private function buildCurtain(DrydockBlueprint $blueprint) { 84 87 $viewer = $this->getViewer(); 85 88 $id = $blueprint->getID(); 86 89 87 - $view = id(new PhabricatorActionListView()) 88 - ->setUser($viewer) 89 - ->setObject($blueprint); 90 - 90 + $curtain = $this->newCurtainView($blueprint); 91 91 $edit_uri = $this->getApplicationURI("blueprint/edit/{$id}/"); 92 92 93 93 $can_edit = PhabricatorPolicyFilter::hasCapability( ··· 95 95 $blueprint, 96 96 PhabricatorPolicyCapability::CAN_EDIT); 97 97 98 - $view->addAction( 98 + $curtain->addAction( 99 99 id(new PhabricatorActionView()) 100 100 ->setHref($edit_uri) 101 101 ->setName(pht('Edit Blueprint')) ··· 113 113 $disable_uri = $this->getApplicationURI("blueprint/{$id}/enable/"); 114 114 } 115 115 116 - $view->addAction( 116 + $curtain->addAction( 117 117 id(new PhabricatorActionView()) 118 118 ->setHref($disable_uri) 119 119 ->setName($disable_name) ··· 121 121 ->setWorkflow(true) 122 122 ->setDisabled(!$can_edit)); 123 123 124 - return $view; 124 + return $curtain; 125 125 } 126 126 127 127 private function buildPropertyListView( 128 - DrydockBlueprint $blueprint, 129 - PhabricatorActionListView $actions) { 128 + DrydockBlueprint $blueprint) { 130 129 $viewer = $this->getViewer(); 131 130 132 131 $view = id(new PHUIPropertyListView()) 133 - ->setUser($viewer) 134 - ->setObject($blueprint); 135 - 136 - $view->setActionList($actions); 132 + ->setUser($viewer); 137 133 138 134 $view->addProperty( 139 135 pht('Type'), ··· 177 173 178 174 return id(new PHUIObjectBoxView()) 179 175 ->setHeader($resource_header) 176 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 180 177 ->setObjectList($resource_list); 181 178 } 182 179 ··· 242 239 243 240 return id(new PHUIObjectBoxView()) 244 241 ->setHeader($authorizations_header) 242 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 245 243 ->setObjectList($authorization_list); 246 244 247 245 }
+1
src/applications/drydock/controller/DrydockController.php
··· 102 102 ->setText(pht('View All'))); 103 103 104 104 return id(new PHUIObjectBoxView()) 105 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 105 106 ->setHeader($log_header) 106 107 ->setTable($log_table); 107 108 }
+26 -22
src/applications/drydock/controller/DrydockLeaseViewController.php
··· 21 21 $title = pht('Lease %d', $lease->getID()); 22 22 23 23 $header = id(new PHUIHeaderView()) 24 - ->setHeader($title); 24 + ->setHeader($title) 25 + ->setHeaderIcon('fa-link'); 25 26 26 27 if ($lease->isReleasing()) { 27 28 $header->setStatus('fa-exclamation-triangle', 'red', pht('Releasing')); 28 29 } 29 30 30 - $actions = $this->buildActionListView($lease); 31 - $properties = $this->buildPropertyListView($lease, $actions); 31 + $curtain = $this->buildCurtain($lease); 32 + $properties = $this->buildPropertyListView($lease); 32 33 33 34 $log_query = id(new DrydockLogQuery()) 34 35 ->withLeasePHIDs(array($lease->getPHID())); 35 36 36 - $log_box = $this->buildLogBox( 37 + $logs = $this->buildLogBox( 37 38 $log_query, 38 39 $this->getApplicationURI("lease/{$id}/logs/query/all/")); 39 40 40 41 $crumbs = $this->buildApplicationCrumbs(); 41 42 $crumbs->addTextCrumb($title, $lease_uri); 43 + $crumbs->setBorder(true); 42 44 43 45 $locks = $this->buildLocksTab($lease->getPHID()); 44 46 $commands = $this->buildCommandsTab($lease->getPHID()); 45 47 46 48 $object_box = id(new PHUIObjectBoxView()) 47 - ->setHeader($header) 49 + ->setHeaderText(pht('Properties')) 50 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 48 51 ->addPropertyList($properties, pht('Properties')) 49 52 ->addPropertyList($locks, pht('Slot Locks')) 50 53 ->addPropertyList($commands, pht('Commands')); 51 54 52 - return $this->buildApplicationPage( 53 - array( 54 - $crumbs, 55 + $view = id(new PHUITwoColumnView()) 56 + ->setHeader($header) 57 + ->setCurtain($curtain) 58 + ->setMainColumn(array( 55 59 $object_box, 56 - $log_box, 57 - ), 58 - array( 59 - 'title' => $title, 60 + $logs, 61 + )); 62 + 63 + return $this->newPage() 64 + ->setTitle($title) 65 + ->setCrumbs($crumbs) 66 + ->appendChild( 67 + array( 68 + $view, 60 69 )); 61 70 62 71 } 63 72 64 - private function buildActionListView(DrydockLease $lease) { 73 + private function buildCurtain(DrydockLease $lease) { 65 74 $viewer = $this->getViewer(); 66 75 67 - $view = id(new PhabricatorActionListView()) 68 - ->setUser($viewer) 69 - ->setObject($lease); 70 - 76 + $curtain = $this->newCurtainView($lease); 71 77 $id = $lease->getID(); 72 78 73 79 $can_release = $lease->canRelease(); ··· 80 86 $lease, 81 87 PhabricatorPolicyCapability::CAN_EDIT); 82 88 83 - $view->addAction( 89 + $curtain->addAction( 84 90 id(new PhabricatorActionView()) 85 91 ->setName(pht('Release Lease')) 86 92 ->setIcon('fa-times') ··· 88 94 ->setWorkflow(true) 89 95 ->setDisabled(!$can_release || !$can_edit)); 90 96 91 - return $view; 97 + return $curtain; 92 98 } 93 99 94 100 private function buildPropertyListView( 95 - DrydockLease $lease, 96 - PhabricatorActionListView $actions) { 101 + DrydockLease $lease) { 97 102 $viewer = $this->getViewer(); 98 103 99 104 $view = new PHUIPropertyListView(); 100 - $view->setActionList($actions); 101 105 102 106 $view->addProperty( 103 107 pht('Status'),
+17 -15
src/applications/drydock/controller/DrydockRepositoryOperationViewController.php
··· 25 25 $header = id(new PHUIHeaderView()) 26 26 ->setHeader($title) 27 27 ->setUser($viewer) 28 - ->setPolicyObject($operation); 28 + ->setPolicyObject($operation) 29 + ->setHeaderIcon('fa-fighter-jet'); 29 30 30 31 $state = $operation->getOperationState(); 31 32 $icon = DrydockRepositoryOperation::getOperationStateIcon($state); 32 33 $name = DrydockRepositoryOperation::getOperationStateName($state); 33 34 $header->setStatus($icon, null, $name); 34 35 35 - $actions = $this->buildActionListView($operation); 36 + $curtain = $this->buildCurtain($operation); 36 37 $properties = $this->buildPropertyListView($operation); 37 - $properties->setActionList($actions); 38 38 39 39 $crumbs = $this->buildApplicationCrumbs(); 40 40 $crumbs->addTextCrumb( 41 41 pht('Operations'), 42 42 $this->getApplicationURI('operation/')); 43 43 $crumbs->addTextCrumb($title); 44 - 45 - $object_box = id(new PHUIObjectBoxView()) 46 - ->setHeader($header) 47 - ->addPropertyList($properties); 44 + $crumbs->setBorder(true); 48 45 49 46 $status_view = id(new DrydockRepositoryOperationStatusView()) 50 47 ->setUser($viewer) 51 48 ->setOperation($operation); 52 49 50 + $view = id(new PHUITwoColumnView()) 51 + ->setHeader($header) 52 + ->setCurtain($curtain) 53 + ->addPropertySection(pht('Properties'), $properties) 54 + ->setMainColumn(array( 55 + $status_view, 56 + )); 57 + 53 58 return $this->newPage() 54 59 ->setTitle($title) 55 60 ->setCrumbs($crumbs) 56 61 ->appendChild( 57 62 array( 58 - $object_box, 59 - $status_view, 60 - )); 63 + $view, 64 + )); 61 65 } 62 66 63 - private function buildActionListView(DrydockRepositoryOperation $operation) { 67 + private function buildCurtain(DrydockRepositoryOperation $operation) { 64 68 $viewer = $this->getViewer(); 65 69 $id = $operation->getID(); 66 70 67 - $view = id(new PhabricatorActionListView()) 68 - ->setUser($viewer) 69 - ->setObject($operation); 71 + $curtain = $this->newCurtainView($operation); 70 72 71 - return $view; 73 + return $curtain; 72 74 } 73 75 74 76 private function buildPropertyListView(
+27 -23
src/applications/drydock/controller/DrydockResourceViewController.php
··· 23 23 $header = id(new PHUIHeaderView()) 24 24 ->setUser($viewer) 25 25 ->setPolicyObject($resource) 26 - ->setHeader($title); 26 + ->setHeader($title) 27 + ->setHeaderIcon('fa-map'); 27 28 28 29 if ($resource->isReleasing()) { 29 30 $header->setStatus('fa-exclamation-triangle', 'red', pht('Releasing')); 30 31 } 31 32 32 - $actions = $this->buildActionListView($resource); 33 - $properties = $this->buildPropertyListView($resource, $actions); 33 + $curtain = $this->buildCurtain($resource); 34 + $properties = $this->buildPropertyListView($resource); 34 35 35 36 $id = $resource->getID(); 36 37 $resource_uri = $this->getApplicationURI("resource/{$id}/"); ··· 44 45 45 46 $crumbs = $this->buildApplicationCrumbs(); 46 47 $crumbs->addTextCrumb(pht('Resource %d', $resource->getID())); 48 + $crumbs->setBorder(true); 47 49 48 50 $locks = $this->buildLocksTab($resource->getPHID()); 49 51 $commands = $this->buildCommandsTab($resource->getPHID()); 52 + $lease_box = $this->buildLeaseBox($resource); 50 53 51 54 $object_box = id(new PHUIObjectBoxView()) 52 - ->setHeader($header) 55 + ->setHeaderText(pht('Properties')) 56 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 53 57 ->addPropertyList($properties, pht('Properties')) 54 58 ->addPropertyList($locks, pht('Slot Locks')) 55 59 ->addPropertyList($commands, pht('Commands')); 56 60 57 - $lease_box = $this->buildLeaseBox($resource); 58 - 59 - return $this->buildApplicationPage( 60 - array( 61 - $crumbs, 61 + $view = id(new PHUITwoColumnView()) 62 + ->setHeader($header) 63 + ->setCurtain($curtain) 64 + ->setMainColumn(array( 62 65 $object_box, 63 66 $lease_box, 64 67 $log_box, 65 - ), 66 - array( 67 - 'title' => $title, 68 + )); 69 + 70 + return $this->newPage() 71 + ->setTitle($title) 72 + ->setCrumbs($crumbs) 73 + ->appendChild( 74 + array( 75 + $view, 68 76 )); 69 77 70 78 } 71 79 72 - private function buildActionListView(DrydockResource $resource) { 80 + private function buildCurtain(DrydockResource $resource) { 73 81 $viewer = $this->getViewer(); 74 82 75 - $view = id(new PhabricatorActionListView()) 76 - ->setUser($viewer) 77 - ->setObject($resource); 83 + $curtain = $this->newCurtainView($resource); 78 84 79 85 $can_release = $resource->canRelease(); 80 86 if ($resource->isReleasing()) { ··· 89 95 $uri = '/resource/'.$resource->getID().'/release/'; 90 96 $uri = $this->getApplicationURI($uri); 91 97 92 - $view->addAction( 98 + $curtain->addAction( 93 99 id(new PhabricatorActionView()) 94 100 ->setHref($uri) 95 101 ->setName(pht('Release Resource')) ··· 97 103 ->setWorkflow(true) 98 104 ->setDisabled(!$can_release || !$can_edit)); 99 105 100 - return $view; 106 + return $curtain; 101 107 } 102 108 103 109 private function buildPropertyListView( 104 - DrydockResource $resource, 105 - PhabricatorActionListView $actions) { 110 + DrydockResource $resource) { 106 111 $viewer = $this->getViewer(); 107 112 108 - $view = id(new PHUIPropertyListView()) 109 - ->setActionList($actions); 110 - 113 + $view = new PHUIPropertyListView(); 111 114 $status = $resource->getStatus(); 112 115 $status = DrydockResourceStatus::getNameForStatus($status); 113 116 ··· 179 182 180 183 return id(new PHUIObjectBoxView()) 181 184 ->setHeader($lease_header) 185 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 182 186 ->setObjectList($lease_list); 183 187 } 184 188
+1
src/applications/drydock/view/DrydockRepositoryOperationStatusView.php
··· 48 48 $box_view = $this->getBoxView(); 49 49 if (!$box_view) { 50 50 $box_view = id(new PHUIObjectBoxView()) 51 + ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 51 52 ->setHeaderText(pht('Operation Status')); 52 53 } 53 54 $box_view->setObjectList($list);