[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DiffusionChangeController extends DiffusionController { 4 5 public function shouldAllowPublic() { 6 return true; 7 } 8 9 public function processRequest() { 10 $drequest = $this->diffusionRequest; 11 $viewer = $this->getRequest()->getUser(); 12 13 $content = array(); 14 15 $data = $this->callConduitWithDiffusionRequest( 16 'diffusion.diffquery', 17 array( 18 'commit' => $drequest->getCommit(), 19 'path' => $drequest->getPath(), 20 )); 21 22 $drequest->updateSymbolicCommit($data['effectiveCommit']); 23 24 $raw_changes = ArcanistDiffChange::newFromConduit($data['changes']); 25 $diff = DifferentialDiff::newFromRawChanges( 26 $viewer, 27 $raw_changes); 28 $changesets = $diff->getChangesets(); 29 $changeset = reset($changesets); 30 31 if (!$changeset) { 32 // TODO: Refine this. 33 return new Aphront404Response(); 34 } 35 36 $repository = $drequest->getRepository(); 37 $callsign = $repository->getCallsign(); 38 $changesets = array( 39 0 => $changeset, 40 ); 41 42 $changeset_view = new DifferentialChangesetListView(); 43 $changeset_view->setTitle(pht('Change')); 44 $changeset_view->setChangesets($changesets); 45 $changeset_view->setVisibleChangesets($changesets); 46 $changeset_view->setRenderingReferences( 47 array( 48 0 => $drequest->generateURI(array('action' => 'rendering-ref')), 49 )); 50 51 $raw_params = array( 52 'action' => 'browse', 53 'params' => array( 54 'view' => 'raw', 55 ), 56 ); 57 58 $right_uri = $drequest->generateURI($raw_params); 59 $raw_params['params']['before'] = $drequest->getStableCommit(); 60 $left_uri = $drequest->generateURI($raw_params); 61 $changeset_view->setRawFileURIs($left_uri, $right_uri); 62 63 $changeset_view->setRenderURI('/diffusion/'.$callsign.'/diff/'); 64 $changeset_view->setWhitespace( 65 DifferentialChangesetParser::WHITESPACE_SHOW_ALL); 66 $changeset_view->setUser($this->getRequest()->getUser()); 67 68 // TODO: This is pretty awkward, unify the CSS between Diffusion and 69 // Differential better. 70 require_celerity_resource('differential-core-view-css'); 71 $content[] = $changeset_view->render(); 72 73 $crumbs = $this->buildCrumbs( 74 array( 75 'branch' => true, 76 'path' => true, 77 'view' => 'change', 78 )); 79 80 $links = $this->renderPathLinks($drequest, $mode = 'browse'); 81 82 $header = id(new PHUIHeaderView()) 83 ->setHeader($links) 84 ->setUser($viewer) 85 ->setPolicyObject($drequest->getRepository()); 86 $actions = $this->buildActionView($drequest); 87 $properties = $this->buildPropertyView($drequest, $actions); 88 89 $object_box = id(new PHUIObjectBoxView()) 90 ->setHeader($header) 91 ->addPropertyList($properties); 92 93 return $this->buildApplicationPage( 94 array( 95 $crumbs, 96 $object_box, 97 $content, 98 ), 99 array( 100 'title' => pht('Change'), 101 'device' => false, 102 )); 103 } 104 105 private function buildActionView(DiffusionRequest $drequest) { 106 $viewer = $this->getRequest()->getUser(); 107 108 $view = id(new PhabricatorActionListView()) 109 ->setUser($viewer); 110 111 $history_uri = $drequest->generateURI( 112 array( 113 'action' => 'history', 114 )); 115 116 $view->addAction( 117 id(new PhabricatorActionView()) 118 ->setName(pht('View History')) 119 ->setHref($history_uri) 120 ->setIcon('fa-clock-o')); 121 122 $browse_uri = $drequest->generateURI( 123 array( 124 'action' => 'browse', 125 )); 126 127 $view->addAction( 128 id(new PhabricatorActionView()) 129 ->setName(pht('Browse Content')) 130 ->setHref($browse_uri) 131 ->setIcon('fa-files-o')); 132 133 return $view; 134 } 135 136 protected function buildPropertyView( 137 DiffusionRequest $drequest, 138 PhabricatorActionListView $actions) { 139 140 $viewer = $this->getRequest()->getUser(); 141 142 $view = id(new PHUIPropertyListView()) 143 ->setUser($viewer) 144 ->setActionList($actions); 145 146 $stable_commit = $drequest->getStableCommit(); 147 $callsign = $drequest->getRepository()->getCallsign(); 148 149 $view->addProperty( 150 pht('Commit'), 151 phutil_tag( 152 'a', 153 array( 154 'href' => $drequest->generateURI( 155 array( 156 'action' => 'commit', 157 'commit' => $stable_commit, 158 )), 159 ), 160 $drequest->getRepository()->formatCommitName($stable_commit))); 161 162 return $view; 163 } 164 165 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |