diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java index 57032b5c46992e1dadbd7d8cd6b3f59908529802..a162d94262aabf5c92813f12651f3f871879011d 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java @@ -578,6 +578,9 @@ public class HTMLRenderer extends EventReceiverImpl { _postBodyBuffer.append("\">").append(sanitizeString(a.name)).append("</a>"); if (a.description != null) _postBodyBuffer.append(": ").append(sanitizeString(a.description)); + _postBodyBuffer.append(" <a href=\""); + _postBodyBuffer.append(getBookmarkURL(a.name, a.location, a.locationSchema, "syndiearchive")); + _postBodyBuffer.append("\">bookmark</a>"); } _postBodyBuffer.append("<br />\n"); } @@ -869,4 +872,11 @@ public class HTMLRenderer extends EventReceiverImpl { + "&schema=" + sanitizeTagParam(archiveLocation.getSchema()) + "&location=" + sanitizeTagParam(archiveLocation.getLocation()); } + public static String getBookmarkURL(String name, String location, String schema, String protocol) { + return "addresses.jsp?name=" + sanitizeTagParam(name) + + "&network=" + sanitizeTagParam(schema) + + "&protocol=" + sanitizeTagParam(protocol) + + "&location=" + sanitizeTagParam(location); + + } } diff --git a/apps/syndie/jsp/addresses.jsp b/apps/syndie/jsp/addresses.jsp index e591dcad1cc11409ca3e1291d3514520bcbdff73..cbb44f6525ce154d2c219fba20093b07fa0fbe83 100644 --- a/apps/syndie/jsp/addresses.jsp +++ b/apps/syndie/jsp/addresses.jsp @@ -141,11 +141,31 @@ if (!user.getAuthenticated()) { out.write(buf.toString()); buf.setLength(0); } + + String net = request.getParameter("network"); + String proto = request.getParameter("protocol"); + String name = request.getParameter("name"); + String loc = request.getParameter("location"); + boolean active = (request.getParameter("action") != null); + if (net == null || active) net = ""; + if (proto == null || active) proto = ""; + if (name == null || active) name = ""; + if (loc == null || active) loc= ""; %> - <tr><form action="addresses.jsp" method="POST"><td><input type="text" name="name" size="20" /></td> - <td><select name="network"><option value="i2p">I2P</option><option value="syndie">Syndie</option><option value="tor">Tor</option><option value="freenet">Freenet</option><option value="internet">Internet</option></select></td> - <td><select name="protocol"><option value="http">HTTP</option><option value="irc">IRC</option><option value="i2phex">I2Phex</option><option value="syndiearchive">Syndie archive</option><option value="syndieblog">Syndie blog</option></select></td> - <td><input type="text" size="50" name="location" /></td> + <tr><form action="addresses.jsp" method="POST"><td><input type="text" name="name" size="20" value="<%=name%>" /></td> + <td><select name="network"> + <option value="i2p" <%="i2p".equals(net) ? " selected=\"true\" " : ""%>>I2P</option> + <option value="syndie" <%="syndie".equals(net) ? " selected=\"true\" " : ""%>>Syndie</option> + <option value="tor" <%="tor".equals(net) ? " selected=\"true\" " : ""%>>Tor</option> + <option value="freenet" <%="freenet".equals(net) ? " selected=\"true\" " : ""%>>Freenet</option> + <option value="internet" <%="internet".equals(net) ? " selected=\"true\" " : ""%>>Internet</option></select></td> + <td><select name="protocol"> + <option value="http" <%="http".equals(proto) ? " selected=\"true\" " : ""%>>HTTP</option> + <option value="irc" <%="irc".equals(proto) ? " selected=\"true\" " : ""%>>IRC</option> + <option value="i2phex" <%="i2phex".equals(proto) ? " selected=\"true\" " : ""%>>I2Phex</option> + <option value="syndiearchive" <%="syndiearchive".equals(proto) ? " selected=\"true\" " : ""%>>Syndie archive</option> + <option value="syndieblog" <%="syndieblog".equals(proto) ? " selected=\"true\" " : ""%>>Syndie blog</option></select></td> + <td><input type="text" size="50" name="location" value="<%=loc%>" /></td> <td><input type="checkbox" name="isPublic" /></td> <td><input type="text" name="groups" size="10" /></td> <td><input type="submit" name="action" value="Add" /></td> diff --git a/apps/syndie/jsp/remote.jsp b/apps/syndie/jsp/remote.jsp index 9006cd9ed6112e2121e7256731f013c7e63f9d18..f5153f879807e9a2c787fc000df63c1223e5c6f4 100644 --- a/apps/syndie/jsp/remote.jsp +++ b/apps/syndie/jsp/remote.jsp @@ -1,4 +1,4 @@ -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.syndie.web.*" %> +<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="net.i2p.syndie.web.*, net.i2p.syndie.*, net.i2p.syndie.sml.*, java.util.*" %> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean scope="session" class="net.i2p.syndie.web.RemoteArchiveBean" id="remote" /> <jsp:useBean scope="session" class="net.i2p.syndie.User" id="user" /> @@ -25,13 +25,27 @@ if (!user.getAuthenticated() || !user.getAllowAccessRemote()) { <option value="feedspace" <%=("feedspace".equals(request.getParameter("schema")) ? "selected=\"true\"" : "")%>>Feedspace</option> <option value="usenet" <%=("usenet".equals(request.getParameter("schema")) ? "selected=\"true\"" : "")%>>Usenet</option> </select> -Proxy <input type="text" size="10" name="proxyhost" value="localhost" />:<input type="text" size="4" name="proxyport" value="4444" /> -<input name="location" size="40" value="<%=(request.getParameter("location") != null ? request.getParameter("location") : "")%>" /> +Proxy <input type="text" size="10" name="proxyhost" value="localhost" />:<input type="text" size="4" name="proxyport" value="4444" /><br /> +Bookmarked archives: <select name="archivepetname"><option value="">Custom location</option><% +for (Iterator iter = user.getPetNameDB().getNames().iterator(); iter.hasNext(); ) { + PetName pn = user.getPetNameDB().get((String)iter.next()); + if ("syndiearchive".equals(pn.getProtocol())) { + %><option value="<%=HTMLRenderer.sanitizeTagParam(pn.getName())%>"><%=HTMLRenderer.sanitizeString(pn.getName())%></option><% + } +} +%></select> or +<input name="location" size="30" value="<%=(request.getParameter("location") != null ? request.getParameter("location") : "")%>" /> <input type="submit" name="action" value="Continue..." /><br /> <% String action = request.getParameter("action"); if ("Continue...".equals(action)) { - remote.fetchIndex(user, request.getParameter("schema"), request.getParameter("location"), request.getParameter("proxyhost"), request.getParameter("proxyport")); + String location = request.getParameter("location"); + String pn = request.getParameter("archivepetname"); + if ( (pn != null) && (pn.trim().length() > 0) ) { + PetName pnval = user.getPetNameDB().get(pn); + if (pnval != null) location = pnval.getLocation(); + } + remote.fetchIndex(user, request.getParameter("schema"), location, request.getParameter("proxyhost"), request.getParameter("proxyport")); } else if ("Fetch metadata".equals(action)) { remote.fetchMetadata(user, request.getParameterMap()); } else if ("Fetch selected entries".equals(action)) {