Page MenuHomePhabricator

D20472.diff
No OneTemporary

D20472.diff

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 @@
+<?php
+
+final class PhabricatorDashboardQueryPanelLimitTransaction
+ extends PhabricatorDashboardPanelPropertyTransaction {
+
+ const TRANSACTIONTYPE = 'search.limit';
+
+ protected function getPropertyKey() {
+ return 'limit';
+ }
+
+ public function generateNewValue($object, $value) {
+ if (!$value) {
+ return null;
+ }
+
+ return $value;
+ }
+
+ public function validateTransactions($object, array $xactions) {
+ $errors = array();
+
+ $old_value = $object->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();
}

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 12, 9:24 AM (13 h, 34 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7444344
Default Alt Text
D20472.diff (4 KB)

Event Timeline