import org.argeo.ArgeoException;
import org.argeo.cms.auth.AuthConstants;
import org.argeo.cms.auth.HttpRequestCallbackHandler;
+import org.argeo.cms.util.CmsUtils;
import org.argeo.eclipse.ui.specific.UiContext;
import org.argeo.jcr.JcrUtils;
import org.eclipse.rap.rwt.RWT;
else
title = getBaseTitle();
- HttpServletRequest request = RWT.getRequest();
- String url = request.getRequestURL().append('!')
- .append(node.getPath()).toString();
- String imgUrl = null;
- for (NodeIterator it = node.getNodes(); it.hasNext();) {
- Node child = it.nextNode();
- if (child.isNodeType(CmsTypes.CMS_IMAGE))
- imgUrl = request
- .getRequestURL()
- .append("data/public/node/")
- .append(child.getSession().getWorkspace().getName())
- .append(child.getPath()).toString();
- }
-
- StringBuilder js = new StringBuilder();
- js.append("document.title = '" + title + "';");
- js.append("var metas = document.getElementsByTagName('meta');");
- js.append("for (var i=0; i<metas.length; i++) {");
- js.append(" if (metas[i].getAttribute('property'))");
- js.append(" if(metas[i].getAttribute('property')=='og:title')");
- js.append(" metas[i].setAttribute('content','" + title + "');");
- js.append(" else if(metas[i].getAttribute('property')=='og:url')");
- js.append(" metas[i].setAttribute('content','" + url + "');");
- if (imgUrl != null) {
- js.append(" else if(metas[i].getAttribute('property')=='og:image')");
- js.append(" metas[i].setAttribute('content','" + imgUrl
- + "');");
- } else {
- // TODO reset default image
- }
- js.append(" };");
- jsExecutor.execute(js.toString());
+ publishMetaData(title);
if (log.isTraceEnabled())
log.trace("node=" + node + ", state=" + state + " (page="
}
}
+ private void publishMetaData(String title) throws RepositoryException {
+ HttpServletRequest request = UiContext.getHttpRequest();
+ if (request == null)
+ return;
+ String url = CmsUtils.getCanonicalUrl(node, request);
+ String imgUrl = null;
+ for (NodeIterator it = node.getNodes(); it.hasNext();) {
+ Node child = it.nextNode();
+ if (child.isNodeType(CmsTypes.CMS_IMAGE))
+ imgUrl = CmsUtils.getDataUrl(child, request);
+ }
+
+ StringBuilder js = new StringBuilder();
+ js.append("document.title = '" + title + "';");
+ js.append("var metas = document.getElementsByTagName('meta');");
+ js.append("for (var i=0; i<metas.length; i++) {");
+ js.append(" if (metas[i].getAttribute('property'))");
+ js.append(" if(metas[i].getAttribute('property')=='og:title')");
+ js.append(" metas[i].setAttribute('content','" + title + "');");
+ js.append(" else if(metas[i].getAttribute('property')=='og:url')");
+ js.append(" metas[i].setAttribute('content','" + url + "');");
+ if (imgUrl != null) {
+ js.append(" else if(metas[i].getAttribute('property')=='og:image')");
+ js.append(" metas[i].setAttribute('content','" + imgUrl + "');");
+ } else {
+ // TODO reset default image
+ }
+ js.append(" };");
+ jsExecutor.execute(js.toString());
+ }
+
protected Node getNode() {
return node;
}