2005-11-26 jrandom

* Update the sorting in Syndie to consider children 'newer' than parents,
      even if they have the same message ID (duh)
    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
      better)
This commit is contained in:
jrandom
2005-11-26 16:51:16 +00:00
committed by zzz
parent 70c4560f02
commit d1f2b447ac
12 changed files with 148 additions and 75 deletions

View File

@ -61,7 +61,9 @@ class ThreadNodeImpl implements ThreadNode {
for (int i = 0; i < _children.size(); i++) {
ThreadNodeImpl node = (ThreadNodeImpl)_children.get(i);
node.summarizeThread();
if (node.getMostRecentPostDate() > _mostRecentPostDate) {
// >= so we can give reasonable order when a child is a reply to a parent
// (since the child must have been posted after the parent)
if (node.getMostRecentPostDate() >= _mostRecentPostDate) {
_mostRecentPostDate = node.getMostRecentPostDate();
_mostRecentPostAuthor = node.getMostRecentPostAuthor();
}

View File

@ -295,9 +295,9 @@ public class ThreadedHTMLRenderer extends HTMLRenderer {
out.write("<tr class=\"postReplyOptions\">\n");
out.write(" <td colspan=\"3\">\n");
out.write(" <input type=\"submit\" value=\"Preview...\" name=\"Post\" />\n");
out.write(" Tags: <input type=\"text\" size=\"10\" name=\"" + PostServlet.PARAM_TAGS + "\" />\n");
out.write(" in a new thread? <input type=\"checkbox\" name=\"" + PostServlet.PARAM_IN_NEW_THREAD + "\" value=\"true\" />\n");
out.write(" refuse replies? <input type=\"checkbox\" name=\"" + PostServlet.PARAM_REFUSE_REPLIES + "\" value=\"true\" />\n");
out.write(" Tags: <input type=\"text\" size=\"10\" name=\"" + PostServlet.PARAM_TAGS + "\" title=\"Optional tags to categorize your response\" />\n");
out.write(" in a new thread? <input type=\"checkbox\" name=\"" + PostServlet.PARAM_IN_NEW_THREAD + "\" value=\"true\" title=\"If true, this will fork a new top level thread\" />\n");
out.write(" refuse replies? <input type=\"checkbox\" name=\"" + PostServlet.PARAM_REFUSE_REPLIES + "\" value=\"true\" title=\"If true, only you will be able to reply to the post\" />\n");
out.write(" attachment: <input type=\"file\" name=\"entryfile0\" />\n");
out.write(" </td>\n</tr>\n</form>\n");
out.write("<!-- body reply end -->\n");

View File

@ -103,18 +103,25 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_SYNDIE + "\" />");
writeAuthActionFields(out);
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName() + "\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName()
+ "\" title=\"Short, locally unique 'pet name' for the author\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation()
+ "\" title=\"Blog hash for the author\" /> ");
if (pn.isMember(FilteredThreadIndex.GROUP_FAVORITE))
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE + "\" checked=\"true\" value=\"true\" /> ");
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE
+ "\" checked=\"true\" value=\"true\" title=\"If true, their posts are highlighted\" /> ");
else
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE + "\" value=\"true\" /> ");
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE
+ "\" value=\"true\" title=\"If true, their posts are highlighted\" /> ");
if (pn.isMember(FilteredThreadIndex.GROUP_IGNORE)) {
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE + "\" checked=\"true\" value=\"true\" /> ");
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE
+ "\" checked=\"true\" value=\"true\" title=\"If true, their threads are hidden\" /> ");
} else {
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE + "\" value=\"true\" /> ");
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE
+ "\" value=\"true\" title=\"If true, their threads are hidden\" /> ");
out.write("<a href=\"" + getControlTarget() + "?" + ThreadedHTMLRenderer.PARAM_AUTHOR + '='
+ pn.getLocation() + "\" title=\"View threads by the given author\">View posts</a> ");
}
@ -130,18 +137,25 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_BLOG + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_SYNDIE + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName() + "\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName()
+ "\" title=\"Short, locally unique 'pet name' for the author\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation()
+ "\" title=\"Blog hash for the author\" /> ");
if (newName.isMember(FilteredThreadIndex.GROUP_FAVORITE))
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE + "\" checked=\"true\" value=\"true\" /> ");
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE
+ "\" checked=\"true\" value=\"true\" title=\"If true, their posts are highlighted\" /> ");
else
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE + "\" value=\"true\" /> ");
out.write("Favorite? <input type=\"checkbox\" name=\"" + PARAM_FAVORITE
+ "\" value=\"true\" title=\"If true, their posts are highlighted\" /> ");
if (newName.isMember(FilteredThreadIndex.GROUP_IGNORE)) {
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE + "\" checked=\"true\" value=\"true\" /> ");
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE
+ "\" checked=\"true\" value=\"true\" title=\"If true, their threads are hidden\" /> ");
} else {
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE + "\" value=\"true\" /> ");
out.write("Ignored? <input type=\"checkbox\" name=\"" + PARAM_IGNORE
+ "\" value=\"true\" title=\"If true, their threads are hidden\" /> ");
}
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_ADD_BLOG + "\" /> ");
@ -167,18 +181,24 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_ARCHIVE + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_SYNDIE + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + pn.getName() + "\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"20\" value=\"" + pn.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + pn.getName()
+ "\" title=\"Short, locally unique 'pet name' for the remote archive\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"20\" value=\"" + pn.getLocation()
+ "\" title=\"URL to the remote archive's archive/archive.txt\" /> ");
if (BlogManager.instance().authorizeRemote(user)) {
if (BlogManager.instance().syndicationScheduled(pn.getLocation()))
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE + "\" checked=\"true\" value=\"true\" />");
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE
+ "\" checked=\"true\" value=\"true\" title=\"If true, periodically pull down posts they have\" />");
else
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE + "\" value=\"true\" />");
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE
+ "\" value=\"true\" title=\"If true, periodically pull down posts they have\" />");
out.write("<a href=\"" + getSyndicateLink(user, pn.getLocation())
+ "\" title=\"Synchronize manually with the peer\">Sync manually</a> ");
} else {
out.write("You are not <a href=\"admin.jsp\">authorized</a> to syndicate with the archive ");
}
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_DELETE_ARCHIVE + "\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_UPDATE_ARCHIVE + "\" /> ");
@ -191,14 +211,19 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_ARCHIVE + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_SYNDIE + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName() + "\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"20\" value=\"" + newName.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName()
+ "\" title=\"Short, locally unique 'pet name' for the remote archive\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"20\" value=\"" + newName.getLocation()
+ "\" title=\"URL to the remote archive's archive/archive.txt\" /> ");
if (BlogManager.instance().authorizeRemote(user)) {
if (BlogManager.instance().syndicationScheduled(newName.getLocation()))
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE + "\" checked=\"true\" value=\"true\" />");
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE
+ "\" checked=\"true\" value=\"true\" title=\"If true, periodically pull down posts they have\" />");
else
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE + "\" value=\"true\" />");
out.write("Syndicate? <input type=\"checkbox\" name=\"" + PARAM_SYNDICATE
+ "\" value=\"true\" title=\"If true, periodically pull down posts they have\" />");
}
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_ADD_ARCHIVE + "\" /> ");
@ -225,9 +250,12 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_I2PHEX + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_I2P + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName() + "\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName()
+ "\" title=\"Short, locally unique 'pet name' for the I2Phex peer\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation()
+ "\" title=\"I2P destination of the I2Phex peer\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_DELETE_PEER + "\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_UPDATE_PEER + "\" /> ");
@ -240,9 +268,12 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_I2PHEX + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_I2P + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName() + "\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName()
+ "\" title=\"Short, locally unique 'pet name' for the I2Phex peer\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation()
+ "\" title=\"I2P destination of the I2Phex peer\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_ADD_PEER + "\" /> ");
out.write("</td></tr>\n");
@ -267,9 +298,12 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_EEPSITE + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_I2P + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName() + "\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName()
+ "\" title=\"Short, locally unique 'pet name' for the eepsite\" />" + pn.getName() + " ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation()
+ "\" title=\"I2P destination of the eepsite\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_DELETE_EEPSITE + "\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_UPDATE_EEPSITE + "\" /> ");
@ -282,9 +316,12 @@ public class AddressesServlet extends BaseServlet {
out.write("<input type=\"hidden\" name=\"" + PARAM_PROTO + "\" value=\"" + PROTO_EEPSITE + "\" />");
out.write("<input type=\"hidden\" name=\"" + PARAM_NET + "\" value=\"" + NET_I2P + "\" />");
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName() + "\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName()
+ "\" title=\"Short, locally unique 'pet name' for the eepsite\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation()
+ "\" title=\"I2P destination of the eepsite\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_ADD_EEPSITE + "\" /> ");
out.write("</td></tr>\n");
@ -307,11 +344,16 @@ public class AddressesServlet extends BaseServlet {
out.write("<form action=\"" + baseURI + "\" method=\"POST\">");
writeAuthActionFields(out);
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Network: <input type=\"text\" name=\"" + PARAM_NET + "\" value=\"" + pn.getNetwork() + "\" /> ");
out.write("Protocol: <input type=\"text\" name=\"" + PARAM_PROTO + "\" value=\"" + pn.getProtocol() + "\" /> ");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName() + "\" />" + pn.getName() +" ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (pn.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Network: <input type=\"text\" name=\"" + PARAM_NET + "\" value=\"" + pn.getNetwork()
+ "\" title=\"What network is this on - i2p, tor, internet, freenet, etc\" /> ");
out.write("Protocol: <input type=\"text\" name=\"" + PARAM_PROTO + "\" value=\"" + pn.getProtocol()
+ "\" title=\"How do we access/interact with this resource\" /> ");
out.write("Name: <input type=\"hidden\" name=\"" + PARAM_NAME + "\" value=\"" + pn.getName()
+ "\" title=\"Short, locally unique 'pet name' for the location\" />" + pn.getName() +" ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + pn.getLocation()
+ "\" title=\"URL\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_DELETE_OTHER + "\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_UPDATE_OTHER + "\" /> ");
@ -323,11 +365,16 @@ public class AddressesServlet extends BaseServlet {
writeAuthActionFields(out);
out.write("<tr><td colspan=\"3\">");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "") + " />\n");
out.write("Network: <input type=\"text\" name=\"" + PARAM_NET + "\" value=\"" + newName.getNetwork() + "\" /> ");
out.write("Protocol: <input type=\"text\" name=\"" + PARAM_PROTO + "\" value=\"" + newName.getProtocol() + "\" /> ");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName() + "\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation() + "\" /> ");
out.write("<input type=\"checkbox\" name=\"" + PARAM_IS_PUBLIC + "\" value=\"true\" " + (newName.getIsPublic() ? " checked=\"true\" " : "")
+ " title=\"If checked, this name can be shared with one click when posting\" />\n");
out.write("Network: <input type=\"text\" name=\"" + PARAM_NET + "\" value=\"" + newName.getNetwork()
+ "\" title=\"What network is this on - i2p, tor, internet, freenet, etc\" /> ");
out.write("Protocol: <input type=\"text\" name=\"" + PARAM_PROTO + "\" value=\"" + newName.getProtocol()
+ "\" title=\"How do we access/interact with this resource\" /> ");
out.write("Name: <input type=\"text\" name=\"" + PARAM_NAME + "\" size=\"10\" value=\"" + newName.getName()
+ "\" title=\"Short, locally unique 'pet name' for the location\" /> ");
out.write("Location: <input type=\"text\" name=\"" + PARAM_LOC + "\" size=\"3\" value=\"" + newName.getLocation()
+ "\" title=\"URL\" /> ");
out.write("<input type=\"submit\" name=\"" + PARAM_ACTION + "\" value=\"" + ACTION_ADD_OTHER + "\" /> ");
out.write("</td></tr>\n");

