package org.argeo.cms.acr;
import java.io.PrintStream;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
+import java.util.StringTokenizer;
import java.util.function.BiConsumer;
import javax.security.auth.login.LoginContext;
import org.argeo.api.acr.ContentSession;
import org.argeo.api.acr.DName;
import org.argeo.api.cms.CmsAuth;
+import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsSession;
import org.argeo.api.cms.directory.CmsDirectory;
import org.argeo.api.cms.directory.CmsUserManager;
return relativePath;
}
+ /** A path in the node repository */
+ public static String getDataPath(Content node) {
+ // TODO make it more configurable?
+ StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR);
+ buf.append(node.getPath());
+ return buf.toString();
+ }
+
+ /** A path in the node repository */
+ public static String getDataPathForUrl(Content node) {
+ return cleanPathForUrl(getDataPath(node));
+ }
+
+ /** Clean reserved URL characters for use in HTTP links. */
+ public static String cleanPathForUrl(String path) {
+ StringTokenizer st = new StringTokenizer(path, "/");
+ StringBuilder sb = new StringBuilder();
+ while (st.hasMoreElements()) {
+ sb.append('/');
+ String encoded = URLEncoder.encode(st.nextToken(), StandardCharsets.UTF_8);
+ encoded = encoded.replace("+", "%20");
+ sb.append(encoded);
+
+ }
+ return sb.toString();
+ }
+
/** Singleton. */
private ContentUtils() {
package org.argeo.cms.swt;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
-import java.util.StringTokenizer;
import org.argeo.api.cms.ux.CmsIcon;
import org.argeo.api.cms.ux.CmsStyle;
child.dispose();
}
- /** Clean reserved URL characters for use in HTTP links. */
- public static String cleanPathForUrl(String path) {
- StringTokenizer st = new StringTokenizer(path, "/");
- StringBuilder sb = new StringBuilder();
- while (st.hasMoreElements()) {
- sb.append('/');
- String encoded = URLEncoder.encode(st.nextToken(), StandardCharsets.UTF_8);
- encoded = encoded.replace("+", "%20");
- sb.append(encoded);
-
- }
- return sb.toString();
- }
-
/** Singleton. */
private CmsSwtUtils() {
}
import java.util.Optional;
import org.argeo.api.acr.Content;
-import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.ux.Cms2DSize;
+import org.argeo.cms.acr.ContentUtils;
import org.argeo.cms.acr.SvgAttrs;
import org.argeo.cms.swt.AbstractSwtImageManager;
-import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.ux.CmsUxUtils;
import org.eclipse.swt.graphics.ImageData;
}
protected String getDataPathForUrl(Content content) {
- return CmsSwtUtils.cleanPathForUrl(getDataPath(content));
- }
-
- /** A path in the node repository */
- protected String getDataPath(Content node) {
- // TODO make it more configurable?
- StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR);
- buf.append(node.getPath());
- return buf.toString();
+ return ContentUtils.getDataPathForUrl(content);
}
@Override
import java.net.URI;
import org.argeo.api.acr.Content;
-import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.acr.ContentUtils;
import org.argeo.cms.swt.widgets.StyledControl;
import org.eclipse.swt.widgets.Composite;
if (plainUri != null)
return plainUri;
if (linkedContent != null)
- return URI.create("#" + CmsSwtUtils.cleanPathForUrl(linkedContent.getPath()));
+ return URI.create("#" + ContentUtils.cleanPathForUrl(linkedContent.getPath()));
return null;
}