[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorDashboardTransactionEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return 'PhabricatorDashboardApplication'; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Dashboards'); 12 } 13 14 public static function addPanelToDashboard( 15 PhabricatorUser $actor, 16 PhabricatorContentSource $content_source, 17 PhabricatorDashboardPanel $panel, 18 PhabricatorDashboard $dashboard, 19 $column) { 20 21 $xactions = array(); 22 $xactions[] = id(new PhabricatorDashboardTransaction()) 23 ->setTransactionType(PhabricatorTransactions::TYPE_EDGE) 24 ->setMetadataValue( 25 'edge:type', 26 PhabricatorEdgeConfig::TYPE_DASHBOARD_HAS_PANEL) 27 ->setNewValue( 28 array( 29 '+' => array( 30 $panel->getPHID() => $panel->getPHID(), 31 ), 32 )); 33 34 $layout_config = $dashboard->getLayoutConfigObject(); 35 $layout_config->setPanelLocation($column, $panel->getPHID()); 36 $dashboard->setLayoutConfigFromObject($layout_config); 37 38 $editor = id(new PhabricatorDashboardTransactionEditor()) 39 ->setActor($actor) 40 ->setContentSource($content_source) 41 ->setContinueOnMissingFields(true) 42 ->setContinueOnNoEffect(true) 43 ->applyTransactions($dashboard, $xactions); 44 } 45 46 public function getTransactionTypes() { 47 $types = parent::getTransactionTypes(); 48 49 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 50 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 51 $types[] = PhabricatorTransactions::TYPE_EDGE; 52 53 $types[] = PhabricatorDashboardTransaction::TYPE_NAME; 54 $types[] = PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE; 55 56 return $types; 57 } 58 59 protected function getCustomTransactionOldValue( 60 PhabricatorLiskDAO $object, 61 PhabricatorApplicationTransaction $xaction) { 62 switch ($xaction->getTransactionType()) { 63 case PhabricatorDashboardTransaction::TYPE_NAME: 64 if ($this->getIsNewObject()) { 65 return null; 66 } 67 return $object->getName(); 68 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 69 if ($this->getIsNewObject()) { 70 return null; 71 } 72 $layout_config = $object->getLayoutConfigObject(); 73 return $layout_config->getLayoutMode(); 74 } 75 76 return parent::getCustomTransactionOldValue($object, $xaction); 77 } 78 79 protected function getCustomTransactionNewValue( 80 PhabricatorLiskDAO $object, 81 PhabricatorApplicationTransaction $xaction) { 82 switch ($xaction->getTransactionType()) { 83 case PhabricatorDashboardTransaction::TYPE_NAME: 84 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 85 return $xaction->getNewValue(); 86 } 87 return parent::getCustomTransactionNewValue($object, $xaction); 88 } 89 90 protected function applyCustomInternalTransaction( 91 PhabricatorLiskDAO $object, 92 PhabricatorApplicationTransaction $xaction) { 93 switch ($xaction->getTransactionType()) { 94 case PhabricatorDashboardTransaction::TYPE_NAME: 95 $object->setName($xaction->getNewValue()); 96 return; 97 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 98 $old_layout = $object->getLayoutConfigObject(); 99 $new_layout = clone $old_layout; 100 $new_layout->setLayoutMode($xaction->getNewValue()); 101 if ($old_layout->isMultiColumnLayout() != 102 $new_layout->isMultiColumnLayout()) { 103 $panel_phids = $object->getPanelPHIDs(); 104 $new_locations = $new_layout->getDefaultPanelLocations(); 105 foreach ($panel_phids as $panel_phid) { 106 $new_locations[0][] = $panel_phid; 107 } 108 $new_layout->setPanelLocations($new_locations); 109 } 110 $object->setLayoutConfigFromObject($new_layout); 111 return; 112 case PhabricatorTransactions::TYPE_VIEW_POLICY: 113 $object->setViewPolicy($xaction->getNewValue()); 114 return; 115 case PhabricatorTransactions::TYPE_EDIT_POLICY: 116 $object->setEditPolicy($xaction->getNewValue()); 117 return; 118 case PhabricatorTransactions::TYPE_EDGE: 119 return; 120 } 121 122 return parent::applyCustomInternalTransaction($object, $xaction); 123 } 124 125 protected function applyCustomExternalTransaction( 126 PhabricatorLiskDAO $object, 127 PhabricatorApplicationTransaction $xaction) { 128 129 switch ($xaction->getTransactionType()) { 130 case PhabricatorDashboardTransaction::TYPE_NAME: 131 case PhabricatorDashboardTransaction::TYPE_LAYOUT_MODE: 132 case PhabricatorTransactions::TYPE_VIEW_POLICY: 133 case PhabricatorTransactions::TYPE_EDIT_POLICY: 134 return; 135 case PhabricatorTransactions::TYPE_EDGE: 136 return; 137 } 138 139 return parent::applyCustomExternalTransaction($object, $xaction); 140 } 141 142 protected function validateTransaction( 143 PhabricatorLiskDAO $object, 144 $type, 145 array $xactions) { 146 147 $errors = parent::validateTransaction($object, $type, $xactions); 148 149 switch ($type) { 150 case PhabricatorDashboardTransaction::TYPE_NAME: 151 $missing = $this->validateIsEmptyTextField( 152 $object->getName(), 153 $xactions); 154 155 if ($missing) { 156 $error = new PhabricatorApplicationTransactionValidationError( 157 $type, 158 pht('Required'), 159 pht('Dashboard name is required.'), 160 nonempty(last($xactions), null)); 161 162 $error->setIsMissingFieldError(true); 163 $errors[] = $error; 164 } 165 break; 166 } 167 168 return $errors; 169 } 170 171 172 }
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 |