X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FAbstractCmsEntryPoint.java;h=2ff9aff58e9275a043dc28b636a9c453bac53f42;hb=0e53a50b7c0c876d53ab54a714937b3396dc1f90;hp=d27ed006e6f282065264a4c2b57fa13db510b1dc;hpb=86db10fcb2299ebf71d5599a80dc54444b26f893;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java index d27ed006e..2ff9aff58 100644 --- a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java +++ b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.Map; import javax.jcr.Node; +import javax.jcr.NodeIterator; import javax.jcr.Property; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -14,12 +15,14 @@ import javax.security.auth.Subject; import javax.security.auth.login.CredentialNotFoundException; import javax.security.auth.login.LoginContext; import javax.security.auth.login.LoginException; +import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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; @@ -232,18 +235,6 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint }); } - // @Override - // public Object local(Msg msg) { - // String key = msg.getId(); - // int lastDot = key.lastIndexOf('.'); - // String className = key.substring(0, lastDot); - // String fieldName = key.substring(lastDot + 1); - // Locale locale = RWT.getLocale(); - // ResourceBundle rb = ResourceBundle.getBundle(className, locale, - // msg.getClassLoader()); - // return rb.getString(fieldName); - // } - /** Sets the state of the entry point and retrieve the related JCR node. */ protected synchronized String setState(String newState) { String previousState = this.state; @@ -283,7 +274,8 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint + " - " + getBaseTitle(); else title = getBaseTitle(); - jsExecutor.execute("document.title = \"" + title + "\""); + + publishMetaData(title); if (log.isTraceEnabled()) log.trace("node=" + node + ", state=" + state + " (page=" @@ -300,6 +292,37 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint } } + 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