[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorProjectBoardImportController 4 extends PhabricatorProjectBoardController { 5 6 private $projectID; 7 8 public function willProcessRequest(array $data) { 9 $this->projectID = $data['projectID']; 10 } 11 12 public function processRequest() { 13 $request = $this->getRequest(); 14 $viewer = $request->getUser(); 15 16 $project = id(new PhabricatorProjectQuery()) 17 ->setViewer($viewer) 18 ->requireCapabilities( 19 array( 20 PhabricatorPolicyCapability::CAN_VIEW, 21 PhabricatorPolicyCapability::CAN_EDIT, 22 )) 23 ->withIDs(array($this->projectID)) 24 ->executeOne(); 25 if (!$project) { 26 return new Aphront404Response(); 27 } 28 $this->setProject($project); 29 30 $columns = id(new PhabricatorProjectColumnQuery()) 31 ->setViewer($viewer) 32 ->withProjectPHIDs(array($project->getPHID())) 33 ->execute(); 34 if ($columns) { 35 return new Aphront400Response(); 36 } 37 38 $project_id = $project->getID(); 39 $board_uri = $this->getApplicationURI("board/{$project_id}/"); 40 41 if ($request->isFormPost()) { 42 $import_phid = $request->getArr('importProjectPHID'); 43 $import_phid = reset($import_phid); 44 45 $import_columns = id(new PhabricatorProjectColumnQuery()) 46 ->setViewer($viewer) 47 ->withProjectPHIDs(array($import_phid)) 48 ->execute(); 49 if (!$import_columns) { 50 return new Aphront400Response(); 51 } 52 53 $table = id(new PhabricatorProjectColumn()) 54 ->openTransaction(); 55 foreach ($import_columns as $import_column) { 56 if ($import_column->isHidden()) { 57 continue; 58 } 59 $new_column = PhabricatorProjectColumn::initializeNewColumn($viewer) 60 ->setSequence($import_column->getSequence()) 61 ->setProjectPHID($project->getPHID()) 62 ->setName($import_column->getName()) 63 ->setProperties($import_column->getProperties()) 64 ->save(); 65 } 66 $table->saveTransaction(); 67 68 return id(new AphrontRedirectResponse())->setURI($board_uri); 69 } 70 71 $proj_selector = id(new AphrontFormTokenizerControl()) 72 ->setName('importProjectPHID') 73 ->setUser($viewer) 74 ->setDatasource(id(new PhabricatorProjectDatasource()) 75 ->setParameters(array('mustHaveColumns' => true)) 76 ->setLimit(1)); 77 return $this->newDialog() 78 ->setTitle(pht('Import Columns')) 79 ->setWidth(AphrontDialogView::WIDTH_FORM) 80 ->appendParagraph(pht('Choose a project to import columns from:')) 81 ->appendChild($proj_selector) 82 ->addCancelButton($board_uri) 83 ->addSubmitButton(pht('Import')); 84 } 85 86 }
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 |