Add intro page after first admin login into Gerrit

Give some initial help and the most noteworthy links to the first-time
admin user after its very first login into Gerrit Code Review UX.

Change-Id: Ia0e755b8b392f1fbad5a3a800c874be27078784c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/manager/FirstWebLoginListener.java b/src/main/java/com/googlesource/gerrit/plugins/manager/FirstWebLoginListener.java
index 85dbdd2..00f2ace 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/manager/FirstWebLoginListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/manager/FirstWebLoginListener.java
@@ -53,7 +53,7 @@
       Path firstLoginFile =
           pluginData.resolve("firstLogin." + user.getAccountId().get());
       if (!firstLoginFile.toFile().exists()) {
-        response.sendRedirect(pluginUrl + "static/index.html");
+        response.sendRedirect(pluginUrl + "static/intro.html");
 
         Files.write(firstLoginFile, new Date().toString().getBytes(),
             StandardOpenOption.CREATE);
diff --git a/src/main/resources/static/css/ie10-viewport-bug-workaround.css b/src/main/resources/static/css/ie10-viewport-bug-workaround.css
new file mode 100644
index 0000000..4b9518e
--- /dev/null
+++ b/src/main/resources/static/css/ie10-viewport-bug-workaround.css
@@ -0,0 +1,13 @@
+/*!
+ * IE10 viewport hack for Surface/desktop Windows 8 bug
+ * Copyright 2014-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*
+ * See the Getting Started docs for more information:
+ * http://getbootstrap.com/getting-started/#support-ie10-width
+ */
+@-ms-viewport     { width: device-width; }
+@-o-viewport      { width: device-width; }
+@viewport         { width: device-width; }
diff --git a/src/main/resources/static/css/jumbotron.css b/src/main/resources/static/css/jumbotron.css
new file mode 100644
index 0000000..179d408
--- /dev/null
+++ b/src/main/resources/static/css/jumbotron.css
@@ -0,0 +1,5 @@
+/* Move down content because we have a fixed navbar that is 50px tall */
+body {
+  padding-top: 50px;
+  padding-bottom: 20px;
+}
diff --git a/src/main/resources/static/intro.html b/src/main/resources/static/intro.html
new file mode 100644
index 0000000..2b1d215
--- /dev/null
+++ b/src/main/resources/static/intro.html
@@ -0,0 +1,146 @@
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+<meta name="description" content="Gerrit Plugin Manager">
+<meta name="author" content="Gerrit Code Review">
+<link rel="icon" href="/favicon.ico">
+
+<title>Gerrit Plugin Manager - Introduction</title>
+
+<!-- Bootstrap core CSS -->
+<link
+  href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"
+  rel="stylesheet"
+  integrity="sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ=="
+  crossorigin="anonymous">
+<link href="css/style.css" rel="stylesheet">
+
+<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
+<link href="css/ie10-viewport-bug-workaround.css" rel="stylesheet">
+
+<!-- Custom styles for this template -->
+<link href="css/jumbotron.css" rel="stylesheet">
+
+<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
+<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
+<script src="js/ie-emulation-modes-warning.js"></script>
+
+<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+<!--[if lt IE 9]>
+      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+    <![endif]-->
+</head>
+
+<body>
+
+  <nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed"
+          data-toggle="collapse" data-target="#navbar"
+          aria-expanded="false" aria-controls="navbar">
+          <span class="sr-only">Toggle navigation</span> <span
+            class="icon-bar"></span> <span class="icon-bar"></span> <span
+            class="icon-bar"></span>
+        </button>
+        <a class="navbar-brand" href="../../../">&raquo; Skip intro</a>
+      </div>
+    </div>
+  </nav>
+
+  <!-- Main jumbotron for a primary marketing message or call to action -->
+  <div class="jumbotron">
+    <div class="container">
+      <h1>Welcome!</h1>
+      <p><b><a href="https://www.gerritcodereview.com" target="_blank">Gerrit Code Review</a></b> provides web-based code review and repository
+        management for the Git version control system.</p>
+      <p>
+        Before starting using it, you may want to consider <strong>installing
+          some extra plugins</strong> to extend its functionality, including <i>replication
+          to remote locations</i>, integration with <i>Atlassian Jira</i>
+        and other issue trackers workflow, <i>OAuth 2.0
+          authentication</i> with external providers such as <i>Google
+          Account</i>, <i>GitHub</i> and <i>GitLab</i> and many others.
+      </p>
+      <p>
+      <p>
+        Once you're done with your plugins selection, click on the
+        top-right <strong>"&gt; Go to Gerrit"</strong> link on the
+        top-right corner to access the Gerrit Code Review main screen.
+      </p>
+      <a class="btn btn-primary btn-lg" href="index.html" role="button">Install
+        plugins &raquo;</a>
+      </p>
+    </div>
+  </div>
+
+  <div class="container">
+    <!-- Example row of columns -->
+    <div class="row">
+      <div class="col-md-4">
+        <h2><span class="glyphicon glyphicon-film" aria-hidden="true"></span>&nbsp;Learn more</h2>
+        <p>Before starting using Gerrit Code Review, you may want to
+          spend a few minutes learning the basic concepts and how its
+          workflow works.</p>
+        <p>Get information from the source, with an introduction
+          video starring Shawn Pearce, the Gerrit Code Review project
+          founder, at the EclipseCon 2013.</p>
+        <p>
+          <a class="btn btn-default"
+            href="https://www.youtube.com/watch?v=Wxx8XndqZ7A&t=15s"
+            target="_blank" role="button">Watch Video &raquo;</a>
+        </p>
+      </div>
+      <div class="col-md-4">
+        <h2><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span>&nbsp;Get involved</h2>
+        <p>Gerrit Code Review is backed by a thriving Community of
+          users and contributors. The main channel to get in touch is
+          through the "repo-discuss" mailing list.</p>
+        <p>Join the discussions and feel free to ask questions.
+          Share your thoughts on how to improve Gerrit workflow and user
+          experience.
+        <p>
+          <a class="btn btn-default"
+            href="https://groups.google.com/forum/#!forum/repo-discuss"
+            target="_blank" role="button">Repo-discuss mailing list
+            &raquo;</a>
+        </p>
+      </div>
+      <div class="col-md-4">
+        <h2><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span>&nbsp;Keep in touch</h2>
+        <p>
+          Get the latest news about Gerrit Code Review releases and
+          events by following the official social network channels of
+          the project, including <a
+            href="https://plus.google.com/communities/111271594706618791655"
+            target="_blank">Google+</a> and <a
+            href="https://twitter.com/gerritreview">Twitter</a>.
+        </p>
+        <p>Follow Gerrit and tweet about your experience to share
+          your thoughts and achievements with your daily code reviews.
+        <p>
+          <a href="https://twitter.com/gerritreview"
+            class="twitter-follow-button" data-show-count="false">Follow
+            @gerritreview</a>
+          <script async src="//platform.twitter.com/widgets.js"
+            charset="utf-8"></script>
+        </p>
+      </div>
+    </div>
+
+    <hr>
+
+    <footer>
+      <p><a href="https://www.gerritcodereview.com" href="_blank">Gerrit Code Review</a> - Copyright &copy; 2017 The Android Open Source Project -
+        Licensed under the Apache License, Version 2.0.</p>
+    </footer>
+  </div>
+  <!-- /container -->
+</body>
+</html>
diff --git a/src/main/resources/static/js/ie-emulation-modes-warning.js b/src/main/resources/static/js/ie-emulation-modes-warning.js
new file mode 100644
index 0000000..3f97ba5
--- /dev/null
+++ b/src/main/resources/static/js/ie-emulation-modes-warning.js
@@ -0,0 +1,51 @@
+// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
+// IT'S JUST JUNK FOR OUR DOCS!
+// ++++++++++++++++++++++++++++++++++++++++++
+/*!
+ * Copyright 2014-2015 Twitter, Inc.
+ *
+ * Licensed under the Creative Commons Attribution 3.0 Unported License. For
+ * details, see https://creativecommons.org/licenses/by/3.0/.
+ */
+// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
+(function () {
+  'use strict';
+
+  function emulatedIEMajorVersion() {
+    var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
+    if (groups === null) {
+      return null
+    }
+    var ieVersionNum = parseInt(groups[1], 10)
+    var ieMajorVersion = Math.floor(ieVersionNum)
+    return ieMajorVersion
+  }
+
+  function actualNonEmulatedIEMajorVersion() {
+    // Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
+    // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx
+    // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx
+    var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line
+    if (jscriptVersion === undefined) {
+      return 11 // IE11+ not in emulation mode
+    }
+    if (jscriptVersion < 9) {
+      return 8 // IE8 (or lower; haven't tested on IE<8)
+    }
+    return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
+  }
+
+  var ua = window.navigator.userAgent
+  if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
+    return // Opera, which might pretend to be IE
+  }
+  var emulated = emulatedIEMajorVersion()
+  if (emulated === null) {
+    return // Not IE
+  }
+  var nonEmulated = actualNonEmulatedIEMajorVersion()
+
+  if (emulated !== nonEmulated) {
+    window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
+  }
+})();