Page MenuHomePhabricator

D20787.id49565.diff
No OneTemporary

D20787.id49565.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
@@ -4655,6 +4655,7 @@
'PhabricatorSearchScopeSetting' => 'applications/settings/setting/PhabricatorSearchScopeSetting.php',
'PhabricatorSearchSelectField' => 'applications/search/field/PhabricatorSearchSelectField.php',
'PhabricatorSearchService' => 'infrastructure/cluster/search/PhabricatorSearchService.php',
+ 'PhabricatorSearchSettingsPanel' => 'applications/settings/panel/PhabricatorSearchSettingsPanel.php',
'PhabricatorSearchStringListField' => 'applications/search/field/PhabricatorSearchStringListField.php',
'PhabricatorSearchSubscribersField' => 'applications/search/field/PhabricatorSearchSubscribersField.php',
'PhabricatorSearchTextField' => 'applications/search/field/PhabricatorSearchTextField.php',
@@ -11248,9 +11249,10 @@
'PhabricatorSearchResultBucketGroup' => 'Phobject',
'PhabricatorSearchResultView' => 'AphrontView',
'PhabricatorSearchSchemaSpec' => 'PhabricatorConfigSchemaSpec',
- 'PhabricatorSearchScopeSetting' => 'PhabricatorInternalSetting',
+ 'PhabricatorSearchScopeSetting' => 'PhabricatorSelectSetting',
'PhabricatorSearchSelectField' => 'PhabricatorSearchField',
'PhabricatorSearchService' => 'Phobject',
+ 'PhabricatorSearchSettingsPanel' => 'PhabricatorEditEngineSettingsPanel',
'PhabricatorSearchStringListField' => 'PhabricatorSearchField',
'PhabricatorSearchSubscribersField' => 'PhabricatorSearchTokenizerField',
'PhabricatorSearchTextField' => 'PhabricatorSearchField',
diff --git a/src/applications/settings/panel/PhabricatorSearchSettingsPanel.php b/src/applications/settings/panel/PhabricatorSearchSettingsPanel.php
new file mode 100644
--- /dev/null
+++ b/src/applications/settings/panel/PhabricatorSearchSettingsPanel.php
@@ -0,0 +1,28 @@
+<?php
+
+final class PhabricatorSearchSettingsPanel
+ extends PhabricatorEditEngineSettingsPanel {
+
+ const PANELKEY = 'search';
+
+ public function getPanelName() {
+ return pht('Search');
+ }
+
+ public function getPanelMenuIcon() {
+ return 'fa-search';
+ }
+
+ public function getPanelGroupKey() {
+ return PhabricatorSettingsApplicationsPanelGroup::PANELGROUPKEY;
+ }
+
+ public function isTemplatePanel() {
+ return true;
+ }
+
+ public function isUserPanel() {
+ return false;
+ }
+
+}
diff --git a/src/applications/settings/setting/PhabricatorSearchScopeSetting.php b/src/applications/settings/setting/PhabricatorSearchScopeSetting.php
--- a/src/applications/settings/setting/PhabricatorSearchScopeSetting.php
+++ b/src/applications/settings/setting/PhabricatorSearchScopeSetting.php
@@ -1,7 +1,7 @@
<?php
final class PhabricatorSearchScopeSetting
- extends PhabricatorInternalSetting {
+ extends PhabricatorSelectSetting {
const SETTINGKEY = 'search-scope';
@@ -9,8 +9,33 @@
return pht('Search Scope');
}
+ public function getSettingPanelKey() {
+ return PhabricatorSearchSettingsPanel::PANELKEY;
+ }
+
public function getSettingDefaultValue() {
return 'all';
}
+ protected function getControlInstructions() {
+ return pht(
+ 'Choose the default behavior of the global search in the main menu.');
+ }
+
+ protected function getSelectOptions() {
+ $scopes = PhabricatorMainMenuSearchView::getGlobalSearchScopeItems(
+ $this->getViewer(),
+ new PhabricatorSettingsApplication());
+
+ $scope_map = array();
+ foreach ($scopes as $scope) {
+ if (!isset($scope['value'])) {
+ continue;
+ }
+ $scope_map[$scope['value']] = $scope['name'];
+ }
+
+ return $scope_map;
+ }
+
}
diff --git a/src/view/page/menu/PhabricatorMainMenuSearchView.php b/src/view/page/menu/PhabricatorMainMenuSearchView.php
--- a/src/view/page/menu/PhabricatorMainMenuSearchView.php
+++ b/src/view/page/menu/PhabricatorMainMenuSearchView.php
@@ -116,8 +116,9 @@
return $form;
}
- private function buildModeSelector($selector_id, $application_id) {
- $viewer = $this->getViewer();
+ public static function getGlobalSearchScopeItems(
+ PhabricatorUser $viewer,
+ PhabricatorApplication $application) {
$items = array();
$items[] = array(
@@ -132,7 +133,6 @@
$application_value = null;
$application_icon = self::DEFAULT_APPLICATION_ICON;
- $application = $this->getApplication();
if ($application) {
$application_value = get_class($application);
if ($application->getApplicationSearchDocumentTypes()) {
@@ -185,6 +185,14 @@
'href' => PhabricatorEnv::getDoclink('Search User Guide'),
);
+ return $items;
+ }
+
+ private function buildModeSelector($selector_id, $application_id) {
+ $viewer = $this->getViewer();
+
+ $items = self::getGlobalSearchScopeItems($viewer, $this->getApplication());
+
$scope_key = PhabricatorSearchScopeSetting::SETTINGKEY;
$current_value = $viewer->getUserSetting($scope_key);
@@ -196,6 +204,13 @@
}
}
+ $application = $this->getApplication();
+
+ $application_value = null;
+ if ($application) {
+ $application_value = get_class($application);
+ }
+
$selector = id(new PHUIButtonView())
->setID($selector_id)
->addClass('phabricator-main-menu-search-dropdown')

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 19, 8:49 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7228180
Default Alt Text
D20787.id49565.diff (5 KB)

Event Timeline