Path: blob/master/src/applications/files/controller/PhabricatorFileUploadController.php
12242 views
<?php12final class PhabricatorFileUploadController extends PhabricatorFileController {34public function isGlobalDragAndDropUploadEnabled() {5return true;6}78public function handleRequest(AphrontRequest $request) {9$viewer = $request->getUser();1011$file = PhabricatorFile::initializeNewFile();1213$e_file = true;14$errors = array();15if ($request->isFormPost()) {16$view_policy = $request->getStr('viewPolicy');1718if (!$request->getFileExists('file')) {19$e_file = pht('Required');20$errors[] = pht('You must select a file to upload.');21} else {22$file = PhabricatorFile::newFromPHPUpload(23idx($_FILES, 'file'),24array(25'name' => $request->getStr('name'),26'authorPHID' => $viewer->getPHID(),27'viewPolicy' => $view_policy,28'isExplicitUpload' => true,29));30}3132if (!$errors) {33return id(new AphrontRedirectResponse())->setURI($file->getInfoURI());34}3536$file->setViewPolicy($view_policy);37}3839$support_id = celerity_generate_unique_node_id();40$instructions = id(new AphrontFormMarkupControl())41->setControlID($support_id)42->setControlStyle('display: none')43->setValue(hsprintf(44'<br /><br /><strong>%s</strong> %s<br /><br />',45pht('Drag and Drop:'),46pht(47'You can also upload files by dragging and dropping them from your '.48'desktop onto this page or the home page.')));4950$policies = id(new PhabricatorPolicyQuery())51->setViewer($viewer)52->setObject($file)53->execute();5455$form = id(new AphrontFormView())56->setUser($viewer)57->setEncType('multipart/form-data')58->appendChild(59id(new AphrontFormFileControl())60->setLabel(pht('File'))61->setName('file')62->setError($e_file))63->appendChild(64id(new AphrontFormTextControl())65->setLabel(pht('Name'))66->setName('name')67->setValue($request->getStr('name')))68->appendChild(69id(new AphrontFormPolicyControl())70->setUser($viewer)71->setCapability(PhabricatorPolicyCapability::CAN_VIEW)72->setPolicyObject($file)73->setPolicies($policies)74->setName('viewPolicy'))75->appendChild(76id(new AphrontFormSubmitControl())77->setValue(pht('Upload'))78->addCancelButton('/file/'))79->appendChild($instructions);8081$crumbs = $this->buildApplicationCrumbs();82$crumbs->addTextCrumb(pht('Upload'), $request->getRequestURI());83$crumbs->setBorder(true);8485$title = pht('Upload File');8687$global_upload = id(new PhabricatorGlobalUploadTargetView())88->setUser($viewer)89->setShowIfSupportedID($support_id);9091$form_box = id(new PHUIObjectBoxView())92->setHeaderText($title)93->setFormErrors($errors)94->setBackground(PHUIObjectBoxView::WHITE_CONFIG)95->setForm($form);9697$view = id(new PHUITwoColumnView())98->setFooter(array(99$form_box,100$global_upload,101));102103return $this->newPage()104->setTitle($title)105->setCrumbs($crumbs)106->appendChild($view);107}108109}110111112