From: <ap...@vh...> - 2006-05-24 09:59:40
|
Author: apevec Date: 2006-05-24 11:55:54 +0200 (Wed, 24 May 2006) New Revision: 1144 Modified: trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig.java trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig_parameter.properties trunk/ccm-cms/src/com/arsdigita/cms/dispatcher/ItemURLFinder.java Log: redirect to the draft produces 404 by default, thise can be switched off by com.arsdigita.cms.unpublished_not_found=false Modified: trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig.java 2006-05-22 22:07:59 UTC (rev 1143) +++ trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig.java 2006-05-24 09:55:54 UTC (rev 1144) @@ -101,6 +101,7 @@ private final Parameter m_soonExpiredTimespanMonths; private final Parameter m_soonExpiredTimespanDays; private final Parameter m_defaultTaskAlerts; + private final Parameter m_unpublishedNotFound; /** * Do not instantiate this class directly. @@ -261,6 +262,10 @@ ("com.arsdigita.cms.soon_expired_timespan_months", Parameter.REQUIRED, new Integer(0)); + m_unpublishedNotFound = new BooleanParameter + ("com.arsdigita.cms.unpublished_not_found", + Parameter.REQUIRED, new Boolean(true)); + register(m_templateRootPath); register(m_defaultItemTemplatePath); register(m_defaultFolderTemplatePath); @@ -293,6 +298,7 @@ register(m_soonExpiredTimespanMonths); register(m_soonExpiredTimespanDays); register(m_defaultTaskAlerts); + register(m_unpublishedNotFound); loadInfo(); } @@ -428,6 +434,10 @@ public final String[] getDefaultTaskAlerts() { return (String[]) get(m_defaultTaskAlerts); } + + public final boolean isUnpublishedNotFound() { + return ((Boolean) get(m_unpublishedNotFound)).booleanValue(); + } private class SpecificClassParameter extends ClassParameter { Modified: trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig_parameter.properties =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig_parameter.properties 2006-05-22 22:07:59 UTC (rev 1143) +++ trunk/ccm-cms/src/com/arsdigita/cms/ContentSectionConfig_parameter.properties 2006-05-24 09:55:54 UTC (rev 1144) @@ -158,3 +158,7 @@ com.arsdigita.cms.default_task_alerts.example=Authoring:enable:finish:rollback,Approval:enable:finish:rollback,Deploy:enable:finish:rollback com.arsdigita.cms.default_task_alerts.format=[string,string,string] +com.arsdigita.cms.unpublished_not_found.title=Unpublished Not Found +com.arsdigita.cms.unpublished_not_found.purpose=Does a redirect to the unpublished item generate not found error? +com.arsdigita.cms.unpublished_not_found.example=true +com.arsdigita.cms.unpublished_not_found.format=[boolean] Modified: trunk/ccm-cms/src/com/arsdigita/cms/dispatcher/ItemURLFinder.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/dispatcher/ItemURLFinder.java 2006-05-22 22:07:59 UTC (rev 1143) +++ trunk/ccm-cms/src/com/arsdigita/cms/dispatcher/ItemURLFinder.java 2006-05-24 09:55:54 UTC (rev 1144) @@ -18,32 +18,27 @@ */ package com.arsdigita.cms.dispatcher; +import org.apache.log4j.Logger; + +import com.arsdigita.categorization.Category; import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentSection; - +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.domain.DomainServiceInterfaceExposer; import com.arsdigita.kernel.ACSObject; +import com.arsdigita.kernel.NoValidURLException; import com.arsdigita.kernel.URLFinder; import com.arsdigita.kernel.URLFinderNotFoundException; import com.arsdigita.kernel.URLService; -import com.arsdigita.kernel.NoValidURLException; - -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.domain.DomainServiceInterfaceExposer; -import com.arsdigita.domain.DataObjectNotFoundException; - -import com.arsdigita.categorization.Category; - import com.arsdigita.persistence.DataAssociation; import com.arsdigita.persistence.DataAssociationCursor; import com.arsdigita.persistence.OID; - -import com.arsdigita.web.URL; import com.arsdigita.web.ParameterMap; +import com.arsdigita.web.URL; import com.arsdigita.web.Web; -import org.apache.log4j.Logger; - public class ItemURLFinder implements URLFinder { private static final Logger s_log = Logger.getLogger(ItemURLFinder.class); @@ -168,8 +163,9 @@ } } } else { // DRAFT context - // public users should get 404 when item gets unpublished - if (!Web.getUserContext().isLoggedIn()) { + // public users get 404 when item gets unpublished + // if com.arsdigita.cms.unpublished_not_found=true + if (ContentSection.getConfig().isUnpublishedNotFound() && !Web.getUserContext().isLoggedIn()) { throw new NoValidURLException("user must be logged-in to get draft"); } else { // force the switch to draft version at this point |