From: <fa...@vh...> - 2005-09-12 15:03:27
|
Author: fabrice Date: 2005-09-12 16:54:17 +0200 (Mon, 12 Sep 2005) New Revision: 773 Modified: ccm-cms/trunk/src/com/arsdigita/cms/ui/cse/ContentSoonExpiredPane.java Log: Check view permissions on items, and configure timespan of CSEPane Modified: ccm-cms/trunk/src/com/arsdigita/cms/ui/cse/ContentSoonExpiredPane.java =================================================================== --- ccm-cms/trunk/src/com/arsdigita/cms/ui/cse/ContentSoonExpiredPane.java 2005-09-12 14:53:47 UTC (rev 772) +++ ccm-cms/trunk/src/com/arsdigita/cms/ui/cse/ContentSoonExpiredPane.java 2005-09-12 14:54:17 UTC (rev 773) @@ -29,12 +29,15 @@ import com.arsdigita.cms.SecurityManager; import com.arsdigita.cms.ui.ContentItemPage; import com.arsdigita.cms.util.GlobalizationUtil; +import com.arsdigita.cms.util.SecurityConstants; import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.kernel.User; import com.arsdigita.kernel.permissions.PermissionDescriptor; import com.arsdigita.kernel.permissions.PermissionService; import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.persistence.DataQuery; +import com.arsdigita.persistence.Filter; +import com.arsdigita.persistence.FilterFactory; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.Session; import com.arsdigita.persistence.SessionManager; @@ -49,6 +52,7 @@ import java.math.BigDecimal; import java.util.Calendar; +import java.util.Iterator; import org.apache.log4j.Logger; @@ -74,12 +78,22 @@ SecurityManager sm = CMS.getContext().getSecurityManager(); User user = Web.getContext().getUser(); - if (hasSiteWideAdmin(user)) { - getDataTable().generateXML(state, parent); - } + DataTable dt = getDataTable(); + DataQuery dq = dt.getDataQuery(state); + dq.addFilter(getViewFilter(dq, user)); + + dt.generateXML(state, parent); + } + private static Filter getViewFilter(DataQuery query, User user) { + PrivilegeDescriptor privilege = new PrivilegeDescriptor(SecurityConstants.CMS_READ_ITEM); + FilterFactory ff = query.getFilterFactory(); + OID partyOID = user.getOID(); + return PermissionService.getFilterQuery(ff, "objectId", privilege, partyOID); + } + protected DataTable getDataTable() { if (dataTable == null) { dataTable = new DataTable(new ContentSoonExpiredQueryBuilder()); @@ -123,8 +137,12 @@ Session ses = SessionManager.getSession(); DataQuery query = ses.retrieveQuery("com.arsdigita.cms.getContentItemExpiredBeforeInSection"); + int months = ContentSection.getConfig().getSoonExpiredMonths(); + int days = ContentSection.getConfig().getSoonExpiredDays(); + Calendar now = Calendar.getInstance(); - now.add(Calendar.DAY_OF_YEAR, 1); + now.add(Calendar.DAY_OF_YEAR, days); + now.add(Calendar.MONTH, months); query.setParameter("endDateTime", now.getTime()); ContentSection section = CMS.getContext().getContentSection(); @@ -178,11 +196,28 @@ public Component getComponent(Table table, PageState state, Object value, boolean isSelected, Object key, int row, int column) { + boolean canEdit = false; BigDecimal id = (BigDecimal) key; + User user = Web.getContext().getUser(); + ContentItem ci = getItemFromIdString(id.toString()); + Iterator permissions = PermissionService.getImpliedPrivileges(ci.getOID(), user.getOID()); + while (permissions.hasNext()) { + PrivilegeDescriptor permission = (PrivilegeDescriptor)permissions.next(); + if (permission.equals(PrivilegeDescriptor.ADMIN) || permission.equals(PrivilegeDescriptor.EDIT)) { + canEdit = true; + break; + } + } + + if (!canEdit) { + return new Label(""); + } + Link l = (Link) threadLocal.get(); l.setTarget(ContentItemPage.getRelativeItemURL(ContentSoonExpiredPane.getItemDraft(id.toString()), ContentItemPage.AUTHORING_TAB)); ((Label) l.getChild()).setLabel(GlobalizationUtil.globalize("cms.ui.cse.editLink")); - return l; + + return l; } } |