diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -3007,6 +3007,7 @@ 'PhabricatorDashboardQueryPanelApplicationEditField' => 'applications/dashboard/editfield/PhabricatorDashboardQueryPanelApplicationEditField.php', 'PhabricatorDashboardQueryPanelApplicationTransaction' => 'applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelApplicationTransaction.php', 'PhabricatorDashboardQueryPanelInstallController' => 'applications/dashboard/controller/PhabricatorDashboardQueryPanelInstallController.php', + 'PhabricatorDashboardQueryPanelLimitTransaction' => 'applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelLimitTransaction.php', 'PhabricatorDashboardQueryPanelQueryEditField' => 'applications/dashboard/editfield/PhabricatorDashboardQueryPanelQueryEditField.php', 'PhabricatorDashboardQueryPanelQueryTransaction' => 'applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelQueryTransaction.php', 'PhabricatorDashboardQueryPanelType' => 'applications/dashboard/paneltype/PhabricatorDashboardQueryPanelType.php', @@ -9045,6 +9046,7 @@ 'PhabricatorDashboardQueryPanelApplicationEditField' => 'PhabricatorEditField', 'PhabricatorDashboardQueryPanelApplicationTransaction' => 'PhabricatorDashboardPanelPropertyTransaction', 'PhabricatorDashboardQueryPanelInstallController' => 'PhabricatorDashboardController', + 'PhabricatorDashboardQueryPanelLimitTransaction' => 'PhabricatorDashboardPanelPropertyTransaction', 'PhabricatorDashboardQueryPanelQueryEditField' => 'PhabricatorEditField', 'PhabricatorDashboardQueryPanelQueryTransaction' => 'PhabricatorDashboardPanelPropertyTransaction', 'PhabricatorDashboardQueryPanelType' => 'PhabricatorDashboardPanelType', 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 @@ -41,9 +41,17 @@ PhabricatorDashboardQueryPanelQueryTransaction::TRANSACTIONTYPE) ->setValue($panel->getProperty('key', '')); + $limit_field = id(new PhabricatorIntEditField()) + ->setKey('limit') + ->setLabel(pht('Limit')) + ->setTransactionType( + PhabricatorDashboardQueryPanelLimitTransaction::TRANSACTIONTYPE) + ->setValue($panel->getProperty('limit')); + return array( $application_field, $query_field, + $limit_field, ); } diff --git a/src/applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelLimitTransaction.php b/src/applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelLimitTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/dashboard/xaction/panel/PhabricatorDashboardQueryPanelLimitTransaction.php @@ -0,0 +1,43 @@ +getProperty($this->getPropertyKey()); + foreach ($xactions as $xaction) { + $new_value = $xaction->getNewValue(); + + if ($new_value === $old_value) { + continue; + } + + if ($new_value < 0) { + $errors[] = $this->newInvalidError( + pht( + 'Query result limit must be empty, or at least 1.'), + $xaction); + continue; + } + } + + return $errors; + } + +} diff --git a/src/applications/transactions/editfield/PhabricatorIntEditField.php b/src/applications/transactions/editfield/PhabricatorIntEditField.php --- a/src/applications/transactions/editfield/PhabricatorIntEditField.php +++ b/src/applications/transactions/editfield/PhabricatorIntEditField.php @@ -7,6 +7,10 @@ return new AphrontFormTextControl(); } + protected function newHTTPParameterType() { + return new AphrontIntHTTPParameterType(); + } + protected function newConduitParameterType() { return new ConduitIntParameterType(); }