[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhragmentVersionController extends PhragmentController { 4 5 private $id; 6 7 public function shouldAllowPublic() { 8 return true; 9 } 10 11 public function willProcessRequest(array $data) { 12 $this->id = idx($data, 'id', 0); 13 } 14 15 public function processRequest() { 16 $request = $this->getRequest(); 17 $viewer = $request->getUser(); 18 19 $version = id(new PhragmentFragmentVersionQuery()) 20 ->setViewer($viewer) 21 ->withIDs(array($this->id)) 22 ->executeOne(); 23 if ($version === null) { 24 return new Aphront404Response(); 25 } 26 27 $parents = $this->loadParentFragments($version->getFragment()->getPath()); 28 if ($parents === null) { 29 return new Aphront404Response(); 30 } 31 $current = idx($parents, count($parents) - 1, null); 32 33 $crumbs = $this->buildApplicationCrumbsWithPath($parents); 34 $crumbs->addTextCrumb(pht('View Version %d', $version->getSequence())); 35 36 $phids = array(); 37 $phids[] = $version->getFilePHID(); 38 39 $this->loadHandles($phids); 40 41 $file = id(new PhabricatorFileQuery()) 42 ->setViewer($viewer) 43 ->withPHIDs(array($version->getFilePHID())) 44 ->executeOne(); 45 if ($file !== null) { 46 $file_uri = $file->getDownloadURI(); 47 } 48 49 $header = id(new PHUIHeaderView()) 50 ->setHeader(pht( 51 '%s at version %d', 52 $version->getFragment()->getName(), 53 $version->getSequence())) 54 ->setPolicyObject($version) 55 ->setUser($viewer); 56 57 $actions = id(new PhabricatorActionListView()) 58 ->setUser($viewer) 59 ->setObject($version) 60 ->setObjectURI($version->getURI()); 61 $actions->addAction( 62 id(new PhabricatorActionView()) 63 ->setName(pht('Download Version')) 64 ->setDisabled($file === null || !$this->isCorrectlyConfigured()) 65 ->setHref($this->isCorrectlyConfigured() ? $file_uri : null) 66 ->setIcon('fa-download')); 67 68 $properties = id(new PHUIPropertyListView()) 69 ->setUser($viewer) 70 ->setObject($version) 71 ->setActionList($actions); 72 $properties->addProperty( 73 pht('File'), 74 $this->renderHandlesForPHIDs(array($version->getFilePHID()))); 75 76 $box = id(new PHUIObjectBoxView()) 77 ->setHeader($header) 78 ->addPropertyList($properties); 79 80 return $this->buildApplicationPage( 81 array( 82 $crumbs, 83 $this->renderConfigurationWarningIfRequired(), 84 $box, 85 $this->renderPreviousVersionList($version), 86 ), 87 array( 88 'title' => pht('View Version'), 89 )); 90 } 91 92 private function renderPreviousVersionList( 93 PhragmentFragmentVersion $version) { 94 95 $request = $this->getRequest(); 96 $viewer = $request->getUser(); 97 98 $previous_versions = id(new PhragmentFragmentVersionQuery()) 99 ->setViewer($viewer) 100 ->withFragmentPHIDs(array($version->getFragmentPHID())) 101 ->withSequenceBefore($version->getSequence()) 102 ->execute(); 103 104 $list = id(new PHUIObjectItemListView()) 105 ->setUser($viewer); 106 107 foreach ($previous_versions as $previous_version) { 108 $item = id(new PHUIObjectItemView()); 109 $item->setHeader('Version '.$previous_version->getSequence()); 110 $item->setHref($previous_version->getURI()); 111 $item->addAttribute(phabricator_datetime( 112 $previous_version->getDateCreated(), 113 $viewer)); 114 $patch_uri = $this->getApplicationURI( 115 'patch/'.$previous_version->getID().'/'.$version->getID()); 116 $item->addAction(id(new PHUIListItemView()) 117 ->setIcon('fa-file-o') 118 ->setName(pht('Get Patch')) 119 ->setHref($this->isCorrectlyConfigured() ? $patch_uri : null) 120 ->setDisabled(!$this->isCorrectlyConfigured())); 121 $list->addItem($item); 122 } 123 124 $item = id(new PHUIObjectItemView()); 125 $item->setHeader('Prior to Version 0'); 126 $item->addAttribute('Prior to any content (empty file)'); 127 $item->addAction(id(new PHUIListItemView()) 128 ->setIcon('fa-file-o') 129 ->setName(pht('Get Patch')) 130 ->setHref($this->getApplicationURI( 131 'patch/x/'.$version->getID()))); 132 $list->addItem($item); 133 134 return $list; 135 } 136 137 }
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 |