From 99951bf815123a707a2ea4ae4efa30580d5e6cf0 Mon Sep 17 00:00:00 2001 From: polecat Date: Sun, 4 Dec 2005 13:55:27 +0000 Subject: [PATCH] Adding a schema for [link] to handle if you want to display links directly to your attachments within the context of the blog itself. Some redundant code here (3 files modified with cut & paste) so we may want to further abstract the External links: HTML generation code. --- .../i2p/syndie/sml/HTMLPreviewRenderer.java | 23 ++++++++--- .../src/net/i2p/syndie/sml/HTMLRenderer.java | 39 ++++++++++++++----- .../i2p/syndie/sml/ThreadedHTMLRenderer.java | 22 ++++++++--- apps/syndie/jsp/smlref.jsp | 3 +- 4 files changed, 64 insertions(+), 23 deletions(-) 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("

"); + _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/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");
  • [cut]more inside[/cut] = <a href="#">more inside...</a>
  • [quote][/quote] = Quoted text
  • [img attachment="1"]alt[/img] = use attachment 1 as an image with 'alt' as the alt text
  • +
  • [link schema="attachment" location="0"]text[/link] = offer a link to one of the attachments in your post (redundant, but useful in context sometimes) +
  • [link schema="eep" location="http://forum.i2p"]text[/link] = offer a link to an external resource (accessible with the given schema)
  • [blog name="name" bloghash="base64hash"]description[/blog] = link to all posts in the blog
  • [blog name="name" bloghash="base64hash" blogentry="1234"]description[/blog] = link to the specified post in the blog
  • [blog name="name" bloghash="base64hash" blogtag="tag"]description[/blog] = link to all posts in the blog with the specified tag
  • [blog name="name" blogtag="tag"]description[/blog] = link to all posts in all blogs with the specified tag
  • -
  • [link schema="eep" location="http://forum.i2p"]text[/link] = offer a link to an external resource (accessible with the given schema)
  • [archive name="name" description="they have good stuff" schema="eep" location="http://syndiemedia.i2p/archive/archive.txt"]foo![/archive] = offer an easy way to sync up with a new Syndie archive
  • SML headers are newline delimited key:value pairs. Example keys are: