Preserve general search scope inside search
authorAlexander Ebert <ebert@woltlab.com>
Tue, 18 Jul 2017 10:22:40 +0000 (12:22 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 18 Jul 2017 10:22:40 +0000 (12:22 +0200)
Closes #2328

com.woltlab.wcf/templates/pageHeaderSearch.tpl
wcfsetup/install/files/lib/form/SearchForm.class.php
wcfsetup/install/files/lib/page/SearchResultPage.class.php

index 32f3909c33a06974ea44d4ef64cfc6b6d98c99bd..a682135211af16600ea6d53116e1da5fd06e4060 100644 (file)
@@ -70,7 +70,7 @@
 {if !OFFLINE || $__wcf->session->getPermission('admin.general.canViewPageDuringOfflineMode')}
        <script data-relocate="true">
                require(['WoltLabSuite/Core/Ui/Search/Page'], function(UiSearchPage) {
-                       UiSearchPage.init('{if !$__searchObjectTypeName|empty}{@$__searchObjectTypeName}{else}everywhere{/if}');
+                       UiSearchPage.init('{if !$__searchObjectTypeName|empty}{@$__searchObjectTypeName}{elseif !$searchPreselectObjectType|empty}{$searchPreselectObjectType}{else}everywhere{/if}');
                });
        </script>
 {/if}
\ No newline at end of file
index e963710f20b8b9e4a18dc3d234c7541f842f074c..4c535248ff00fcd92da37ad73cc8bc446274244a 100644 (file)
@@ -388,6 +388,9 @@ class SearchForm extends AbstractCaptchaForm {
                // init form
                foreach (SearchEngine::getInstance()->getAvailableObjectTypes() as $objectType) $objectType->show($this);
                
+               $searchPreselectObjectType = 'everywhere';
+               if (count($this->selectedObjectTypes) === 1) $searchPreselectObjectType = reset($this->selectedObjectTypes);
+               
                WCF::getTPL()->assign([
                        'query' => $this->query,
                        'subjectOnly' => $this->subjectOnly,
@@ -398,7 +401,8 @@ class SearchForm extends AbstractCaptchaForm {
                        'sortField' => $this->sortField,
                        'sortOrder' => $this->sortOrder,
                        'selectedObjectTypes' => $this->selectedObjectTypes,
-                       'objectTypes' => SearchEngine::getInstance()->getAvailableObjectTypes()
+                       'objectTypes' => SearchEngine::getInstance()->getAvailableObjectTypes(),
+                       'searchPreselectObjectType' => $searchPreselectObjectType
                ]);
        }
        
index dffc5f931d17c83a438488aadcc36091191d3ff8..d1fa1803e01913fb145fd6b8a94e2a2b8c365716 100644 (file)
@@ -154,6 +154,9 @@ class SearchResultPage extends MultipleLinkPage {
        public function assignVariables() {
                parent::assignVariables();
                
+               $searchPreselectObjectType = 'everywhere';
+               if (count($this->searchData['selectedObjectTypes']) === 1) $searchPreselectObjectType = reset($this->searchData['selectedObjectTypes']);
+               
                WCF::getTPL()->assign([
                        'query' => $this->searchData['query'],
                        'objects' => $this->messages,
@@ -166,7 +169,8 @@ class SearchResultPage extends MultipleLinkPage {
                        'objectTypes' => SearchEngine::getInstance()->getAvailableObjectTypes(),
                        'resultListTemplateName' => $this->resultListTemplateName,
                        'resultListApplication' => $this->resultListApplication,
-                       'application' => ApplicationHandler::getInstance()->getAbbreviation(ApplicationHandler::getInstance()->getActiveApplication()->packageID)
+                       'application' => ApplicationHandler::getInstance()->getAbbreviation(ApplicationHandler::getInstance()->getActiveApplication()->packageID),
+                       'searchPreselectObjectType' => $searchPreselectObjectType
                ]);
        }