diff --git a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java
index 6a0b4d748..a48230c69 100644
--- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java
+++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLPreviewRenderer.java
@@ -87,12 +87,23 @@ public class HTMLPreviewRenderer extends HTMLRenderer {
_postBodyBuffer.append(getSpan("summDetailExternal")).append("External links: ");
for (int i = 0; i < _links.size(); i++) {
Link l = (Link)_links.get(i);
- _postBodyBuffer.append("").append(sanitizeString(l.location));
+ String schema = l.schema;
+ _postBodyBuffer.append(" Schema: ").append(schema).append("
\n");
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 20c026189..15ce181a6 100644
--- a/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java
+++ b/apps/syndie/java/src/net/i2p/syndie/sml/HTMLRenderer.java
@@ -436,10 +436,20 @@ public class HTMLRenderer extends EventReceiverImpl {
_links.add(l);
if (!continueBody()) { return; }
if ( (schema == null) || (location == null) ) return;
- _bodyBuffer.append("").append(sanitizeString(text)).append("");
+ _bodyBuffer.append("").
+ append(sanitizeString(text)).
+ append("");
}
protected static class Address {
@@ -639,12 +649,21 @@ public class HTMLRenderer extends EventReceiverImpl {
_postBodyBuffer.append(getSpan("summDetailExternal")).append("External links: ");
for (int i = 0; i < _links.size(); i++) {
Link l = (Link)_links.get(i);
- _postBodyBuffer.append("").append(sanitizeString(l.location));
+ String schema = l.schema;
+ _postBodyBuffer.append("").append(sanitizeString(l.location));
+ } else {
+ _postBodyBuffer.append(getClass("summDetailExternalLink")).append(" href=\"externallink.jsp?");
+ if (l.schema != null)
+ _postBodyBuffer.append("schema=").append(sanitizeURL(l.schema)).append('&');
+ if (l.location != null)
+ _postBodyBuffer.append("location=").append(sanitizeURL(l.location)).append('&');
+ _postBodyBuffer.append("\">").append(sanitizeString(l.location));
+ }
_postBodyBuffer.append(getSpan("summDetailExternalNet")).append(" (").append(sanitizeString(l.schema)).append(") ");
}
_postBodyBuffer.append("
\n");
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 baec9ccd2..86b328ffa 100644
--- a/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java
+++ b/apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java
@@ -405,12 +405,22 @@ public class ThreadedHTMLRenderer extends HTMLRenderer {
_postBodyBuffer.append(getSpan("summDetailExternal")).append("External links: ");
for (int i = 0; i < _links.size(); i++) {
Link l = (Link)_links.get(i);
- _postBodyBuffer.append("").append(sanitizeString(l.location, 60));
+ String schema = l.schema;
+ _postBodyBuffer.append("").append(sanitizeString(l.location));
+ } else {
+ _postBodyBuffer.append(getClass("summDetailExternalLink")).append(" href=\"externallink.jsp?");
+ if (l.schema != null)
+ _postBodyBuffer.append("schema=").append(sanitizeURL(l.schema)).append('&');
+ if (l.location != null)
+ _postBodyBuffer.append("location=").append(sanitizeURL(l.location)).append('&');
+ _postBodyBuffer.append("\">").append(sanitizeString(l.location));
+ }
+
_postBodyBuffer.append(getSpan("summDetailExternalNet")).append(" (").append(sanitizeString(l.schema)).append(") ");
}
_postBodyBuffer.append("
\n");
diff --git a/apps/syndie/jsp/smlref.jsp b/apps/syndie/jsp/smlref.jsp
index c32408a6c..e2f6b577f 100644
--- a/apps/syndie/jsp/smlref.jsp
+++ b/apps/syndie/jsp/smlref.jsp
@@ -17,11 +17,12 @@ request.setCharacterEncoding("UTF-8");