From 434407efc4e4a862cf7b755cd06f2ef6e78d2b8e Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 10 Nov 2009 23:56:30 +0000
Subject: [PATCH] DEV-40001: Add support for a pre-login help topic.

Asking for help (e.g., pressing F1) before logging in will now display
a specific pre-login help topic, "pre_login_help". This behavior was
agreed upon with Rand to allow us to display a custom page to help the
user log on successfully.
---
 indra/llui/llhelp.h            |  2 ++
 indra/newview/llviewerhelp.cpp | 23 +++++++++++++++++++----
 indra/newview/llviewerhelp.h   |  3 +++
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h
index c06d29a4bd4..82c3bc385f3 100644
--- a/indra/llui/llhelp.h
+++ b/indra/llui/llhelp.h
@@ -40,6 +40,8 @@ class LLHelp
 	virtual void showTopic(const std::string &topic) = 0;
 	// return default (fallback) topic name suitable for showTopic()
 	virtual std::string defaultTopic() = 0;
+	// return topic to use before the user logs in
+	virtual std::string preLoginTopic() = 0;
 };
 
 #endif // headerguard
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 0e0727e3825..056260791c4 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -39,6 +39,7 @@
 #include "llviewercontrol.h"
 #include "llversionviewer.h"
 #include "llappviewer.h"
+#include "lllogininstance.h"
 
 #include "llviewerhelputil.h"
 #include "llviewerhelp.h"
@@ -51,17 +52,25 @@ void LLViewerHelp::showTopic(const std::string &topic)
 {
 	showHelp();
 	
+	// allow overriding the help server with a local help file
 	if( gSavedSettings.getBOOL("HelpUseLocal") )
 	{
 		LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
 		helpbrowser->navigateToLocalPage( "help-offline" , "index.html" );
+		return;
 	}
-	else 
+
+	// use a special login topic before the user logs in
+	std::string help_topic = topic;
+	if (! LLLoginInstance::getInstance()->authSuccess())
 	{
-		const LLOSInfo& osinfo = LLAppViewer::instance()->getOSInfo();
-		std::string helpURL = LLViewerHelpUtil::buildHelpURL( topic, gSavedSettings, osinfo );
-		setRawURL( helpURL );
+		help_topic = preLoginTopic();
 	}
+
+	// work out the URL for this topic and display it 
+	const LLOSInfo& osinfo = LLAppViewer::instance()->getOSInfo();
+	std::string helpURL = LLViewerHelpUtil::buildHelpURL( help_topic, gSavedSettings, osinfo );
+	setRawURL( helpURL );
 }
 
 std::string LLViewerHelp::defaultTopic()
@@ -70,6 +79,12 @@ std::string LLViewerHelp::defaultTopic()
 	return "this_is_fallbacktopic";
 }
 
+std::string LLViewerHelp::preLoginTopic()
+{
+	// *hack: to be done properly
+	return "pre_login_help";
+}
+
 //////////////////////////////
 // our own interfaces
 
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index 17aab6f2397..dcb5ae32c98 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -57,6 +57,9 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
 	// return topic derived from viewer UI focus, else default topic
 	std::string getTopicFromFocus();
 
+	// return topic to use before the user logs in
+	std::string preLoginTopic();
+
  private:
 	static void showHelp(); // make sure help UI is visible & raised
 	static void setRawURL(std::string url); // send URL to help UI
-- 
GitLab