Index: rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/ComponentPageLinkRenderImpl.java
===================================================================
--- rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/ComponentPageLinkRenderImpl.java (revision 17080)
+++ rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/ComponentPageLinkRenderImpl.java (working copy)
@@ -22,6 +22,8 @@
**********************************************************************************/
package uk.ac.cam.caret.sakai.rwiki.component.service.impl;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.text.MessageFormat;
import uk.ac.cam.caret.sakai.rwiki.service.api.PageLinkRenderer;
@@ -70,16 +72,22 @@
* Generates a publiv navigation link
*/
public void appendLink(StringBuffer buffer, String name, String view) {
- name = NameHelper.globaliseName(name, localSpace);
- String url = MessageFormat.format(standardURLFormat,new Object[] {name});
- buffer.append(MessageFormat.format(urlFormat,new Object[] {XmlEscaper.xmlEscape(url),XmlEscaper.xmlEscape(view)}));
+ this.appendLink(buffer, name, view, null);
}
/**
* Generated a public navigation link
*/
public void appendLink(StringBuffer buffer, String name, String view, String anchor) {
name = NameHelper.globaliseName(name, localSpace);
- String url = MessageFormat.format(anchorURLFormat,new Object[] {name,anchor});
+ String url;
+ if (anchor != null && !"".equals(anchor)) {
+ url = MessageFormat.format(anchorURLFormat, new Object[] { encode(name),
+ encode(anchor) });
+ } else {
+ url = MessageFormat.format(standardURLFormat,
+ new Object[] { encode(name) });
+ }
+
buffer.append(MessageFormat.format(urlFormat,new Object[] {XmlEscaper.xmlEscape(url),XmlEscaper.xmlEscape(view)}));
}
/**
@@ -92,6 +100,11 @@
buffer.append(XmlEscaper.xmlEscape(view));
}
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated)
+ {
+ this.appendLink(buffer, name, view, anchor);
+ }
+
/*
* (non-Javadoc)
* @see uk.ac.cam.caret.sakai.rwiki.service.api.PageLinkRenderer#isCachable()
@@ -159,5 +172,24 @@
public boolean isUseCache() {
return useCache;
}
-
+ /**
+ * Takes a string to encode and encodes it as a UTF-8 URL-Encoded string.
+ *
+ * @param toEncode
+ * string to encode.
+ * @return url encoded string.
+ */
+ public static String encode(String toEncode) {
+ try {
+ String encoded = URLEncoder.encode(toEncode, "UTF-8");
+ encoded = encoded.replaceAll("\\+", "%20").replaceAll("%2F", "/");
+
+ return encoded;
+
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalStateException("UTF-8 Encoding is not supported when encoding: " + toEncode + ": " + e.getMessage());
+ }
+
+ }
+
}
Index: rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/RWikiObjectServiceImpl.java
===================================================================
--- rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/RWikiObjectServiceImpl.java (revision 17080)
+++ rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/service/impl/RWikiObjectServiceImpl.java (working copy)
@@ -454,10 +454,16 @@
rwo.getRealm());
PageLinkRenderer plr = new PageLinkRenderer() {
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated)
+ {
+ if (!autoGenerated)
+ {
+ this.appendLink(buffer, name, view, anchor);
+ }
+ }
public void appendLink(StringBuffer buffer, String name,
String view) {
- referenced
- .add(NameHelper.globaliseName(name, currentSpace));
+ this.appendLink(buffer, name, view, null);
}
public void appendLink(StringBuffer buffer, String name,
@@ -481,10 +487,11 @@
}
public void setCachable(boolean cachable) {
+ //do nothing
}
public void setUseCache(boolean b) {
-
+ //do nothing
}
};
Index: rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/radeox/service/impl/SpecializedRenderEngine.java
===================================================================
--- rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/radeox/service/impl/SpecializedRenderEngine.java (revision 17080)
+++ rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/radeox/service/impl/SpecializedRenderEngine.java (working copy)
@@ -58,7 +58,10 @@
this.renderEngine = renderEngine;
}
-
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated) {
+ plr.appendLink(buffer, name, view, anchor, autoGenerated);
+ }
+
public void appendLink(StringBuffer buffer, String name, String view) {
plr.appendLink(buffer, name, view);
}
Index: rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/IndexMacro.java
===================================================================
--- rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/IndexMacro.java (revision 17080)
+++ rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/IndexMacro.java (working copy)
@@ -194,7 +194,7 @@
writer.write("
");
StringBuffer sb = new StringBuffer(chars.length * 3);
- plr.appendLink(sb, new String(chars), new String(chars, start, chars.length - start));
+ plr.appendLink(sb, new String(chars), new String(chars, start, chars.length - start), null, true);
writer.write(sb.toString());
writer.write("\n");
}
Index: rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/RecentChangesMacro.java
===================================================================
--- rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/RecentChangesMacro.java (revision 17080)
+++ rwiki-service-impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/macros/RecentChangesMacro.java (working copy)
@@ -138,8 +138,13 @@
while (iterator.hasNext()) {
RWikiObject object = (RWikiObject) iterator.next();
if ( objectService.checkRead(object) ) {
- //SAK-2671 We should localize against the renderspace not the object's realm!
- writer.write("\n* [" + NameHelper.localizeName(object.getName(), localRenderSpace) + "]");
+ // SAK-2671 We should localize against the renderspace not
+ // the object's realm
+ String linkName = NameHelper.localizeName(object.getName(), localRenderSpace);
+ StringBuffer buffer = new StringBuffer();
+ spRe.appendLink(buffer, linkName, linkName, null, true);
+ writer.write("\n* ");
+ writer.write(buffer.toString());
writer.write(" was last modified "
+ dateFormat.format(object.getVersion()));
Index: rwiki-service/src/java/uk/ac/cam/caret/sakai/rwiki/service/api/PageLinkRenderer.java
===================================================================
--- rwiki-service/src/java/uk/ac/cam/caret/sakai/rwiki/service/api/PageLinkRenderer.java (revision 17080)
+++ rwiki-service/src/java/uk/ac/cam/caret/sakai/rwiki/service/api/PageLinkRenderer.java (working copy)
@@ -76,4 +76,14 @@
*/
void setUseCache(boolean b);
+ /**
+ * append an auto generated link to the buffer.
+ * @param buffer
+ * @param name
+ * @param view
+ * @param anchor
+ * @param autoGenerated TODO
+ */
+ void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated);
+
}
Index: rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PublicPageLinkRendererImpl.java
===================================================================
--- rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PublicPageLinkRendererImpl.java (revision 17080)
+++ rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PublicPageLinkRendererImpl.java (working copy)
@@ -58,10 +58,7 @@
* Generates a publiv navigation link
*/
public void appendLink(StringBuffer buffer, String name, String view) {
- name = NameHelper.globaliseName(name, localSpace);
- ViewBean vb = new ViewBean(name, localRealm);
-
- buffer.append("" + XmlEscaper.xmlEscape(view) + "");
+ this.appendLink(buffer, name, view, null);
}
/**
* Generated a public navigation link
@@ -69,9 +66,15 @@
public void appendLink(StringBuffer buffer, String name, String view, String anchor) {
name = NameHelper.globaliseName(name, localSpace);
ViewBean vb = new ViewBean(name, localRealm);
- vb.setAnchor(anchor);
+ if (anchor != null && !"".equals(anchor)) {
+ vb.setAnchor(anchor);
+ }
buffer.append("" + XmlEscaper.xmlEscape(view) + "");
}
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated) {
+ this.appendLink(buffer, name, view, anchor);
+ }
+
/**
* Generates a create link
*/
Index: rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PageLinkRendererImpl.java
===================================================================
--- rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PageLinkRendererImpl.java (revision 17080)
+++ rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PageLinkRendererImpl.java (working copy)
@@ -48,16 +48,15 @@
this.localRealm = localRealm;
}
public void appendLink(StringBuffer buffer, String name, String view) {
- name = NameHelper.globaliseName(name, localSpace);
- ViewBean vb = new ViewBean(name, localRealm);
-
- buffer.append("" + XmlEscaper.xmlEscape(view) + "");
+ this.appendLink(buffer, name, view, null);
}
public void appendLink(StringBuffer buffer, String name, String view, String anchor) {
name = NameHelper.globaliseName(name, localSpace);
ViewBean vb = new ViewBean(name, localRealm);
- vb.setAnchor(anchor);
+ if (anchor != null && !"".equals(anchor)) {
+ vb.setAnchor(anchor);
+ }
buffer.append("" + XmlEscaper.xmlEscape(view) + "");
}
@@ -67,6 +66,9 @@
ViewBean vb = new ViewBean(name, localRealm);
buffer.append("" + XmlEscaper.xmlEscape(view) + "?");
}
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated) {
+ this.appendLink(buffer, name, view, anchor);
+ }
/*
* (non-Javadoc)
* @see uk.ac.cam.caret.sakai.rwiki.service.api.PageLinkRenderer#isCachable()
Index: rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PopulateServiceImpl.java
===================================================================
--- rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PopulateServiceImpl.java (revision 17080)
+++ rwiki/src/java/uk/ac/cam/caret/sakai/rwiki/tool/service/impl/PopulateServiceImpl.java (working copy)
@@ -213,6 +213,11 @@
referenced
.add(NameHelper.globaliseName(name, currentRealm));
}
+ public void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated) {
+ if (!autoGenerated) {
+ this.appendLink(buffer, name, view, anchor);
+ }
+ }
public boolean isCachable() {
return false; // should not cache this render op
@@ -223,9 +228,10 @@
}
public void setCachable(boolean cachable) {
+ //do nothing
}
public void setUseCache(boolean b) {
-
+ //do nothing
}
};