SL-16535 FIXED The Search floater opens without appropriate search results after performing a search from the NavBar

meow-7.2.2
Mnikolenko Productengine 2021-12-21 17:16:00 +02:00
parent 4966a66219
commit b6f36a6159
5 changed files with 43 additions and 22 deletions

View File

@ -4747,7 +4747,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>https://search.[GRID]/viewer/[CATEGORY]/?q=[QUERY]&amp;p=[AUTH_TOKEN]&amp;r=[MATURITY]&amp;lang=[LANGUAGE]&amp;g=[GODLIKE]&amp;sid=[SESSION_ID]&amp;rid=[REGION_ID]&amp;pid=[PARCEL_ID]&amp;channel=[CHANNEL]&amp;version=[VERSION]&amp;major=[VERSION_MAJOR]&amp;minor=[VERSION_MINOR]&amp;patch=[VERSION_PATCH]&amp;build=[VERSION_BUILD]</string>
<string>https://search.[GRID]/?query_term=[QUERY]&amp;search_type=[TYPE][COLLECTION]&amp;maturity=[MATURITY]&amp;p=[AUTH_TOKEN]&amp;lang=[LANGUAGE]&amp;g=[GODLIKE]&amp;sid=[SESSION_ID]&amp;rid=[REGION_ID]&amp;pid=[PARCEL_ID]&amp;channel=[CHANNEL]&amp;version=[VERSION]&amp;major=[VERSION_MAJOR]&amp;minor=[VERSION_MINOR]&amp;patch=[VERSION_PATCH]&amp;build=[VERSION_BUILD]</string>
</map>
<key>GuidebookURL</key>
<map>

View File

@ -83,8 +83,9 @@ public:
LLSearchHandler gSearchHandler;
LLFloaterSearch::SearchQuery::SearchQuery()
: category("category", ""),
query("query")
: category("category", ""),
collection("collection", ""),
query("query")
{}
LLFloaterSearch::LLFloaterSearch(const Params& key) :
@ -93,16 +94,16 @@ LLFloaterSearch::LLFloaterSearch(const Params& key) :
{
// declare a map that transforms a category name into
// the URL suffix that is used to search that category
mCategoryPaths = LLSD::emptyMap();
mCategoryPaths["all"] = "search";
mCategoryPaths["people"] = "search/people";
mCategoryPaths["places"] = "search/places";
mCategoryPaths["events"] = "search/events";
mCategoryPaths["groups"] = "search/groups";
mCategoryPaths["wiki"] = "search/wiki";
mCategoryPaths["land"] = "land";
mCategoryPaths["destinations"] = "destinations";
mCategoryPaths["classifieds"] = "classifieds";
mSearchType.insert("standard");
mSearchType.insert("land");
mSearchType.insert("classified");
mCollectionType.insert("events");
mCollectionType.insert("destinations");
mCollectionType.insert("places");
mCollectionType.insert("groups");
mCollectionType.insert("people");
}
BOOL LLFloaterSearch::postBuild()
@ -157,18 +158,36 @@ void LLFloaterSearch::search(const SearchQuery &p)
// work out the subdir to use based on the requested category
LLSD subs;
if (mCategoryPaths.has(p.category))
if (mSearchType.find(p.category) != mSearchType.end())
{
subs["CATEGORY"] = mCategoryPaths[p.category].asString();
subs["TYPE"] = p.category;
}
else
{
subs["CATEGORY"] = mCategoryPaths["all"].asString();
subs["TYPE"] = "standard";
}
// add the search query string
subs["QUERY"] = LLURI::escape(p.query);
subs["COLLECTION"] = "";
if (subs["TYPE"] == "standard")
{
if (mCollectionType.find(p.collection) != mCollectionType.end())
{
subs["COLLECTION"] = "&collection_chosen=" + std::string(p.collection);
}
else
{
std::string collection_args("");
for (std::set<std::string>::iterator it = mCollectionType.begin(); it != mCollectionType.end(); ++it)
{
collection_args += "&collection_chosen=" + std::string(*it);
}
subs["COLLECTION"] = collection_args;
}
}
// add the permissions token that login.cgi gave us
// We use "search_token", and fallback to "auth_token" if not present.
LLSD search_token = LLLoginInstance::getInstance()->getResponse("search_token");
@ -182,15 +201,15 @@ void LLFloaterSearch::search(const SearchQuery &p)
std::string maturity;
if (gAgent.prefersAdult())
{
maturity = "42"; // PG,Mature,Adult
maturity = "gma"; // PG,Mature,Adult
}
else if (gAgent.prefersMature())
{
maturity = "21"; // PG,Mature
maturity = "gm"; // PG,Mature
}
else
{
maturity = "13"; // PG
maturity = "g"; // PG
}
subs["MATURITY"] = maturity;

View File

@ -49,6 +49,7 @@ public:
struct SearchQuery : public LLInitParam::Block<SearchQuery>
{
Optional<std::string> category;
Optional<std::string> collection;
Optional<std::string> query;
SearchQuery();
@ -84,7 +85,8 @@ public:
private:
/*virtual*/ BOOL postBuild();
LLSD mCategoryPaths;
std::set<std::string> mSearchType;
std::set<std::string> mCollectionType;
U8 mSearchGodLevel;
};

View File

@ -196,7 +196,7 @@ LLFetchLeaveGroupData* gFetchLeaveGroupData = NULL;
// static
void LLGroupActions::search()
{
LLFloaterReg::showInstance("search", LLSD().with("category", "groups"));
LLFloaterReg::showInstance("search", LLSD().with("collection", "groups"));
}
// static

View File

@ -713,7 +713,7 @@ void LLNavigationBar::resizeLayoutPanel()
}
void LLNavigationBar::invokeSearch(std::string search_text)
{
LLFloaterReg::showInstance("search", LLSD().with("category", "all").with("query", LLSD(search_text)));
LLFloaterReg::showInstance("search", LLSD().with("category", "standard").with("query", LLSD(search_text)));
}
void LLNavigationBar::clearHistoryCache()