From 486c4774ab4a707d69c1b48cdc048af1369084db Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:23 -0500 Subject: Second Life viewer sources 1.18.6.2-RC --- .../indra/newview/English.lproj/InfoPlist.strings | 4 +- linden/indra/newview/Info-SecondLife.plist | 2 +- linden/indra/newview/llappviewer.cpp | 99 +- linden/indra/newview/llappviewer.h | 7 +- linden/indra/newview/llcontroldef.cpp | 6 +- linden/indra/newview/llfloaterland.cpp | 2 +- linden/indra/newview/llfloaterreporter.cpp | 2 +- linden/indra/newview/llpanelavatar.cpp | 4 +- linden/indra/newview/llpanelclassified.cpp | 62 +- linden/indra/newview/llpanelclassified.h | 2 +- linden/indra/newview/llpanellogin.cpp | 91 +- linden/indra/newview/llpanelweb.cpp | 71 +- linden/indra/newview/llpanelweb.h | 6 + linden/indra/newview/llstartup.cpp | 39 +- linden/indra/newview/lltexturectrl.cpp | 6 - linden/indra/newview/llvieweraudio.cpp | 14 +- linden/indra/newview/llviewermenu.cpp | 102 +- linden/indra/newview/llviewernetwork.cpp | 28 + linden/indra/newview/llviewernetwork.h | 7 + linden/indra/newview/llviewerobject.cpp | 18 +- linden/indra/newview/llviewerwindow.cpp | 48 +- linden/indra/newview/llviewerwindow.h | 1 + linden/indra/newview/llvoavatar.cpp | 3 +- linden/indra/newview/llvovolume.cpp | 3 +- linden/indra/newview/llwebbrowserctrl.cpp | 42 +- linden/indra/newview/llwebbrowserctrl.h | 3 +- linden/indra/newview/llwindebug.cpp | 7 +- .../newview/macview.xcodeproj/project.pbxproj | 2 - linden/indra/newview/newview.vcproj | 2 +- linden/indra/newview/releasenotes.txt | 28 + linden/indra/newview/res/newViewRes.rc | 8 +- linden/indra/newview/skins/xui/de/alerts.xml | 266 +- .../newview/skins/xui/de/floater_about_land.xml | 42 +- .../newview/skins/xui/de/floater_directory.xml | 10 +- .../indra/newview/skins/xui/de/floater_gesture.xml | 3 +- .../newview/skins/xui/de/floater_report_abuse.xml | 4 +- .../newview/skins/xui/de/floater_texture_ctrl.xml | 3 + .../indra/newview/skins/xui/de/floater_tools.xml | 12 +- .../indra/newview/skins/xui/de/menu_inventory.xml | 2 +- linden/indra/newview/skins/xui/de/menu_login.xml | 12 + linden/indra/newview/skins/xui/de/need_to_long.xml | 90 +- .../newview/skins/xui/de/need_to_translate.xml | 1544 +++----- .../indra/newview/skins/xui/de/need_to_update.xml | 3869 +++++++++++++++++--- linden/indra/newview/skins/xui/de/notify.xml | 15 + linden/indra/newview/skins/xui/de/panel_avatar.xml | 9 +- .../skins/xui/de/panel_avatar_classified.xml | 2 +- .../newview/skins/xui/de/panel_group_general.xml | 2 +- .../newview/skins/xui/de/panel_group_roles.xml | 8 +- .../newview/skins/xui/de/panel_group_voting.xml | 2 +- linden/indra/newview/skins/xui/de/panel_login.xml | 5 +- .../newview/skins/xui/de/panel_region_estate.xml | 9 +- .../newview/skins/xui/de/teleport_strings.xml | 35 +- linden/indra/newview/skins/xui/en-us/alerts.xml | 8 + .../newview/skins/xui/en-us/floater_about_land.xml | 18 +- .../skins/xui/en-us/panel_avatar_classified.xml | 4 +- .../newview/skins/xui/en-us/panel_group_roles.xml | 2 +- .../newview/skins/xui/en-us/panel_group_voting.xml | 2 +- .../xui/en-us/panel_preferences_graphics1.xml | 37 +- .../skins/xui/en-us/panel_preferences_web.xml | 29 +- linden/indra/newview/skins/xui/ja/alerts.xml | 562 +-- .../newview/skins/xui/ja/floater_about_land.xml | 44 +- .../newview/skins/xui/ja/floater_directory.xml | 5 +- .../skins/xui/ja/floater_new_outfit_dialog.xml | 4 +- .../newview/skins/xui/ja/floater_report_abuse.xml | 4 +- .../newview/skins/xui/ja/floater_texture_ctrl.xml | 3 + .../indra/newview/skins/xui/ja/floater_tools.xml | 6 +- .../indra/newview/skins/xui/ja/menu_inventory.xml | 2 +- linden/indra/newview/skins/xui/ja/menu_login.xml | 12 + linden/indra/newview/skins/xui/ja/need_to_long.xml | 184 +- .../newview/skins/xui/ja/need_to_translate.xml | 1554 +++----- .../indra/newview/skins/xui/ja/need_to_update.xml | 3758 ++++++++++++++++--- linden/indra/newview/skins/xui/ja/notify.xml | 15 + linden/indra/newview/skins/xui/ja/panel_avatar.xml | 6 + .../newview/skins/xui/ja/panel_group_general.xml | 2 +- .../newview/skins/xui/ja/panel_group_roles.xml | 4 +- .../newview/skins/xui/ja/panel_group_voting.xml | 8 +- linden/indra/newview/skins/xui/ja/panel_login.xml | 5 +- .../newview/skins/xui/ja/panel_place_small.xml | 6 +- .../newview/skins/xui/ja/panel_preferences_im.xml | 2 +- .../newview/skins/xui/ja/panel_region_estate.xml | 9 +- .../newview/skins/xui/ja/panel_voice_options.xml | 2 +- .../newview/skins/xui/ja/teleport_strings.xml | 49 +- linden/indra/newview/skins/xui/ko/alerts.xml | 498 +-- .../newview/skins/xui/ko/floater_about_land.xml | 36 +- .../newview/skins/xui/ko/floater_directory.xml | 5 +- .../newview/skins/xui/ko/floater_report_abuse.xml | 3 +- .../newview/skins/xui/ko/floater_texture_ctrl.xml | 3 + .../indra/newview/skins/xui/ko/floater_tools.xml | 6 +- .../indra/newview/skins/xui/ko/menu_inventory.xml | 2 +- linden/indra/newview/skins/xui/ko/menu_login.xml | 12 + linden/indra/newview/skins/xui/ko/need_to_long.xml | 145 +- .../newview/skins/xui/ko/need_to_translate.xml | 1555 +++----- .../indra/newview/skins/xui/ko/need_to_update.xml | 3850 ++++++++++++++++--- linden/indra/newview/skins/xui/ko/notify.xml | 15 + linden/indra/newview/skins/xui/ko/panel_avatar.xml | 6 + .../newview/skins/xui/ko/panel_group_voting.xml | 11 +- linden/indra/newview/skins/xui/ko/panel_login.xml | 5 +- .../newview/skins/xui/ko/panel_region_estate.xml | 9 +- .../newview/skins/xui/ko/panel_voice_options.xml | 3 +- .../newview/skins/xui/ko/teleport_strings.xml | 45 +- 100 files changed, 13548 insertions(+), 5670 deletions(-) create mode 100644 linden/indra/newview/skins/xui/de/menu_login.xml create mode 100644 linden/indra/newview/skins/xui/ja/menu_login.xml create mode 100644 linden/indra/newview/skins/xui/ko/menu_login.xml (limited to 'linden/indra/newview') diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings index 38cbbde..a4383ff 100644 --- a/linden/indra/newview/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/English.lproj/InfoPlist.strings @@ -1,5 +1,5 @@ /* Localized versions of Info.plist keys */ CFBundleName = "Second Life"; -CFBundleShortVersionString = "Second Life version 1.18.6.1"; -CFBundleGetInfoString = "Second Life version 1.18.6.1, Copyright 2004-2007 Linden Research, Inc."; +CFBundleShortVersionString = "Second Life version 1.18.6.2"; +CFBundleGetInfoString = "Second Life version 1.18.6.2, Copyright 2004-2007 Linden Research, Inc."; diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist index 62f1665..c753469 100644 --- a/linden/indra/newview/Info-SecondLife.plist +++ b/linden/indra/newview/Info-SecondLife.plist @@ -32,7 +32,7 @@ CFBundleVersion - 1.18.6.1 + 1.18.6.2 CSResourcesFileMapped diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index e95180c..a2d70af 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -251,8 +251,6 @@ LLString gDisabledMessage; // Set in LLAppViewer::initConfiguration used in idle BOOL gHideLinks = FALSE; // Set in LLAppViewer::initConfiguration, used externally -BOOL gInProductionGrid = FALSE; - BOOL gAllowIdleAFK = TRUE; F32 gAFKTimeout = DEFAULT_AFK_TIMEOUT; BOOL gShowObjectUpdates = FALSE; @@ -371,6 +369,7 @@ static LLString gWindowTitle; static char sWindowClass[] = "Second Life"; #endif +std::string gLoginPage; std::vector gLoginURIs; static std::string gHelperURI; @@ -379,6 +378,7 @@ static const char USAGE[] = "\n" "options:\n" " -login log in as a user\n" " -autologin log in as last saved user\n" +" -loginpage login authentication page to use\n" " -loginuri login server and CGI script to use\n" " -helperuri helper web CGI prefix to use\n" " -settings specify the filename of a\n" @@ -628,6 +628,41 @@ int parse_args(int argc, char **argv) gGridChoice = GRID_INFO_UMA; sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); } + else if (!strcmp(argv[j], "--mohini")) + { + gGridChoice = GRID_INFO_MOHINI; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--yami")) + { + gGridChoice = GRID_INFO_YAMI; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--nandi")) + { + gGridChoice = GRID_INFO_NANDI; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--mitra")) + { + gGridChoice = GRID_INFO_MITRA; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--radha")) + { + gGridChoice = GRID_INFO_RADHA; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--ravi")) + { + gGridChoice = GRID_INFO_RAVI; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } + else if (!strcmp(argv[j], "--aruna")) + { + gGridChoice = GRID_INFO_ARUNA; + sprintf(gGridName,"%s", gGridInfo[gGridChoice].mName); + } else if (!strcmp(argv[j], "-user") && (++j < argc)) { if (!strcmp(argv[j], "-")) @@ -643,6 +678,10 @@ int parse_args(int argc, char **argv) snprintf(gGridName, MAX_STRING, "%s", ip_string.c_str()); // Flawfinder: ignore } } + else if (!strcmp(argv[j], "-loginpage") && (++j < argc)) + { + LLAppViewer::instance()->setLoginPage(utf8str_trim(argv[j])); + } else if (!strcmp(argv[j], "-loginuri") && (++j < argc)) { LLAppViewer::instance()->addLoginURI(utf8str_trim(argv[j])); @@ -1866,6 +1905,34 @@ bool LLAppViewer::initEarlyConfiguration() { sprintf(gGridName,"%s", gGridInfo[GRID_INFO_UMA].mName); } + else if (!strcmp(argv[j], "--mohini")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_MOHINI].mName); + } + else if (!strcmp(argv[j], "--yami")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_YAMI].mName); + } + else if (!strcmp(argv[j], "--nandi")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_NANDI].mName); + } + else if (!strcmp(argv[j], "--mitra")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_MITRA].mName); + } + else if (!strcmp(argv[j], "--radha")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_RADHA].mName); + } + else if (!strcmp(argv[j], "--ravi")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_RAVI].mName); + } + else if (!strcmp(argv[j], "--aruna")) + { + sprintf(gGridName,"%s", gGridInfo[GRID_INFO_ARUNA].mName); + } else if (!strcmp(argv[j], "-user") && (++j < argc)) { if (!strcmp(argv[j], "-")) @@ -2292,11 +2359,6 @@ bool LLAppViewer::doConfigFromCommandLine() removeMarkerFile(); return false; } - - if (!strcmp(gGridName, gGridInfo[GRID_INFO_AGNI].mName)) - { - gInProductionGrid = TRUE; - } return true; } @@ -2540,7 +2602,7 @@ bool LLAppViewer::anotherInstanceRunning() llinfos << "Checking marker file for lock..." << llendl; // If file doesn't exist, we create it - // If file does exist, try to get writing privilages + // If file does exist, try to get writing privileges FILE* fMarker = LLFile::fopen(marker_file.c_str(), "rb"); // Flawfinder: ignore if (fMarker != NULL) { @@ -2555,7 +2617,7 @@ bool LLAppViewer::anotherInstanceRunning() // *FIX:Mani - rather than have this exception here, // LLFile::fopen() have consistent behavior across platforms? -#if LL_DARWIN +#if LL_DARWIN || LL_LINUX || LL_SOLARIS // Try to lock it. On Mac, this is the only way to test if it's actually locked. if (flock(fileno(fMarker), LOCK_EX | LOCK_NB) == -1) { @@ -2601,7 +2663,7 @@ void LLAppViewer::initMarkerFile() llinfos << "Marker file is locked." << llendl; return; } -#if LL_DARWIN +#if LL_DARWIN || LL_LINUX || LL_SOLARIS // Try to lock it. On Mac, this is the only way to test if it's actually locked. if (flock(fileno(fMarker), LOCK_EX | LOCK_NB) == -1) { @@ -3044,6 +3106,17 @@ void LLAppViewer::setHelperURI(const std::string& uri) gHelperURI = uri; } +void LLAppViewer::setLoginPage(const std::string& login_page) +{ + gLoginPage = login_page; +} + +const std::string& LLAppViewer::getLoginPage() +{ + return gLoginPage; +} + + // Callback from a dialog indicating user was logged out. void finish_disconnect(S32 option, void* userdata) { @@ -3172,6 +3245,12 @@ void LLAppViewer::saveNameCache() } } +bool LLAppViewer::isInProductionGrid() +{ + return (GRID_INFO_AGNI == gGridChoice); +} + + /*! @brief This class is an LLFrameTimer that can be created with an elapsed time that starts counting up from the given value rather than 0.0. diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h index e97aead..32501b4 100644 --- a/linden/indra/newview/llappviewer.h +++ b/linden/indra/newview/llappviewer.h @@ -101,6 +101,8 @@ public: const std::vector& getLoginURIs() const; const std::string& getHelperURI() const; void resetURIs() const; + void setLoginPage(const std::string& login_page); + const std::string& getLoginPage(); void forceDisconnect(const LLString& msg); // Force disconnection, with a message to the user. void badNetworkHandler(); // Cause a crash state due to bad network packet. @@ -111,6 +113,8 @@ public: void loadNameCache(); void saveNameCache(); + bool isInProductionGrid(); + // LLAppViewer testing helpers. // *NOTE: These will potentially crash the viewer. Only for debugging. virtual void forceErrorLLError(); @@ -169,7 +173,7 @@ private: // Thread objects. static LLTextureCache* sTextureCache; static LLWorkerThread* sImageDecodeThread; - static LLTextureFetch* sTextureFetch; + static LLTextureFetch* sTextureFetch; S32 mNumSessions; @@ -196,7 +200,6 @@ extern BOOL gHandleKeysAsync; // gSavedSettings used by llviewerdisplay.cpp & ll extern BOOL gProbeHardware; extern LLString gDisabledMessage; // llstartup extern BOOL gHideLinks; // used by llpanellogin, lllfloaterbuycurrency, llstartup -extern BOOL gInProductionGrid; extern LLSD gDebugInfo; extern BOOL gAllowIdleAFK; diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp index 45b8be3..1ead6ab 100644 --- a/linden/indra/newview/llcontroldef.cpp +++ b/linden/indra/newview/llcontroldef.cpp @@ -1424,9 +1424,9 @@ void declare_settings() gSavedSettings.declareString("BrowserHomePage", "http://www.secondlife.com", "[NOT USED]"); // browser proxy variables - gSavedSettings.declareBOOL("BrowserProxyEnabled", FALSE, "[NOT USED]"); - gSavedSettings.declareString("BrowserProxyAddress", "", "[NOT USED]"); - gSavedSettings.declareS32("BrowserProxyPort", 3128, "[NOT USED]"); + gSavedSettings.declareBOOL("BrowserProxyEnabled", FALSE, "Use Web Proxy"); + gSavedSettings.declareString("BrowserProxyAddress", "", "Address for the Web Proxy]"); + gSavedSettings.declareS32("BrowserProxyPort", 3128, "Port for Web Proxy"); gSavedSettings.declareS32("BrowserProxySocks45", 5, "[NOT USED]"); gSavedSettings.declareString("BrowserProxyExclusions", "", "[NOT USED]"); diff --git a/linden/indra/newview/llfloaterland.cpp b/linden/indra/newview/llfloaterland.cpp index 543dd94..32344ff 100644 --- a/linden/indra/newview/llfloaterland.cpp +++ b/linden/indra/newview/llfloaterland.cpp @@ -2778,7 +2778,7 @@ void LLPanelLandAccess::refresh_ui() { childSetToolTip("Only Allow", LLString()); } - childSetEnabled("GroupCheck", FALSE); + childSetEnabled("GroupCheck", TRUE); // Should always be an option (overrides age, payment restrictions) childSetEnabled("PassCheck", FALSE); childSetEnabled("pass_combo", FALSE); childSetEnabled("AccessList", FALSE); diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp index bd5438e..e59f52b 100644 --- a/linden/indra/newview/llfloaterreporter.cpp +++ b/linden/indra/newview/llfloaterreporter.cpp @@ -660,7 +660,7 @@ LLSD LLFloaterReporter::gatherReport() mCopyrightWarningSeen = FALSE; std::ostringstream summary; - if (!gInProductionGrid) + if (!LLAppViewer::instance()->isInProductionGrid()) { summary << "Preview "; } diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index 18b8462..f194139 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp @@ -1877,7 +1877,9 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**) } args["[PAYMENTINFO]"] = self->mPanelSecondLife->childGetValue(payment_text).asString(); LLString age_text = age_verified ? "AgeVerified" : "NotAgeVerified"; - args["[AGEVERIFICATION]"] = self->mPanelSecondLife->childGetValue(age_text).asString(); + // Do not display age verification status at this time + //args["[AGEVERIFICATION]"] = self->mPanelSecondLife->childGetValue(age_text).asString(); + args["[AGEVERIFICATION]"] = " "; } else { diff --git a/linden/indra/newview/llpanelclassified.cpp b/linden/indra/newview/llpanelclassified.cpp index 04fb54b..c2f6593 100644 --- a/linden/indra/newview/llpanelclassified.cpp +++ b/linden/indra/newview/llpanelclassified.cpp @@ -48,6 +48,7 @@ #include "llcheckboxctrl.h" #include "llclassifiedflags.h" #include "llclassifiedstatsresponder.h" +#include "llcommandhandler.h" // for classified HTML detail page click tracking #include "llviewercontrol.h" #include "lllineeditor.h" #include "llfloateravatarinfo.h" @@ -58,6 +59,7 @@ #include "llviewertexteditor.h" #include "lltexturectrl.h" #include "lluiconstants.h" +#include "llurldispatcher.h" // for classified HTML detail click teleports #include "llvieweruictrlfactory.h" #include "llviewerparcelmgr.h" #include "llviewerwindow.h" @@ -70,6 +72,9 @@ const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$ +//static +std::list LLPanelClassified::sAllPanels; + // "classifiedclickthrough" // strings[0] = classified_id // strings[1] = teleport_clicks @@ -96,11 +101,45 @@ public: return true; } }; - static LLDispatchClassifiedClickThrough sClassifiedClickThrough; -//static -std::list LLPanelClassified::sAllPanels; + +// We need to count classified teleport clicks from the search HTML detail pages, +// so we need have a teleport that also sends a click count message. +class LLClassifiedTeleportHandler : public LLCommandHandler +{ +public: + // Inform the system you handle commands starting + // with "foo" + LLClassifiedTeleportHandler() : LLCommandHandler("classifiedteleport") { } + + bool handle(const LLSD& tokens, const LLSD& queryMap) + { + // Need at least classified id and region name, so 2 params + if (tokens.size() < 2) return false; + LLUUID classified_id = tokens[0].asUUID(); + if (classified_id.isNull()) return false; + // *HACK: construct a SLURL to do the teleport + std::string url("secondlife:///app/teleport/"); + // skip the uuid we took off above, rebuild URL + // separated by slashes. + for (S32 i = 1; i < tokens.size(); ++i) + { + url += tokens[i].asString(); + url += "/"; + } + llinfos << "classified teleport to " << url << llendl; + // *TODO: separately track old search, sidebar, and new search + // Right now detail HTML pages count as new search. + const bool from_search = true; + LLPanelClassified::sendClassifiedClickMessage(classified_id, "teleport", from_search); + // Invoke teleport + return LLURLDispatcher::dispatch(url); + } +}; +// Creating the object registers with the dispatcher. +LLClassifiedTeleportHandler gClassifiedTeleportHandler; + LLPanelClassified::LLPanelClassified(BOOL in_finder, bool from_search) : LLPanel("Classified Panel"), @@ -838,7 +877,7 @@ void LLPanelClassified::onClickTeleport(void* data) gAgent.teleportViaLocation(self->mPosGlobal); gFloaterWorldMap->trackLocation(self->mPosGlobal); - self->sendClassifiedClickMessage("teleport"); + sendClassifiedClickMessage(self->mClassifiedID, "teleport", self->mFromSearch); } } @@ -850,7 +889,7 @@ void LLPanelClassified::onClickMap(void* data) gFloaterWorldMap->trackLocation(self->mPosGlobal); LLFloaterWorldMap::show(NULL, TRUE); - self->sendClassifiedClickMessage("map"); + sendClassifiedClickMessage(self->mClassifiedID, "map", self->mFromSearch); } // static @@ -858,7 +897,7 @@ void LLPanelClassified::onClickProfile(void* data) { LLPanelClassified* self = (LLPanelClassified*)data; LLFloaterAvatarInfo::showFromDirectory(self->mCreatorID); - self->sendClassifiedClickMessage("profile"); + sendClassifiedClickMessage(self->mClassifiedID, "profile", self->mFromSearch); } // static @@ -932,20 +971,23 @@ void LLPanelClassified::onFocusReceived(LLUICtrl* ctrl, void* data) } -void LLPanelClassified::sendClassifiedClickMessage(const char* type) +// static +void LLPanelClassified::sendClassifiedClickMessage(const LLUUID& classified_id, + const char* type, + bool from_search) { // You're allowed to click on your own ads to reassure yourself // that the system is working. std::vector strings; - strings.push_back(mClassifiedID.asString()); + strings.push_back(classified_id.asString()); strings.push_back(type); LLUUID no_invoice; // New classified click-through handling LLSD body; body["type"] = type; - body["from_search"] = mFromSearch; - body["classified_id"] = mClassifiedID; + body["from_search"] = from_search; + body["classified_id"] = classified_id; std::string url = gAgent.getRegion()->getCapability("SearchStatTracking"); // If the capability exists send to the new database, otherwise send to the old one. diff --git a/linden/indra/newview/llpanelclassified.h b/linden/indra/newview/llpanelclassified.h index a2bb29b..a920569 100644 --- a/linden/indra/newview/llpanelclassified.h +++ b/linden/indra/newview/llpanelclassified.h @@ -101,6 +101,7 @@ public: static void callbackGotPriceForListing(S32 option, LLString text, void* data); static void callbackConfirmPublish(S32 option, void* data); + static void sendClassifiedClickMessage(const LLUUID& classified_id, const char* type, bool from_search); protected: static void saveCallback(S32 option, void* data); @@ -114,7 +115,6 @@ protected: static void onFocusReceived(LLUICtrl* ctrl, void* data); static void onCommitAny(LLUICtrl* ctrl, void* data); - void sendClassifiedClickMessage(const char* type); BOOL checkDirty(); // Update and return mDirty protected: diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index c7f10fd..e604493 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp @@ -148,7 +148,34 @@ void LLLoginHandler::parse(const LLSD& queryMap) { gGridChoice = GRID_INFO_UMA; } - + else if (queryMap["grid"].asString() == "mohini") + { + gGridChoice = GRID_INFO_MOHINI; + } + else if (queryMap["grid"].asString() == "yami") + { + gGridChoice = GRID_INFO_YAMI; + } + else if (queryMap["grid"].asString() == "nandi") + { + gGridChoice = GRID_INFO_NANDI; + } + else if (queryMap["grid"].asString() == "mitra") + { + gGridChoice = GRID_INFO_MITRA; + } + else if (queryMap["grid"].asString() == "radha") + { + gGridChoice = GRID_INFO_RADHA; + } + else if (queryMap["grid"].asString() == "ravi") + { + gGridChoice = GRID_INFO_RAVI; + } + else if (queryMap["grid"].asString() == "aruna") + { + gGridChoice = GRID_INFO_ARUNA; + } #if !LL_RELEASE_FOR_DOWNLOAD if (gGridChoice > GRID_INFO_NONE && gGridChoice < GRID_INFO_LOCAL) { @@ -156,8 +183,11 @@ void LLLoginHandler::parse(const LLSD& queryMap) } #endif - snprintf(gGridName, MAX_STRING, "%s", gGridInfo[gGridChoice].mName); /* Flawfinder: ignore */ - LLAppViewer::instance()->resetURIs(); + if (LLAppViewer::instance()->getLoginURIs().size() == 0) + { + snprintf(gGridName, MAX_STRING, "%s", gGridInfo[gGridChoice].mName); /* Flawfinder: ignore */ + LLAppViewer::instance()->resetURIs(); + } LLString startLocation = queryMap["location"].asString(); @@ -316,16 +346,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, // don't make it a tab stop until SL-27594 is fixed web_browser->setTabStop(FALSE); - - // painfully build the path to the loading screen - std::string loading_path( gDirUtilp->getExpandedFilename( LL_PATH_SKINS, "" ) ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "html" ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "loading" ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "loading.html" ); - web_browser->navigateTo( loading_path.c_str() ); + web_browser->navigateToLocalPage( "loading", "loading.html" ); // make links open in external browser web_browser->setOpenInExternalBrowser( true ); @@ -339,7 +360,12 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, // kick off a request to grab the url manually gResponsePtr = LLIamHereLogin::build( this ); - LLHTTPClient::head( childGetValue( "real_url" ).asString(), gResponsePtr ); + std::string login_page = LLAppViewer::instance()->getLoginPage(); + if (login_page.empty()) + { + login_page = childGetValue( "real_url" ).asString(); + } + LLHTTPClient::head( login_page, gResponsePtr ); }; #else mHtmlAvailable = FALSE; @@ -367,16 +393,8 @@ void LLPanelLogin::setSiteIsAlive( bool alive ) // the site is not available (missing page, server down, other badness) { if ( web_browser ) - { - // painfully build the path to the loading screen - std::string loading_path( gDirUtilp->getExpandedFilename( LL_PATH_SKINS, "" ) ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "html" ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "loading-error" ); - loading_path.append( gDirUtilp->getDirDelimiter() ); - loading_path.append( "index.html" ); - web_browser->navigateTo( loading_path.c_str() ); + { + web_browser->navigateToLocalPage( "loading-error" , "index.html" ); // mark as available mHtmlAvailable = TRUE; @@ -405,13 +423,6 @@ void LLPanelLogin::draw() { if (!getVisible()) return; - BOOL target_fullscreen; - S32 target_width; - S32 target_height; - gViewerWindow->getTargetWindow(target_fullscreen, target_width, target_height); - - childSetVisible("full_screen_text", target_fullscreen); - glPushMatrix(); { F32 image_aspect = 1.333333f; @@ -622,12 +633,23 @@ void LLPanelLogin::loadLoginPage() char* curl_channel = curl_escape(gChannelName.c_str(), 0); char* curl_version = curl_escape(version.c_str(), 0); + std::string login_page = LLAppViewer::instance()->getLoginPage(); + if (login_page.empty()) + { + login_page = sInstance->childGetValue( "real_url" ).asString(); + } - oStr << sInstance->childGetValue( "real_url" ).asString() << "&firstname=" << firstname << + // Use the right delimeter depending on how LLURI parses the URL + LLURI login_page_uri = LLURI(login_page); + std::string first_query_delimiter = "&"; + if (login_page_uri.queryMap().size() == 0) + { + first_query_delimiter = "?"; + } + oStr << login_page << first_query_delimiter << "firstname=" << firstname << "&lastname=" << lastname << "&location=" << location << "®ion=" << curl_region << "&grid=" << gGridInfo[gGridChoice].mLabel << "&channel=" << curl_channel << "&version=" << curl_version; - curl_free(curl_region); curl_free(curl_channel); @@ -684,7 +706,8 @@ void LLPanelLogin::onNavigateComplete( const EventType& eventIn ) ** sets the initial focus in a real web browser is not working inside ** the viewer, so this is an UGLY HACK WORKAROUND for now. */ - web_browser->handleKey(KEY_TAB, MASK_NONE, false); + // Commented out as it's not reliable + //web_browser->handleKey(KEY_TAB, MASK_NONE, false); } } #endif diff --git a/linden/indra/newview/llpanelweb.cpp b/linden/indra/newview/llpanelweb.cpp index 2b91bd2..7f25d78 100644 --- a/linden/indra/newview/llpanelweb.cpp +++ b/linden/indra/newview/llpanelweb.cpp @@ -41,9 +41,11 @@ // project includes #include "llbutton.h" +#include "llcheckboxctrl.h" +#include "lllineeditor.h" +#include "llmozlib.h" #include "llui.h" #include "lluictrlfactory.h" -#include "llcheckboxctrl.h" #include "llviewercontrol.h" #include "llvieweruictrlfactory.h" #include "llviewerwindow.h" @@ -61,14 +63,25 @@ BOOL LLPanelWeb::postBuild() { childSetAction( "clear_cache", onClickClearCache, this ); childSetAction( "clear_cookies", onClickClearCookies, this ); -// childSetEnabled( "connection_port", gSavedSettings.getBOOL( "CookiesEnabled" ) ); childSetCommitCallback( "cookies_enabled", onCommitCookies, this ); + childSetCommitCallback( "web_proxy_editor", onCommitWebProxyAddress, this); + childSetCommitCallback( "web_proxy_port", onCommitWebProxyPort, this); + + childSetEnabled("web_proxy_editor", + gSavedSettings.getBOOL("BrowserProxyEnabled")); + childSetEnabled("web_proxy_port", + gSavedSettings.getBOOL("BrowserProxyEnabled")); + childSetEnabled("proxy_text_label", + gSavedSettings.getBOOL("BrowserProxyEnabled")); + childSetCommitCallback("web_proxy_enabled", onCommitWebProxyEnabled, this); refresh(); return TRUE; } + + LLPanelWeb::~LLPanelWeb() { // Children all cleaned up by default view destructor. @@ -83,6 +96,15 @@ void LLPanelWeb::refresh() LLPanel::refresh(); mCookiesEnabled = gSavedSettings.getBOOL("CookiesEnabled"); + mWebProxyEnabled = gSavedSettings.getBOOL("BrowserProxyEnabled"); + mWebProxyAddress = gSavedSettings.getString("BrowserProxyAddress"); + mWebProxyPort = gSavedSettings.getS32("BrowserProxyPort"); + + LLLineEditor* web_proxy_editor = gUICtrlFactory->getLineEditorByName(this, "web_proxy_editor"); + if (web_proxy_editor) + { + web_proxy_editor->setText( gSavedSettings.getString("BrowserProxyAddress") ); + } #if LL_LIBXUL_ENABLED llinfos << "setting cookies enabled to " << mCookiesEnabled << llendl; @@ -99,6 +121,11 @@ void LLPanelWeb::cancel() #endif // LL_LIBXUL_ENABLED gSavedSettings.setBOOL( "CookiesEnabled", mCookiesEnabled ); + gSavedSettings.setBOOL( "BrowserProxyEnabled", mWebProxyEnabled ); + gSavedSettings.setString( "BrowserProxyAddress", mWebProxyAddress ); + gSavedSettings.setS32( "BrowserProxyPort", mWebProxyPort ); + + LLMozLib::getInstance()->enableProxy( mWebProxyEnabled, mWebProxyAddress, mWebProxyPort ); } // static @@ -155,3 +182,43 @@ void LLPanelWeb::onCommitCookies(LLUICtrl* ctrl, void* data) #endif // LL_LIBXUL_ENABLED } +// static +void LLPanelWeb::onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data) +{ + LLPanelWeb* self = (LLPanelWeb*)data; + LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl; + + if (!self || !check) return; + self->childSetEnabled("web_proxy_editor", + check->get()); + self->childSetEnabled("web_proxy_port", + check->get()); + self->childSetEnabled("proxy_text_label", + check->get()); + + LLMozLib::getInstance()->enableProxy( gSavedSettings.getBOOL("BrowserProxyEnabled"), + gSavedSettings.getString("BrowserProxyAddress"), + gSavedSettings.getS32("BrowserProxyPort") ); +} + +void LLPanelWeb::onCommitWebProxyAddress(LLUICtrl *ctrl, void *userdata) +{ + LLLineEditor* web_proxy = (LLLineEditor*)ctrl; + + if (web_proxy) + { + gSavedSettings.setString("BrowserProxyAddress", web_proxy->getText()); + } + + LLMozLib::getInstance()->enableProxy( gSavedSettings.getBOOL("BrowserProxyEnabled"), + gSavedSettings.getString("BrowserProxyAddress"), + gSavedSettings.getS32("BrowserProxyPort") ); +} + +void LLPanelWeb::onCommitWebProxyPort(LLUICtrl *ctrl, void *userdata) +{ + LLMozLib::getInstance()->enableProxy( gSavedSettings.getBOOL("BrowserProxyEnabled"), + gSavedSettings.getString("BrowserProxyAddress"), + gSavedSettings.getS32("BrowserProxyPort") ); + +} diff --git a/linden/indra/newview/llpanelweb.h b/linden/indra/newview/llpanelweb.h index 3d80aae..0cdc7d4 100644 --- a/linden/indra/newview/llpanelweb.h +++ b/linden/indra/newview/llpanelweb.h @@ -55,9 +55,15 @@ private: static void callback_clear_browser_cache(S32 option, void* userdata); static void callback_clear_cookies(S32 option, void* userdata); static void onCommitCookies(LLUICtrl* ctrl, void* data); + static void onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data); + static void onCommitWebProxyAddress(LLUICtrl *ctrl, void *userdata); + static void onCommitWebProxyPort(LLUICtrl *ctrl, void *userdata); private: BOOL mCookiesEnabled; + BOOL mWebProxyEnabled; + LLString mWebProxyAddress; + S32 mWebProxyPort; }; #endif diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 6c37341..6cb6c55 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp @@ -48,6 +48,7 @@ #include "audiosettings.h" #include "llares.h" #include "llcachename.h" +#include "llcameraview.h" #include "llviewercontrol.h" #include "lldir.h" #include "lleconomy.h" @@ -61,6 +62,7 @@ #include "llmd5.h" #include "llmemorystream.h" #include "llmessageconfig.h" +#include "llmoveview.h" #include "llregionhandle.h" #include "llsd.h" #include "llsdserialize.h" @@ -593,6 +595,7 @@ BOOL idle_startup() codec << " - " << LL_VERSION_MAJOR << "." << LL_VERSION_MINOR << "." << LL_VERSION_PATCH << "." << LL_VERSION_BUILD; codec << "]"; LLMozLib::getInstance()->setBrowserAgentId( codec.str() ); + LLMozLib::getInstance()->enableProxy( gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort") ); #endif //------------------------------------------------- @@ -1556,6 +1559,15 @@ BOOL idle_startup() gFloaterMap->setVisible( gSavedSettings.getBOOL("ShowMiniMap") ); + if (gSavedSettings.getBOOL("ShowCameraControls")) + { + LLFloaterCamera::show(NULL); + } + if (gSavedSettings.getBOOL("ShowMovementControls")) + { + LLFloaterMove::show(NULL); + } + if (!gNoRender) { // Move the progress view in front of the UI @@ -1737,10 +1749,33 @@ BOOL idle_startup() } else { - llinfos << ".. initialized successfully." << llendl; - set_startup_status(0.57f, "QuickTime initialized successfully.", gAgent.mMOTD.c_str()); + //llinfos << "######### QuickTime version (hex) is " << std::hex << LLMediaEngine::getInstance()->getQuickTimeVersion() << llendl; + //llinfos << "######### QuickTime version is " << std::dec << LLMediaEngine::getInstance()->getQuickTimeVersion() << llendl; + if ( LLMediaEngine::getInstance()->getQuickTimeVersion() < LL_MIN_QUICKTIME_VERSION ) + { + // turn off QuickTime if version is less than required + LLMediaEngine::getInstance ()->setAvailable ( FALSE ); + + // display a message here explaining why we disabled QuickTime + gViewerWindow->alertXml("QuickTimeOutOfDate"); + } + else + { + llinfos << ".. initialized successfully." << llendl; + set_startup_status(0.57f, "QuickTime initialized successfully.", gAgent.mMOTD.c_str()); + }; }; + #elif LL_DARWIN + if ( LLMediaEngine::getInstance()->getQuickTimeVersion() < LL_MIN_QUICKTIME_VERSION ) + { + // turn off QuickTime if version is less than required + LLMediaEngine::getInstance ()->setAvailable ( FALSE ); + + // display a message here explaining why we disabled QuickTime + gViewerWindow->alertXml("QuickTimeOutOfDate"); + } #endif + EnterMovies (); gQuickTimeInitialized = true; } diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp index 706587a..c17f000 100644 --- a/linden/indra/newview/lltexturectrl.cpp +++ b/linden/indra/newview/lltexturectrl.cpp @@ -351,12 +351,6 @@ void LLFloaterTexturePicker::updateImageStats() { mResolutionLabel->setTextArg("[DIMENSIONS]", LLString("[? x ?]")); } - if (gAgent.isGodlike()) - { - LLString tstring = "Pick: "; - tstring.append(mTexturep->getID().asString()); - setTitle(tstring); - } } } diff --git a/linden/indra/newview/llvieweraudio.cpp b/linden/indra/newview/llvieweraudio.cpp index fc11915..5a60c98 100644 --- a/linden/indra/newview/llvieweraudio.cpp +++ b/linden/indra/newview/llvieweraudio.cpp @@ -21,15 +21,16 @@ #include "llviewerprecompiledheaders.h" -#include "llvieweraudio.h" #include "audioengine.h" -#include "llviewercontrol.h" -#include "llmediaengine.h" +#include "audiosettings.h" #include "llagent.h" #include "llappviewer.h" -#include "llvoiceclient.h" -#include "llviewerwindow.h" +#include "llmediaengine.h" +#include "llvieweraudio.h" #include "llviewercamera.h" +#include "llviewercontrol.h" +#include "llviewerwindow.h" +#include "llvoiceclient.h" ///////////////////////////////////////////////////////// @@ -219,7 +220,8 @@ void audio_update_wind(bool force_update) // don't use the setter setMaxWindGain() because we don't // want to screw up the fade-in on startup by setting actual source gain // outside the fade-in. - gAudiop->mMaxWindGain = gSavedSettings.getF32("AudioLevelAmbient"); + F32 ambient_volume = gSavedSettings.getF32("AudioLevelAmbient"); + gAudiop->mMaxWindGain = ambient_volume * ambient_volume; last_camera_water_height = camera_water_height; gAudiop->updateWind(gRelativeWindVec, camera_water_height); diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 22985b0..9f20e8e 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -679,7 +679,7 @@ void init_menus() gPopupMenuView->setBackgroundColor( color ); // If we are not in production, use a different color to make it apparent. - if (gInProductionGrid) + if (LLAppViewer::instance()->isInProductionGrid()) { color = gColors.getColor( "MenuBarBgColor" ); } @@ -696,6 +696,9 @@ void init_menus() // menu holder appears on top of menu bar so you can see the menu title // flash when an item is triggered (the flash occurs in the holder) gViewerWindow->getRootView()->addChild(gMenuHolder); + + gViewerWindow->setMenuBackgroundColor(false, + LLAppViewer::instance()->isInProductionGrid()); // *TODO:Get the cost info from the server const LLString upload_cost("10"); @@ -946,7 +949,7 @@ void init_client_menu(LLMenuGL* menu) #ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid) + if (!LLAppViewer::instance()->isInProductionGrid()) { menu->append(new LLMenuItemCheckGL("Hacked Godmode", &handle_toggle_hacked_godmode, @@ -1072,7 +1075,7 @@ void init_client_menu(LLMenuGL* menu) &menu_check_control, (void*)"ShowConsoleWindow")); - if(gQAMode)// && !gInProductionGrid) + if(gQAMode) { LLMenuGL* sub = NULL; sub = new LLMenuGL("Debugging"); @@ -2639,53 +2642,40 @@ void handle_leave_god_mode(void*) void set_god_level(U8 god_level) { - U8 old_god_level = gAgent.getGodLevel(); - gAgent.setGodLevel( god_level ); - show_debug_menus(); - gIMMgr->refresh(); - gParcelMgr->notifyObservers(); + U8 old_god_level = gAgent.getGodLevel(); + gAgent.setGodLevel( god_level ); + show_debug_menus(); + gIMMgr->refresh(); + gParcelMgr->notifyObservers(); - // Some classifieds change visibility on god mode - LLFloaterDirectory::requestClassifieds(); + // Some classifieds change visibility on god mode + LLFloaterDirectory::requestClassifieds(); - // God mode changes sim visibility - gWorldMap->reset(); - gWorldMap->setCurrentLayer(0); + // God mode changes sim visibility + gWorldMap->reset(); + gWorldMap->setCurrentLayer(0); - // inventory in items may change in god mode - gObjectList.dirtyAllObjectInventory(); + // inventory in items may change in god mode + gObjectList.dirtyAllObjectInventory(); + + if(gViewerWindow) + { + gViewerWindow->setMenuBackgroundColor(god_level > GOD_NOT, + LLAppViewer::instance()->isInProductionGrid()); + } + + LLString::format_map_t args; + if(god_level > GOD_NOT) + { + args["[LEVEL]"] = llformat("%d",(S32)god_level); + LLNotifyBox::showXml("EnteringGodMode", args); + } + else + { + args["[LEVEL]"] = llformat("%d",(S32)old_god_level); + LLNotifyBox::showXml("LeavingGodMode", args); + } - LLString::format_map_t args; - if(god_level > GOD_NOT) - { - args["[LEVEL]"] = llformat("%d",(S32)god_level); - if (gInProductionGrid) - { - gMenuBarView->setBackgroundColor( gColors.getColor( "MenuBarGodBgColor" ) ); - gStatusBar->setBackgroundColor( gColors.getColor( "MenuBarGodBgColor" ) ); - } - else - { - gMenuBarView->setBackgroundColor( gColors.getColor( "MenuNonProductionGodBgColor" ) ); - gStatusBar->setBackgroundColor( gColors.getColor( "MenuNonProductionGodBgColor" ) ); - } - LLNotifyBox::showXml("EnteringGodMode", args); - } - else - { - args["[LEVEL]"] = llformat("%d",(S32)old_god_level); - if (gInProductionGrid) - { - gMenuBarView->setBackgroundColor( gColors.getColor( "MenuBarBgColor" ) ); - gStatusBar->setBackgroundColor( gColors.getColor( "MenuBarBgColor" ) ); - } - else - { - gMenuBarView->setBackgroundColor( gColors.getColor( "MenuNonProductionBgColor" ) ); - gStatusBar->setBackgroundColor( gColors.getColor( "MenuNonProductionBgColor" ) ); - } - LLNotifyBox::showXml("LeavingGodMode", args); - } } #ifdef TOGGLE_HACKED_GODLIKE_VIEWER @@ -3992,7 +3982,8 @@ BOOL enable_take() return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && gAgent.isGodlike()) + if (!LLAppViewer::instance()->isInProductionGrid() + && gAgent.isGodlike()) { return TRUE; } @@ -4551,7 +4542,8 @@ class LLObjectEnableDelete : public view_listener_t TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - (!gInProductionGrid && gAgent.isGodlike()) || + (!LLAppViewer::instance()->isInProductionGrid() + && gAgent.isGodlike()) || # endif (gSelectMgr && gSelectMgr->canDoDelete()); #endif @@ -6251,13 +6243,7 @@ void handle_selected_texture_info(void*) S32 height = img->getHeight(); S32 width = img->getWidth(); S32 components = img->getComponents(); - std::string image_id_string; - if (gAgent.isGodlike()) - { - image_id_string = image_id.asString() + " "; - } - msg = llformat("%s%dx%d %s on face ", - image_id_string.c_str(), + msg = llformat("%dx%d %s on face ", width, height, (components == 4 ? "alpha" : "opaque")); @@ -6441,7 +6427,8 @@ class LLToolsEnableTakeCopy : public view_listener_t all_valid = true; #ifndef HACKED_GODLIKE_VIEWER # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (gInProductionGrid || !gAgent.isGodlike()) + if (LLAppViewer::instance()->isInProductionGrid() + || !gAgent.isGodlike()) # endif { struct f : public LLSelectedObjectFunctor @@ -6546,7 +6533,8 @@ BOOL enable_save_into_inventory(void*) return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && gAgent.isGodlike()) + if (!LLAppViewer::instance()->isInProductionGrid() + && gAgent.isGodlike()) { return TRUE; } diff --git a/linden/indra/newview/llviewernetwork.cpp b/linden/indra/newview/llviewernetwork.cpp index caa61d6..ad0dacb 100644 --- a/linden/indra/newview/llviewernetwork.cpp +++ b/linden/indra/newview/llviewernetwork.cpp @@ -77,6 +77,34 @@ LLGridData gGridInfo[GRID_INFO_COUNT] = "util.uma.lindenlab.com", "https://login.uma.lindenlab.com/cgi-bin/login.cgi", "http://uma-secondlife.webdev.lindenlab.com/helpers/" }, + { "Mohini", + "util.mohini.lindenlab.com", + "https://login.mohini.lindenlab.com/cgi-bin/login.cgi", + "http://mohini-secondlife.webdev.lindenlab.com/helpers/" }, + { "Yami", + "util.yami.lindenlab.com", + "https://login.yami.lindenlab.com/cgi-bin/login.cgi", + "http://yami-secondlife.webdev.lindenlab.com/helpers/" }, + { "Nandi", + "util.nandi.lindenlab.com", + "https://login.nandi.lindenlab.com/cgi-bin/login.cgi", + "http://nandi-secondlife.webdev.lindenlab.com/helpers/" }, + { "Mitra", + "util.mitra.lindenlab.com", + "https://login.mitra.lindenlab.com/cgi-bin/login.cgi", + "http://mitra-secondlife.webdev.lindenlab.com/helpers/" }, + { "Radha", + "util.radha.lindenlab.com", + "https://login.radha.lindenlab.com/cgi-bin/login.cgi", + "http://radha-secondlife.webdev.lindenlab.com/helpers/" }, + { "Ravi", + "util.ravi.lindenlab.com", + "https://login.ravi.lindenlab.com/cgi-bin/login.cgi", + "http://ravi-secondlife.webdev.lindenlab.com/helpers/" }, + { "Aruna", + "util.aruna.lindenlab.com", + "https://login.aruna.lindenlab.com/cgi-bin/login.cgi", + "http://aruna-secondlife.webdev.lindenlab.com/helpers/" }, { "Local", "localhost", "https://login.dmz.lindenlab.com/cgi-bin/login.cgi", diff --git a/linden/indra/newview/llviewernetwork.h b/linden/indra/newview/llviewernetwork.h index 118897a..dbeaf2c 100644 --- a/linden/indra/newview/llviewernetwork.h +++ b/linden/indra/newview/llviewernetwork.h @@ -48,6 +48,13 @@ enum EGridInfo GRID_INFO_GANGA, GRID_INFO_VAAK, GRID_INFO_UMA, + GRID_INFO_MOHINI, + GRID_INFO_YAMI, + GRID_INFO_NANDI, + GRID_INFO_MITRA, + GRID_INFO_RADHA, + GRID_INFO_RAVI, + GRID_INFO_ARUNA, GRID_INFO_LOCAL, GRID_INFO_OTHER, // IP address set via -user or other command line option GRID_INFO_COUNT diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index 4c6f279..047d36b 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp @@ -4511,7 +4511,8 @@ BOOL LLViewerObject::permYouOwner() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -4547,7 +4548,8 @@ BOOL LLViewerObject::permOwnerModify() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -4570,7 +4572,8 @@ BOOL LLViewerObject::permModify() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -4593,7 +4596,8 @@ BOOL LLViewerObject::permCopy() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -4616,7 +4620,8 @@ BOOL LLViewerObject::permMove() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -4639,7 +4644,8 @@ BOOL LLViewerObject::permTransfer() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!gInProductionGrid && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (!LLAppViewer::instance()->isInProductionGrid() + && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index d8f182c..762e21a 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp @@ -1908,16 +1908,6 @@ void LLViewerWindow::initWorldUI() // keep onscreen gFloaterView->adjustToFitScreen(gFloaterMap, FALSE); - - if (gSavedSettings.getBOOL("ShowCameraControls")) - { - LLFloaterCamera::show(NULL); - } - - if (gSavedSettings.getBOOL("ShowMovementControls")) - { - LLFloaterMove::show(NULL); - } gIMMgr = LLIMMgr::getInstance(); @@ -2214,6 +2204,10 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible ) { gMenuBarView->setVisible( visible ); gMenuBarView->setEnabled( visible ); + + // ...and set the menu color appropriately. + setMenuBackgroundColor(gAgent.getGodLevel() > GOD_NOT, + LLAppViewer::instance()->isInProductionGrid()); } if ( gStatusBar ) @@ -2223,8 +2217,38 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible ) } } - - +void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) +{ + LLString::format_map_t args; + LLColor4 new_bg_color; + + if(god_mode && LLAppViewer::instance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuBarGodBgColor" ); + } + else if(god_mode && !LLAppViewer::instance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" ); + } + else if(!god_mode && !LLAppViewer::instance()->isInProductionGrid()) + { + new_bg_color = gColors.getColor( "MenuNonProductionBgColor" ); + } + else + { + new_bg_color = gColors.getColor( "MenuBarBgColor" ); + } + + if(gMenuBarView) + { + gMenuBarView->setBackgroundColor( new_bg_color ); + } + + if(gStatusBar) + { + gStatusBar->setBackgroundColor( new_bg_color ); + } +} void LLViewerWindow::drawDebugText() { diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h index faab518..968e483 100644 --- a/linden/indra/newview/llviewerwindow.h +++ b/linden/indra/newview/llviewerwindow.h @@ -181,6 +181,7 @@ public: // Hide normal UI when a logon fails, re-show everything when logon is attempted again void setNormalControlsVisible( BOOL visible ); + void setMenuBackgroundColor(bool god_mode = false, bool dev_grid = false); // Handle the application becoming active (frontmost) or inactive //BOOL handleActivate(BOOL activate); diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 7a225c8..84f82dc 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp @@ -3412,7 +3412,8 @@ void LLVOAvatar::updateCharacter(LLAgent &agent) // AUDIO_STEP_LO_SPEED, AUDIO_STEP_HI_SPEED, // AUDIO_STEP_LO_GAIN, AUDIO_STEP_HI_GAIN ); - F32 gain = .30f * gSavedSettings.getF32("AudioLevelAmbient"); + F32 ambient_volume = gSavedSettings.getF32("AudioLevelAmbient"); + F32 gain = .50f * ambient_volume * ambient_volume; LLUUID& step_sound_id = getStepSound(); LLVector3d foot_pos_global = gAgent.getPosGlobalFromAgent(foot_pos_agent); diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index 6867cac..70037d3 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp @@ -723,6 +723,7 @@ void LLVOVolume::sculpt() S32 current_discard = getVolume()->getSculptLevel(); + llassert_always(current_discard >= -2 && current_discard <= max_discard); if (current_discard == discard_level) // no work to do here return; @@ -756,7 +757,7 @@ BOOL LLVOVolume::calcLOD() S32 cur_detail = 0; - F32 radius = mVolumep->mLODScaleBias.scaledVec(getScale()).magVec(); + F32 radius = getVolume()->mLODScaleBias.scaledVec(getScale()).magVec(); F32 distance = mDrawable->mDistanceWRTCamera; distance *= sDistanceFactor; diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp index e819f21..21270ed 100644 --- a/linden/indra/newview/llwebbrowserctrl.cpp +++ b/linden/indra/newview/llwebbrowserctrl.cpp @@ -43,6 +43,7 @@ #include "llfloaterhtml.h" #include "llweb.h" #include "llurlsimstring.h" +#include "llviewercontrol.h" // linden library includes #include "llfocusmgr.h" @@ -219,9 +220,8 @@ BOOL LLWebBrowserCtrl::handleMouseDown( S32 x, S32 y, MASK mask ) // BOOL LLWebBrowserCtrl::handleDoubleClick( S32 x, S32 y, MASK mask ) { - llinfos << "JAMESDEBUG handleDoubleClick web ctrl" << llendl; convertInputCoords(x, y); - //LLMozLib::getInstance()->mouseLeftDoubleClick( mEmbeddedBrowserWindowId, x, y ); + LLMozLib::getInstance()->mouseLeftDoubleClick( mEmbeddedBrowserWindowId, x, y ); gViewerWindow->setMouseCapture( this ); @@ -419,6 +419,44 @@ void LLWebBrowserCtrl::navigateTo( std::string urlIn ) } } + +void LLWebBrowserCtrl::navigateToLocalPage( const std::string& subdir, const std::string& filename_in ) +{ + std::string language = gSavedSettings.getString("Language"); + + if(language == "default") + { + language = gSavedSettings.getString("SystemLanguage"); + } + + std::string delim = gDirUtilp->getDirDelimiter(); + std::string filename; + + filename += subdir; + filename += delim; + filename += filename_in; + + std::string expanded_filename = gDirUtilp->getExpandedFilename(LL_PATH_HTML, language, filename); + + if (gDirUtilp->fileExists(expanded_filename)) + { + navigateTo(expanded_filename); + return; + } + if (language != "en-us") + { + expanded_filename = gDirUtilp->getExpandedFilename(LL_PATH_HTML, "en-us", filename); + if (gDirUtilp->fileExists(expanded_filename)) + { + navigateTo(expanded_filename); + return; + } + } + + llwarns << "File " << subdir << delim << filename_in << "not found" << llendl; +} + + //////////////////////////////////////////////////////////////////////////////// // void LLWebBrowserCtrl::navigateHome() diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h index dedb8cf..98a3926 100644 --- a/linden/indra/newview/llwebbrowserctrl.h +++ b/linden/indra/newview/llwebbrowserctrl.h @@ -188,7 +188,8 @@ class LLWebBrowserCtrl : void navigateTo( std::string urlIn ); void navigateBack(); void navigateHome(); - void navigateForward(); + void navigateForward(); + void navigateToLocalPage( const std::string& subdir, const std::string& filename_in ); bool canNavigateBack(); bool canNavigateForward(); void setOpenInExternalBrowser( bool valIn ); diff --git a/linden/indra/newview/llwindebug.cpp b/linden/indra/newview/llwindebug.cpp index d0129c8..949ea71 100644 --- a/linden/indra/newview/llwindebug.cpp +++ b/linden/indra/newview/llwindebug.cpp @@ -92,8 +92,6 @@ LLSD Block for Windows Dump Information */ -// From viewer.h -extern BOOL gInProductionGrid; extern void (*gCrashCallback)(void); @@ -259,7 +257,7 @@ LLSD WINAPI Get_Exception_Info(PEXCEPTION_POINTERS pException) LLSD info; LPWSTR Str; int Str_Len; - int i; +// int i; LPWSTR Module_Name = new WCHAR[MAX_PATH]; PBYTE Module_Addr; HANDLE hFile; @@ -322,11 +320,12 @@ LLSD WINAPI Get_Exception_Info(PEXCEPTION_POINTERS pException) // Save instruction that caused exception. + /* LLString str; for (i = 0; i < 16; i++) str += llformat(" %02X", PBYTE(E.ExceptionAddress)[i]); info["Instruction"] = str; - + */ LLSD registers; registers["EAX"] = (int)C.Eax; registers["EBX"] = (int)C.Ebx; diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj index 3e03152..598abb5 100644 --- a/linden/indra/newview/macview.xcodeproj/project.pbxproj +++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj @@ -5293,7 +5293,6 @@ "-DLL_DARWIN=1", "-DLL_RELEASE=1", "-DLL_RELEASE_FOR_DOWNLOAD=1", - "-DLL_SEND_CRASH_REPORTS=1", "-DNDEBUG", "-fconstant-cfstrings", ); @@ -5574,7 +5573,6 @@ "-DLL_DARWIN=1", "-DLL_RELEASE=1", "-DLL_RELEASE_FOR_DOWNLOAD=1", - "-DLL_SEND_CRASH_REPORTS=1", "-DNDEBUG", "-fconstant-cfstrings", ); diff --git a/linden/indra/newview/newview.vcproj b/linden/indra/newview/newview.vcproj index a2cb32d..6c0b9e4 100644 --- a/linden/indra/newview/newview.vcproj +++ b/linden/indra/newview/newview.vcproj @@ -152,7 +152,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/Oy-" AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include;..\..\libraries\include\zlib;"..\..\libraries\i686-win32\include\quicktime";..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;LL_SEND_CRASH_REPORTS=1;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" RuntimeLibrary="0" StructMemberAlignment="0" UsePrecompiledHeader="3" diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt index a217a6b..d2442e6 100644 --- a/linden/indra/newview/releasenotes.txt +++ b/linden/indra/newview/releasenotes.txt @@ -1,3 +1,31 @@ +Release Notes for Second Life 1.18.6(2) December 20, 2007 +===================================== +New features: +* VWR-1115: Added preference settings for web browser proxy +* VWR-3741: Added -loginpage option to client to specify the login page + +Changes: +* Reverted bad fix for: +** Connect button does not have focus in HTML login screen + +Fixes: +* VWR-3815: Double-click on login name/password doesn't select name/password +* VWR-3814: Fix tracking of click-throughs for Classifieds +* Menubar doesn't turn red when connecting to a beta grid +* VWR-3703: No wind sound +* VWR-3659: Log in screen in 1.18.6 RC(0) displays UI elements that should be viewable only after login +* SVC-1032: Age Verification status shows in profile +* XML resizing files to accommodate translated strings +* New translated strings for the UI +* Disable QuickTime when the installed version is less than version with RTSP exploit +* VWR-1919: Remove texture UUID information from UI unless full-perm +* Fixed crash in Crash Logger + +Source changes: +* Add support for setting proxy innformation to LLMozLib +* Add support for changing caret color in embedded browser + + Release Notes for Second Life 1.18.6(1) December 12, 2007 ===================================== Changes: diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc index f1836d6..e3cbe76 100644 --- a/linden/indra/newview/res/newViewRes.rc +++ b/linden/indra/newview/res/newViewRes.rc @@ -228,8 +228,8 @@ TOOLPIPETTE CURSOR "toolpipette.cur" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,18,6,1 - PRODUCTVERSION 1,18,6,1 + FILEVERSION 1,18,6,2 + PRODUCTVERSION 1,18,6,2 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -246,12 +246,12 @@ BEGIN BEGIN VALUE "CompanyName", "Linden Lab" VALUE "FileDescription", "Second Life" - VALUE "FileVersion", "1.18.6.1" + VALUE "FileVersion", "1.18.6.2" VALUE "InternalName", "Second Life" VALUE "LegalCopyright", "Copyright ฉ 2001-2007, Linden Research, Inc." VALUE "OriginalFilename", "SecondLife.exe" VALUE "ProductName", "Second Life" - VALUE "ProductVersion", "1.18.6.1" + VALUE "ProductVersion", "1.18.6.2" END END BLOCK "VarFileInfo" diff --git a/linden/indra/newview/skins/xui/de/alerts.xml b/linden/indra/newview/skins/xui/de/alerts.xml index 2e23ade..b98dd58 100644 --- a/linden/indra/newview/skins/xui/de/alerts.xml +++ b/linden/indra/newview/skins/xui/de/alerts.xml @@ -54,6 +54,7 @@ Verbindung mit [SECOND_LIFE] nicht mรถglich. Mรถglicherweise handelt es sich um einen Systemausfall. + Bitte versuchen Sie es in einigen Minuten erneut oder klicken Sie fรผr Unterstรผtzung und einen Link auf die Systemstatus-Webseite auf 'Hilfe'. @@ -118,7 +119,6 @@ Geben Sie eine kurze Beschreibung der Gruppenziele sein. Ein Foto Ihres Avatars wurde gespeichert. - Sie finden es in der Webpage Studio-Ausstellung. @@ -204,7 +204,6 @@ Mรถchten Sie [FIRST_NAME] [LAST_NAME] ร„nderungsrechte gewรคhren? Das Erstellen einer Gruppe kostet [COST] L$. - Damit die Gruppe lรคnger als drei Tage bestehen bleibt, muss sie aus mindestens zwei Mitgliedern bestehen. @@ -680,7 +679,6 @@ Der Outfit-Ordner enthรคlt keine Kleidung, Kรถrperteile oder Anhรคnge. Sie benรถtigen ein Konto, um sich in [SECOND_LIFE] anmelden zu kรถnnen. - Mรถchten Sie auf www.secondlife.com ein Konto anlegen? - Anzeigen erscheinen eine Woche lang auf der Registerkarte 'Anzeigen' + Anzeigen erscheinen fรผr eine Woche auf der Registerkarte 'Anzeigen' im Suchverzeichnis. - Fรผllen Sie Ihre Anzeige aus und klicken Sie auf 'Verรถffentlichen...', um sie zum Verzeichnis hinzuzufรผgen. - Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf 'Verรถffentlichen' klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste. @@ -751,11 +747,11 @@ Gebรผhren werden nicht rรผckerstattet. - Einige ร„nderungen an der Anzeige erfordern einen -sofortigen Neustart von [SECOND_LIFE], wodurch + Einige ร„nderungen der Bildschirmeinstellungen erfordern einen +sofortigen Neustart von [SECOND_LIFE], wodurch alle laufenden Arbeiten verloren gehen. - -รœbernehmen Sie die ร„nderungen und beenden Sie das Programm + +Die ร„nderungen รผbernehmen und das Programm beenden? @@ -1016,6 +1011,7 @@ Verbindung mit [SERVER] nicht mรถglich Verbindung mit [SECOND_LIFE] nicht mรถglich. DNS konnte den Hostnamen nicht auflรถsen. + Prรผfen Sie, ob Sie die Website www.secondlife.com รถffnen kรถnnen. Bitte melden Sie das Problem auf www.secondlife.com/support, falls der Fehler wiederholt auftritt. @@ -1025,8 +1021,8 @@ falls der Fehler wiederholt auftritt. Es konnte keine sichere Verbindung zum Anmeldeserver hergestellt werden. Die Ursache hierfรผr ist oft eine falsch eingestellte Uhrzeit auf Ihrem Computer. + Bitte vergewissern Sie sich, dass Datum und Uhrzeit korrekt eingestellt sind. - Bitte melden Sie das Problem unter www.secondlife.com/support, sollte der Fehler wiederholt auftreten. @@ -1036,15 +1032,17 @@ sollte der Fehler wiederholt auftreten. Verbindung mit [SECOND_LIFE] nicht mรถglich. Der Anmeldeserver konnte sich nicht per SSL verifizieren. + Bitte melden Sie das Problem unter www.secondlife.com/support, -sollte der Fehler hรคufiger auftreten. +sollte der Fehler wiederholt auftreten. Verbindung mit [SECOND_LIFE] nicht mรถglich. Trotz all unserer Bemรผhungen ist ein unerwarteter Fehler aufgetreten. + Bitte melden Sie das Problem auf www.secondlife.com/support und fรผgen Sie dem Bericht die Datei SecondLife.log an, die Sie hier finden: C:\Dokumente und Einstellungen\(Name)\Anwendungsdaten\SecondLife\logs @@ -1055,8 +1053,9 @@ Vielen Dank. Verbindung mit [SECOND_LIFE] nicht mรถglich. Trotz all unserer Bemรผhungen ist ein unerwarteter Fehler aufgetreten. + Bitte melden Sie das Problem auf -www.secondlife.com/support und fรผgen Sie dem Bericht die Datei SecondLife.log +www.secondlife.com/support und fรผgen Sie dem Bericht die Datei SecondLife.log an, die Sie hier finden: ~/Library/Application Support/SecondLife/logs Vielen Dank. @@ -1064,15 +1063,16 @@ Vielen Dank. Bei der Prรผfung Ihres Authentifizierungs- -Token ist ein Problem aufgetreten. Bitte melden Sie sich -erneut an. Wenden Sie sich an www.secondlife.com/support, +Token ist ein Problem aufgetreten. Bitte melden Sie sich erneut an. + +Wenden Sie sich an www.secondlife.com/support, sollte dieser Fehler wiederholt auftreten. Unbekanntes Verbindungsproblem. - + Bitte versuchen Sie es in einigen Minuten erneut oder klicken Sie fรผr Unterstรผtzung und einen Link auf die Systemstatus-Webseite auf 'Hilfe'. @@ -1105,10 +1105,9 @@ fรผr Unterstรผtzung und einen Link zur Systemstatus-Webseite auf 'Hilfe&apo Die Installation von [SECOND_LIFE] ist abgeschlossen. - + Wenn Sie [SECOND_LIFE] das erste Mal verwenden, mรผssen Sie ein Konto anlegen, bevor Sie sich anmelden kรถnnen. - Mรถchten Sie auf www.secondlife.com ein Konto erstellen? @@ -1150,9 +1150,8 @@ fรผr Unterstรผtzung und einen Link auf die Systemstatus-Webseite auf 'Hilfe Willkommen bei [SECOND_LIFE]! - + Benutzen Sie die Pfeiltasten, um sich fortzubewegen. - Bitte wรคhlen Sie einen mรคnnlichen oder weiblichen Avatar. Sie kรถnnen sich spรคter noch umentscheiden. @@ -1165,10 +1164,9 @@ Sie kรถnnen sich spรคter noch umentscheiden. - Willkommen bei [SECOND_LIFE]! - + Willkommen bei [SECOND_LIFE]! + Benutzen Sie die Pfeiltasten, um sich fortzubewegen. - Bitte wรคhlen Sie einen mรคnnlichen oder weiblichen Avatar. @@ -1862,6 +1875,7 @@ Versuchen Sie es in einigen Sekunden erneut. Land kann nicht aufgegeben werden: Die ausgewรคhlten Parzellen gehรถren Ihnen nicht. + Wรคhlen Sie eine einzelne Parzelle. @@ -1876,6 +1890,7 @@ Parzellen, die Ihnen gehรถren, werden grรผn dargestellt. Land kann nicht aufgegeben werden: Kann die Region nicht finden, in der sich dieses Land befindet. + Bitte melden Sie dies รผber 'Hilfe' -> 'Fehler melden'. @@ -1889,6 +1904,7 @@ Die Region [REGION] erlaubt keine Landรผbertragung. Land kann nicht aufgegeben werden: Zum Freigeben mรผssen Sie eine ganze Parzelle auswรคhlen. + Wรคhlen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle. @@ -1897,7 +1913,7 @@ Wรคhlen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle. Sie sind im Begriff, [AREA] qm Land aufzugeben. Wenn Sie diese Parzelle aufgeben, wird sie ohne L$-Erstattung von Ihrem Landbesitz entfernt. - + Dieses Land aufgeben?