View File

@ -494,6 +494,7 @@ public abstract class BaseServlet extends HttpServlet {
//out.write("<tr class=\"topNav\"><td class=\"topNav_user\" colspan=\"2\" nowrap=\"true\">\n");
out.write("<tr class=\"topNav\"><td colspan=\"3\" nowrap=\"true\"><span class=\"topNav_user\">\n");
out.write("<!-- nav bar begin -->\n");
out.write("<a href=\"threads.jsp\" title=\"Syndie home\">Home</a> ");
if (user.getAuthenticated() && (user.getBlog() != null) ) {
out.write("Logged in as <a href=\"" + getProfileLink(req, user.getBlog()) + "\" title=\"Edit your profile\">");
out.write(user.getUsername());
@ -504,8 +505,8 @@ public abstract class BaseServlet extends HttpServlet {
} else {
out.write("<form action=\"" + req.getRequestURI() + "\" method=\"POST\">\n");
writeAuthActionFields(out);
out.write("Login: <input type=\"text\" name=\"login\" />\n");
out.write("Password: <input type=\"password\" name=\"password\" />\n");
out.write("Login: <input type=\"text\" name=\"login\" title=\"Login name for your Syndie account\" />\n");
out.write("Password: <input type=\"password\" name=\"password\" title=\"Password to get into your Syndie account\" />\n");
out.write("<input type=\"submit\" name=\"action\" value=\"Login\" /></form>\n");
}
//out.write("</td><td class=\"topNav_admin\">\n");
@ -594,10 +595,16 @@ public abstract class BaseServlet extends HttpServlet {
}
out.write("</select>\n");
out.write("Tags: <input type=\"text\" name=\"" + ThreadedHTMLRenderer.PARAM_TAGS + "\" size=\"10\" value=\"" + tags + "\" />\n");
out.write("Tags: <input type=\"text\" name=\"" + ThreadedHTMLRenderer.PARAM_TAGS + "\" size=\"10\" value=\"" + tags
+ "\" title=\"Threads are filtered to include only ones with posts containing these tags\" />\n");
out.write("<input type=\"submit\" name=\"action\" value=\"Go\" />\n");
out.write("</td><td class=\"controlBarRight\" width=\"1%\"><a href=\"#threads\" title=\"Jump to the thread navigation\">Threads</a></td>\n");
out.write("</td><td class=\"controlBarRight\" width=\"1%\">");
if ( (req.getParameter(ThreadedHTMLRenderer.PARAM_VIEW_POST) != null) ||
(req.getParameter(ThreadedHTMLRenderer.PARAM_VIEW_THREAD) != null) )
out.write("<a href=\"#threads\" title=\"Jump to the thread navigation\">Threads</a>");
out.write("</td>\n");
out.write("<!-- control bar end -->\n");
out.write("</tr>\n");
out.write("</form>\n");

View File

@ -211,28 +211,30 @@ public class PostServlet extends BaseServlet {
out.write("<tr><td colspan=\"3\">\n");
out.write("<span class=\"b_postField\">Post subject:</span> ");
out.write("<input type=\"text\" class=\"b_postSubject\" size=\"80\" name=\"" + PARAM_SUBJECT
+ "\" value=\"" + HTMLRenderer.sanitizeTagParam(subject) + "\" /><br />\n");
+ "\" value=\"" + HTMLRenderer.sanitizeTagParam(subject) + "\" title=\"One line summary\" /><br />\n");
out.write("<span class=\"b_postField\">Post content (in raw <a href=\"smlref.jsp\" target=\"_blank\">SML</a>, no headers):</span><br />\n");
out.write("<textarea class=\"b_postText\" rows=\"6\" cols=\"80\" name=\"" + PARAM_TEXT + "\">" + getParam(req, PARAM_TEXT) + "</textarea><br />\n");
out.write("<span class=\"b_postField\">SML post headers:</span><br />\n");
out.write("<textarea class=\"b_postHeaders\" rows=\"3\" cols=\"80\" name=\"" + PARAM_HEADERS + "\">" + getParam(req, PARAM_HEADERS) + "</textarea><br />\n");
out.write("<textarea class=\"b_postHeaders\" rows=\"2\" cols=\"80\" name=\"" + PARAM_HEADERS + "\" title=\"Most people can leave this empty\" >" + getParam(req, PARAM_HEADERS) + "</textarea><br />\n");
if ( (parentURI != null) && (parentURI.trim().length() > 0) )
out.write("<input type=\"hidden\" name=\"" + PARAM_PARENT + "\" value=\"" + parentURI + "\" />\n");
out.write(" Tags: <input type=\"text\" size=\"10\" name=\"" + PARAM_TAGS + "\" value=\"" + getParam(req, PARAM_TAGS) + "\" /><br />\n");
out.write(" Tags: <input type=\"text\" size=\"10\" name=\"" + PARAM_TAGS + "\" value=\"" + getParam(req, PARAM_TAGS) + "\" title=\"Optional tags to categorize your response\" /><br />\n");
boolean inNewThread = getInNewThread(req);
boolean refuseReplies = getRefuseReplies(req);
out.write("In a new thread? <input type=\"checkbox\" value=\"true\" name=\"" + PARAM_IN_NEW_THREAD +
(inNewThread ? "\" checked=\"true\" " : "\" " ) + " /><br />\n");
(inNewThread ? "\" checked=\"true\" " : "\" " )
+ " title=\"If true, this will fork a new top level thread\" /><br />\n");
out.write("Refuse replies? <input type=\"checkbox\" value=\"true\" name=\"" + PARAM_REFUSE_REPLIES +
(refuseReplies ? "\" checked=\"true\" " : "\" " ) + " /><br />\n");
(refuseReplies ? "\" checked=\"true\" " : "\" " )
+ " title=\"If true, only you will be able to reply to the post\" /><br />\n");
out.write("<span class=\"b_postField\">Include public names?</span> ");
out.write("<input class=\"b_postNames\" type=\"checkbox\" name=\"" + PARAM_INCLUDENAMES
+ "\" value=\"true\" /><br />\n");
+ "\" value=\"true\" title=\"If true, everything marked 'public' in your addressbook is shared\" /><br />\n");
out.write(ATTACHMENT_FIELDS);

