diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/WizardBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/WizardBean.java new file mode 100644 index 0000000000000000000000000000000000000000..afac4235e4dc60471cbb21758b4eb1bc4e8e8efd --- /dev/null +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/WizardBean.java @@ -0,0 +1,24 @@ +package net.i2p.i2ptunnel.web; + +/** + * A temporary data holder for the wizard pages + * + * Warning - This class is not part of the i2ptunnel API, and at some point + * it will be moved from the jar to the war. + * Usage by classes outside of i2ptunnel.war is deprecated. + */ +public class WizardBean extends IndexBean { + private boolean _isClient; + public WizardBean() { super(); } + + /** + * Whether the tunnel being set up is a client tunnel or not. + * + */ + public void setIsClient(String isClient) { + _isClient = Boolean.valueOf(isClient); + } + public boolean getIsClient() { + return _isClient; + } +} diff --git a/apps/i2ptunnel/jsp/web.xml b/apps/i2ptunnel/jsp/web.xml index d333d29367bbf91160e86d6bc685e6232e07221a..d8d51c82396d19b6e52c1aa16bcf048440733288 100644 --- a/apps/i2ptunnel/jsp/web.xml +++ b/apps/i2ptunnel/jsp/web.xml @@ -18,6 +18,11 @@ <url-pattern>/edit</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>net.i2p.i2ptunnel.jsp.wizard_jsp</servlet-name> + <url-pattern>/wizard</url-pattern> + </servlet-mapping> + <session-config> <session-timeout> 30 diff --git a/apps/i2ptunnel/jsp/wizard.jsp b/apps/i2ptunnel/jsp/wizard.jsp new file mode 100644 index 0000000000000000000000000000000000000000..5f77e6ae0b2be9d895b0704d389586dd1d2c6b69 --- /dev/null +++ b/apps/i2ptunnel/jsp/wizard.jsp @@ -0,0 +1,89 @@ +<% + // NOTE: Do the header carefully so there is no whitespace before the <?xml... line + +%><%@page pageEncoding="UTF-8" +%><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.WizardBean" +%><?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<jsp:useBean class="net.i2p.i2ptunnel.web.WizardBean" id="wizardBean" scope="request" /> +<jsp:useBean class="net.i2p.i2ptunnel.web.Messages" id="intl" scope="request" /> +<% String pageStr = request.getParameter("page"); + int curPage = 1; + if (pageStr != null) { + try { + curPage = Integer.parseInt(pageStr); + if (curPage > 7 || curPage <= 0) { + curPage = 1; + } + } catch (NumberFormatException nfe) { + curPage = 1; + } + } +%> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title><%=intl._("I2P Tunnel Manager - Tunnel Creation Wizard")%></title> + + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> + <link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" /> + + <% if (wizardBean.allowCSS()) { + %><link href="<%=wizardBean.getTheme()%>default.css" rel="stylesheet" type="text/css" /> + <link href="<%=wizardBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" /> + <% } + %> +</head> +<body id="tunnelWizardPage"> + <div id="pageHeader"> + </div> + + <form method="post" action="wizard"> + + <div id="wizardPanel" class="panel"> + <div class="header"> + <% + if (curPage == 1) { + %><h4><%=intl._("Page 1")%></h4><% + } %> + <input type="hidden" name="page" value="<%=request.getParameter("page")%>" /> + <input type="hidden" name="nonce" value="<%=wizardBean.getNextNonce()%>" /> + </div> + + <div class="separator"> + <hr /> + </div> + + <% + if (curPage == 1) { + %><div id="typeField" class="rowItem"> + <label for="type"> + <%=intl._("Tunnel Type")%>: + </label> + <label><%=intl._("Server Tunnel")%></label> + <input value="0" type="radio" id="baseType" name="isClient" class="tickbox" /> + <label><%=intl._("Client Tunnel")%></label> + <input value="1" type="radio" id="baseType" name="isClient" class="tickbox" /> + </div><% + } else { + %><input type="hidden" name="isClient" value="<%=wizardBean.getIsClient()%>" /><% + } %> + </div> + + <div id="globalOperationsPanel" class="panel"> + <div class="header"></div> + <div class="footer"> + <div class=toolbox"> + <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._("Cancel")%></button> + <button id="controlNext" accesskey="N" class="control" type="submit" name="action" value="Next page" title="Next Page"><%=intl._("Next")%>(<span class="accessKey">N</span>)</button> + <button id="controlFinish" accesskey="F" class="control" type="submit" name="action" value="Finish wizard" title="Finish Wizard"><%=intl._("Finish")%>(<span class="accessKey">F</span>)</button> + </div> + </div> + </div> + + </form> + + <div id="pageFooter"> + </div> +</body> +</html>