Author: xlawrence
Date: Thu Aug 17 11:20:23 2006
New Revision: 14928

URL: https://svndev.jahia.net/websvn/listing.php?sc=1&rev=14928&repname=jahia
Log:
Resolve issue http://www.jahia.net/jira/browse/JAHIA-1170

Modified:
    trunk/core/src/java/org/jahia/ajax/sitemap/SiteMapAbstractAction.java

Modified: trunk/core/src/java/org/jahia/ajax/sitemap/SiteMapAbstractAction.java
URL: 
https://svndev.jahia.net/websvn/diff.php?path=/trunk/core/src/java/org/jahia/ajax/sitemap/SiteMapAbstractAction.java&rev=14928&repname=jahia
==============================================================================
--- trunk/core/src/java/org/jahia/ajax/sitemap/SiteMapAbstractAction.java 
(original)
+++ trunk/core/src/java/org/jahia/ajax/sitemap/SiteMapAbstractAction.java Thu 
Aug 17 11:20:23 2006
@@ -134,7 +134,7 @@
      */
     public boolean hasChildren(final ContentObject object,
                                final JahiaUser currentUser) throws 
JahiaException {
-        return !getChildObjects(object,currentUser).isEmpty();
+        return !getChildObjects(object, currentUser).isEmpty();
     }
 
     /**
@@ -156,19 +156,18 @@
             return;
         }
 
-        final Map languagesStates = workflowService.getLanguagesStates(page);
-
         final Hashtable titles;
         final String selectedPageOperation = (String) 
session.getAttribute("selectedPageOperation");
         String entryPoint = (String) session.getAttribute("Select_Page_Entry");
         final boolean moveOp = 
SelectPage_Engine.MOVE_OPERATION.equals(selectedPageOperation);
+        final boolean isLiveMode = 
jParams.getOperationMode().equals(ProcessingContext.NORMAL);
         if (entryPoint == null && moveOp) {
             entryPoint = String.valueOf(jParams.getPageID());
         }
         final int pid = page.getID();
         final int opMode;
 
-        if (jParams.getOperationMode().equals(ProcessingContext.NORMAL)) {
+        if (isLiveMode) {
             if (page.getActiveVersionID() <= 0) return;
             titles = page.getTitles(ContentPage.ACTIVATED_PAGE_TITLES);
             opMode = EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
@@ -193,7 +192,7 @@
             item.setAttribute("Disable", "Disable");
         }
 
-        List directParents = (List) 
session.getAttribute("InsertionPointParents");
+        final List directParents = (List) 
session.getAttribute("InsertionPointParents");
         final ObjectKey key = page.getObjectKey();
         if (moveOp && (String.valueOf(parentID).equals(entryPoint) ||
                 
key.equals(jParams.getSite().getHomeContentPage().getObjectKey())) ||
@@ -201,10 +200,13 @@
             item.setAttribute("Disable", "Disable");
         }
 
-        LockKey k = LockKey.composeLockKey(LockKey.UPDATE_PAGE_TYPE,pid, pid);
-        JahiaUser user = jParams.getUser();
-        if (!lockRegistry.isAcquireable(k, user, user.getUserKey())) {
-            item.setAttribute("Disable", "Disable");
+        if (moveOp) {
+            // Only check locks for a move operation
+            final LockKey k = LockKey.composeLockKey(LockKey.UPDATE_PAGE_TYPE, 
pid, pid);
+            final JahiaUser user = jParams.getUser();
+            if (!lockRegistry.isAcquireable(k, user, user.getUserKey())) {
+                item.setAttribute("Disable", "Disable");
+            }
         }
 
         item.setAttribute("id", String.valueOf(pid));
@@ -217,143 +219,162 @@
             item.setAttribute("NoChildren", "NoChildren");
         }
 
-        final SortedSet entries = page.getEntryStates();
-        logger.debug("getEntryStates: " + entries);
+        final SortedSet entries;
+        final Map languagesStates;
+        if (isLiveMode) {
+            entries = null;
+            languagesStates = null;
+        } else {
+            entries = page.getEntryStates();
+            languagesStates = workflowService.getLanguagesStates(page);
+        }
+
         for (int j = 0; j < locales.size(); j++) {
             final String languageCode = ((SiteLanguageSettings) 
locales.get(j)).getCode();
             logger.debug("Found page: " + page.getID() + " in " + 
languageCode);
             final Element lang = resp.createElement("lang");
             lang.setAttribute("code", languageCode);
             lang.setAttribute("langURL", getPageURL(jParams, pid, 
languageCode));
-            Integer languageState = (Integer) 
languagesStates.get(languageCode);
 
-            if (mode == NORMAL) {
-                if (languageState != null && languageState.intValue() == 
EntryLoadRequest.STAGING_WORKFLOW_STATE) {
-                    final Iterator ite = entries.iterator();
-                    while (ite.hasNext()) {
-                        final ContentObjectEntryState entryState = 
(ContentObjectEntryState) ite.next();
-                        if (! 
entryState.getLanguageCode().equals(languageCode)) continue;
-                        if (entryState.getWorkflowState() != opMode) continue;
-                        if (entryState.getVersionID() == 0 && 
jParams.getOperationMode().equals(ProcessingContext.NORMAL)) {
-                            languageState = null;
-                        } else if (entryState.getVersionID() < 0) {
-                            return;
+            if (isLiveMode) {
+                if (page.isReachable(ProcessingContext.NORMAL, languageCode, 
currentUser)) {
+                    lang.appendChild(resp.createTextNode("10"));
+                    logger.debug("Page reachable in Live Mode");
+                } else {
+                    lang.appendChild(resp.createTextNode("-1"));
+                    logger.debug("Page Not reachable in Live Mode");
+                }
+
+            } else {
+                logger.debug("getEntryStates: " + entries);
+                Integer languageState = (Integer) 
languagesStates.get(languageCode);
+
+                if (mode == NORMAL) {
+                    if (languageState != null && languageState.intValue() == 
EntryLoadRequest.STAGING_WORKFLOW_STATE) {
+                        final Iterator ite = entries.iterator();
+                        while (ite.hasNext()) {
+                            final ContentObjectEntryState entryState = 
(ContentObjectEntryState) ite.next();
+                            if (! 
entryState.getLanguageCode().equals(languageCode)) continue;
+                            if (entryState.getWorkflowState() != opMode) 
continue;
+                            if (entryState.getVersionID() == 0 &&
+                                    
jParams.getOperationMode().equals(ProcessingContext.NORMAL)){
+                                languageState = null;
+                            } else if (entryState.getVersionID() < 0) {
+                                return;
+                            }
                         }
                     }
-                }
 
-                if (languageState == null || languageState.intValue() == -1) {
-                    lang.appendChild(resp.createTextNode("-1"));
-                } else {
-                    if 
(jParams.getOperationMode().equals(ProcessingContext.NORMAL)) {
-                        lang.appendChild(resp.createTextNode("10"));
+                    if (languageState == null || languageState.intValue() == 
-1) {
+                        lang.appendChild(resp.createTextNode("-1"));
                     } else {
                         
lang.appendChild(resp.createTextNode(languageState.toString()));
                     }
-                }
 
-            } else {
-                // Versionning logic
-                final int now = jahiaVersionService.getCurrentVersionID();
+                } else {
+                    // Versionning logic
+                    final int now = jahiaVersionService.getCurrentVersionID();
 
-                final PagesVersioningViewHelper pagesVersViewHelper = 
(PagesVersioningViewHelper) session.
-                        getAttribute(JahiaEngineViewHelper.ENGINE_VIEW_HELPER);
-                final int restoreVersionID = (int) 
(pagesVersViewHelper.getRestoreDateCalendar().getDateLong().longValue() / 1000);
+                    final PagesVersioningViewHelper pagesVersViewHelper = 
(PagesVersioningViewHelper) session.
+                            
getAttribute(JahiaEngineViewHelper.ENGINE_VIEW_HELPER);
+                    final int restoreVersionID = (int) 
(pagesVersViewHelper.getRestoreDateCalendar().getDateLong().longValue() / 1000);
 
-                final boolean isPageMarkedForDeletion = 
page.isMarkedForDelete();
+                    final boolean isPageMarkedForDeletion = 
page.isMarkedForDelete();
 
-                // check that we can undo the page that exist only in staging
-                final boolean existOnlyInStaging = 
!(page.hasArchiveEntryState(now, false));
+                    // check that we can undo the page that exist only in 
staging
+                    final boolean existOnlyInStaging = 
!(page.hasArchiveEntryState(now, false));
 
-                // check if the content object exists before a given date
-                final boolean hasArchiveEntryBeforeRestoreDate = 
page.hasArchiveEntryState(restoreVersionID);
+                    // check if the content object exists before a given date
+                    final boolean hasArchiveEntryBeforeRestoreDate = 
page.hasArchiveEntryState(restoreVersionID);
 
-                final boolean hasActive = page.hasActiveEntries();
+                    final boolean hasActive = page.hasActiveEntries();
 
-                final EntryLoadRequest loadRequest = new EntryLoadRequest(0, 
restoreVersionID, new ArrayList());
-                
loadRequest.getLocales().add((LanguageCodeConverters.languageCodeToLocale(ContentObject.SHARED_LANGUAGE)));
-                loadRequest.setWithMarkedForDeletion(true);
-                ContentObjectEntryState closestEntryState = new 
ContentObjectEntryState(
-                        ContentObjectEntryState.WORKFLOW_STATE_VERSIONED, 
restoreVersionID, ContentObject.SHARED_LANGUAGE);
-                closestEntryState = 
page.getClosestVersionedEntryState(closestEntryState);
+                    final EntryLoadRequest loadRequest = new 
EntryLoadRequest(0, restoreVersionID, new ArrayList());
+                    
loadRequest.getLocales().add((LanguageCodeConverters.languageCodeToLocale(ContentObject.SHARED_LANGUAGE)));
+                    loadRequest.setWithMarkedForDeletion(true);
+                    ContentObjectEntryState closestEntryState = new 
ContentObjectEntryState(
+                            ContentObjectEntryState.WORKFLOW_STATE_VERSIONED, 
restoreVersionID, ContentObject.SHARED_LANGUAGE);
+                    closestEntryState = 
page.getClosestVersionedEntryState(closestEntryState);
 
-                // will be deleted if restore at given date
-                final boolean wasDeleted = (closestEntryState != null && 
closestEntryState.getWorkflowState() == -1 &&
-                        page.wasDeleted(closestEntryState.getVersionID()));
+                    // will be deleted if restore at given date
+                    final boolean wasDeleted = (closestEntryState != null && 
closestEntryState.getWorkflowState() == -1 &&
+                            page.wasDeleted(closestEntryState.getVersionID()));
 
-                boolean isDeleted = (isPageMarkedForDeletion || 
(!page.hasStagingEntries() && !page.hasActiveEntries()));
+                    boolean isDeleted = (isPageMarkedForDeletion || 
(!page.hasStagingEntries() && !page.hasActiveEntries()));
 
-                if (isDeleted) {
-                    item.setAttribute("Style", "MarkedForDelete");
-                }
+                    if (isDeleted) {
+                        item.setAttribute("Style", "MarkedForDelete");
+                    }
 
-                if ((pagesVersViewHelper.getOperationType() == 2) && 
(!hasArchiveEntryBeforeRestoreDate || wasDeleted)) {
-                    // Added after the restore date
-                    item.setAttribute("Style", "blueColor");
-                }
+                    if ((pagesVersViewHelper.getOperationType() == 2) && 
(!hasArchiveEntryBeforeRestoreDate || wasDeleted))
+                    {
+                        // Added after the restore date
+                        item.setAttribute("Style", "blueColor");
+                    }
 
-                if ((pagesVersViewHelper.getOperationType() == 1) && 
!hasActive &&
-                        
!page.hasArchiveEntryState(jahiaVersionService.getCurrentVersionID())) {
-                    // Going to be deleted if apply an undo staging !!!!
-                    item.setAttribute("Style", "blueColor");
-                } else if (pagesVersViewHelper.getOperationType() == 1 && 
!hasActive && !isDeleted) {
-                    item.setAttribute("Style", "redColor");
-                }
+                    if ((pagesVersViewHelper.getOperationType() == 1) && 
!hasActive &&
+                            
!page.hasArchiveEntryState(jahiaVersionService.getCurrentVersionID())) {
+                        // Going to be deleted if apply an undo staging !!!!
+                        item.setAttribute("Style", "blueColor");
+                    } else if (pagesVersViewHelper.getOperationType() == 1 && 
!hasActive && !isDeleted) {
+                        item.setAttribute("Style", "redColor");
+                    }
 
-                final Map pageOnlyLanguagesStates = 
page.getLanguagesStates(false);
+                    final Map pageOnlyLanguagesStates = 
page.getLanguagesStates(false);
 
-                final Integer sharedLanguageState = (Integer) 
languagesStates.get(ContentObject.SHARED_LANGUAGE);
-                final Integer pageLanguageState = (Integer) 
pageOnlyLanguagesStates.get(languageCode);
+                    final Integer sharedLanguageState = (Integer) 
languagesStates.get(ContentObject.SHARED_LANGUAGE);
+                    final Integer pageLanguageState = (Integer) 
pageOnlyLanguagesStates.get(languageCode);
 
-                if (languageState != null && languageState.intValue() != -1) {
-                    if (sharedLanguageState != null && 
languageState.intValue() < sharedLanguageState.intValue()) {
-                        languageState = sharedLanguageState;
-                    }
-                    if (languageState.intValue() > 
EntryLoadRequest.STAGING_WORKFLOW_STATE) {
-                        if (pageLanguageState == null || 
pageLanguageState.intValue() < languageState.intValue()) {
-                            // the page cannot be in waiting for approval if 
it has no entry ( jahia page info ) at waiting for approval state.
-                            languageState = new 
Integer(EntryLoadRequest.STAGING_WORKFLOW_STATE);
+                    if (languageState != null && languageState.intValue() != 
-1) {
+                        if (sharedLanguageState != null && 
languageState.intValue() < sharedLanguageState.intValue()) {
+                            languageState = sharedLanguageState;
                         }
-                    }
-                    boolean isStaging = languageState.intValue() > 
EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
+                        if (languageState.intValue() > 
EntryLoadRequest.STAGING_WORKFLOW_STATE) {
+                            if (pageLanguageState == null || 
pageLanguageState.intValue() < languageState.intValue()) {
+                                // the page cannot be in waiting for approval 
if it has no entry ( jahia page info ) at waiting for approval state.
+                                languageState = new 
Integer(EntryLoadRequest.STAGING_WORKFLOW_STATE);
+                            }
+                        }
+                        boolean isStaging = languageState.intValue() > 
EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
 
-                    final boolean allowPageSelection = 
page.checkWriteAccess(jParams.getUser());
-                    final Set selectedPages = 
pagesVersViewHelper.getSelectedPages();
+                        final boolean allowPageSelection = 
page.checkWriteAccess(jParams.getUser());
+                        final Set selectedPages = 
pagesVersViewHelper.getSelectedPages();
 
-                    if (pagesVersViewHelper.getOperationType() == 1) { // Undo 
Staging
-                        if (!allowPageSelection || existOnlyInStaging || 
!isStaging) {
-                            lang.setAttribute("Disable", "Disable");
-                        }
-                        if (isStaging && hasArchiveEntryBeforeRestoreDate &&
-                                selectedPages.contains(page.getObjectKey())) {
-                            lang.setAttribute("checked", "checked");
-                        }
-                    } else if (pagesVersViewHelper.getOperationType() == 2) { 
// Restore Archive
-                        if (!allowPageSelection || 
!hasArchiveEntryBeforeRestoreDate || wasDeleted) {
-                            lang.setAttribute("Disable", "Disable");
-                        }
-                        if (!(!hasArchiveEntryBeforeRestoreDate || wasDeleted) 
&&
-                                selectedPages.contains(page.getObjectKey())) {
-                            lang.setAttribute("checked", "checked");
-                        }
-                    } else { // page undelete
-                        if (!allowPageSelection || !isDeleted) {
-                            lang.setAttribute("Disable", "Disable");
-                        }
-                        if (isDeleted && 
selectedPages.contains(page.getObjectKey())) {
-                            lang.setAttribute("checked", "checked");
+                        if (pagesVersViewHelper.getOperationType() == 1) { // 
Undo Staging
+                            if (!allowPageSelection || existOnlyInStaging || 
!isStaging) {
+                                lang.setAttribute("Disable", "Disable");
+                            }
+                            if (isStaging && hasArchiveEntryBeforeRestoreDate 
&&
+                                    
selectedPages.contains(page.getObjectKey())) {
+                                lang.setAttribute("checked", "checked");
+                            }
+                        } else if (pagesVersViewHelper.getOperationType() == 
2) { // Restore Archive
+                            if (!allowPageSelection || 
!hasArchiveEntryBeforeRestoreDate || wasDeleted) {
+                                lang.setAttribute("Disable", "Disable");
+                            }
+                            if (!(!hasArchiveEntryBeforeRestoreDate || 
wasDeleted) &&
+                                    
selectedPages.contains(page.getObjectKey())) {
+                                lang.setAttribute("checked", "checked");
+                            }
+                        } else { // page undelete
+                            if (!allowPageSelection || !isDeleted) {
+                                lang.setAttribute("Disable", "Disable");
+                            }
+                            if (isDeleted && 
selectedPages.contains(page.getObjectKey())) {
+                                lang.setAttribute("checked", "checked");
+                            }
                         }
-                    }
 
-                    if (languageState.intValue() < 1 && isDeleted) {
-                        lang.appendChild(resp.createTextNode("-2"));
-                        logger.debug("Page: " + key + " is deleted");
+                        if (languageState.intValue() < 1 && isDeleted) {
+                            lang.appendChild(resp.createTextNode("-2"));
+                            logger.debug("Page: " + key + " is deleted");
+                        } else {
+                            
lang.appendChild(resp.createTextNode(languageState.toString()));
+                        }
                     } else {
-                        
lang.appendChild(resp.createTextNode(languageState.toString()));
+                        lang.appendChild(resp.createTextNode("-3"));
+                        lang.setAttribute("Disable", "Disable");
                     }
-                } else {
-                    lang.appendChild(resp.createTextNode("-3"));
-                    lang.setAttribute("Disable", "Disable");
                 }
             }
             item.appendChild(lang);
@@ -364,14 +385,14 @@
     /**
      * Process a WorkFlow Object
      */
