Add better error checking to 'Add to Dashboard'
Summary: Ref T5307. Adds a better query check query, sets required for the name, adds the correct URI for cancelling. Test Plan: Test a form without a name, fake a query string, test cancel button. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T5307 Differential Revision: https://secure.phabricator.com/D17520
This commit is contained in:
@@ -12,6 +12,8 @@ final class PhabricatorDashboardQueryPanelInstallController
|
|||||||
$v_engine = $request->getURIData('engineKey');
|
$v_engine = $request->getURIData('engineKey');
|
||||||
$v_query = $request->getURIData('queryKey');
|
$v_query = $request->getURIData('queryKey');
|
||||||
|
|
||||||
|
$e_name = true;
|
||||||
|
|
||||||
// Validate Engines
|
// Validate Engines
|
||||||
$engines = PhabricatorApplicationSearchEngine::getAllEngines();
|
$engines = PhabricatorApplicationSearchEngine::getAllEngines();
|
||||||
foreach ($engines as $name => $engine) {
|
foreach ($engines as $name => $engine) {
|
||||||
@@ -26,8 +28,20 @@ final class PhabricatorDashboardQueryPanelInstallController
|
|||||||
// Validate Queries
|
// Validate Queries
|
||||||
$engine = $engines[$v_engine];
|
$engine = $engines[$v_engine];
|
||||||
$engine->setViewer($viewer);
|
$engine->setViewer($viewer);
|
||||||
$queries = array_keys($engine->loadEnabledNamedQueries());
|
$good_query = false;
|
||||||
if (!in_array($v_query, $queries)) {
|
if ($engine->isBuiltinQuery($v_engine)) {
|
||||||
|
$good_query = true;
|
||||||
|
} else {
|
||||||
|
$saved_query = id(new PhabricatorSavedQueryQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withEngineClassNames(array($v_engine))
|
||||||
|
->withQueryKeys(array($v_query))
|
||||||
|
->executeOne();
|
||||||
|
if ($saved_query) {
|
||||||
|
$good_query = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$good_query) {
|
||||||
return new Aphront404Response();
|
return new Aphront404Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,6 +52,7 @@ final class PhabricatorDashboardQueryPanelInstallController
|
|||||||
$v_name = $request->getStr('name');
|
$v_name = $request->getStr('name');
|
||||||
if (!$v_name) {
|
if (!$v_name) {
|
||||||
$errors[] = pht('You must provide a name for this panel.');
|
$errors[] = pht('You must provide a name for this panel.');
|
||||||
|
$e_name = pht('Required');
|
||||||
}
|
}
|
||||||
|
|
||||||
$dashboard = id(new PhabricatorDashboardQuery())
|
$dashboard = id(new PhabricatorDashboardQuery())
|
||||||
@@ -127,7 +142,7 @@ final class PhabricatorDashboardQueryPanelInstallController
|
|||||||
$options = mpull($dashboards, 'getName', 'getID');
|
$options = mpull($dashboards, 'getName', 'getID');
|
||||||
asort($options);
|
asort($options);
|
||||||
|
|
||||||
$redirect_uri = '#'; // ??
|
$redirect_uri = $engine->getQueryResultsPageURI($v_query);
|
||||||
|
|
||||||
$form = id(new AphrontFormView())
|
$form = id(new AphrontFormView())
|
||||||
->setUser($viewer)
|
->setUser($viewer)
|
||||||
@@ -138,7 +153,8 @@ final class PhabricatorDashboardQueryPanelInstallController
|
|||||||
id(new AphrontFormTextControl())
|
id(new AphrontFormTextControl())
|
||||||
->setLabel(pht('Name'))
|
->setLabel(pht('Name'))
|
||||||
->setName('name')
|
->setName('name')
|
||||||
->setValue($v_name))
|
->setValue($v_name)
|
||||||
|
->setError($e_name))
|
||||||
->appendChild(
|
->appendChild(
|
||||||
id(new AphrontFormSelectControl())
|
id(new AphrontFormSelectControl())
|
||||||
->setUser($this->getViewer())
|
->setUser($this->getViewer())
|
||||||
|
|||||||
Reference in New Issue
Block a user