View File

@ -362,6 +362,7 @@ public class RemoteArchiveBean {
ArchiveIndex i = new ArchiveIndex(I2PAppContext.getGlobalContext(), false);
if (notModified) {
_statusMessages.add("Archive unchanged since last fetch.");
_statusMessages.add("If you want to force a refetch, make a trivial modification to the URL, such as adding a \"?\"");
} else {
try {
i.load(_archiveFile);

View File

@ -111,12 +111,12 @@ public class SyndicateServlet extends BaseServlet {
out.write("</select>\n");
out.write("<span class=\"b_remoteChooserField\">Proxy</span>\n");
out.write("<input class=\"b_remoteChooserHost\" type=\"text\" size=\"10\" name=\"proxyhost\" value=\"");
out.write("<input class=\"b_remoteChooserHost\" type=\"text\" size=\"12\" name=\"proxyhost\" value=\"");
out.write(BlogManager.instance().getDefaultProxyHost());
out.write("\" />\n");
out.write("\" title=\"hostname that your HTTP proxy is on, or blank for no proxy\" />\n");
out.write("<input class=\"b_remoteChooserPort\" type=\"text\" size=\"4\" name=\"proxyport\" value=\"");
out.write(BlogManager.instance().getDefaultProxyPort());
out.write("\" /><br />\n");
out.write("\" title=\"port number that your HTTP proxy is on, or blank for no proxy\" /><br />\n");
out.write("<span class=\"b_remoteChooserField\">Bookmarked archives:</span>\n");
out.write("<select class=\"b_remoteChooserPN\" name=\"" + PARAM_PETNAME + "\">");
out.write("<option value=\"\">Custom location</option>");
@ -136,7 +136,7 @@ public class SyndicateServlet extends BaseServlet {
String reqLoc = req.getParameter("location");
if (reqLoc != null)
out.write(reqLoc);
out.write("\" />\n");
out.write("\" title=\"full URL to the remote location, to be sent to your HTTP proxy\" />\n");
out.write("<input class=\"b_remoteChooserContinue\" type=\"submit\" name=\"action\" value=\"Continue...\" /><br />\n");
out.write("</span>\n");
}

View File

@ -290,14 +290,10 @@ public class ViewThreadedServlet extends BaseServlet {
}
out.write("</a>\n");
}
out.write(" <a href=\"");
out.write(getViewThreadLink(req, node, user));
out.write("\" title=\"View all posts in the thread\">full thread</a>\n");
} else {
out.write("<a href=\"");
out.write(getViewPostLink(req, node, user, false));
out.write("\" title=\"View the post\">view post</a>\n");
}
out.write("</span>");
out.write("</td></tr>\n");

View File

@ -20,4 +20,13 @@ on new installs). You can also use the <a href="http://forum.i2p.net/">I2P
forums</a> if you're having trouble getting Syndie to work, and people are
almost always around on the <a href="http://forum.i2p.net/viewtopic.php?t=952">#i2p irc
channel</a>.</p>
<p>One FAQ which might keep people from getting more posts into their Syndie
node regards cookies. If you get "internal errors" when using the <a
href="syndicate.jsp">syndicate form</a>, you probably have cookies disabled.
Syndie needs cookies to help maintain state, and while its good practice to
disable cookies in general, you should be able to tell your web browser to make
an exception and allow cookies to "localhost" (or wherever your Syndie instance
is). Further FAQs should be found
<a href="threads.jsp?tags=syndie.faq">within syndie</a></p>
</body></html>

View File

@ -1,4 +1,12 @@
$Id: history.txt,v 1.331 2005/11/26 04:16:25 jrandom Exp $
$Id: history.txt,v 1.332 2005/11/26 06:39:33 jrandom Exp $
2005-11-26 jrandom
* Update the sorting in Syndie to consider children 'newer' than parents,
even if they have the same message ID (duh)
* Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
* Added a bunch of tooltips to Syndie's fields (thanks polecat!)
* Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
better)
2005-11-26 jrandom
* Be more explicit about what messages we will handle through a client

View File

@ -51,6 +51,7 @@ wrapper.java.library.path.2=lib
wrapper.java.additional.1=-DloggerFilenameOverride=logs/log-router-@.txt
wrapper.java.additional.2=-Dorg.mortbay.http.Version.paranoid=true
wrapper.java.additional.3=-Dorg.mortbay.util.FileResource.checkAliases=false
wrapper.java.additional.4=-Dorg.mortbay.xml.XmlParser.NotValidating=true
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=4

View File

@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
*
*/
public class RouterVersion {
public final static String ID = "$Revision: 1.299 $ $Date: 2005/11/26 04:16:13 $";
public final static String ID = "$Revision: 1.300 $ $Date: 2005/11/26 06:39:32 $";
public final static String VERSION = "0.6.1.5";
public final static long BUILD = 10;
public final static long BUILD = 11;
public static void main(String args[]) {
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
System.out.println("Router ID: " + RouterVersion.ID);