-    protected void processWorkflowObject (
-                    final ContentObject object,
-                    final ProcessingContext jParams,
-                    final JahiaUser currentUser,
-                    final List locales,
-                    final Document resp,
-                    final Element root,
-                    final int parentID) throws JahiaException {
+    protected void processWorkflowObject(
+            final ContentObject object,
+            final ProcessingContext jParams,
+            final JahiaUser currentUser,
+            final List locales,
+            final Document resp,
+            final Element root,
+            final int parentID) throws JahiaException {
         final Map languagesStates = workflowService.getLanguagesStates(object);
 
         final int id = object.getID();
@@ -494,7 +515,7 @@
         }
 
         boolean doLock = false;
-        if(object.checkWriteAccess(currentUser,true)){
+        if (object.checkWriteAccess(currentUser, true)) {
             for (int j = 0; j < locales.size(); j++) {
                 final String languageCode = ((SiteLanguageSettings) 
locales.get(j)).getCode();
                 logger.debug("Found object: " + objectKey + " in " + 
languageCode);
@@ -519,7 +540,7 @@
                     while (optionsIter.hasNext()) {
                         final String additionalKey = (String) 
optionsIter.next();
                         if (languageState.intValue() != 
EntryLoadRequest.ACTIVE_WORKFLOW_STATE &&
-                            workflowHelper.isActive(object.getObjectKey(), 
languageCode, action, additionalKey)) {
+                                workflowHelper.isActive(object.getObjectKey(), 
languageCode, action, additionalKey)) {
                             logger.debug("additionalKey" + i + " for " + 
languageCode + ": " + additionalKey);
                             lang.setAttribute("additionalKey" + i, 
additionalKey);
                         }
@@ -555,11 +576,11 @@
      * @param languageCode The language of the title
      * @return The title value in a String object
      */
-    protected String getAPageTitleAnyway (
-                    final ContentObject object,
-                    final String languageCode,
-                    final ProcessingContext jParams,
-                    final int parentID) {
+    protected String getAPageTitleAnyway(
+            final ContentObject object,
+            final String languageCode,
+            final ProcessingContext jParams,
+            final int parentID) {
         final ObjectKey objectKey = object.getObjectKey();
         String pageTitle1;
         if (objectKey.getType().equals(ContentPageKey.PAGE_TYPE)) {
@@ -572,7 +593,8 @@
             }
 
             // Moved page
-            if ((contentPage.hasSameParentID() != ContentPage.SAME_PARENT) && 
(contentPage.getParentID(jParams) != parentID)){
+            if ((contentPage.hasSameParentID() != ContentPage.SAME_PARENT) && 
(contentPage.getParentID(jParams) != parentID))
+            {
                 pageTitle1 += " (" + 
JahiaResourceBundle.getEngineResource("org.jahia.moved.label", jParams,
                         new Locale(languageCode)) + ")";
             }

Reply via email to