From d1f2b447ac96242b62856ef7551933cdec7028a5 Mon Sep 17 00:00:00 2001 From: jrandom Date: Sat, 26 Nov 2005 16:51:16 +0000 Subject: [PATCH] 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) --- .../src/net/i2p/syndie/ThreadNodeImpl.java | 4 +- .../i2p/syndie/sml/ThreadedHTMLRenderer.java | 6 +- .../net/i2p/syndie/web/AddressesServlet.java | 141 ++++++++++++------ .../src/net/i2p/syndie/web/BaseServlet.java | 15 +- .../src/net/i2p/syndie/web/PostServlet.java | 14 +- .../net/i2p/syndie/web/RemoteArchiveBean.java | 1 + .../net/i2p/syndie/web/SyndicateServlet.java | 8 +- .../i2p/syndie/web/ViewThreadedServlet.java | 10 +- apps/syndie/jsp/about.html | 9 ++ history.txt | 10 +- installer/resources/wrapper.config | 1 + .../src/net/i2p/router/RouterVersion.java | 4 +- 12 files changed, 148 insertions(+), 75 deletions(-) diff --git a/apps/syndie/java/src/net/i2p/syndie/ThreadNodeImpl.java b/apps/syndie/java/src/net/i2p/syndie/ThreadNodeImpl.java index 4c6715fc9..e9ef4ca50 100644 --- a/apps/syndie/java/src/net/i2p/syndie/ThreadNodeImpl.java +++ b/apps/syndie/java/src/net/i2p/syndie/ThreadNodeImpl.java @@ -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(); } diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java index 03c6dc5cd..35bd9ffc0 100644 --- a/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java +++ b/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java @@ -295,9 +295,9 @@ public class ThreadedHTMLRenderer extends HTMLRenderer { out.write("\n"); out.write(" \n"); out.write(" \n"); - out.write(" Tags: \n"); - out.write(" in a new thread? \n"); - out.write(" refuse replies? \n"); + out.write(" Tags: \n"); + out.write(" in a new thread? \n"); + out.write(" refuse replies? \n"); out.write(" attachment: \n"); out.write(" \n\n\n"); out.write("\n"); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java index 9875e874f..e4792982b 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/AddressesServlet.java @@ -103,18 +103,25 @@ public class AddressesServlet extends BaseServlet { out.write(""); writeAuthActionFields(out); out.write(""); - out.write("\n"); - out.write("Name: " + pn.getName() + " "); - out.write("Location: "); + out.write("\n"); + out.write("Name: " + pn.getName() + " "); + out.write("Location: "); if (pn.isMember(FilteredThreadIndex.GROUP_FAVORITE)) - out.write("Favorite? "); + out.write("Favorite? "); else - out.write("Favorite? "); + out.write("Favorite? "); if (pn.isMember(FilteredThreadIndex.GROUP_IGNORE)) { - out.write("Ignored? "); + out.write("Ignored? "); } else { - out.write("Ignored? "); + out.write("Ignored? "); out.write(" "); + out.write("Location: "); if (newName.isMember(FilteredThreadIndex.GROUP_FAVORITE)) - out.write("Favorite? "); + out.write("Favorite? "); else - out.write("Favorite? "); + out.write("Favorite? "); if (newName.isMember(FilteredThreadIndex.GROUP_IGNORE)) { - out.write("Ignored? "); + out.write("Ignored? "); } else { - out.write("Ignored? "); + out.write("Ignored? "); } out.write(" "); @@ -167,18 +181,24 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: " + pn.getName() + " "); - out.write("Location: "); + out.write("\n"); + out.write("Name: " + pn.getName() + " "); + out.write("Location: "); if (BlogManager.instance().authorizeRemote(user)) { - if (BlogManager.instance().syndicationScheduled(pn.getLocation())) - out.write("Syndicate? "); + out.write("Syndicate? "); else - out.write("Syndicate? "); + out.write("Syndicate? "); out.write("Sync manually "); + } else { + out.write("You are not authorized to syndicate with the archive "); } out.write(" "); out.write(" "); @@ -191,14 +211,19 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: "); - out.write("Location: "); + out.write("\n"); + out.write("Name: "); + out.write("Location: "); if (BlogManager.instance().authorizeRemote(user)) { if (BlogManager.instance().syndicationScheduled(newName.getLocation())) - out.write("Syndicate? "); + out.write("Syndicate? "); else - out.write("Syndicate? "); + out.write("Syndicate? "); } out.write(" "); @@ -225,9 +250,12 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: " + pn.getName() + " "); - out.write("Location: "); + out.write("\n"); + out.write("Name: " + pn.getName() + " "); + out.write("Location: "); out.write(" "); out.write(" "); @@ -240,9 +268,12 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: "); - out.write("Location: "); + out.write("\n"); + out.write("Name: "); + out.write("Location: "); out.write(" "); out.write("\n"); @@ -267,9 +298,12 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: " + pn.getName() + " "); - out.write("Location: "); + out.write("\n"); + out.write("Name: " + pn.getName() + " "); + out.write("Location: "); out.write(" "); out.write(" "); @@ -282,9 +316,12 @@ public class AddressesServlet extends BaseServlet { out.write(""); out.write(""); out.write(""); - out.write("\n"); - out.write("Name: "); - out.write("Location: "); + out.write("\n"); + out.write("Name: "); + out.write("Location: "); out.write(" "); out.write("\n"); @@ -307,11 +344,16 @@ public class AddressesServlet extends BaseServlet { out.write("
"); writeAuthActionFields(out); out.write(""); - out.write("\n"); - out.write("Network: "); - out.write("Protocol: "); - out.write("Name: " + pn.getName() +" "); - out.write("Location: "); + out.write("\n"); + out.write("Network: "); + out.write("Protocol: "); + out.write("Name: " + pn.getName() +" "); + out.write("Location: "); out.write(" "); out.write(" "); @@ -323,11 +365,16 @@ public class AddressesServlet extends BaseServlet { writeAuthActionFields(out); out.write(""); - out.write("\n"); - out.write("Network: "); - out.write("Protocol: "); - out.write("Name: "); - out.write("Location: "); + out.write("\n"); + out.write("Network: "); + out.write("Protocol: "); + out.write("Name: "); + out.write("Location: "); out.write(" "); out.write("\n"); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java index 90405ffcb..c6a19bac3 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/BaseServlet.java @@ -494,6 +494,7 @@ public abstract class BaseServlet extends HttpServlet { //out.write("\n"); out.write("\n"); out.write("\n"); + out.write("Home "); if (user.getAuthenticated() && (user.getBlog() != null) ) { out.write("Logged in as "); out.write(user.getUsername()); @@ -504,8 +505,8 @@ public abstract class BaseServlet extends HttpServlet { } else { out.write("\n"); writeAuthActionFields(out); - out.write("Login: \n"); - out.write("Password: \n"); + out.write("Login: \n"); + out.write("Password: \n"); out.write("\n"); } //out.write("\n"); @@ -594,10 +595,16 @@ public abstract class BaseServlet extends HttpServlet { } out.write("\n"); - out.write("Tags: \n"); + out.write("Tags: \n"); out.write("\n"); - out.write("Threads\n"); + out.write(""); + + if ( (req.getParameter(ThreadedHTMLRenderer.PARAM_VIEW_POST) != null) || + (req.getParameter(ThreadedHTMLRenderer.PARAM_VIEW_THREAD) != null) ) + out.write("Threads"); + out.write("\n"); out.write("\n"); out.write("\n"); out.write("\n"); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/PostServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/PostServlet.java index 631bbfc68..3298e7702 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/PostServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/PostServlet.java @@ -211,28 +211,30 @@ public class PostServlet extends BaseServlet { out.write("\n"); out.write("Post subject: "); out.write("
\n"); + + "\" value=\"" + HTMLRenderer.sanitizeTagParam(subject) + "\" title=\"One line summary\" />
\n"); out.write("Post content (in raw SML, no headers):
\n"); out.write("
\n"); out.write("SML post headers:
\n"); - out.write("
\n"); + out.write("
\n"); if ( (parentURI != null) && (parentURI.trim().length() > 0) ) out.write("\n"); - out.write(" Tags:
\n"); + out.write(" Tags:
\n"); boolean inNewThread = getInNewThread(req); boolean refuseReplies = getRefuseReplies(req); out.write("In a new thread?
\n"); + (inNewThread ? "\" checked=\"true\" " : "\" " ) + + " title=\"If true, this will fork a new top level thread\" />
\n"); out.write("Refuse replies?
\n"); + (refuseReplies ? "\" checked=\"true\" " : "\" " ) + + " title=\"If true, only you will be able to reply to the post\" />
\n"); out.write("Include public names? "); out.write("
\n"); + + "\" value=\"true\" title=\"If true, everything marked 'public' in your addressbook is shared\" />
\n"); out.write(ATTACHMENT_FIELDS); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java index df124f2dc..d555172a9 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java @@ -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); diff --git a/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java index 1eb97730e..0d6c17ebc 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/SyndicateServlet.java @@ -111,12 +111,12 @@ public class SyndicateServlet extends BaseServlet { out.write("\n"); out.write("Proxy\n"); - out.write("\n"); + out.write("\" title=\"hostname that your HTTP proxy is on, or blank for no proxy\" />\n"); out.write("
\n"); + out.write("\" title=\"port number that your HTTP proxy is on, or blank for no proxy\" />
\n"); out.write("Bookmarked archives:\n"); out.write("
\n"); out.write("
\n"); } diff --git a/apps/syndie/java/src/net/i2p/syndie/web/ViewThreadedServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/ViewThreadedServlet.java index a6bd2e852..7b47223a5 100644 --- a/apps/syndie/java/src/net/i2p/syndie/web/ViewThreadedServlet.java +++ b/apps/syndie/java/src/net/i2p/syndie/web/ViewThreadedServlet.java @@ -290,14 +290,10 @@ public class ViewThreadedServlet extends BaseServlet { } out.write("\n"); - out.write(" full thread\n"); - } else { - out.write("view post\n"); } + out.write(" full thread\n"); out.write(""); out.write("\n"); diff --git a/apps/syndie/jsp/about.html b/apps/syndie/jsp/about.html index c85d60076..3741a6d98 100644 --- a/apps/syndie/jsp/about.html +++ b/apps/syndie/jsp/about.html @@ -20,4 +20,13 @@ on new installs). You can also use the I2P forums if you're having trouble getting Syndie to work, and people are almost always around on the #i2p irc channel.

+ +

One FAQ which might keep people from getting more posts into their Syndie +node regards cookies. If you get "internal errors" when using the syndicate form, 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 +within syndie

diff --git a/history.txt b/history.txt index 4da6a7370..5b535d23e 100644 --- a/history.txt +++ b/history.txt @@ -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 diff --git a/installer/resources/wrapper.config b/installer/resources/wrapper.config index 1b2566819..f05710df4 100644 --- a/installer/resources/wrapper.config +++ b/installer/resources/wrapper.config @@ -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 diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 18e17bdca..8caaad587 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -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);