1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 08:12:40 +01:00
phorge-phorge/src/applications/search/field/PhabricatorSearchOrderField.php
epriestley bdef1255e3 Make "Order By" field render correctly when showing a SavedQuery with an order alias
Summary:
If you have a saved query with an order alias, we currently apply the order correctly but don't show the right value in the UI.

Map any saved value to the canoncial value when rendering the control.

Test Plan: Added some `var_dump()` and verified order key was getting mapped forward correctly.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D13227
2015-06-09 13:49:01 -07:00

50 lines
1.1 KiB
PHP

<?php
final class PhabricatorSearchOrderField
extends PhabricatorSearchField {
private $options;
private $orderAliases;
public function setOrderAliases(array $order_aliases) {
$this->orderAliases = $order_aliases;
return $this;
}
public function getOrderAliases() {
return $this->orderAliases;
}
public function setOptions(array $options) {
$this->options = $options;
return $this;
}
public function getOptions() {
return $this->options;
}
protected function getDefaultValue() {
return null;
}
protected function getValueFromRequest(AphrontRequest $request, $key) {
return $request->getStr($key);
}
protected function getValueForControl() {
// If the SavedQuery has an alias for an order, map it to the canonical
// name for the order so the correct option is selected in the dropdown.
$value = parent::getValueForControl();
if (isset($this->orderAliases[$value])) {
$value = $this->orderAliases[$value];
}
return $value;
}
protected function newControl() {
return id(new AphrontFormSelectControl())
->setOptions($this->getOptions());
}
}