source: trunk/www/main.jsp @ 5911

Last change on this file since 5911 was 5911, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

  • Plugin wizards
  • Dialogs on login page (forgot password, get account, broadcast message)
  • Select color dialog
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 8.5 KB
Line 
1<%-- $Id: main.jsp 5911 2011-12-15 08:17:07Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg
5  Copyright (C) 2007 Nicklas Nordborg
6
7  This file is part of BASE - BioArray Software Environment.
8  Available at http://base.thep.lu.se/
9
10  BASE is free software; you can redistribute it and/or
11  modify it under the terms of the GNU General Public License
12  as published by the Free Software Foundation; either version 3
13  of the License, or (at your option) any later version.
14
15  BASE is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License
21  along with BASE. If not, see <http://www.gnu.org/licenses/>.
22  ------------------------------------------------------------------
23
24  This is the front page of BASE. It displays a login form
25  and some of the relevant news items.
26
27  @param login The value to display in the login input field.
28  @param error An error message that should be displayed
29
30  @author Nicklas
31  @version 2.0
32--%>
33<%@ page pageEncoding="UTF-8" session="false"
34  import="net.sf.basedb.core.Application"
35  import="net.sf.basedb.core.SessionControl"
36  import="net.sf.basedb.core.DbControl"
37  import="net.sf.basedb.core.News"
38  import="net.sf.basedb.core.ItemQuery"
39  import="net.sf.basedb.core.ItemResultList"
40  import="net.sf.basedb.core.query.Orders"
41  import="net.sf.basedb.core.query.Hql"
42  import="net.sf.basedb.clients.web.Base"
43  import="net.sf.basedb.clients.web.util.HTML"
44  import="net.sf.basedb.util.formatter.Formatter"
45  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
46  import="net.sf.basedb.clients.web.servlet.RssNewsFeed"
47  import="net.sf.basedb.util.Values"
48  import="java.util.Date"
49%>
50<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
51<%
52final String login = Values.getString(request.getParameter("login"), "");
53final String error = Values.getString(request.getParameter("error"), null);
54final String root = request.getContextPath()+"/";
55
56final SessionControl sc = Base.getSessionControl(pageContext, true);
57final String ID = sc.getId();
58final Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
59final DbControl dc = sc.newDbControl();
60String broadcastTitle = (String)application.getAttribute("broadcast.title");
61String broadcastMessage = (String)application.getAttribute("broadcast.message");
62boolean denyLogin = Boolean.TRUE.equals(application.getAttribute("broadcast.deny-login"));
63ItemResultList<News> news = null;
64try
65{
66  %>
67  <base:page type="default" title="">
68  <base:head styles="login.css">
69    <script language="JavaScript" type="text/javascript">
70    // Set foucs on the login form
71    function init()
72    {
73      setFocus();
74      top.frames['footnote'].location.reload();
75    }
76   
77    // Set the focus on either the login or password field.
78    function setFocus()
79    {
80      frm = document.forms['login'];
81      if (frm.login.value == '' && window.parent.lastLogin) frm.login.value = window.parent.lastLogin;
82      if (frm.login.value == '')
83      {
84        frm.login.focus();
85      }
86      else
87      {
88        frm.password.focus();
89        frm.password.select();
90      }
91    }
92    function saveLogin()
93    {
94      var frm = document.forms['login'];
95      window.parent.lastLogin = frm.login.value;
96      return true;
97    }
98    function doLogin()
99    {
100      var denyLogin = <%=denyLogin ? "true" : "false"%>;
101      if (denyLogin && !confirm('Login has been disabled by an administrator. Do you want to continue anyway?'))
102      {
103        return false;
104      }
105      saveLogin();
106      var frm = document.forms['login'];
107      frm.submit();
108    }
109    function showLoginForm()
110    {
111      Main.show('loginForm');
112      Main.hide('denyLogin');
113    }
114    </script>
115  </base:head>
116 
117  <base:body onload="init();">
118 
119    <table border=0 cellspacing=5 cellpadding=0 width="80%" align="center">
120    <tr>
121    <td>
122      <br><br>
123      <table class="loginform" width="100%" border="0" align="center">
124      <%
125      if (error != null) 
126      {
127        %>
128        <tr><td colspan="2" align="center"><div class="error"><%=error%></div></td></tr>
129        <%
130      }
131      %>
132      <tr>
133        <td style="vertical-align: middle; width; 25%;">
134          <div align="center">
135            <img src="images/baselogo.png" alt="BASE logo" width=122 height=58>
136          </div>
137        </td>
138        <td style="width: 75%;">
139          <form name="login" action="login.jsp" method="post" onsubmit="doLogin();">
140          <input type="hidden" name="ID" value="<%=ID%>">
141          <input type="hidden" name="nextpage" value="<%=root%>my_base/user/index.jsp">
142         
143          <div id="loginForm" <%=denyLogin ? "style=\"display:none;\"" : ""%>>
144          <table border="0" cellspacing="0" cellpadding="2">
145          <tr>
146            <td class="prompt">Login</td>
147            <td><input class="text" type="text" name="login" value="<%=HTML.encodeTags(login)%>" 
148              size="15" maxlength="100"
149              style="width: 120px"></td>
150          </tr>
151          <tr>
152            <td class="prompt">Password</td>
153            <td>
154              <input class="text" type="password" name="password" size="15" maxlength="80"
155                onkeypress="return Forms.submitOnEnter(event, doLogin)"
156                style="width: 120px">
157            </td>
158            <td><base:button image="login.png" 
159              onclick="doLogin();" title="Login" tooltip="<%=HTML.encodeTags(broadcastTitle)%>" /></td>
160          </tr>
161          <tr>
162            <td colspan="3">
163            <%
164            String forgotPassword = sc.getClientDefaultSetting("server.forgotten.password");
165            String getAccount = sc.getClientDefaultSetting("server.get.account");
166            if (forgotPassword != null)
167            {
168              %>
169              <base:icon image="bullet.gif" />
170              <a href="javascript:Main.openPopup('info/forgot_password.jsp?ID=<%=ID%>', 'ForgotPassword', 450, 300)" title="Click here if you have forgotten your password">Forgot your password?</a>
171              <%
172            }
173            if (getAccount != null)
174            {
175              %>
176              <base:icon image="bullet.gif" />
177              <a href="javascript:Main.openPopup('info/get_account.jsp?ID=<%=ID%>', 'GetAccount', 450, 300)" title="Click here if you want to get an account on this server">Get an account!</a>
178              <%
179            }
180            %>
181            </td>
182          </tr>
183          </table>
184          </div>
185          <div id="denyLogin" <%=denyLogin ? "style=\"width: 90%; margin-left: 5%;\"" : "style=\"display:none;\""%> class="news">
186            <div class="item">
187            <span class="headline"><%=HTML.encodeTags(broadcastTitle) %> (login disabled)</span><br>
188            <span class="text"><%=HTML.niceFormat(broadcastMessage)%></span>
189            </div>
190            <table>
191              <tr><td><base:button title="Login anyway" onclick="showLoginForm()" 
192                image="login.png" tooltip="At your own risk!"/></td></tr>
193            </table>
194          </div>
195          </form>
196        </td>
197      </tr>
198      </table>
199      <br>
200      <br>
201     
202      <%
203      String aboutServer = sc.getClientDefaultSetting("server.about");
204      if (aboutServer != null)
205      {
206        %>
207        <h3>About this server</h3>
208        <p>
209          <%=aboutServer%>
210        </p>
211        <base:icon image="bullet.gif" />
212        <a href="javascript:Main.openPopup('info/about.jsp?ID=<%=ID%>&page=about', 'About', 600, 400)">More about this server</a>
213        <%
214      }
215      %>
216     
217      <h3>News and announcements
218      <%
219      if (RssNewsFeed.isEnabled()) 
220      {
221        %>
222        <a href="info/news.rss" 
223          title="Subscribe to news from this BASE server"
224          ><base:icon image="rss.png" /></a>
225        <%
226      }
227      %>
228      </h3>
229      <div id="news" class="news">
230      <%
231      if (broadcastTitle != null)
232      {
233        %>
234        <div class="item"><base:icon image="warning.gif" />
235          <span class="date"><%=dateFormatter.format(new Date())%></span>
236          <span class="headline"><%=HTML.encodeTags(broadcastTitle)%><%=denyLogin ? " (login disabled)" : "" %></span><br>
237          <span class="text"><%=HTML.niceFormat(broadcastMessage)%></span>
238        </div>
239        <% 
240      }
241     
242      ItemQuery<News> query = News.getQuery();
243      query.order(Orders.desc(Hql.property("newsDate")));
244      query.order(Orders.desc(Hql.property("id")));
245      query.setCacheResult(true);
246      query.setReturnTotalCount(true);
247      query.setMaxResults(10);
248      news = query.list(dc);
249      for (News n : news)
250      {
251        %>
252        <div class="item">
253          <span class="date"><%=dateFormatter.format(n.getNewsDate())%></span>
254          <span class="headline"><%=HTML.encodeTags(n.getName())%></span><br>
255          <span class="text"><%=HTML.niceFormat(n.getDescription())%></span>
256        </div>
257        <%
258      }
259      if (news.getTotalCount() > 10)
260      {
261        %>
262        <base:icon image="bullet.gif" /><a href="info/news.jsp" 
263          title="Show older news..."><%=news.getTotalCount()-10%> more</a>
264        <%
265      }
266      %>
267      </div>
268    </td>
269    </tr>
270    </table>
271  </base:body>
272  </base:page>
273  <%
274}
275finally
276{
277  if (dc != null) dc.close();
278}
279%>
280
Note: See TracBrowser for help on using the repository browser.