From: <mb...@re...> - 2005-02-09 20:17:14
|
Author: mbooth Date: 2005-02-09 21:16:33 +0100 (Wed, 09 Feb 2005) New Revision: 205 Modified: ccm-cms/trunk/src/com/arsdigita/cms/ui/lifecycle/ItemLifecycleItemPane.java ccm-cms/trunk/web/__ccm__/static/cms/admin/action-group/action-group.xsl Log: Only publishers can publish or republish Modified: ccm-cms/trunk/src/com/arsdigita/cms/ui/lifecycle/ItemLifecycleItemPane.java =================================================================== --- ccm-cms/trunk/src/com/arsdigita/cms/ui/lifecycle/ItemLifecycleItemPane.java 2005-02-09 16:06:55 UTC (rev 204) +++ ccm-cms/trunk/src/com/arsdigita/cms/ui/lifecycle/ItemLifecycleItemPane.java 2005-02-09 20:16:33 UTC (rev 205) @@ -19,20 +19,17 @@ package com.arsdigita.cms.ui.lifecycle; import com.arsdigita.bebop.ActionLink; +import com.arsdigita.bebop.Component; import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.Page; import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.RequestLocal; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.bebop.Table; import com.arsdigita.bebop.event.ActionEvent; import com.arsdigita.bebop.event.ActionListener; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentSection; -import com.arsdigita.cms.dispatcher.Utilities; -import com.arsdigita.cms.lifecycle.Lifecycle; -import com.arsdigita.cms.ui.BaseItemPane; -import com.arsdigita.cms.ui.ContentItemPage; -import com.arsdigita.cms.ui.item.ContentItemRequestLocal; -import com.arsdigita.cms.workflow.CMSTask; +import com.arsdigita.bebop.event.RequestEvent; +import com.arsdigita.bebop.event.RequestListener; import com.arsdigita.kernel.User; import com.arsdigita.toolbox.ui.ActionGroup; import com.arsdigita.toolbox.ui.PropertyList; @@ -44,7 +41,18 @@ import com.arsdigita.workflow.simple.Engine; import com.arsdigita.workflow.simple.TaskException; import com.arsdigita.workflow.simple.Workflow; +import com.arsdigita.xml.Element; +import com.arsdigita.cms.ContentItem; +import com.arsdigita.cms.ContentSection; +import com.arsdigita.cms.SecurityManager; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.cms.lifecycle.Lifecycle; +import com.arsdigita.cms.ui.BaseItemPane; +import com.arsdigita.cms.ui.ContentItemPage; +import com.arsdigita.cms.ui.item.ContentItemRequestLocal; +import com.arsdigita.cms.workflow.CMSTask; + import org.apache.log4j.Logger; import java.text.DateFormat; @@ -132,7 +140,42 @@ } } - private class UnpublishLink extends ActionLink { + private class PublishLink extends ActionLink { + private RequestLocal m_canPublish = new RequestLocal(); + + PublishLink(Component c) { super(c); } + + public void generateXML(PageState ps, Element parent) { + Boolean canPublish = (Boolean) m_canPublish.get(ps); + if (null == canPublish) { + SecurityManager sm = Utilities.getSecurityManager(ps); + ContentItem item = m_item.getContentItem(ps); + if (sm.canAccess(ps.getRequest(), + SecurityManager.PUBLISH, + item)) { + canPublish = Boolean.TRUE; + } else { + canPublish = Boolean.FALSE; + } + + m_canPublish.set(ps, canPublish); + } + + if (canPublish.booleanValue()) { + if (s_log.isDebugEnabled()) { + ContentItem item = m_item.getContentItem(ps); + s_log.debug ("User can publish " + item.getOID()); + } + + super.generateXML(ps, parent); + } else if (s_log.isDebugEnabled()) { + ContentItem item = m_item.getContentItem(ps); + s_log.debug ("User cannot publish " + item.getOID()); + } + } + } + + private class UnpublishLink extends PublishLink { UnpublishLink() { super(new Label(gz("cms.ui.item.lifecycle.unpublish"))); @@ -155,7 +198,7 @@ } } - private class RepublishLink extends ActionLink { + private class RepublishLink extends PublishLink { RepublishLink() { super(new Label(gz("cms.ui.item.lifecycle.republish"))); Modified: ccm-cms/trunk/web/__ccm__/static/cms/admin/action-group/action-group.xsl =================================================================== --- ccm-cms/trunk/web/__ccm__/static/cms/admin/action-group/action-group.xsl 2005-02-09 16:06:55 UTC (rev 204) +++ ccm-cms/trunk/web/__ccm__/static/cms/admin/action-group/action-group.xsl 2005-02-09 20:16:33 UTC (rev 205) @@ -11,7 +11,7 @@ </div> <table class="actions"> - <xsl:for-each select="bebop:action"> + <xsl:for-each select="bebop:action[*]"> <tr class="action"> <td class="action-icon"> <xsl:choose> @@ -31,4 +31,4 @@ </table> </div> </xsl:template> -</xsl:stylesheet> \ No newline at end of file +</xsl:stylesheet> |