Use UI context http request
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2015 19:41:35 +0000 (19:41 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2015 19:41:35 +0000 (19:41 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8555 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java
org.argeo.eclipse.ui.rap/src/org/argeo/eclipse/ui/specific/UiContext.java

index 883d84df4450e710c6ef44aad792a8e1e6c624ca..2ff9aff58e9275a043dc28b636a9c453bac53f42 100644 (file)
@@ -275,33 +275,7 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint
                        else
                                title = getBaseTitle();
 
-                       HttpServletRequest request = RWT.getRequest();
-                       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());
+                       publishMetaData(title);
 
                        if (log.isTraceEnabled())
                                log.trace("node=" + node + ", state=" + state + " (page="
@@ -318,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<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;
        }
index ebececf154cae3d0bed8b6f2d209761cf56c5ad7..ec3b2e96a62eb18cd162a25b167625223e03e984 100644 (file)
@@ -9,18 +9,23 @@ import org.eclipse.swt.widgets.Display;
 
 /** Singleton class providing single sources infos about the UI context. */
 public class UiContext {
-
+       /** Can be null, thus indicating that we are not in a web context. */
        public static HttpServletRequest getHttpRequest() {
                return RWT.getRequest();
        }
 
        public static Locale getLocale() {
-               return RWT.getUISession().getLocale();
+               if (Display.getCurrent() != null)
+                       return RWT.getUISession().getLocale();
+               else
+                       return Locale.getDefault();
        }
 
        public static void setLocale(Locale locale) {
                if (Display.getCurrent() != null)
                        RWT.getUISession().setLocale(locale);
+               else
+                       Locale.setDefault(locale);
        }
 
        /** Can always be null */