Page MenuHomePhabricator

D9143.id.diff
No OneTemporary

D9143.id.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -358,7 +358,7 @@
'rsrc/js/application/conpherence/behavior-pontificate.js' => '53f6f2dd',
'rsrc/js/application/conpherence/behavior-widget-pane.js' => '40b1ff90',
'rsrc/js/application/countdown/timer.js' => '889c96f3',
- 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => 'fd965b41',
+ 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => 'f1375ea5',
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => 'fa187a68',
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => 'f2441746',
'rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js' => '533a187b',
@@ -553,7 +553,7 @@
'javelin-behavior-conpherence-widget-pane' => '40b1ff90',
'javelin-behavior-countdown-timer' => '889c96f3',
'javelin-behavior-dark-console' => 'e9fdb5e5',
- 'javelin-behavior-dashboard-async-panel' => 'fd965b41',
+ 'javelin-behavior-dashboard-async-panel' => 'f1375ea5',
'javelin-behavior-dashboard-move-panels' => 'fa187a68',
'javelin-behavior-device' => '03d6ed07',
'javelin-behavior-differential-add-reviewers-and-ccs' => '533a187b',
@@ -1965,6 +1965,12 @@
0 => 'javelin-install',
1 => 'javelin-util',
),
+ 'f1375ea5' =>
+ array(
+ 0 => 'javelin-behavior',
+ 1 => 'javelin-dom',
+ 2 => 'javelin-workflow',
+ ),
'f2441746' =>
array(
0 => 'javelin-dom',
@@ -2033,12 +2039,6 @@
0 => 'phabricator-busy',
1 => 'javelin-behavior',
),
- 'fd965b41' =>
- array(
- 0 => 'javelin-behavior',
- 1 => 'javelin-dom',
- 2 => 'javelin-workflow',
- ),
'fe2e0ba4' =>
array(
0 => 'javelin-behavior',
diff --git a/src/applications/dashboard/controller/PhabricatorDashboardPanelRenderController.php b/src/applications/dashboard/controller/PhabricatorDashboardPanelRenderController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardPanelRenderController.php
+++ b/src/applications/dashboard/controller/PhabricatorDashboardPanelRenderController.php
@@ -37,13 +37,14 @@
->setViewer($viewer)
->setPanel($panel)
->setParentPanelPHIDs($parent_phids)
+ ->setHeaderless($request->getBool('headerless'))
->renderPanel();
if ($request->isAjax()) {
return id(new AphrontAjaxResponse())
->setContent(
array(
- 'panelMarkup' => $rendered_panel,
+ 'panelMarkup' => hsprintf('%s', $rendered_panel),
));
}
diff --git a/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php b/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php
--- a/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php
+++ b/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php
@@ -6,6 +6,16 @@
private $viewer;
private $enableAsyncRendering;
private $parentPanelPHIDs;
+ private $headerless;
+
+ public function setHeaderless($headerless) {
+ $this->headerless = $headerless;
+ return $this;
+ }
+
+ public function getHeaderless() {
+ return $this->headerless;
+ }
/**
* Allow the engine to render the panel via Ajax.
@@ -75,9 +85,14 @@
}
private function renderErrorPanel($title, $body) {
- return id(new PHUIObjectBoxView())
- ->setHeaderText($title)
- ->setFormErrors(array($body));
+ if ($this->getHeaderless()) {
+ return id(new AphrontErrorView())
+ ->setErrors(array($body));
+ } else {
+ return id(new PHUIObjectBoxView())
+ ->setHeaderText($title)
+ ->setFormErrors(array($body));
+ }
}
private function renderAsyncPanel(PhabricatorDashboardPanel $panel) {
@@ -88,16 +103,28 @@
array(
'panelID' => $panel_id,
'parentPanelPHIDs' => $this->getParentPanelPHIDs(),
+ 'headerless' => $this->getHeaderless(),
'uri' => '/dashboard/panel/render/'.$panel->getID().'/',
));
- return id(new PHUIObjectBoxView())
- ->addSigil('dashboard-panel')
- ->setMetadata(array(
- 'objectPHID' => $panel->getPHID()))
- ->setHeaderText($panel->getName())
- ->setID($panel_id)
- ->appendChild(pht('Loading...'));
+ $content = pht('Loading...');
+
+ if ($this->headerless) {
+ return phutil_tag(
+ 'div',
+ array(
+ 'id' => $panel_id,
+ ),
+ $content);
+ } else {
+ return id(new PHUIObjectBoxView())
+ ->addSigil('dashboard-panel')
+ ->setMetadata(array(
+ 'objectPHID' => $panel->getPHID()))
+ ->setHeaderText($panel->getName())
+ ->setID($panel_id)
+ ->appendChild($content);
+ }
}
/**
diff --git a/src/applications/dashboard/paneltype/PhabricatorDashboardPanelType.php b/src/applications/dashboard/paneltype/PhabricatorDashboardPanelType.php
--- a/src/applications/dashboard/paneltype/PhabricatorDashboardPanelType.php
+++ b/src/applications/dashboard/paneltype/PhabricatorDashboardPanelType.php
@@ -47,6 +47,10 @@
$content = $this->renderPanelContent($viewer, $panel, $engine);
+ if ($engine->getHeaderless()) {
+ return $content;
+ }
+
return id(new PHUIObjectBoxView())
->addSigil('dashboard-panel')
->setMetadata(array(
diff --git a/src/applications/dashboard/paneltype/PhabricatorDashboardPanelTypeTabs.php b/src/applications/dashboard/paneltype/PhabricatorDashboardPanelTypeTabs.php
--- a/src/applications/dashboard/paneltype/PhabricatorDashboardPanelTypeTabs.php
+++ b/src/applications/dashboard/paneltype/PhabricatorDashboardPanelTypeTabs.php
@@ -91,9 +91,10 @@
->setEnableAsyncRendering(true)
->setParentPanelPHIDs($parent_phids)
->setPanel($panel)
+ ->setHeaderless(true)
->renderPanel();
} else {
- $panel_content = 'nope';
+ $panel_content = pht('(Invalid Panel)');
}
$content[] = phutil_tag(
diff --git a/webroot/rsrc/js/application/dashboard/behavior-dashboard-async-panel.js b/webroot/rsrc/js/application/dashboard/behavior-dashboard-async-panel.js
--- a/webroot/rsrc/js/application/dashboard/behavior-dashboard-async-panel.js
+++ b/webroot/rsrc/js/application/dashboard/behavior-dashboard-async-panel.js
@@ -9,8 +9,13 @@
var panel = JX.$(config.panelID);
panel.style.opacity = '0.5';
+ var data = {
+ parentPanelPHIDs: config.parentPanelPHIDs.join(','),
+ headerless: config.headerless ? 1 : 0
+ };
+
new JX.Workflow(config.uri)
- .setData({parentPanelPHIDs: config.parentPanelPHIDs.join(',')})
+ .setData(data)
.setHandler(function(r) {
JX.DOM.replace(panel, JX.$H(r.panelMarkup));
})

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 9:04 AM (2 d, 11 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7709574
Default Alt Text
D9143.id.diff (6 KB)

Event Timeline