diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index f32b2b9531..d31cf19a55 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -302,8 +302,6 @@ execute_function="OpenGridStatus" is_running_function="Floater.IsOpen" is_running_parameters="grid_status" - is_enabled_function="GridCheck" - is_enabled_parameters="secondlife" /> diff --git a/indra/newview/lfsimfeaturehandler.cpp b/indra/newview/lfsimfeaturehandler.cpp index 03703c31b1..708907c375 100644 --- a/indra/newview/lfsimfeaturehandler.cpp +++ b/indra/newview/lfsimfeaturehandler.cpp @@ -31,6 +31,7 @@ #include "llstatusbar.h" #include "llfloaterbuycurrency.h" // +#include "llfloatergridstatus.h" LFSimFeatureHandler::LFSimFeatureHandler() : mSupportsExport(false), @@ -104,6 +105,23 @@ void LFSimFeatureHandler::setSupportedFeatures() mShoutRange = extras.has("shout-range") ? extras["shout-range"].asInteger() : 100; mWhisperRange = extras.has("whisper-range") ? extras["whisper-range"].asInteger() : 10; + if( extras.has("GridStatusRSS")) + { + mGridStatusRSS = extras["GridStatusRSS"]; + } + else + { + mGridStatusRSS = ""; + } + if( extras.has("GridStatus")) + { + mGridStatusURL = extras["GridStatus"]; + } + else + { + mGridStatusURL = ""; + } + if(extras.has("GridURL")) { // If we have GridURL specified in the extras then we use this by default @@ -250,20 +268,24 @@ void LFSimFeatureHandler::setSupportedFeatures() mSimulatorFPSCrit = 20.f; LLWorld::getInstance()->refreshLimits();// reset prim scales etc. + bool in_sl{LLGridManager::instance().isInSecondLife()}; + mGridStatusRSS = (in_sl)? gSavedSettings.getString("GridStatusRSS"):""; + mGridStatusURL = (in_sl)? DEFAULT_GRID_STATUS_URL:""; + if (LLLoginInstance::getInstance()->hasResponse("search")) { mSearchURL = LLLoginInstance::getInstance()->getResponse("search").asString(); } else { - mSearchURL = LLGridManager::getInstance()->isInSecondLife() ? gSavedSettings.getString("SearchURL") : gSavedSettings.getString("SearchURLOpenSim"); + mSearchURL = in_sl ? gSavedSettings.getString("SearchURL") : gSavedSettings.getString("SearchURLOpenSim"); } if (LLLoginInstance::getInstance()->hasResponse("destination_guide_url")) { mDestinationGuideURL = LLLoginInstance::getInstance()->getResponse("destination_guide_url").asString(); } - else if (LLGridManager::instance().isInSecondLife()) + else if (in_sl) { mDestinationGuideURL = gSavedSettings.getString("DestinationGuideURL"); } @@ -276,7 +298,7 @@ void LFSimFeatureHandler::setSupportedFeatures() { mAvatarPickerURL = LLLoginInstance::getInstance()->getResponse("avatar-picker-url").asString(); } - else if (LLGridManager::instance().isInSecondLife()) + else if (in_sl) { mAvatarPickerURL = gSavedSettings.getString("AvatarPickerURL"); } diff --git a/indra/newview/lfsimfeaturehandler.h b/indra/newview/lfsimfeaturehandler.h index e769f1e7bb..fcba5c08a5 100644 --- a/indra/newview/lfsimfeaturehandler.h +++ b/indra/newview/lfsimfeaturehandler.h @@ -88,6 +88,8 @@ public: // Accessors bool simSupportsExport() const { return mSupportsExport; } std::string mapServerURL() const { return mMapServerURL; } + std::string gridStatusURL() const { return mGridStatusURL; } + std::string gridStatusRSS() const { return mGridStatusRSS; } std::string hyperGridURL() const { return mHyperGridPrefix; } std::string searchURL() const { return mSearchURL; } U32 sayRange() const { return mSayRange; } @@ -114,6 +116,8 @@ private: // SignaledTypes SignaledType mSupportsExport; std::string mMapServerURL; + std::string mGridStatusURL; + std::string mGridStatusRSS; std::string mHyperGridPrefix; SignaledType mSearchURL; SignaledType mSayRange; diff --git a/indra/newview/llfloatergridstatus.cpp b/indra/newview/llfloatergridstatus.cpp index a46eb15a53..7bef2ee195 100644 --- a/indra/newview/llfloatergridstatus.cpp +++ b/indra/newview/llfloatergridstatus.cpp @@ -37,6 +37,10 @@ #include "lltoolbarview.h" #include "llviewercontrol.h" #include "llxmltree.h" +// FIRE-30562 [OPENSIM] Grid Status support +#include "llviewernetwork.h" // for LLGridManager +#include "lfsimfeaturehandler.h" // for Opensim feature support +// std::map LLFloaterGridStatus::sItemsMap; // FIRE-21236 - Help Menu - Check Grid Status doesn't open using External Browser @@ -69,7 +73,10 @@ void LLFloaterGridStatus::onOpen(const LLSD& key) applyPreferredRect(); if (mWebBrowser) { - mWebBrowser->navigateTo(DEFAULT_GRID_STATUS_URL, HTTP_CONTENT_TEXT_HTML); + // [FIRE-30562] Support Grid Status on OpenSim + // mWebBrowser->navigateTo(DEFAULT_GRID_STATUS_URL, HTTP_CONTENT_TEXT_HTML); + mWebBrowser->navigateTo(LFSimFeatureHandler::instance().gridStatusURL(), HTTP_CONTENT_TEXT_HTML); + // } } @@ -101,7 +108,15 @@ void LLFloaterGridStatus::getGridStatusRSSCoro() httpOpts->setSSLVerifyPeer(false); // We want this data even if SSL fails httpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_TEXT_XML); - std::string url = gSavedSettings.getString("GridStatusRSS"); + + // FIRE-30562 [OpenSim] Grid Status + // std::string url = gSavedSettings.getString("GridStatusRSS"); + std::string url = LFSimFeatureHandler::instance().gridStatusRSS(); + if( url.empty() ) + { + return; // if OpenSim has not defined this or user has set this to undefined, then do nothing. + } + // LLSD result = httpAdapter->getRawAndSuspend(httpRequest, url, httpOpts, httpHeaders); LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; @@ -113,8 +128,20 @@ void LLFloaterGridStatus::getGridStatusRSSCoro() const LLSD::Binary &rawBody = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary(); std::string body(rawBody.begin(), rawBody.end()); - - std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"grid_status_rss.xml"); + // FIRE-30562 [OpenSim] Grid Status + // std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"grid_status_rss.xml"); + std::string fullpath {}; + const auto gridMgr{LLGridManager::getInstance()}; + if(gridMgr->isInSecondLife()) + { + fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"grid_status_rss.xml"); + } + else + { + const auto& grid_status_file = LLDir::getScrubbedFileName( gridMgr->getGrid() + "_grid_status_rss.xml" ); + fullpath = gDirUtilp->getExpandedFilename( LL_PATH_LOGS, grid_status_file); + } + // if(!gSavedSettings.getBOOL("TestGridStatusRSSFromFile")) { llofstream custom_file_out(fullpath.c_str(), std::ios::trunc); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index f022779a09..3371b92961 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -10229,9 +10229,9 @@ bool isGridFeatureEnabled(const LLSD& userdata) // FIRE-21236 - Help Menu - Check Grid Status doesn't open using External Browser void openGridStatus() { - if (LLWeb::useExternalBrowser(DEFAULT_GRID_STATUS_URL)) + if (LLWeb::useExternalBrowser(LFSimFeatureHandler::instance().gridStatusURL())) { - LLWeb::loadURLExternal(DEFAULT_GRID_STATUS_URL); + LLWeb::loadURLExternal(LFSimFeatureHandler::instance().gridStatusURL()); } else { diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 9f2de93121..ee2a957d29 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2499,9 +2499,6 @@ -