Page MenuHomePhabricator

D17348.id41726.diff
No OneTemporary

D17348.id41726.diff

diff --git a/src/applications/dashboard/controller/PhabricatorDashboardAddPanelController.php b/src/applications/dashboard/controller/PhabricatorDashboardAddPanelController.php
--- a/src/applications/dashboard/controller/PhabricatorDashboardAddPanelController.php
+++ b/src/applications/dashboard/controller/PhabricatorDashboardAddPanelController.php
@@ -23,7 +23,7 @@
$redirect_uri = $this->getApplicationURI(
'arrange/'.$dashboard->getID().'/');
- $v_panel = $request->getStr('panel');
+ $v_panel = head($request->getArr('panel'));
$e_panel = true;
$errors = array();
if ($request->isFormPost()) {
@@ -70,26 +70,19 @@
->addCancelButton($redirect_uri);
}
- $panel_options = array();
- foreach ($panels as $panel) {
- $panel_options[$panel->getID()] = pht(
- '%s %s',
- $panel->getMonogram(),
- $panel->getName());
- }
-
$form = id(new AphrontFormView())
->setUser($viewer)
->addHiddenInput('column', $request->getInt('column'))
->appendRemarkupInstructions(
pht('Choose a panel to add to this dashboard:'))
->appendChild(
- id(new AphrontFormSelectControl())
+ id(new AphrontFormTokenizerControl())
+ ->setUser($this->getViewer())
+ ->setDatasource(new PhabricatorDashboardPanelDatasource())
+ ->setLimit(1)
->setName('panel')
->setLabel(pht('Panel'))
- ->setValue($v_panel)
- ->setError($e_panel)
- ->setOptions($panel_options));
+ ->setValue($v_panel));
return $this->newDialog()
->setTitle(pht('Add Panel'))
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
@@ -6,6 +6,7 @@
abstract public function getPanelTypeName();
abstract public function getPanelTypeDescription();
abstract public function getFieldSpecifications();
+ abstract public function getIcon();
abstract public function renderPanelContent(
PhabricatorUser $viewer,
diff --git a/src/applications/dashboard/paneltype/PhabricatorDashboardQueryPanelType.php b/src/applications/dashboard/paneltype/PhabricatorDashboardQueryPanelType.php
--- a/src/applications/dashboard/paneltype/PhabricatorDashboardQueryPanelType.php
+++ b/src/applications/dashboard/paneltype/PhabricatorDashboardQueryPanelType.php
@@ -11,6 +11,10 @@
return pht('Query Panel');
}
+ public function getIcon() {
+ return 'fa-search';
+ }
+
public function getPanelTypeDescription() {
return pht(
'Show results of a search query, like the most recently filed tasks or '.
diff --git a/src/applications/dashboard/paneltype/PhabricatorDashboardTabsPanelType.php b/src/applications/dashboard/paneltype/PhabricatorDashboardTabsPanelType.php
--- a/src/applications/dashboard/paneltype/PhabricatorDashboardTabsPanelType.php
+++ b/src/applications/dashboard/paneltype/PhabricatorDashboardTabsPanelType.php
@@ -11,6 +11,10 @@
return pht('Tab Panel');
}
+ public function getIcon() {
+ return 'fa-window-maximize';
+ }
+
public function getPanelTypeDescription() {
return pht('Use tabs to switch between several other panels.');
}
diff --git a/src/applications/dashboard/paneltype/PhabricatorDashboardTextPanelType.php b/src/applications/dashboard/paneltype/PhabricatorDashboardTextPanelType.php
--- a/src/applications/dashboard/paneltype/PhabricatorDashboardTextPanelType.php
+++ b/src/applications/dashboard/paneltype/PhabricatorDashboardTextPanelType.php
@@ -11,6 +11,10 @@
return pht('Text Panel');
}
+ public function getIcon() {
+ return 'fa-paragraph';
+ }
+
public function getPanelTypeDescription() {
return pht(
'Add some static text to the dashboard. This can be used to '.
diff --git a/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php
--- a/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php
+++ b/src/applications/dashboard/typeahead/PhabricatorDashboardPanelDatasource.php
@@ -16,9 +16,19 @@
}
public function loadResults() {
- $query = id(new PhabricatorDashboardPanelQuery());
+ $results = $this->buildResults();
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+
+ protected function renderSpecialTokens(array $values) {
+ return $this->renderTokensFromResults($this->buildResults(), $values);
+ }
+ public function buildResults() {
+ $query = id(new PhabricatorDashboardPanelQuery());
$panels = $this->executeQuery($query);
+
$results = array();
foreach ($panels as $panel) {
$impl = $panel->getImplementation();
@@ -27,20 +37,29 @@
} else {
$type_text = nonempty($panel->getPanelType(), pht('Unknown Type'));
}
+ $id = $panel->getID();
+ $monogram = $panel->getMonogram();
+ $properties = $panel->getProperties();
$result = id(new PhabricatorTypeaheadResult())
->setName($panel->getName())
- ->setPHID($panel->getPHID())
+ ->setDisplayName($monogram.' '.$panel->getName())
+ ->setPHID($id)
+ ->setIcon($impl->getIcon())
->addAttribute($type_text);
+ if (!empty($properties['class'])) {
+ $result->addAttribute($properties['class']);
+ }
+
if ($panel->getIsArchived()) {
$result->setClosed(pht('Archived'));
}
- $results[] = $result;
+ $results[$id] = $result;
}
- return $this->filterResultsAgainstTokens($results);
+ return $results;
}
}

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 15, 3:38 PM (1 w, 19 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7696967
Default Alt Text
D17348.id41726.diff (5 KB)

Event Timeline