Author: rfelden
Date: Tue Dec 11 14:44:56 2007
New Revision: 19360

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19360&repname=
=3Djahia
Log:
GWT dynamic sitemap module

Added:
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/GWTSitemapManager.gwt.xml
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/client/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/public/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/public/gwtsitemap.html
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTJahiaPageWrapper.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTLink.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/GWTSitemapManager.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTree.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItem.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItemChildren.java
Modified:
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaService.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaServiceAsync.java
    branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/server/JahiaServiceImpl.java

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/=
gwt/gwtsitemap/GWTSitemapManager.gwt.xml
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt/gwtsitemap/GWTSit=
emapManager.gwt.xml&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/GWTSitemapManager.gwt.xml (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/GWTSitemapManager.gwt.xml Tue Dec 11 14:44:56 2007
@@ -0,0 +1,10 @@
+<module>
+    <inherits name=3D'com.google.gwt.user.User'/>
+    <inherits name=3D"com.google.gwt.i18n.I18N"/>
+    <!-- jahia services -->
+    <inherits name=3D'org.jahia.ajax.gwt.base.jahiaService'/>
+    <!-- css -->
+    <!--stylesheet src=3D'layoutmanager.css'/-->
+
+    <entry-point class=3D'org.jahia.ajax.gwt.gwtsitemap.client.GWTSitemapM=
anager'/>
+</module>
\ No newline at end of file

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/=
gwt/gwtsitemap/public/gwtsitemap.html
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt/gwtsitemap/public=
/gwtsitemap.html&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/public/gwtsitemap.html (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/conf/java/org/jahia/ajax/gwt=
/gwtsitemap/public/gwtsitemap.html Tue Dec 11 14:44:56 2007
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<head>
+    <script type=3D"text/javascript">
+        var jahiaGWTParameters =3D {
+            pid: "9",
+            op: "edit",
+            serviceEntryPoint: "/org.jahia.ajax.gwt.gwtsitemap.GWTSitemapM=
anager/"
+        };
+    </script>
+</head>
+<body>
+<!-- The fully-qualified module name, followed by 'nocache.js' -->
+<script language=3D"javascript" src=3D"org.jahia.ajax.gwt.gwtsitemap.GWTSi=
temapManager.nocache.js"></script>
+
+
+<!-- layout area-->
+<div id=3D"siteMap"></div>
+</body>
+</html>
\ No newline at end of file

Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gw=
t/base/client/JahiaService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base/client/JahiaService.java=
&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaService.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaService.java Tue Dec 11 14:44:56 2007
@@ -1,9 +1,12 @@
 package org.jahia.ajax.gwt.base.client;
 =

-import com.google.gwt.user.client.rpc.ServiceDefTarget;
-import com.google.gwt.user.client.rpc.RemoteService;
 import com.google.gwt.core.client.GWT;
-import org.jahia.ajax.gwt.base.client.beans.*;
+import com.google.gwt.user.client.rpc.RemoteService;
+import com.google.gwt.user.client.rpc.ServiceDefTarget;
+import org.jahia.ajax.gwt.base.client.beans.GWTJahiaPageWrapper;
+import org.jahia.ajax.gwt.base.client.beans.JahiaGWTContainer;
+import org.jahia.ajax.gwt.base.client.beans.JahiaGWTContainerList;
+import org.jahia.ajax.gwt.base.client.beans.JahiaGWTPage;
 import org.jahia.ajax.gwt.base.client.config.JahiaGWTParameters;
 import org.jahia.ajax.gwt.base.client.util.URL;
 =

@@ -57,7 +60,11 @@
 =

     public void saveUserProperties(JahiaGWTPage page, List properties);
 =

-     public Map loadPageUserProperties(JahiaGWTPage page,String propType);
+    public Map loadPageUserProperties(JahiaGWTPage page,String propType);
+
+    public GWTJahiaPageWrapper[] getSubPagesForCurrentUser(int pid, String=
 mode, GWTJahiaPageWrapper parentPage) ;
+
+    public GWTJahiaPageWrapper getHomePageForCurrentUser(int pid, String m=
ode, boolean recursive) ;
 =

 =

     /**

Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gw=
t/base/client/JahiaServiceAsync.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base/client/JahiaServiceAsync=
.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaServiceAsync.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/JahiaServiceAsync.java Tue Dec 11 14:44:56 2007
@@ -15,44 +15,47 @@
  */
 public interface JahiaServiceAsync {
 =

-    public void loadContainerList(JahiaGWTPage page, String containerListN=
ame, AsyncCallback async);
+    void loadContainerList(JahiaGWTPage page, String containerListName, As=
yncCallback async);
 =

-    public void insertAddContainerHref(JahiaGWTPage page, AsyncCallback as=
ync);
+    void insertAddContainerHref(JahiaGWTPage page, AsyncCallback async);
 =

-    public void saveContainerProperty(JahiaGWTPage page, int containerId, =
String propertyName, String propertyValue, AsyncCallback async);
+    void saveContainerProperty(JahiaGWTPage page, int containerId, String =
propertyName, String propertyValue, AsyncCallback async);
 =

-    public void getContent(JahiaGWTPage page, int containerId, AsyncCallba=
ck async);
+    void getContent(JahiaGWTPage page, int containerId, AsyncCallback asyn=
c);
 =

-    public void getFieldValues(int containerId, String field, AsyncCallbac=
k async);
+    void getFieldValues(int containerId, String field, AsyncCallback async=
);
 =

-    public void drawAdministrationLauncher(JahiaGWTPage page, AsyncCallbac=
k async);
+    void drawAdministrationLauncher(JahiaGWTPage page, AsyncCallback async=
);
 =

-    public void drawLoginUrl(JahiaGWTPage page, AsyncCallback async);
+    void drawLogoutUrl(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawLogoutUrl(JahiaGWTPage page, AsyncCallback async);
+    void drawLoginUrl(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawPagePropertiesUrl(JahiaGWTPage page, AsyncCallback asy=
nc);
+    void drawPagePropertiesUrl(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawAddContainerUrl(JahiaGWTPage page, int parentConatiner=
Id,String containerListName, AsyncCallback async);
+    void workflowLauncher(JahiaGWTPage page, AsyncCallback async);
 =

-    public void workflowLauncher(JahiaGWTPage page, AsyncCallback async);
+    void loadContainer(int containerId, AsyncCallback async);
 =

-    public void loadContainer(int containerId, AsyncCallback async);
+    void getPagePropertyValue(JahiaGWTPage page, String propertyName, Asyn=
cCallback async);
 =

-    public void getPagePropertyValue(JahiaGWTPage page, String propertyNam=
e, AsyncCallback async);
+    void updatePagePropertyValue(JahiaGWTPage page, String propertyName, S=
tring propertyValue, AsyncCallback async);
 =

-    public void updatePagePropertyValue(JahiaGWTPage page, String property=
Name, String propertyValue, AsyncCallback async);
+    void drawNormalModeLink(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawNormalModeLink(JahiaGWTPage page, AsyncCallback async);
+    void drawEditModeLink(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawEditModeLink(JahiaGWTPage page, AsyncCallback async);
+    void drawPreviewModeLink(JahiaGWTPage page, AsyncCallback async);
 =

-    public void drawPreviewModeLink(JahiaGWTPage page, AsyncCallback async=
);
+    void drawAddContainerUrl(JahiaGWTPage page, int parentConatinerId, Str=
ing containerListName, AsyncCallback async);
 =

-    public void drawFileManagerLauncher(JahiaGWTPage page,AsyncCallback as=
ync);
+    void drawFileManagerLauncher(JahiaGWTPage page, AsyncCallback async);
 =

-    public void saveUserProperties(JahiaGWTPage page, List properties,Asyn=
cCallback async);
+    void saveUserProperties(JahiaGWTPage page, List properties, AsyncCallb=
ack async);
 =

-    public void loadPageUserProperties(JahiaGWTPage page,String propType,A=
syncCallback async);
+    void loadPageUserProperties(JahiaGWTPage page, String propType, AsyncC=
allback async);
 =

+    void getSubPagesForCurrentUser(int pid, String mode, GWTJahiaPageWrapp=
er parentPage, AsyncCallback async) ;
+
+    void getHomePageForCurrentUser(int pid, String mode, boolean recursive=
, AsyncCallback async);
 }

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/b=
ase/client/beans/GWTJahiaPageWrapper.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base/client/beans/GWTJ=
ahiaPageWrapper.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTJahiaPageWrapper.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTJahiaPageWrapper.java Tue Dec 11 14:44:56 2007
@@ -0,0 +1,64 @@
+package org.jahia.ajax.gwt.base.client.beans;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+import java.util.ArrayList;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @author rfelden
+ * @version 5 d=C3=A9c. 2007
+ */
+public class GWTJahiaPageWrapper implements IsSerializable {
+
+    private int pid ;
+    private String title ;
+    private boolean hasChildren ;
+    private String link =3D "#" ;
+    private GWTJahiaPageWrapper[] subpages =3D null ;
+
+    public GWTJahiaPageWrapper() {
+    }
+
+    public int getPid() {
+        return pid;
+    }
+
+    public void setPid(int pid) {
+        this.pid =3D pid;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title =3D title;
+    }
+
+    public boolean hasChildren() {
+        return hasChildren;
+    }
+
+    public void setHasChildren(boolean hasChildren) {
+        this.hasChildren =3D hasChildren;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link =3D link;
+    }
+
+    public void setSubpages(GWTJahiaPageWrapper[] pages) {
+        subpages =3D pages ;
+    }
+
+    public GWTJahiaPageWrapper[] getSubpages() {
+        return subpages;
+    }
+    =

+}

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/b=
ase/client/beans/GWTLink.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base/client/beans/GWTL=
ink.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTLink.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/client/beans/GWTLink.java Tue Dec 11 14:44:56 2007
@@ -0,0 +1,18 @@
+package org.jahia.ajax.gwt.base.client.beans;
+
+import com.google.gwt.user.client.ui.HTML;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @author rfelden
+ * @version 10 d=C3=A9c. 2007
+ */
+public class GWTLink extends HTML {
+
+    public GWTLink(String label, String link) {
+        super() ;
+        setHTML("<a href=3D\"" + link + "\">"+ label + "</a>") ;
+    }
+
+}

Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gw=
t/base/server/JahiaServiceImpl.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base/server/JahiaServiceImpl.=
java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/server/JahiaServiceImpl.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/base=
/server/JahiaServiceImpl.java Tue Dec 11 14:44:56 2007
@@ -2,10 +2,7 @@
 =

 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 import org.jahia.ajax.gwt.base.client.JahiaService;
-import org.jahia.ajax.gwt.base.client.beans.JahiaGWTContainer;
-import org.jahia.ajax.gwt.base.client.beans.JahiaGWTPage;
-import org.jahia.ajax.gwt.base.client.beans.JahiaGWTContainerList;
-import org.jahia.ajax.gwt.base.client.beans.GWTPageUserProperty;
+import org.jahia.ajax.gwt.base.client.beans.*;
 import org.jahia.params.ProcessingContext;
 import org.jahia.params.ProcessingContextFactory;
 import org.jahia.data.JahiaData;
@@ -20,11 +17,13 @@
 import org.jahia.services.pages.JahiaPageService;
 import org.jahia.services.pages.PageProperty;
 import org.jahia.services.pages.JahiaPage;
+import org.jahia.services.pages.PageLoadFlags;
 import org.jahia.services.pagesusers.JahiaPageUserPropService;
 import org.jahia.services.pagesusers.PageUserProperty;
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.resourcebundle.ResourceBundleMarker;
 import org.jahia.content.ContentPageKey;
+import org.jahia.exceptions.JahiaException;
 import org.springframework.beans.factory.BeanFactory;
 import org.apache.log4j.Logger;
 =

@@ -524,6 +523,107 @@
         }
     }
 =

+    // todo add rank
+    /**
+     * Get the subpages for a given jahia page, considering the current us=
er and the mode.
+     *
+     * @param pid the pid of the current paqe (to create processing contex=
t)
+     * @param mode the current mode (to create processing context)
+     * @param parentPage the parent page as a GWT-specific bean (page wrap=
per)
+     * @return an array of pages (page wrapper) containing all visible sub=
pages
+     */
+    public GWTJahiaPageWrapper[] getSubPagesForCurrentUser(int pid, String=
 mode, GWTJahiaPageWrapper parentPage) {
+        ProcessingContext jParams =3D retrieveParamBean(pid, mode);
+        if (parentPage =3D=3D null) { // this is the home page case
+            JahiaPage jPage =3D jParams.getSite().getHomePage() ;
+            parentPage =3D new GWTJahiaPageWrapper() ;
+            parentPage.setTitle(jPage.getTitle()) ;
+            parentPage.setPid(jPage.getID());
+        }
+
+        ArrayList<GWTJahiaPageWrapper> children =3D new ArrayList<GWTJahia=
PageWrapper>() ;
+        try {
+            Vector<JahiaPage> childs =3D servicesRegistry.getJahiaPageServ=
ice().getPageChilds(parentPage.getPid(), PageLoadFlags.ALL, jParams.getUser=
()) ;
+
+            // sort children
+            for (JahiaPage page: childs) {
+                if (page.hasActiveEntries() || (!page.hasActiveEntries() &=
& page.checkWriteAccess(jParams.getUser())) ) {
+                    GWTJahiaPageWrapper wPage =3D new GWTJahiaPageWrapper(=
) ;
+                    wPage.setTitle(page.getTitle());
+                    wPage.setPid(page.getID());
+                    wPage.setLink(page.getURL(jParams));
+                    wPage.setHasChildren(servicesRegistry.getJahiaPageServ=
ice().pageHasChildren(page.getID(), PageLoadFlags.ALL, jParams.getUser()));
+                    children.add(wPage) ;
+                }
+            }
+            =

+        } catch (JahiaException e) {
+            logger.error("could not find children for page " + pid, e);
+        }
+        return children.toArray(new GWTJahiaPageWrapper[0]) ;
+    }
+
+    /**
+     * Retrieve the home page for the current site in order to get the sit=
emap entry point.
+     *
+     * @param pid the pid of the current page (to create processing contex=
t)
+     * @param mode the current mode (to create processing context)
+     * @param rec choose whether the sitemap should be retrieved in one ca=
ll or not
+     * @return the home page as a GWT specific bean (page wrapper) contain=
ing all subpages if specified (arg "rec")
+     */
+    public GWTJahiaPageWrapper getHomePageForCurrentUser(int pid, String m=
ode, boolean rec) {
+        ProcessingContext jParams =3D retrieveParamBean(pid, mode);
+        GWTJahiaPageWrapper page =3D new GWTJahiaPageWrapper() ;
+        JahiaPage home =3D jParams.getSite().getHomePage() ;
+        page.setPid(home.getID());
+        page.setTitle(home.getTitle());
+        try {
+            page.setLink(home.getURL(jParams));
+            page.setHasChildren(servicesRegistry.getJahiaPageService().pag=
eHasChildren(home.getID(), PageLoadFlags.ALL, jParams.getUser()));
+            if (rec && page.hasChildren()) {
+                page.setSubpages(getSubPagesForCurrentUserRec(page.getPid(=
), jParams));
+            }
+        } catch (JahiaException e) {
+            page.setHasChildren(true);
+            logger.error("could not retrieve home page", e);
+        }
+        return page ;
+    }
+
+    /**
+     * Recursive method to get the complete sitemap in one call
+     *
+     * @param parentId
+     * @param jParams
+     * @return
+     */
+    private GWTJahiaPageWrapper[] getSubPagesForCurrentUserRec(int parentI=
d, ProcessingContext jParams) {
+
+        ArrayList<GWTJahiaPageWrapper> children =3D new ArrayList<GWTJahia=
PageWrapper>() ;
+        try {
+            Vector<JahiaPage> childs =3D servicesRegistry.getJahiaPageServ=
ice().getPageChilds(parentId, PageLoadFlags.ALL, jParams.getUser()) ;
+
+            // sort children
+            for (JahiaPage page: childs) {
+                if (page.hasActiveEntries() || (!page.hasActiveEntries() &=
& page.checkWriteAccess(jParams.getUser())) ) {
+                    GWTJahiaPageWrapper wPage =3D new GWTJahiaPageWrapper(=
) ;
+                    wPage.setTitle(page.getTitle());
+                    wPage.setPid(page.getID());
+                    wPage.setLink(page.getURL(jParams));
+                    wPage.setHasChildren(servicesRegistry.getJahiaPageServ=
ice().pageHasChildren(page.getID(), PageLoadFlags.ALL, jParams.getUser()));
+                    if (wPage.hasChildren()) {
+                        wPage.setSubpages(getSubPagesForCurrentUserRec(wPa=
ge.getPid(), jParams));
+                    }
+                    children.add(wPage) ;
+                }
+            }
+
+        } catch (JahiaException e) {
+            logger.error("could not find children for page " + parentId, e=
);
+        }
+        return children.toArray(new GWTJahiaPageWrapper[0]) ;
+    }
+
     public String getHTML(String jspPath) {
         logger.debug("get html from a jsp file");
         String output =3D null;

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/g=
wtsitemap/client/GWTSitemapManager.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwtsitemap/client/GWTS=
itemapManager.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/GWTSitemapManager.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/GWTSitemapManager.java Tue Dec 11 14:44:56 2007
@@ -0,0 +1,38 @@
+package org.jahia.ajax.gwt.gwtsitemap.client;
+
+import com.google.gwt.user.client.ui.*;
+import org.jahia.ajax.gwt.base.client.JahiaPageEntryPoint;
+import org.jahia.ajax.gwt.base.client.beans.JahiaGWTPage;
+import org.jahia.ajax.gwt.gwtsitemap.client.widgets.GWTSitemapTree;
+
+/**
+ *
+ */
+public class GWTSitemapManager extends JahiaPageEntryPoint {
+    public static final String SITEMAP_ID =3D "siteMap";
+
+    public void onModuleLoad() {
+        RootPanel rootPanel =3D getRootPanel();
+
+        // init panel
+        final JahiaGWTPage page =3D getJahiaGWTPage();
+        final GWTSitemapTree sitemap =3D new GWTSitemapTree(page) ;
+        DockPanel panel =3D new DockPanel() ;
+        Button expandAll =3D new Button("Expand sitemap") ;
+        expandAll.addClickListener(new ClickListener() {
+            public void onClick(Widget widget) {
+                sitemap.expandAll(page) ;
+            }
+        });
+        panel.add(expandAll, DockPanel.WEST) ;
+        panel.add(sitemap, DockPanel.CENTER) ;
+        rootPanel.add(panel);
+
+    }
+
+    public RootPanel getRootPanel() {
+        return RootPanel.get(SITEMAP_ID);
+    }
+
+
+}
\ No newline at end of file

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/g=
wtsitemap/client/widgets/GWTSitemapTree.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwtsitemap/client/widg=
ets/GWTSitemapTree.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTree.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTree.java Tue Dec 11 14:44:56 2007
@@ -0,0 +1,130 @@
+package org.jahia.ajax.gwt.gwtsitemap.client.widgets;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.*;
+import org.jahia.ajax.gwt.base.client.JahiaService;
+import org.jahia.ajax.gwt.base.client.JahiaServiceAsync;
+import org.jahia.ajax.gwt.base.client.beans.GWTJahiaPageWrapper;
+import org.jahia.ajax.gwt.base.client.beans.JahiaGWTPage;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @author rfelden
+ * @version 5 d=C3=A9c. 2007
+ */
+public class GWTSitemapTree extends Tree {
+
+    private Tree dis =3D this ;
+
+    private JahiaServiceAsync jahiaService =3D JahiaService.App.getInstanc=
e() ;
+    private TreeListener listener ;
+
+
+    /**
+     *
+     * @param page the current page (to retrieve current pid & mode)
+     */
+    public GWTSitemapTree(final JahiaGWTPage page) {
+        super() ;
+
+        jahiaService.getHomePageForCurrentUser(page.getPid(), page.getMode=
(), false, new AsyncCallback() {
+            public void onFailure(Throwable throwable) {
+                Window.alert("Can't build tree\n\n" + throwable.toString()=
) ;
+            }
+
+            public void onSuccess(Object o) {
+                GWTJahiaPageWrapper homePage =3D (GWTJahiaPageWrapper) o ;
+                GWTSitemapTreeItem root =3D new GWTSitemapTreeItem(homePag=
e) ;
+                root.addItem(new GWTSitemapTreeItemChildren()) ;
+                dis.addItem(root);
+                listener =3D new MySitemapTreeListener(page, dis) ;
+                dis.addTreeListener(listener) ;
+            }
+        });
+    }
+
+    public void expandAll(final JahiaGWTPage page) {
+
+        jahiaService.getHomePageForCurrentUser(page.getPid(), page.getMode=
(), true, new AsyncCallback() {
+            public void onFailure(Throwable throwable) {
+                Window.alert("Can't build tree\n\n" + throwable.toString()=
) ;
+            }
+
+            public void onSuccess(Object o) {
+                dis.clear();
+                dis.removeTreeListener(listener);
+                GWTJahiaPageWrapper homePage =3D (GWTJahiaPageWrapper) o ;
+                GWTSitemapTreeItem root =3D new GWTSitemapTreeItem(homePag=
e) ;
+                dis.addItem(root);
+                recMapPagesToTree(root, homePage) ;
+                dis.addTreeListener(listener) ;
+            }
+        });
+    }
+
+    public void recMapPagesToTree(GWTSitemapTreeItem node, GWTJahiaPageWra=
pper page) {
+        if (page.hasChildren()) {
+            for (int i=3D0; i<page.getSubpages().length; i++) {
+                GWTJahiaPageWrapper subpage =3D page.getSubpages()[i] ;
+                GWTSitemapTreeItem item =3D new GWTSitemapTreeItem(subpage=
) ;
+                node.addItem(item) ;
+                if (!node.getState()) node.setState(true);
+                recMapPagesToTree(item, subpage);
+            }
+        }
+    }
+
+
+    private class MySitemapTreeListener implements TreeListener {
+
+        private JahiaGWTPage page ;
+        private Tree pageTree ;
+
+        public MySitemapTreeListener(JahiaGWTPage page, Tree pageTree) {
+            this.page =3D page ;
+            this.pageTree =3D pageTree ;
+        }
+
+        public void onTreeItemSelected(TreeItem treeItem) {}
+
+
+        public void onTreeItemStateChanged(final TreeItem treeItem) {
+            boolean hasBeenOpened =3D treeItem.getState() ;
+            if (hasBeenOpened) {
+                =

+                int pid =3D page.getPid();
+                String mode =3D page.getMode() ;
+                GWTJahiaPageWrapper page =3D null ;
+                if (pageTree.getItem(0) !=3D treeItem) {
+                    page =3D ( (GWTSitemapTreeItem) treeItem).getPage() ;
+                }
+                jahiaService.getSubPagesForCurrentUser(pid, mode, page, ne=
w AsyncCallback() {
+
+                    public void onFailure(Throwable throwable) {
+                        Window.alert("Can't find subpages\n\n" + throwable=
.toString()) ;
+                    }
+
+                    public void onSuccess(Object o) {
+                        treeItem.removeItems() ;
+                        GWTJahiaPageWrapper[] subpages =3D (GWTJahiaPageWr=
apper[])o ;
+                        for (int i=3D0; i<subpages.length; i++) {
+                            GWTSitemapTreeItem currentItem =3D new GWTSite=
mapTreeItem(subpages[i]) ;
+                            if (subpages[i].hasChildren()) {
+                                currentItem.addItem(new GWTSitemapTreeItem=
Children());
+                            }
+                            treeItem.addItem(currentItem) ;
+                        }
+                    }
+                });
+            }
+            else {
+                treeItem.removeItems();
+                treeItem.addItem(new GWTSitemapTreeItemChildren()) ;
+            }
+        }
+    }
+
+}

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/g=
wtsitemap/client/widgets/GWTSitemapTreeItem.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwtsitemap/client/widg=
ets/GWTSitemapTreeItem.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItem.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItem.java Tue Dec 11 14:44:56 2007
@@ -0,0 +1,35 @@
+package org.jahia.ajax.gwt.gwtsitemap.client.widgets;
+
+import com.google.gwt.user.client.ui.TreeItem;
+import org.jahia.ajax.gwt.base.client.beans.GWTJahiaPageWrapper;
+import org.jahia.ajax.gwt.base.client.beans.GWTLink;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @author rfelden
+ * @version 6 d=C3=A9c. 2007
+ */
+public class GWTSitemapTreeItem extends TreeItem {
+
+    private GWTJahiaPageWrapper page ;
+
+    public GWTSitemapTreeItem(GWTJahiaPageWrapper page) {
+        super(new GWTLink(page.getTitle(), page.getLink())) ;
+        this.page =3D page ;
+    }
+
+    public GWTJahiaPageWrapper getPage() {
+        return page;
+    }
+
+    public void setPage(GWTJahiaPageWrapper page) {
+        this.page =3D page;
+    }
+
+    public String getLink() {
+        return page.getLink() ;
+    }
+
+
+}

Added: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/g=
wtsitemap/client/widgets/GWTSitemapTreeItemChildren.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwtsitemap/client/widg=
ets/GWTSitemapTreeItemChildren.java&rev=3D19360&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItemChildren.java (added)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/gwt/gwts=
itemap/client/widgets/GWTSitemapTreeItemChildren.java Tue Dec 11 14:44:56 2=
007
@@ -0,0 +1,21 @@
+package org.jahia.ajax.gwt.gwtsitemap.client.widgets;
+
+import com.google.gwt.user.client.ui.TreeItem;
+import org.jahia.ajax.gwt.base.client.beans.GWTLink;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @author rfelden
+ * @version 6 d=C3=A9c. 2007
+ */
+public class GWTSitemapTreeItemChildren extends TreeItem {
+
+    public static final String LOADING_CHILDREN_STRING =3D "loading childr=
en..."  ;
+    public static final String LOADING_CHILDREN_LINK =3D "#" ;
+
+    public GWTSitemapTreeItemChildren() {
+        super(new GWTLink(LOADING_CHILDREN_STRING, LOADING_CHILDREN_LINK))=
 ;
+    }
+
+}

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to