private function buildActionView(PhabricatorFile $file)
 {
     $request = $this->getRequest();
     $viewer = $request->getUser();
     $id = $file->getID();
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $file, PhabricatorPolicyCapability::CAN_EDIT);
     $view = id(new PhabricatorActionListView())->setUser($viewer)->setObjectURI($this->getRequest()->getRequestURI())->setObject($file);
     if ($file->isViewableInBrowser()) {
         $view->addAction(id(new PhabricatorActionView())->setName(pht('View File'))->setIcon('fa-file-o')->setHref($file->getViewURI()));
     } else {
         $view->addAction(id(new PhabricatorActionView())->setUser($viewer)->setRenderAsForm(true)->setDownload(true)->setName(pht('Download File'))->setIcon('fa-download')->setHref($file->getViewURI()));
     }
     $view->addAction(id(new PhabricatorActionView())->setName(pht('Edit File'))->setIcon('fa-pencil')->setHref($this->getApplicationURI("/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit));
     $view->addAction(id(new PhabricatorActionView())->setName(pht('Delete File'))->setIcon('fa-times')->setHref($this->getApplicationURI("/delete/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit));
     return $view;
 }
 private function buildCurtainView(PhabricatorFile $file)
 {
     $viewer = $this->getViewer();
     $id = $file->getID();
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $file, PhabricatorPolicyCapability::CAN_EDIT);
     $curtain = $this->newCurtainView($file);
     $can_download = !$file->getIsPartial();
     if ($file->isViewableInBrowser()) {
         $curtain->addAction(id(new PhabricatorActionView())->setName(pht('View File'))->setIcon('fa-file-o')->setHref($file->getViewURI())->setDisabled(!$can_download)->setWorkflow(!$can_download));
     } else {
         $curtain->addAction(id(new PhabricatorActionView())->setUser($viewer)->setRenderAsForm($can_download)->setDownload($can_download)->setName(pht('Download File'))->setIcon('fa-download')->setHref($file->getViewURI())->setDisabled(!$can_download)->setWorkflow(!$can_download));
     }
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Edit File'))->setIcon('fa-pencil')->setHref($this->getApplicationURI("/edit/{$id}/"))->setWorkflow(!$can_edit)->setDisabled(!$can_edit));
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('Delete File'))->setIcon('fa-times')->setHref($this->getApplicationURI("/delete/{$id}/"))->setWorkflow(true)->setDisabled(!$can_edit));
     $curtain->addAction(id(new PhabricatorActionView())->setName(pht('View Transforms'))->setIcon('fa-crop')->setHref($this->getApplicationURI("/transforms/{$id}/")));
     return $curtain;
 }
 private function getFileDictionary(PhabricatorFile $file)
 {
     return array('id' => $file->getID(), 'phid' => $file->getPHID(), 'uri' => $file->getBestURI());
 }