Parser delegate impl tweaks.
diff --git a/src/fniki/wiki/WikiApp.java b/src/fniki/wiki/WikiApp.java
--- a/src/fniki/wiki/WikiApp.java
+++ b/src/fniki/wiki/WikiApp.java
@@ -284,8 +284,8 @@ public class WikiApp implements ChildCon
return containerPrefix(); // LATER: revisit.
}
- protected String getFproxyPrefix() {
- return mContext.getString("fproxy_prefix", null);
+ protected boolean getFreenetLinksAllowed(){
+ return mContext.getString("fproxy_prefix", null) != null;
}
protected boolean getImagesAllowed() {
@@ -295,9 +295,17 @@ public class WikiApp implements ChildCon
protected String makeLink(String containerRelativePath) {
return mContext.makeLink(containerRelativePath);
}
+
+ protected String makeFreenetLink(String uri) {
+ String prefix = mContext.getString("fproxy_prefix", null);
+ if (prefix == null) {
+ throw new RuntimeException("fproxy_prefix is null!");
+ }
+ return makeFproxyHref(prefix, uri);
+ }
}
- // Hrrmm.. kind of weird. I can't remember why I used this static method instead of a constant.
+ // Hmmmm... kind of weird. I can't remember why I used this static method instead of a constant.
// NO trailing slash.
private static String containerPrefix() { return "/plugins/fniki.freenet.plugin.Fniki"; }
diff --git a/src/fniki/wiki/WikiParserDelegate.java b/src/fniki/wiki/WikiParserDelegate.java
--- a/src/fniki/wiki/WikiParserDelegate.java
+++ b/src/fniki/wiki/WikiParserDelegate.java
@@ -36,68 +36,73 @@ import static fniki.wiki.HtmlUtils.*;
import static fniki.wiki.Validations.*;
public abstract class WikiParserDelegate implements FreenetWikiTextParser.ParserDelegate {
- final ArchiveManager mArchiveManager;
+ final protected ArchiveManager mArchiveManager;
public WikiParserDelegate(ArchiveManager archiveManager) {
mArchiveManager = archiveManager;
}
protected abstract String getContainerPrefix();
- protected abstract String getFproxyPrefix();
+ protected abstract boolean getFreenetLinksAllowed();
protected abstract boolean getImagesAllowed();
protected abstract String makeLink(String containerRelativePath);
+ protected abstract String makeFreenetLink(String uri);
+
+ protected boolean processedLocalChangesMacro(StringBuilder sb, String text) {
+ try { // Should never happen while dumping and existing archive to html.
+ FileManifest.Changes changes = mArchiveManager.getLocalChanges();
+ if (changes.isUnmodified()) {
+ sb.append("<br>No local changes.<br>");
+ }
+ appendChangesHtml(changes, getContainerPrefix(), sb);
+ } catch (IOException ioe) {
+ sb.append("{ERROR PROCESSING LOCALCHANGES MACRO}");
+ }
+ return true;
+ }
+
+ protected boolean processedTitleIndexMacro(StringBuilder sb, String text) {
+ try {
+ for (String name : mArchiveManager.getStorage().getNames()) {
+ appendPageLink(getContainerPrefix(), sb, name, null, true);
+ sb.append("<br>");
+ }
+ } catch (IOException ioe) {
+ sb.append("{ERROR PROCESSING TITLEINDEX MACRO}");
+ return true;
+ }
+ return true;
+ }
public boolean processedMacro(StringBuilder sb, String text) {
if (text.equals("LocalChanges")) {
- try {
- FileManifest.Changes changes = mArchiveManager.getLocalChanges();
- if (changes.isUnmodified()) {
- sb.append("<br>No local changes.<br>");
- return true;
- }
- appendChangesHtml(changes, getContainerPrefix(), sb);
- return true;
- } catch (IOException ioe) {
- sb.append("{ERROR PROCESSING LOCALCHANGES MACRO}");
- return true;
- }
+ return processedLocalChangesMacro(sb, text);
} else if (text.equals("TitleIndex")) {
- try {
- for (String name : mArchiveManager.getStorage().getNames()) {
- appendPageLink(getContainerPrefix(), sb, name, null, true);
- sb.append("<br>");
- }
- } catch (IOException ioe) {
- sb.append("{ERROR PROCESSING TITLEINDEX MACRO}");
- return true;
- }
- return true;
+ return processedTitleIndexMacro(sb, text);
}
-
return false;
}
// CHK, SSK, USK freenet links.
public void appendLink(StringBuilder sb, String text) {
- String fproxyPrefix = getFproxyPrefix();
-
String[] link=split(text, '|');
- if (fproxyPrefix != null &&
+ if (getFreenetLinksAllowed() &&
isValidFreenetUri(link[0])) {
- sb.append("<a href=\""+ makeFproxyHref(fproxyPrefix, link[0].trim()) +"\" rel=\"nofollow\">");
- sb.append(escapeHTML(unescapeHTML(link.length>=2 && !isEmpty(link[1].trim())? link[1]:link[0])));
- sb.append("</a>");
- return;
- }
- if (isAlphaNumOrUnder(link[0])) {
- // Link to an internal wiki page.
- sb.append("<a href=\""+ makeHref(makeLink("/" + link[0].trim())) +"\" rel=\"nofollow\">");
+ sb.append("<a href=\""+ makeFreenetLink(link[0].trim()) +"\">");
sb.append(escapeHTML(unescapeHTML(link.length>=2 && !isEmpty(link[1].trim())? link[1]:link[0])));
sb.append("</a>");
return;
}
- sb.append("<a href=\"" + makeHref(makeLink("/ExternalLink")) +"\" rel=\"nofollow\">");
+ if (isAlphaNumOrUnder(link[0])) {
+ // Link to an internal wiki page.
+ sb.append("<a href=\""+ makeHref(makeLink("/" + link[0].trim())) +"\">");
+ sb.append(escapeHTML(unescapeHTML(link.length>=2 && !isEmpty(link[1].trim())? link[1]:link[0])));
+ sb.append("</a>");
+ return;
+ }
+
+ sb.append("<a href=\"" + makeHref(makeLink("/ExternalLink")) +"\">");
sb.append(escapeHTML(unescapeHTML(link.length>=2 && !isEmpty(link[1].trim())? link[1]:link[0])));
sb.append("</a>");
}
@@ -109,18 +114,17 @@ public abstract class WikiParserDelegate
return;
}
- String fproxyPrefix = getFproxyPrefix();
- if (fproxyPrefix == null) {
+ if (!getFreenetLinksAllowed()) {
+ // Hmmm... A little wonky. But this is ok.
sb.append("{FPROXY PREFIX NOT SET. IMAGE WIKITEXT IGNORED}");
return;
}
String[] link=split(text, '|');
- if (fproxyPrefix != null &&
- isValidFreenetUri(link[0]) &&
+ if (isValidFreenetUri(link[0]) &&
!link[0].startsWith("freenet:USK@")) {
String alt=escapeHTML(unescapeHTML(link.length>=2 && !isEmpty(link[1].trim())? link[1]:link[0]));
- sb.append("<img src=\"" + makeFproxyHref(fproxyPrefix, link[0].trim())
+ sb.append("<img src=\"" + makeFreenetLink(link[0].trim())
+ "\" alt=\""+alt+"\" title=\""+alt+"\" />");
return;
}