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)) + ")";
}