protected function newEditableObject() { $viewer = $this->getViewer(); $panel = PhabricatorDashboardPanel::initializeNewPanel($viewer); if ($this->panelType) { $panel->setPanelType($this->panelType); } return $panel; }
private function newPanel(AphrontRequest $request, PhabricatorUser $viewer, $type, $name, array $properties) { $panel = PhabricatorDashboardPanel::initializeNewPanel($viewer)->setPanelType($type)->setProperties($properties); $xactions = array(); $xactions[] = id(new PhabricatorDashboardPanelTransaction())->setTransactionType(PhabricatorDashboardPanelTransaction::TYPE_NAME)->setNewValue($name); $editor = id(new PhabricatorDashboardPanelTransactionEditor())->setActor($viewer)->setContinueOnNoEffect(true)->setContentSourceFromRequest($request)->applyTransactions($panel, $xactions); return $panel; }
private function copyPanel(AphrontRequest $request, PhabricatorDashboard $dashboard, PhabricatorDashboardPanel $panel) { $viewer = $request->getUser(); $copy = PhabricatorDashboardPanel::initializeNewPanel($viewer); $copy = PhabricatorDashboardPanel::copyPanel($copy, $panel); $copy->openTransaction(); $copy->save(); // TODO: This should record a transaction on the panel copy, too. $xactions = array(); $xactions[] = id(new PhabricatorDashboardTransaction())->setTransactionType(PhabricatorTransactions::TYPE_EDGE)->setMetadataValue('edge:type', PhabricatorDashboardDashboardHasPanelEdgeType::EDGECONST)->setNewValue(array('+' => array($copy->getPHID() => $copy->getPHID()), '-' => array($panel->getPHID() => $panel->getPHID()))); $layout_config = $dashboard->getLayoutConfigObject(); $layout_config->replacePanel($panel->getPHID(), $copy->getPHID()); $dashboard->setLayoutConfigFromObject($layout_config); $dashboard->save(); $editor = id(new PhabricatorDashboardTransactionEditor())->setActor($viewer)->setContentSourceFromRequest($request)->setContinueOnMissingFields(true)->setContinueOnNoEffect(true)->applyTransactions($dashboard, $xactions); $copy->saveTransaction(); return $copy; }