[OFBiz] SVN: r6606 - in trunk/applications/content: . config data entitydef script/org/ofbiz/content/compdoc script/org/ofbiz/content/data servicedef src/org/ofbiz/content webapp/content/WEB-INF webapp/content/WEB-INF/actions/content webapp/content/content webapp/content/includes widget widget/compdoc widget/content
byersa@svn.ofbiz.org
byersa at svn.ofbiz.org
Sun Jan 29 02:07:51 CST 2006
Author: byersa
Date: 2006-01-29 02:07:31 -0600 (Sun, 29 Jan 2006)
New Revision: 6606
Modified:
trunk/applications/content/config/ContentUiLabels.properties
trunk/applications/content/data/CompDocData.xml
trunk/applications/content/entitydef/entitygroup.xml
trunk/applications/content/entitydef/entitymodel.xml
trunk/applications/content/ofbiz-component.xml
trunk/applications/content/script/org/ofbiz/content/compdoc/CompDocServices.xml
trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml
trunk/applications/content/servicedef/services.xml
trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java
trunk/applications/content/webapp/content/WEB-INF/actions/content/prepseqno.bsh
trunk/applications/content/webapp/content/WEB-INF/controller.xml
trunk/applications/content/webapp/content/content/ContentForms.xml
trunk/applications/content/webapp/content/includes/header.ftl
trunk/applications/content/widget/ContentMenus.xml
trunk/applications/content/widget/compdoc/CompDocForms.xml
trunk/applications/content/widget/compdoc/CompDocMenus.xml
trunk/applications/content/widget/compdoc/CompDocScreens.xml
trunk/applications/content/widget/compdoc/CompDocTemplateTree.xml
trunk/applications/content/widget/content/ContentScreens.xml
Log:
A lot of changes to support CompDoc, but nothing much to demo.
Added some views to support find that most recent ContentRevision.
A number of screens, forms and trees to handle the display and editing of CompDocs.
Some seed data in CompDocData.xml.
Some services in CompDocServices.xml to assist with ContentApproval.
Added menus to CompDocMenus, including some to use for tree rendering.
Modified: trunk/applications/content/config/ContentUiLabels.properties
===================================================================
--- trunk/applications/content/config/ContentUiLabels.properties 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/config/ContentUiLabels.properties 2006-01-29 08:07:31 UTC (rev 6606)
@@ -10,5 +10,8 @@
ContentContentSetup=Content Setup
ContentDataSetup=DataResource Setup
ContentTemplate=Template
+ContentCMS=CMS
ContentCompDoc=CompDoc
+PageTitleEditContent=Edit Content
+PageTitleEditRootCompDoc=Edit Root Composite Document
Modified: trunk/applications/content/data/CompDocData.xml
===================================================================
--- trunk/applications/content/data/CompDocData.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/data/CompDocData.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -1,10 +1,110 @@
<entity-engine-xml>
- <Content contentId="CD1000" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId="" contentName="CompDoc Root" description="CompDoc Root Description"
-createdDate="2005-12-30 11:40:15.818" createdByUserLogin="admin" lastModifiedDate="2005-12-30 11:40:15.818" lastModifiedByUserLogin="admin" />
- <Content contentId="CD1001" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId="" contentName="CompDoc Child 1" description="CompDoc Child 1 Description"
-createdDate="2005-12-30 11:40:15.818" createdByUserLogin="admin" lastModifiedDate="2005-12-30 11:40:15.818" lastModifiedByUserLogin="admin" />
- <Content contentId="CD1002" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId="" contentName="CompDoc Child 2" description="CompDoc Child 2 Description"
-createdDate="2005-12-30 11:40:15.818" createdByUserLogin="admin" lastModifiedDate="2005-12-30 11:40:15.818" lastModifiedByUserLogin="admin" />
- <ContentAssoc contentIdTo="CD1000" contentId="CD1001" contentAssocTypeId="COMPDOC_PART" fromDate="2005-12-30 11:40:15.818" />
- <ContentAssoc contentIdTo="CD1000" contentId="CD1002" contentAssocTypeId="COMPDOC_PART" fromDate="2005-12-30 11:40:15.818" />
+ <Content contentId="CD0001" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Coordination Record" description=""/>
+ <Content contentId="CD0101" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Task" description=""/>
+ <Content contentId="CD1001" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="DD 1423" description=""/>
+ <Content contentId="CD1002" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Specification" description=""/>
+ <Content contentId="CD1003" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Cost Breakout Summary" description=""/>
+ <Content contentId="CD1004" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="J & A (Sole Source Procurement)" description=""/>
+ <Content contentId="CD1005" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Engineering Source Determination (Corporate Contract Sole Source Determination)" description=""/>
+ <Content contentId="CD1006" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Statement of Urgency" description=""/>
+ <Content contentId="CD1007" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="ODC Statement" description=""/>
+ <Content contentId="CD1008" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Non-Personal Services" description=""/>
+ <Content contentId="CD1009" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Scope, Cost and Schedule Impacts" description=""/>
+ <Content contentId="CD1010" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="DD 254" description=""/>
+ <Content contentId="CD1011" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Request for Option Award" description=""/>
+ <Content contentId="CD1012" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="TM 86-01" description=""/>
+ <Content contentId="CD1013" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Visitor Group Security Agreement (VGSA)" description=""/>
+ <Content contentId="CD1014" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Surveillance Agreement" description=""/>
+ <Content contentId="CD1015" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Performance Plan" description=""/>
+ <Content contentId="CD1016" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Other Upload" description=""/>
+ <ContentAssoc contentIdTo="CD0001" contentId="CD0101" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1001" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1002" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1003" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1004" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1005" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1006" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1007" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1008" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1009" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1010" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1011" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1012" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1013" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1014" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1015" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1016" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentRevision contentId="CD0001" contentRevisionSeqId="000002" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD0101" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1001" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1002" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1003" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1004" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1005" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1006" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1007" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1008" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1009" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1010" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1011" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1012" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1013" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1014" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1015" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000002" itemContentId="CD1016" />
+ <ContentRevision contentId="CD0001" contentRevisionSeqId="000013" />
+ <Content contentId="CD1021" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Request for Option Award 2j" description=""/>
+ <Content contentId="CD1022" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="TM 86-01 2j" description=""/>
+ <Content contentId="CD1023" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Visitor Group Security Agreement (VGSA) 2j" description=""/>
+ <Content contentId="CD1024" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Surveillance Agreement 2j" description=""/>
+ <Content contentId="CD1025" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Performance Plan 2j" description=""/>
+ <Content contentId="CD1026" contentTypeId="COMPDOC_TEMPLATE" ownerContentId="" dataResourceId=""
+ contentName="Other Upload 2j" description=""/>
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1021" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1022" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1023" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1024" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1025" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentAssoc contentIdTo="CD0101" contentId="CD1026" contentAssocTypeId="COMPDOC_PART" fromDate="2006-01-12 01:01:01" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000013" itemContentId="CD1021" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000013" itemContentId="CD1022" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000013" itemContentId="CD1023" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000013" itemContentId="CD1024" />
+
+ <ContentRevision contentId="CD0001" contentRevisionSeqId="000004" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000004" itemContentId="CD1004" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000004" itemContentId="CD1005" />
+ <ContentRevisionItem contentId="CD0001" contentRevisionSeqId="000004" itemContentId="CD1006" />
+
+ <ContentApproval contentApprovalId="CA0001" contentId="CD0001" contentRevisionSeqId="000002" partyId="admin"/>
+ <ContentApproval contentApprovalId="CA0002" contentId="CD0001" contentRevisionSeqId="000002" partyId="TESTING"/>
+ <ContentApproval contentApprovalId="CA0003" contentId="CD0001" contentRevisionSeqId="000002" roleTypeId="MANAGER"/>
+ <ContentApproval contentApprovalId="CA0004" contentId="CD0001" contentRevisionSeqId="000002" roleTypeId="BUYER"/>
+ <ContentApproval contentApprovalId="CA0011" contentId="CD0001" contentRevisionSeqId="000013" partyId="admin"/>
+ <ContentApproval contentApprovalId="CA0012" contentId="CD0001" contentRevisionSeqId="000013" partyId="TESTING"/>
+ <ContentApproval contentApprovalId="CA0013" contentId="CD0001" contentRevisionSeqId="000013" roleTypeId="MANAGER"/>
+ <ContentApproval contentApprovalId="CA0014" contentId="CD0001" contentRevisionSeqId="000013" roleTypeId="BUYER"/>
</entity-engine-xml>
Modified: trunk/applications/content/entitydef/entitygroup.xml
===================================================================
--- trunk/applications/content/entitydef/entitygroup.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/entitydef/entitygroup.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -122,6 +122,7 @@
<!-- ========================================================= -->
<entity-group group="org.ofbiz" entity="AssocRevisionItemView" />
+ <entity-group group="org.ofbiz" entity="ContentAssocOptViewFrom" />
</entitygroup>
Modified: trunk/applications/content/entitydef/entitymodel.xml
===================================================================
--- trunk/applications/content/entitydef/entitymodel.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/entitydef/entitymodel.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -1372,10 +1372,12 @@
title="Latest Revision Children">
<member-entity entity-alias="CRI" entity-name="ContentRevisionItem"/>
<member-entity entity-alias="CA" entity-name="ContentAssoc"/>
- <alias entity-alias="CA" name="contentIdTo" group-by="false"/>
- <alias entity-alias="CA" name="contentAssocTypeId" group-by="false"/>
- <alias entity-alias="CA" name="thruDate" group-by="false"/>
- <alias entity-alias="CA" name="fromDate" group-by="false"/>
+ <alias entity-alias="CA" name="contentId" group-by="true"/>
+ <alias entity-alias="CA" name="contentIdTo" group-by="true"/>
+ <alias entity-alias="CA" name="contentAssocTypeId" group-by="true"/>
+ <alias entity-alias="CA" name="thruDate" group-by="true"/>
+ <alias entity-alias="CA" name="fromDate" group-by="true"/>
+ <alias entity-alias="CA" name="sequenceNum" group-by="true"/>
<alias entity-alias="CRI" name="rootRevisionContentId" field="contentId" group-by="true"/>
<alias entity-alias="CRI" name="itemContentId" group-by="true"/>
<alias entity-alias="CRI" name="contentRevisionSeqId" group-by="false"/>
@@ -1384,5 +1386,35 @@
<key-map field-name="contentId" rel-field-name="itemContentId"/>
</view-link>
</view-entity>
+
+ <view-entity entity-name="ContentAssocOptViewFrom"
+ package-name="org.ofbiz.content.content"
+ title="Main Assoc To">
+ <member-entity entity-alias="CO" entity-name="Content"/>
+ <member-entity entity-alias="CA" entity-name="ContentAssoc"/>
+ <alias-all entity-alias="CO"/>
+ <alias-all entity-alias="CA" prefix="ca"/>
+ <alias entity-alias="CA" name="contentIdStart" field="contentIdTo"/>
+ <view-link entity-alias="CO" rel-entity-alias="CA" rel-optional="true">
+ <key-map field-name="contentId"/>
+ </view-link>
+ </view-entity>
+<!--
+ <view-entity entity-name="ContentRevisionItemAndContentApprovalView"
+ package-name="org.ofbiz.content.content"
+ title="ContentRevisionItem and ContentApproval">
+ <member-entity entity-alias="CRI" entity-name="ContentRevisionItem"/>
+ <member-entity entity-alias="CA" entity-name="ContentApproval"/>
+ <alias-all entity-alias="CRI" />
+ <alias entity-alias="CA" name="caContentId" field="contentId" group-by="true" />
+ <alias entity-alias="CA" name="caContentRevisionSeqId" name="contentRevisionSeqId" group-by="true"/>
+ <alias entity-alias="CA" name="approvalCount" field="contentId" function="count"/>
+ <view-link entity-alias="CRI" rel-entity-alias="CA" rel-optional="true">
+ <key-map field-name="contentId"/>
+ <key-map field-name="contentRevisionSeqId"/>
+ </view-link>
+ </view-entity>
+-->
+
</entitymodel>
Modified: trunk/applications/content/ofbiz-component.xml
===================================================================
--- trunk/applications/content/ofbiz-component.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/ofbiz-component.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -23,7 +23,7 @@
-->
<ofbiz-component name="content"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<classpath type="dir" location="config"/>
@@ -48,6 +48,6 @@
title="Content"
server="default-server"
location="webapp/content"
- base-permission="OFBTOOLS,CONTENTMGR"
+ base-permission="NONE"
mount-point="/content"/>
</ofbiz-component>
Modified: trunk/applications/content/script/org/ofbiz/content/compdoc/CompDocServices.xml
===================================================================
--- trunk/applications/content/script/org/ofbiz/content/compdoc/CompDocServices.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/script/org/ofbiz/content/compdoc/CompDocServices.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -30,6 +30,7 @@
<!-- Methods for ContentApproval -->
+
<simple-method method-name="createContentApproval" short-description="Create ContentApproval">
<log level="always" message="got into createContentApproval(4)"></log>
<check-permission action="_CREATE" permission="CONTENTMGR">
@@ -119,6 +120,7 @@
<set-nonpk-fields map-name="parameters" value-name="lookedUpValue"/>
<store-value value-name="lookedUpValue"/>
</simple-method>
+
<simple-method method-name="removeContentRevisionItem" short-description="Remove ContentRevisionItem">
<check-permission action="_DELETE" permission="CONTENTMGR">
<fail-message message="Security Error: to run removeContentRevisionItem you must have the CONTENTMGR_DELETE or CONTENTMGR_ADMIN permission"/>
@@ -148,29 +150,40 @@
<log level="info" message="incrementedSeq(0): ${incrementedSeq}"/>
<log level="info" message="ContentRevision(0): ${newEntity}"/>
<if-not-empty field-name="incrementedSeq">
- <calculate field-name="incrementedSeq" type="String">
+ <calculate field-name="incrementedSeq" type="Long">
<calcop operator="add">
<calcop operator="get" field-name="incrementedSeq"/>
<number value="1"/>
</calcop>
</calculate>
<else>
- <set field="incrementedSeq" value="1" type="String"/>
+ <set field="incrementedSeq" value="1" type="Long"/>
</else>
</if-not-empty>
+ <calculate field-name="numericPadding" type="Integer">
+ <number value="6"/>
+ </calculate>
+ <call-class-method method-name="padNumberWithLeadingZeros" class-name="org.ofbiz.content.compdoc.CompDocEvents"
+ ret-field-name="paddedSeqId">
+ <field field-name="incrementedSeq" type="Long"/>
+ <field field-name="numericPadding" type="Integer"/>
+ </call-class-method>
<log level="info" message="incrementedSeq(1): ${incrementedSeq}"/>
+ <log level="info" message="numericPadding(1): ${numericPadding}"/>
+ <log level="info" message="paddedSeqId: ${paddedSeqId}"/>
<set-pk-fields map-name="parameters" value-name="newEntity"/>
<set-nonpk-fields map-name="parameters" value-name="newEntity"/>
- <set field="newEntity.contentRevisionSeqId" from-field="incrementedSeq"/>
+ <set field="newEntity.contentRevisionSeqId" from-field="paddedSeqId"/>
<log level="info" message="ContentRevision(1): ${newEntity}"/>
<create-value value-name="newEntity"/>
<make-value entity-name="ContentRevisionItem" value-name="newEntity"/>
<set-pk-fields map-name="parameters" value-name="newEntity"/>
- <set field="newEntity.contentRevisionSeqId" from-field="incrementedSeq"/>
+ <set field="newEntity.contentRevisionSeqId" from-field="paddedSeqId"/>
<set-nonpk-fields map-name="parameters" value-name="newEntity"/>
<create-value value-name="newEntity"/>
<log level="info" message="ContentRevisionItem(1): ${newEntity}"/>
+ <field-to-result field-name="paddedSeqId" result-name="contentRevisionSeqId"/>
</simple-method>
<simple-method method-name="getRevisionDataResource" short-description="Get version of DataResource that fits overall revision">
@@ -195,6 +208,7 @@
</if-not-empty>
</if-not-empty>
</simple-method>
+
<simple-method method-name="getRevisionItemDataResource" short-description="Get version of DataResource that fits overall revision">
<entity-one entity-name="ContentRevisionItem" value-name="contentRevisionItem" use-cache="true">
<field-map field-name="contentId" env-name="parameters.contentId"/>
@@ -211,4 +225,188 @@
<field-to-result field-name="dataResource" result-name="dataResource"/>
</if-not-empty>
</simple-method>
+
+ <simple-method method-name="getApprovalsWithPermissions" short-description="Get ContentApprovals for approval process">
+
+ <entity-and entity-name="ContentApproval" list-name="instanceApprovalList" use-cache="true">
+ <field-map field-name="contentId" env-name="parameters.rootContentId"/>
+ <field-map field-name="contentRevisionSeqId" env-name="parameters.contentRevisionSeqId"/>
+ </entity-and>
+ <log level="info" message="instanceApprovalList: ${instanceApprovalList}"/>
+ <log level="info" message="rootContentId: ${parameters.rootContentId}"/>
+ <log level="info" message="contentRevisionSeqId: ${parameters.contentRevisionSeqId}"/>
+ <set field="inMap2.userLogin" from-field="userLogin"/>
+ <iterate list-name="instanceApprovalList" entry-name="contentApproval">
+ <set field="inMap2.contentApprovalId" from-field="contentApproval.contentApprovalId"/>
+ <call-service service-name="hasApprovalPermission" in-map-name="inMap2">
+ <result-to-field result-name="approvalPermExists"/>
+ </call-service>
+ <set field="gvAndPerm" from-field="contentApproval"/>
+ <set field="gvAndPerm.permission" from-field="openApprovalExists"/>
+ <set field="contentApprovalList[]" from-field="gvAndPerm"/>
+ </iterate>
+ <field-to-result field-name="contentApprovalList"/>
+</simple-method>
+
+ <simple-method method-name="hasApprovalPermission" short-description="Determine ContentApproval permission from passed value">
+ <make-value entity-name="ContentApproval" value-name="contentApprovalPK"/>
+ <set field="contentApprovalPK.contentApprovalId" from-field="parameters.contentApprovalId"/>
+ <find-by-primary-key entity-name="ContentApproval" value-name="contentApproval" map-name="contentApprovalPK" use-cache="true"/>
+ <set field="partyId" from-field="parameters.userLogin.partyId"/>
+ <log level="info" message="contentApproval: ${contentApproval}"/>
+ <if-compare field-name="contentApproval.partyId" value="${partyId}" operator="equals">
+ <set field="approvalPermExists" value="true"/>
+ <log level="info" message="approvalPermExists: ${approvalPermExists}"/>
+ <field-to-result result-name="approvalPermExists" field-name="approvalPermExists"/>
+ <return/>
+ </if-compare>
+ <if-not-empty field-name="contentApproval.roleTypeId">
+ <now-timestamp-to-env env-name="nowTimestamp"/>
+ <entity-condition entity-name="ContentRole" list-name="contentRoleList">
+ <condition-list combine="and">
+ <condition-expr field-name="contentId" env-name="contentId" operator="equals"/>
+ <condition-expr field-name="partyId" env-name="partyId" operator="equals"/>
+ <condition-expr field-name="fromDate" env-name="nowTimestamp" operator="less-equals"/>
+ <condition-list combine="or">
+ <condition-expr field-name="thruDate" env-name="nowTimestamp" operator="greater"/>
+ <condition-expr field-name="thruDate" value="" operator="equals"/>
+ </condition-list>
+ </condition-list>
+ </entity-condition>
+ <if-not-empty field-name="contentRoleList">
+ <set field="approvalPermExists" value="true"/>
+ <field-to-result result-name="approvalPermExists"/>
+ <return/>
+ </if-not-empty>
+ </if-not-empty>
+ <set field="approvalPermExists" value="false"/>
+ <field-to-result result-name="approvalPermExists"/>
+ <return/>
+ </simple-method>
+
+ <simple-method method-name="prepForApproval" short-description="Set ContentApprovals for approval process">
+ <log level="info" message="got into prepForApproval"></log>
+ <set field="rootTemplateContentId" from-field="parameters.rootTemplateContentId" />
+ <check-permission action="_CREATE" permission="CONTENTMGR">
+ <fail-message message="Security Error: to run prepForApproval you must have the CONTENTMGR_CREATE or CONTENTMGR_ADMIN permission"/>
+ </check-permission>
+ <check-errors/>
+
+ <set field="context.rootTemplateContentId" from-field="parameters.rootTemplateContentId" />
+
+ <!-- check for open approvals -->
+ <call-service service-name="checkForOpenApprovals" in-map-name="context">
+ </call-service>
+
+ <!-- bump CDT/I up one for new approval -->
+ <!--
+ <set field="context2.contentId" from-field="parameters.rootTemplateContentId" />
+ <set field="context2.itemContentId" from-field="parameters.rootTemplateContentId" />
+ <call-service service-name="persistContentRevisionAndItem" in-map-name="context2">
+ <result-to-field result-name="contentRevisionSeqId" field-name="templateContentRevisionSeqId"/>
+ <result-to-result result-name="contentRevisionSeqId" service-result-name="templateContentRevisionSeqId"/>
+ </call-service>
+
+ <entity-condition entity-name="Content" list-name="contentList">
+ <condition-expr field-name="instanceOfContentId" operator="equals" env-name="parameters.rootTemplateContentId"/>
+ </entity-condition>
+ <if-not-empty field-name="contentList">
+ <set field="newEntity" from-field="contentList[0]" />
+ <set field="context3.contentId" from-field="newEntity.contentId"/>
+ <set field="rootInstanceContentId" from-field="newEntity.contentId"/>
+ <else>
+ <add-error>
+ <fail-message message="No ContentRevision entity for CDI related to CDT with contentId: ${parameters.rootTemplateContentId}"/>
+ </add-error>
+ <check-errors/>
+ </else>
+ </if-not-empty>
+ -->
+
+ <call-service service-name="persistContentRevisionAndItem" in-map-name="context3">
+ <result-to-field result-name="contentRevisionSeqId" field-name="instanceContentRevisionSeqId"/>
+ <result-to-result result-name="contentRevisionSeqId" service-result-name="instanceContentRevisionSeqId"/>
+ </call-service>
+
+ <!-- create instance approval records for current CDI -->
+ <entity-condition entity-name="ContentApproval" list-name="contentApprovalList">
+ <condition-expr field-name="contentId" operator="equals" env-name="parameters.rootTemplateContentId"/>
+ <order-by field-name="sequenceNum DESC"/>
+ </entity-condition>
+ <if-not-empty field-name="contentApprovalList">
+ <field-to-result field-name="contentApprovalList" result-name="templateApprovalList"/>
+ <iterate list-name="contentApprovalList" entry-name="templateContentApproval">
+ <make-value entity-name="ContentApproval" value-name="contentApproval"/>
+ <make-next-seq-id seq-field-name="contentApprovalId" value-name="contentApproval"/>
+ <set field="contentApproval.contentId" from-field="rootInstanceContentId"/>
+ <set field="contentApproval.contentRevisionSeqId" from-field="instanceContentRevisionSeqId"/>
+ <set field="contentApproval.approvalStatusId" value="CNTAP_READY"/>
+ <set field="contentApproval.partyId" from-field="templateContentApproval.partyId" />
+ <set field="contentApproval.roleTypeId" from-field="templateContentApproval.roleTypeId" />
+ <create-value value-name="contentApproval"/>
+ <set field="instanceApprovalList[]" from-field="contentApproval"/>
+ </iterate>
+ <field-to-result field-name="instanceApprovalList" result-name="instanceApprovalList"/>
+ <else>
+ <add-error>
+ <fail-message message="No ContentApproval entities for CDI related to CDT with contentId: ${parameters.rootTemplateContentId}"/>
+ </add-error>
+ <check-errors/>
+ </else>
+ </if-not-empty>
+
+ </simple-method>
+
+ <simple-method method-name="checkForOpenApprovals" short-description="Check to see if any open approval conditions exist">
+
+ <!-- Find CDI tied to root CDT -->
+ <set field="rootTemplateContentId" from-field="parameters.rootTemplateContentId" />
+ <entity-condition entity-name="Content" list-name="contentList">
+ <condition-expr field-name="instanceOfContentId" operator="equals" env-name="parameters.rootTemplateContentId"/>
+ </entity-condition>
+ <if-not-empty field-name="contentList">
+ <set field="rootInstanceContentId" from-field="contentList[0].contentId"/>
+ <else>
+ <add-error>
+ <fail-message message="No ContentRevision entity for CDI related to CDT with contentId: ${parameters.rootTemplateContentId}"/>
+ </add-error>
+ <check-errors/>
+ </else>
+ </if-not-empty>
+
+ <!-- Look for most recent ContentApproval tied to CDI -->
+ <entity-condition entity-name="ContentApproval" list-name="contentApprovalList">
+ <condition-expr field-name="contentId" operator="equals" env-name="rootInstanceContentId"/>
+ <order-by field-name="contentRevisionSeqId DESC"/>
+ <order-by field-name="sequenceNum DESC"/>
+ </entity-condition>
+ <if-not-empty field-name="contentApprovalList">
+ <string-to-field string="true" field-name="openApprovalExists"/>
+ <field-to-result field-name="openApprovalExists" result-name="openApprovalExists"/>
+ <set field="targetContentRevisionSeqId" from-field="contentApprovalList[0].contentRevisionSeqId"/>
+ <iterate list-name="contentApprovalList" entry-name="contentApproval">
+ <if-compare field-name="contentApproval.contentRevisionSeqId" operator="equals" value="${targetContentRevisionSeqId}">
+ <if>
+ <condition>
+ <or>
+ <if-compare field-name="contentApproval.approvalStatusId" operator="equals" value="CNTAP_SOFT_REJ"/>
+ <if-compare field-name="contentApproval.approvalStatusId" operator="equals" value="CNTAP_REJECTED"/>
+ </or>
+ </condition>
+ <then>
+ <string-to-field string="false" field-name="openApprovalExists"/>
+ <field-to-result field-name="openApprovalExists" result-name="openApprovalExists"/>
+ </then>
+ </if>
+ </if-compare>
+ </iterate>
+ <else>
+ <add-error>
+ <fail-message message="No ContentApprovals entities for contentId: ${rootInstanceContentId}"/>
+ </add-error>
+ <check-errors/>
+ </else>
+ </if-not-empty>
+ </simple-method>
+
</simple-methods>
Modified: trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml
===================================================================
--- trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- * Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org
+ * Copyright (c) 2001-2004 The Open For Business Project and repective authors.
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
@@ -571,7 +571,7 @@
Not that this service does not now do permission checking.
-->
- <simple-method method-name="getElectronicText" short-description="Get Electronic Text">
+ <simple-method method-name="getElectronicText" short-description="Get Electronic Text" login-required="false">
<field-to-env field-name="userLogin" map-name="parameters" env-name="userLogin"/>
<field-to-env field-name="content" map-name="parameters" env-name="currentContent"/>
<log level="always" message="GETELECTRONICTEXT, currentContent:${currentContent}"/>
Modified: trunk/applications/content/servicedef/services.xml
===================================================================
--- trunk/applications/content/servicedef/services.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/servicedef/services.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -1859,6 +1859,8 @@
<attribute name="rootTemplateContentId" type="String" mode="IN" optional="false"/>
<attribute name="templateContentRevisionSeqId" type="String" mode="OUT" optional="false"/>
<attribute name="instanceContentRevisionSeqId" type="String" mode="OUT" optional="false"/>
+ <attribute name="templateApprovalList" type="List" mode="OUT" optional="true"/>
+ <attribute name="instanceApprovalList" type="List" mode="OUT" optional="true"/>
</service>
<service name="checkForOpenApprovals" engine="simple"
@@ -1869,4 +1871,23 @@
<attribute name="openApprovalExists" type="Boolean" mode="OUT" optional="false"/>
</service>
+ <service name="getApprovalsWithPermissions" engine="simple"
+ location="org/ofbiz/content/compdoc/CompDocServices.xml"
+ invoke="getApprovalsWithPermissions" auth="false" >
+ <description>Get a list of ContentApprovals and permission indicators</description>
+ <attribute name="rootContentId" type="String" mode="IN" optional="false"/>
+ <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="false"/>
+ <attribute name="userLogin" type="org.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
+ <attribute name="contentApprovalList" type="List" mode="OUT" optional="true"/>
+ </service>
+
+ <service name="hasApprovalPermission" engine="simple"
+ location="org/ofbiz/content/compdoc/CompDocServices.xml"
+ invoke="hasApprovalPermission" auth="false">
+ <description>Determine permission status for record</description>
+ <attribute name="contentApprovalId" type="String" mode="IN" optional="false"/>
+ <attribute name="userLogin" type="org.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
+ <attribute name="approvalPermExists" type="String" mode="OUT" optional="true"/>
+ </service>
+
</services>
Modified: trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java
===================================================================
--- trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java 2006-01-29 08:07:31 UTC (rev 6606)
@@ -218,33 +218,7 @@
if (Debug.infoOn()) Debug.logInfo("in persist... contentPurposeList(0):" + contentPurposeList, null);
if (Debug.infoOn()) Debug.logInfo("in persist... textData(0):" + context.get("textData"), null);
-
- // save expected primary keys on result now in case there is no operation that uses them
- String s = (String)context.get("contentId");
- result.put("contentId", s);
- s = (String)context.get("dataResourceId");
- if (UtilValidate.isEmpty(s))
- s = (String)context.get("drDataResourceId");
- result.put("dataResourceId", s);
- result.put("drDataResourceId", s);
-
- s = (String)context.get("contentIdTo");
- if (UtilValidate.isEmpty(s))
- s = (String)context.get("caContentIdTo");
- result.put("contentIdTo", s);
- result.put("caContentIdTo", s);
- s = (String)context.get("contentAssocTypeId");
- if (UtilValidate.isEmpty(s))
- s = (String)context.get("caContentAssocTypeId");
- result.put("contentAssocTypeId", s);
- result.put("caContentAssocTypeId", s);
- Object o = context.get("fromDate");
- if (o == null)
- o = context.get("caFromDate");
- result.put("fromDate", o);
- result.put("caFromDate", o);
-
GenericValue content = delegator.makeValue("Content", null);
content.setPKFields(context);
content.setNonPKFields(context);
@@ -254,7 +228,6 @@
String origDataResourceId = (String)content.get("dataResourceId");
if (Debug.infoOn()) Debug.logInfo("in persist... contentId(0):" + contentId, null);
-
GenericValue dataResource = delegator.makeValue("DataResource", null);
dataResource.setPKFields(context);
dataResource.setNonPKFields(context);
@@ -264,12 +237,29 @@
String dataResourceTypeId = (String)dataResource.get("dataResourceTypeId");
if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceId(0):" + dataResourceId, null);
+ GenericValue contentAssoc = delegator.makeValue("ContentAssoc", null);
+ contentAssoc.setPKFields(context);
+ contentAssoc.setNonPKFields(context);
+ contentAssoc.setAllFields(context, false, "ca", null);
+ context.putAll(contentAssoc);
+
GenericValue electronicText = delegator.makeValue("ElectronicText", null);
electronicText.setPKFields(context);
electronicText.setNonPKFields(context);
String textData = (String)electronicText.get("textData");
-
+
+ // save expected primary keys on result now in case there is no operation that uses them
+ result.put("contentId", content.get("contentId"));
+ result.put("dataResourceId", dataResource.get("dataResourceId"));
+ result.put("contentIdTo", contentAssoc.get("contentIdTo"));
+ result.put("fromDate", contentAssoc.get("fromDate"));
+ result.put("contentAssocTypeId", contentAssoc.get("contentAssocTypeId"));
+ result.put("drDataResourceId", dataResource.get("dataResourceId"));
+ result.put("caContentIdTo", contentAssoc.get("contentIdTo"));
+ result.put("caFromDate", contentAssoc.get("fromDate"));
+ result.put("caContentAssocTypeId", contentAssoc.get("contentAssocTypeId"));
+
// get user info for multiple use
GenericValue userLogin = (GenericValue) context.get("userLogin");
String userLoginId = (String)userLogin.get("userLoginId");
@@ -286,147 +276,21 @@
boolean dataResourceExists = true;
if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceTypeId(0):" + dataResourceTypeId, null);
if (UtilValidate.isNotEmpty(dataResourceTypeId) ) {
- context.put("skipPermissionCheck", "granted"); // TODO: a temp hack because I don't want to bother with DataResource permissions at this time.
- if (UtilValidate.isEmpty(dataResourceId)) {
- dataResourceExists = false;
- } else {
- try {
- GenericValue val = delegator.findByPrimaryKey("DataResource", UtilMisc.toMap("dataResourceId", dataResourceId));
- if (val == null)
- dataResourceExists = false;
- } catch(GenericEntityException e) {
- return ServiceUtil.returnError(e.getMessage());
- }
+ Map dataResourceResult = new HashMap();
+ try {
+ dataResourceResult = persistDataResourceAndDataMethod(dctx, context);
+ } catch (GenericServiceException e) {
+ return ServiceUtil.returnError(e.getMessage());
+ } catch (GenericEntityException e) {
+ return ServiceUtil.returnError(e.getMessage());
+ } catch (Exception e) {
+ return ServiceUtil.returnError(e.getMessage());
}
- Map newDrContext = new HashMap();
- ModelService dataResourceModel = dispatcher.getDispatchContext().getModelService("updateDataResource");
- Map ctx = dataResourceModel.makeValid(dataResource, "IN");
- newDrContext.putAll(ctx);
- newDrContext.put("userLogin", userLogin);
- newDrContext.put("skipPermissionCheck", context.get("skipPermissionCheck"));
- // Assumes binary data is always in field, "imageData"
- ByteWrapper byteWrapper = (ByteWrapper)context.get("imageData");
- String mimeTypeId = (String) newDrContext.get("mimeTypeId");
- if (byteWrapper != null && (mimeTypeId == null || (mimeTypeId.indexOf("image") >= 0))) {
- mimeTypeId = (String) context.get("_imageData_contentType");
- String fileName = (String) context.get("_imageData_fileName");
- newDrContext.put("objectInfo", fileName);
- newDrContext.put("mimeTypeId", mimeTypeId);
+ String errorMsg = ServiceUtil.getErrorMessage(dataResourceResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
}
- if (!dataResourceExists) {
- Map thisResult = dispatcher.runSync("createDataResource", newDrContext);
- String errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- dataResourceId = (String)thisResult.get("dataResourceId");
- if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceId(0):" + dataResourceId, null);
- dataResource = (GenericValue)thisResult.get("dataResource");
- Map fileContext = new HashMap();
- fileContext.put("userLogin", userLogin);
- if ( dataResourceTypeId.indexOf("_FILE") >=0) {
- boolean hasData = false;
- if (textData != null) {
- fileContext.put("textData", textData);
- hasData = true;
- }
- if (byteWrapper != null) {
- fileContext.put("binData", byteWrapper);
- hasData = true;
- }
- if (hasData) {
- fileContext.put("rootDir", context.get("rootDir"));
- fileContext.put("dataResourceTypeId", dataResourceTypeId);
- fileContext.put("objectInfo", dataResource.get("objectInfo"));
- thisResult = dispatcher.runSync("createFile", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- }
- } else if (dataResourceTypeId.equals("IMAGE_OBJECT")) {
- if (byteWrapper != null) {
- fileContext.put("dataResourceId", dataResourceId);
- fileContext.put("imageData", byteWrapper);
- thisResult = dispatcher.runSync("createImage", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- } else {
- return ServiceUtil.returnError("'byteWrapper' empty when trying to create database image.");
- }
- } else if (dataResourceTypeId.equals("SHORT_TEXT")) {
- } else {
- // assume ELECTRONIC_TEXT
- if (UtilValidate.isNotEmpty(textData)) {
- fileContext.put("dataResourceId", dataResourceId);
- fileContext.put("textData", textData);
- thisResult = dispatcher.runSync("createElectronicText", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- }
- }
- } else {
- Map thisResult = dispatcher.runSync("updateDataResource", newDrContext);
- String errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- //Map thisResult = DataServices.updateDataResourceMethod(dctx, context);
- if (Debug.infoOn()) Debug.logInfo("in persist... thisResult.permissionStatus(0):" + thisResult.get("permissionStatus"), null);
- //thisResult = DataServices.updateElectronicTextMethod(dctx, context);
- Map fileContext = new HashMap();
- fileContext.put("userLogin", userLogin);
- String forceElectronicText = (String)context.get("forceElectronicText");
- if (dataResourceTypeId.indexOf("_FILE") >=0) {
- boolean hasData = false;
- if (textData != null) {
- fileContext.put("textData", textData);
- hasData = true;
- }
- if (byteWrapper != null) {
- fileContext.put("binData", byteWrapper);
- hasData = true;
- }
- if (hasData || "true".equalsIgnoreCase(forceElectronicText)) {
- fileContext.put("rootDir", context.get("rootDir"));
- fileContext.put("dataResourcetype", dataResourceTypeId);
- fileContext.put("objectInfo", dataResource.get("objectInfo"));
- thisResult = dispatcher.runSync("updateFile", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- }
- } else if (dataResourceTypeId.equals("IMAGE_OBJECT")) {
- if (byteWrapper != null || "true".equalsIgnoreCase(forceElectronicText)) {
- fileContext.put("dataResourceId", dataResourceId);
- fileContext.put("imageData", byteWrapper);
- thisResult = dispatcher.runSync("updateImage", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- } else {
- //return ServiceUtil.returnError("'byteWrapper' empty when trying to create database image.");
- }
- } else if (dataResourceTypeId.equals("SHORT_TEXT")) {
- } else {
- if (UtilValidate.isNotEmpty(textData) || "true".equalsIgnoreCase(forceElectronicText)) {
- fileContext.put("dataResourceId", dataResourceId);
- fileContext.put("textData", textData);
- thisResult = dispatcher.runSync("updateElectronicText", fileContext);
- errorMsg = ServiceUtil.getErrorMessage(thisResult);
- if (UtilValidate.isNotEmpty(errorMsg)) {
- return ServiceUtil.returnError(errorMsg);
- }
- }
- }
- }
-
+ dataResourceId = (String)dataResourceResult.get("dataResourceId");
result.put("dataResourceId", dataResourceId);
result.put("drDataResourceId", dataResourceId);
context.put("dataResourceId", dataResourceId);
@@ -544,13 +408,9 @@
contentAssocContext.put("skipPermissionCheck", context.get("skipPermissionCheck"));
Map thisResult = null;
try {
- GenericValue contentAssoc = delegator.makeValue("ContentAssoc", null);
- GenericValue contentAssocPK = delegator.makeValue("ContentAssoc", null);
- contentAssoc.setAllFields(context, false, null, null);
- contentAssoc.setAllFields(context, false, "ca", null);
- contentAssocPK.setAllFields(context, false, null, new Boolean(true));
- contentAssocPK.setAllFields(context, false, "ca", new Boolean(true));
- context.putAll(contentAssoc);
+ contentAssoc.setPKFields(context);
+ contentAssoc.setNonPKFields(context);
+ GenericValue contentAssocPK = (GenericValue)contentAssoc.clone();
GenericValue contentAssocExisting = null;
if (contentAssocPK.isPrimaryKey())
contentAssocExisting = delegator.findByPrimaryKeyCache("ContentAssoc", contentAssocPK);
@@ -710,7 +570,198 @@
}
return results;
}
+
+ public static Map persistDataResourceAndData(DispatchContext dctx, Map context) {
+
+ Map result = new HashMap();
+ try {
+ result = persistDataResourceAndDataMethod(dctx, context);
+ } catch (GenericServiceException e) {
+ return ServiceUtil.returnError(e.getMessage());
+ } catch (GenericEntityException e) {
+ return ServiceUtil.returnError(e.getMessage());
+ } catch (Exception e) {
+ return ServiceUtil.returnError(e.getMessage());
+ }
+ String errorMsg = ServiceUtil.getErrorMessage(result);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ return result;
+ }
+
+ public static Map persistDataResourceAndDataMethod(DispatchContext dctx, Map context) throws GenericServiceException, GenericEntityException, Exception {
+
+ GenericDelegator delegator = dctx.getDelegator();
+ LocalDispatcher dispatcher = dctx.getDispatcher();
+ Map result = new HashMap();
+ Map newDrContext = new HashMap();
+ GenericValue dataResource = delegator.makeValue("DataResource", null);
+ dataResource.setPKFields(context);
+ dataResource.setNonPKFields(context);
+ dataResource.setAllFields(context, false, "dr", null);
+ context.putAll(dataResource);
+
+ GenericValue electronicText = delegator.makeValue("ElectronicText", null);
+ electronicText.setPKFields(context);
+ electronicText.setNonPKFields(context);
+ String textData = (String)electronicText.get("textData");
+
+ String dataResourceId = (String)dataResource.get("dataResourceId");
+ String dataResourceTypeId = (String)dataResource.get("dataResourceTypeId");
+ if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceId(0):" + dataResourceId, null);
+ context.put("skipPermissionCheck", "granted"); // TODO: a temp hack because I don't want to bother with DataResource permissions at this time.
+ boolean dataResourceExists = true;
+ if (UtilValidate.isEmpty(dataResourceId)) {
+ dataResourceExists = false;
+ } else {
+ try {
+ GenericValue val = delegator.findByPrimaryKey("DataResource", UtilMisc.toMap("dataResourceId", dataResourceId));
+ if (val == null)
+ dataResourceExists = false;
+ } catch(GenericEntityException e) {
+ return ServiceUtil.returnError(e.getMessage());
+ }
+ }
+ GenericValue userLogin = (GenericValue) context.get("userLogin");
+ String userLoginId = (String)userLogin.get("userLoginId");
+ ModelService dataResourceModel = dispatcher.getDispatchContext().getModelService("updateDataResource");
+ Map ctx = dataResourceModel.makeValid(dataResource, "IN");
+ newDrContext.putAll(ctx);
+ newDrContext.put("userLogin", userLogin);
+ newDrContext.put("skipPermissionCheck", context.get("skipPermissionCheck"));
+ ByteWrapper byteWrapper = (ByteWrapper)context.get("imageData");
+ String mimeTypeId = (String) newDrContext.get("mimeTypeId");
+ if (byteWrapper != null && (mimeTypeId == null || (mimeTypeId.indexOf("image") >= 0) || (mimeTypeId.indexOf("application") >= 0))) {
+ mimeTypeId = (String) context.get("_imageData_contentType");
+ String fileName = (String) context.get("_imageData_fileName");
+ newDrContext.put("objectInfo", fileName);
+ newDrContext.put("mimeTypeId", mimeTypeId);
+ }
+
+ if (!dataResourceExists) {
+ Map thisResult = dispatcher.runSync("createDataResource", newDrContext);
+ String errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ throw(new Exception(errorMsg));
+ }
+ dataResourceId = (String)thisResult.get("dataResourceId");
+ if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceId(0):" + dataResourceId, null);
+ dataResource = (GenericValue)thisResult.get("dataResource");
+ Map fileContext = new HashMap();
+ fileContext.put("userLogin", userLogin);
+ if ( dataResourceTypeId.indexOf("_FILE") >=0) {
+ boolean hasData = false;
+ if (textData != null) {
+ fileContext.put("textData", textData);
+ hasData = true;
+ }
+ if (byteWrapper != null) {
+ fileContext.put("binData", byteWrapper);
+ hasData = true;
+ }
+ if (hasData) {
+ fileContext.put("rootDir", context.get("rootDir"));
+ fileContext.put("dataResourceTypeId", dataResourceTypeId);
+ fileContext.put("objectInfo", dataResource.get("objectInfo"));
+ thisResult = dispatcher.runSync("createFile", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ }
+ } else if (dataResourceTypeId.equals("IMAGE_OBJECT")) {
+ if (byteWrapper != null) {
+ fileContext.put("dataResourceId", dataResourceId);
+ fileContext.put("imageData", byteWrapper);
+ thisResult = dispatcher.runSync("createImage", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ } else {
+ return ServiceUtil.returnError("'byteWrapper' empty when trying to create database image.");
+ }
+ } else if (dataResourceTypeId.equals("SHORT_TEXT")) {
+ } else if (dataResourceTypeId.startsWith("SURVEY")) {
+ } else {
+ // assume ELECTRONIC_TEXT
+ if (UtilValidate.isNotEmpty(textData)) {
+ fileContext.put("dataResourceId", dataResourceId);
+ fileContext.put("textData", textData);
+ thisResult = dispatcher.runSync("createElectronicText", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ }
+ }
+ } else {
+ Map thisResult = dispatcher.runSync("updateDataResource", context);
+ String errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ //Map thisResult = DataServices.updateDataResourceMethod(dctx, context);
+ if (Debug.infoOn()) Debug.logInfo("in persist... thisResult.permissionStatus(0):" + thisResult.get("permissionStatus"), null);
+ //thisResult = DataServices.updateElectronicTextMethod(dctx, context);
+ Map fileContext = new HashMap();
+ fileContext.put("userLogin", userLogin);
+ String forceElectronicText = (String)context.get("forceElectronicText");
+ if (dataResourceTypeId.indexOf("_FILE") >=0) {
+ boolean hasData = false;
+ if (textData != null) {
+ fileContext.put("textData", textData);
+ hasData = true;
+ }
+ if (byteWrapper != null) {
+ fileContext.put("binData", byteWrapper);
+ hasData = true;
+ }
+ if (hasData || "true".equalsIgnoreCase(forceElectronicText)) {
+ fileContext.put("rootDir", context.get("rootDir"));
+ fileContext.put("dataResourcetype", dataResourceTypeId);
+ fileContext.put("objectInfo", dataResource.get("objectInfo"));
+ thisResult = dispatcher.runSync("updateFile", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ }
+ } else if (dataResourceTypeId.equals("IMAGE_OBJECT")) {
+ if (byteWrapper != null || "true".equalsIgnoreCase(forceElectronicText)) {
+ fileContext.put("dataResourceId", dataResourceId);
+ fileContext.put("imageData", byteWrapper);
+ thisResult = dispatcher.runSync("updateImage", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ } else {
+ //return ServiceUtil.returnError("'byteWrapper' empty when trying to create database image.");
+ }
+ } else if (dataResourceTypeId.equals("SHORT_TEXT")) {
+ } else if (dataResourceTypeId.startsWith("SURVEY")) {
+ } else {
+ if (UtilValidate.isNotEmpty(textData) || "true".equalsIgnoreCase(forceElectronicText)) {
+ fileContext.put("dataResourceId", dataResourceId);
+ fileContext.put("textData", textData);
+ thisResult = dispatcher.runSync("updateElectronicText", fileContext);
+ errorMsg = ServiceUtil.getErrorMessage(thisResult);
+ if (UtilValidate.isNotEmpty(errorMsg)) {
+ return ServiceUtil.returnError(errorMsg);
+ }
+ }
+ }
+ }
+
+ result.put("dataResourceId", dataResourceId);
+ result.put("drDataResourceId", dataResourceId);
+ context.put("dataResourceId", dataResourceId);
+ return result;
+ }
+
public static void addRoleToUser(GenericDelegator delegator, LocalDispatcher dispatcher, Map serviceContext) throws GenericServiceException, GenericEntityException {
String partyId = (String)serviceContext.get("partyId");
Map findMap = UtilMisc.toMap("partyId", partyId);
@@ -1672,12 +1723,12 @@
Map contentRevisionMap = new HashMap();
contentRevisionMap.put("itemContentId", contentId);
contentRevisionMap.put("newDataResourceId", result.get("dataResourceId"));
- contentRevisionMap.put("oldDataResourceId", result.get("oldDataResourceId"));
+ contentRevisionMap.put("oldDataResourceId", oldDataResourceId);
// need committedByPartyId
for (int i=0; i < parentList.size(); i++) {
String thisContentId = (String)parentList.get(i);
contentRevisionMap.put("contentId", thisContentId);
- result = dispatcher.runSync("updateContentRevisionAndItem", contentRevisionMap);
+ result = dispatcher.runSync("persistContentRevisionAndItem", contentRevisionMap);
errorMsg = ServiceUtil.getErrorMessage(result);
if (UtilValidate.isNotEmpty(errorMsg)) {
return ServiceUtil.returnError(errorMsg);
Modified: trunk/applications/content/webapp/content/WEB-INF/actions/content/prepseqno.bsh
===================================================================
--- trunk/applications/content/webapp/content/WEB-INF/actions/content/prepseqno.bsh 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/webapp/content/WEB-INF/actions/content/prepseqno.bsh 2006-01-29 08:07:31 UTC (rev 6606)
@@ -1,6 +1,10 @@
import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilValidate;
seqNo = context.get("caSequenceNum");
+if (UtilValidate.isEmpty(seqNo)) {
+ seqNo = context.get("sequenceNum");
+}
Debug.logInfo("caSequenceNum:" + seqNo, "");
if (seqNo != null) {
seqNumBefore = seqNo - 1;
Modified: trunk/applications/content/webapp/content/WEB-INF/controller.xml
===================================================================
--- trunk/applications/content/webapp/content/WEB-INF/controller.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/webapp/content/WEB-INF/controller.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -935,34 +935,38 @@
</request-map>
<!-- ================ CompDoc Requests ================= -->
- <request-map uri="FindCompDocTemplate">
+ <request-map uri="FindCompDocRoot">
<security auth="true" https="true"/>
- <response name="success" type="view" value="FindCompDocTemplate"/>
+ <response name="success" type="view" value="FindCompDocRoot"/>
</request-map>
- <request-map uri="ListCompDocTemplate">
+ <request-map uri="ListCompDoc">
<security auth="true" https="true"/>
- <response name="success" type="view" value="ListCompDocTemplate"/>
+ <response name="success" type="view" value="ListCompDoc"/>
</request-map>
- <request-map uri="AddCompDocTemplate">
+ <request-map uri="EditCompDoc">
<security auth="true" https="true"/>
- <response name="success" type="view" value="EditCompDocTemplate"/>
+ <response name="success" type="view" value="EditCompDoc"/>
</request-map>
- <request-map uri="EditCompDocTemplate">
+ <request-map uri="EditRootCompDoc">
<security auth="true" https="true"/>
- <response name="success" type="view" value="EditCompDocTemplate"/>
+ <response name="success" type="view" value="EditRootCompDoc"/>
</request-map>
- <request-map uri="AddRootCompDocTemplate">
+ <request-map uri="EditChildCompDoc">
<security auth="true" https="true"/>
- <response name="success" type="view" value="EditRootCompDocTemplate"/>
+ <response name="success" type="view" value="EditChildCompDoc"/>
</request-map>
- <request-map uri="EditRootCompDocTemplate">
+ <request-map uri="ViewCompDocTree">
<security auth="true" https="true"/>
- <response name="success" type="view" value="EditRootCompDocTemplate"/>
+ <response name="success" type="view" value="ViewCompDocTree"/>
</request-map>
- <request-map uri="EditCompDocInstance">
+ <request-map uri="ViewCompDocTemplateTree">
<security auth="true" https="true"/>
- <response name="success" type="view" value="EditCompDocInstance"/>
+ <response name="success" type="view" value="ViewCompDocTemplateTree"/>
</request-map>
+ <request-map uri="ViewCompDocInstanceTree">
+ <security auth="true" https="true"/>
+ <response name="success" type="view" value="ViewCompDocInstanceTree"/>
+ </request-map>
<request-map uri="CompDocTemplateTree">
<security auth="true" https="true"/>
<response name="success" type="view" value="CompDocTemplateTree"/>
@@ -971,32 +975,66 @@
<security auth="true" https="true"/>
<response name="success" type="view" value="EditCompDocContent"/>
</request-map>
+ <request-map uri="EditRootCompDocContent">
+ <security auth="true" https="true"/>
+ <response name="success" type="view" value="EditRootCompDocContent"/>
+ </request-map>
<request-map uri="createCompDocTemplate">
<security auth="true" https="true"/>
<event invoke="persistContentAndAssoc" path="" type="service"/>
<response name="success" type="view" value="EditCompDocTemplate"/>
<response name="error" type="view" value="EditCompDocTemplate"/>
</request-map>
- <request-map uri="updateCompDocTemplate">
+ <request-map uri="updateCompDoc">
<security auth="true" https="true"/>
<event invoke="persistContentAndAssoc" path="" type="service"/>
- <response name="success" type="view" value="EditCompDocTemplate"/>
- <response name="error" type="view" value="EditCompDocTemplate"/>
+ <response name="success" type="view" value="EditChildCompDoc"/>
+ <response name="error" type="view" value="EditChildCompDoc"/>
</request-map>
- <request-map uri="createRootCompDocTemplate">
+ <request-map uri="createCompDoc">
<security auth="true" https="true"/>
- <event invoke="persistRootCompDoc" path="org.ofbiz.content.compdoc.CompDocEvents" type="java"/>
- <response name="success" type="view" value="EditRootCompDocTemplate"/>
- <response name="error" type="view" value="EditRootCompDocTemplate"/>
+ <event invoke="persistContentAndAssoc" path="" type="service"/>
+ <response name="success" type="view" value="EditChildCompDoc"/>
+ <response name="error" type="view" value="EditChildCompDoc"/>
</request-map>
- <request-map uri="updateRootCompDocTemplate">
+ <request-map uri="updateRootCompDoc">
<security auth="true" https="true"/>
- <event invoke="persistRootCompDoc" path="org.ofbiz.content.compdoc.CompDocEvents" type="java"/>
- <response name="success" type="view" value="EditRootCompDocTemplate"/>
- <response name="error" type="view" value="EditRootCompDocTemplate"/>
+ <event invoke="persistContentAndAssoc" path="" type="service"/>
+ <response name="success" type="view" value="EditRootCompDoc"/>
+ <response name="error" type="view" value="EditRootCompDoc"/>
</request-map>
+ <request-map uri="createRootCompDoc">
+ <security auth="true" https="true"/>
+ <event invoke="persistContentAndAssoc" path="" type="service"/>
+ <response name="success" type="view" value="EditRootCompDoc"/>
+ <response name="error" type="view" value="EditRootCompDoc"/>
+ </request-map>
+ <!-- ================ CompDoc ContentRole Requests ================= -->
+ <request-map uri="EditCompDocContentRole">
+ <security auth="true" https="true"/>
+ <response name="success" type="view" value="EditCompDocContentRole"/>
+ </request-map>
+ <request-map uri="addCompDocContentRole">
+ <security auth="true" https="true"/>
+ <event invoke="createContentRole" path="" type="service"/>
+ <response name="success" type="view" value="EditCompDocContentRole"/>
+ <response name="error" type="view" value="EditCompDocContentRole"/>
+ </request-map>
+ <request-map uri="updateCompDocContentRole">
+ <security auth="true" https="true"/>
+ <event invoke="updateContentRole" path="" type="service"/>
+ <response name="success" type="view" value="EditCompDocContentRole"/>
+ <response name="error" type="view" value="EditCompDocContentRole"/>
+ </request-map>
+ <request-map uri="removeCompDocContentRole">
+ <security auth="true" https="true"/>
+ <event invoke="removeContentRole" path="" type="service"/>
+ <response name="success" type="view" value="EditCompDocContentRole"/>
+ <response name="error" type="view" value="EditCompDocContentRole"/>
+ </request-map>
+
<!-- ================ ContentApproval Requests ================= -->
<request-map uri="ListContentApproval">
<security auth="true" https="true"/>
@@ -1614,13 +1652,19 @@
<view-map name="ListContentApproval" page="component://content/widget/compdoc/CompDocScreens.xml#ListContentApproval" type="screen"/>
<view-map name="EditContentApproval" page="component://content/widget/compdoc/CompDocScreens.xml#EditContentApproval" type="screen"/>
- <view-map name="FindCompDocTemplate" page="component://content/widget/compdoc/CompDocScreens.xml#FindCompDocTemplate" type="screen"/>
- <view-map name="ListCompDocTemplate" page="component://content/widget/compdoc/CompDocScreens.xml#ListCompDocTemplate" type="screen"/>
- <view-map name="EditCompDocTemplate" page="component://content/widget/compdoc/CompDocScreens.xml#EditCompDocTemplate" type="screen"/>
- <view-map name="EditRootCompDocTemplate" page="component://content/widget/compdoc/CompDocScreens.xml#EditRootCompDocTemplate" type="screen"/>
+ <view-map name="FindCompDocRoot" page="component://content/widget/compdoc/CompDocScreens.xml#FindCompDocRoot" type="screen"/>
+ <view-map name="ListCompDoc" page="component://content/widget/compdoc/CompDocScreens.xml#ListCompDoc" type="screen"/>
+ <view-map name="EditCompDoc" page="component://content/widget/compdoc/CompDocScreens.xml#EditCompDoc" type="screen"/>
+ <view-map name="EditRootCompDoc" page="component://content/widget/compdoc/CompDocScreens.xml#EditRootCompDoc" type="screen"/>
+ <view-map name="EditChildCompDoc" page="component://content/widget/compdoc/CompDocScreens.xml#EditChildCompDoc" type="screen"/>
+ <view-map name="ViewCompDocTemplateTree" page="component://content/widget/compdoc/CompDocScreens.xml#ViewCompDocTemplateTree" type="screen"/>
+ <view-map name="ViewCompDocInstanceTree" page="component://content/widget/compdoc/CompDocScreens.xml#ViewCompDocInstanceTree" type="screen"/>
+ <view-map name="ViewCompDocTree" page="component://content/widget/compdoc/CompDocScreens.xml#ViewCompDocTree" type="screen"/>
<view-map name="EditCompDocInstance" page="component://content/widget/compdoc/CompDocScreens.xml#EditCompDocInstance" type="screen"/>
<view-map name="CompDocTemplateTree" page="component://content/widget/compdoc/CompDocScreens.xml#CompDocTemplateTree" type="screen"/>
<view-map name="EditCompDocContent" page="component://content/widget/compdoc/CompDocScreens.xml#EditCompDocContent" type="screen"/>
+ <view-map name="EditRootCompDocContent" page="component://content/widget/compdoc/CompDocScreens.xml#EditRootCompDocContent" type="screen"/>
+ <view-map name="EditCompDocContentRole" page="component://content/widget/compdoc/CompDocScreens.xml#EditCompDocContentRole" type="screen"/>
<view-map name="ViewSimpleContent" page="" type="simplecontent"/>
<!-- end of view mappings -->
Modified: trunk/applications/content/webapp/content/content/ContentForms.xml
===================================================================
--- trunk/applications/content/webapp/content/content/ContentForms.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/webapp/content/content/ContentForms.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -323,13 +323,13 @@
</form>
<form name="EditContentRole" default-title-style="tableheadtext"
default-tooltip-style="tabletext" default-widget-style="inputBox"
- target="updateContentRole" title="" type="single">
+ target="Edit${contentRoleTarget}ContentRole" title="" type="single">
<auto-fields-service service-name="createContentRole"/>
<field name="submitButton" title="Update" widget-style="smallSubmit"><submit button-type="button"/></field>
</form>
<form name="ListContentRole" default-title-style="tableheadtext"
default-tooltip-style="tabletext" default-widget-style="inputBox"
- target="updateContentRole" title="" type="list">
+ target="update${contentRoleTarget}ContentRole" title="" type="list">
<actions>
<entity-and entity-name="ContentRole" use-cache="true">
<field-map env-name="contentId" field-name="contentId" />
@@ -342,7 +342,7 @@
<submit button-type="button"/>
</field>
<field name="deleteLink" title=" " widget-style="buttontext">
- <hyperlink also-hidden="false" description="[Delete]" target="removeContentRole?contentId=${contentId}&roleTypeId=${roleTypeId}&partyId=${partyId}&fromDate=${fromDate}"/>
+ <hyperlink also-hidden="false" description="[Delete]" target="remove${contentRoleTarget}ContentRole?contentId=${contentId}&roleTypeId=${roleTypeId}&partyId=${partyId}&fromDate=${fromDate}"/>
</field>
</form>
Modified: trunk/applications/content/webapp/content/includes/header.ftl
===================================================================
--- trunk/applications/content/webapp/content/includes/header.ftl 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/webapp/content/includes/header.ftl 2006-01-29 08:07:31 UTC (rev 6606)
@@ -47,6 +47,7 @@
<#assign cmsTarget=menuContext.cms.cmsRequestName/>
</#if>
<div class="col"><a href="<@ofbizUrl>${cmsTarget}</@ofbizUrl>" class="${selectedLeftClassMap.CMS?default(unselectedLeftClassName)}">CMS</a></div>
+ <div class="col"><a href="<@ofbizUrl>FindCompDocRoot</@ofbizUrl>" class="${selectedLeftClassMap.CompDoc?default(unselectedLeftClassName)}">CompDoc</a></div>
<#if requestAttributes.userLogin?has_content>
<div class="col-right"><a href="<@ofbizUrl>logout</@ofbizUrl>" class="${selectedRightClassMap.login?default(unselectedRightClassName)}">Logout</a></div>
Modified: trunk/applications/content/widget/ContentMenus.xml
===================================================================
--- trunk/applications/content/widget/ContentMenus.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/widget/ContentMenus.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -37,7 +37,7 @@
<menu-item name="DataResourceSetupMenu" title="${uiLabelMap.ContentDataSetup}"><link target="DataResourceSetupMenu"/></menu-item>
<menu-item name="Layout" title="${uiLabelMap.ContentTemplate}"><link target="LayoutMenu"/></menu-item>
<menu-item name="CMS" title="${uiLabelMap.ContentCMS}"><link target="CMSContentFind"/></menu-item>
- <menu-item name="CompDoc" title="${uiLabelMap.ContentCompDoc}"><link target="FindCompDocTemplate"/></menu-item>
+ <menu-item name="CompDoc" title="${uiLabelMap.ContentCompDoc}"><link target="FindCompDocRoot"/></menu-item>
<menu-item name="Logout" title="Logout" align-style="col-right" widget-style="headerButtonRight" selected-style="headerButtonRightSelected">
<condition><not><if-empty field-name="userLogin"/></not></condition>
Modified: trunk/applications/content/widget/compdoc/CompDocForms.xml
===================================================================
--- trunk/applications/content/widget/compdoc/CompDocForms.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/widget/compdoc/CompDocForms.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -31,11 +31,55 @@
<field name="contentName" title="Name" ><text-find/></field>
<field name="contentId" title="Content Id" ><text-find/></field>
<field name="submitButton" title="Find" widget-style="smallSubmit"><submit button-type="button"/></field>
+ </form>
+
+ <form name="FindCompDocRoot" default-title-style="tableheadtext"
+ default-tooltip-style="tabletext" default-widget-style="inputBox"
+ default-entity-name="Content"
+ target="ListCompDoc" title=" " type="single" >
+ <field name="contentName" title="Name" ><text/></field>
+ <field name="contentId" title="Content Id" ><text/></field>
+ <field name="contentTypeId" title="Content Type Id">
+ <radio no-current-selected-key="COMPDOC_TEMPLATE">
+ <option key="COMPDOC_TEMPLATE" description="Template"/>
+ <option key="COMPDOC_INSTANCE" description="Instance"/>
+ </radio>
+ </field>
+ <field name="rootonly" map-name="dummy" title="Root CompDocs Only" >
+ <check/>
+ </field>
+ <field name="submitButton" title="Find" widget-style="smallSubmit"><submit button-type="button"/></field>
<field name="addCompDocTemplate" title="">
<hyperlink also-hidden="false" description="Create" target="EditCompDocTemplate"/>
</field>
</form>
+ <form name="ListCompDocRoot" default-title-style="tableheadtext" default-tooltip-style="tabletext"
+ default-widget-style="tabletext" title="" type="list" list-name="compDocFindList"
+ target="" paginate-target="ListCompDocRoot">
+ <field name="contentId" title="Content Id" ><display/></field>
+ <field name="contentTypeId" title="Content Type Id" ><display/></field>
+ <field name="contentName" title="Name" ><display/></field>
+ <field name="caContentIdTo" title="Content Id To" ><display/></field>
+ <field name="caContentAssocTypeId" title="Content Assoc Type ID" ><display/></field>
+ <field name="caFromDate" title="From Date" ><display/></field>
+ <field name="caThruDate"><hidden/></field>
+ <!--
+ <field name="edit" title="" use-when="contentTypeId.equals("COMPDOC_TEMPLATE")">
+ <hyperlink also-hidden="false" description="Edit" target="EditRootTemplateCompDoc?contentId=${contentId}&caContentIdTo=${caContentIdTo}&caContentAssocTypeId=${caContentAssocTypeId}&caFromDate=${caFromDate}"/>
+ </field>
+ -->
+ <field name="edit" title="" >
+ <hyperlink also-hidden="false" description="Edit" target="EditRootCompDoc?contentId=${contentId}&caContentIdTo=${caContentIdTo}&caContentAssocTypeId=${caContentAssocTypeId}&caFromDate=${caFromDate}"/>
+ </field>
+ <field name="tree" title="" use-when="contentTypeId.equals("COMPDOC_TEMPLATE")">
+ <hyperlink also-hidden="false" description="Tree" target="ViewCompDocTemplateTree?rootTemplateContentId=${contentId}&contentRevisionSeqId=${contentRevisionSeqId}"/>
+ </field>
+ <field name="tree" title="" use-when="contentTypeId.equals("COMPDOC_INSTANCE")">
+ <hyperlink also-hidden="false" description="Tree" target="ViewCompDocInstanceTree?rootTemplateContentId=${contentId}&contentRevisionSeqId=${contentRevisionSeqId}"/>
+ </field>
+ </form>
+
<form name="ListCompDocTemplate" default-title-style="tableheadtext" default-tooltip-style="tabletext"
default-widget-style="tabletext" title="" type="list" list-name="compDocFindList"
target="" paginate-target="ListCompDocTemplate">
@@ -46,7 +90,7 @@
<field name="caFromDate" title="From Date" ><display/></field>
<field name="caThruDate"><hidden/></field>
<field name="editTemplate" title="">
- <hyperlink also-hidden="false" description="Edit" target="EditCompDocTemplate?contentId=${contentId}&caContentIdTo=${caContentIdTo}&caContentAssocTypeId=${caContentAssocTypeId}&caFromDate=${caFromDate}"/>
+ <hyperlink also-hidden="false" description="Edit" target="EditRootCompDocTemplate?contentId=${contentId}&caContentIdTo=${caContentIdTo}&caContentAssocTypeId=${caContentAssocTypeId}&caFromDate=${caFromDate}"/>
</field>
<field name="templateTree" title="">
<hyperlink also-hidden="false" description="Tree" target="CompDocTemplateTree?contentId=${contentId}&contentName=${contentName}"/>
@@ -161,14 +205,8 @@
<field name="submitButton" title="${uiLabelMap.CommonSave}" widget-style="smallSubmit"><submit/></field>
</form>
- <form name="ListContentApproval" default-title-style="tableheadtext" default-tooltip-style="tabletext" default-widget-style="tabletext" title="" type="list">
- <actions>
- <entity-condition entity-name="ContentApproval">
- <condition-list>
- <condition-expr field-name="contentId" operator="equals" env-name="contentId"/>
- </condition-list>
- </entity-condition>
- </actions>
+ <form name="ListContentApproval" default-title-style="tableheadtext" default-tooltip-style="tabletext"
+ list-name="contentApprovalList" default-widget-style="tabletext" title="" type="list">
<field name="contentApprovalId"><display/></field>
<field name="contentId"><display/></field>
<field name="contentRevisionSeqId"><display/></field>
@@ -183,19 +221,45 @@
</field>
</form>
- <form name="EditCompDocTemplate" default-map-name="content" title="" type="single" target="javascript:setDataResourceTypeAndSubmit()"
+ <form name="CompDocRoot" default-map-name="content" title="" type="single" target="updateRootCompDoc"
default-title-style="tableheadtext" default-tooltip-style="tabletext" default-widget-style="inputBox">
- <alt-target target="createCompDocTemplate" use-when="contentAssoc==null"/>
+ <alt-target use-when="content==null" target="createRootCompDoc"/>
+ <field name="contentId" field-name="contentId" map-name="content"
+ use-when="content==null || (content != null && org.ofbiz.base.util.UtilValidate.isEmpty(content.getString("contentId")))"><text/></field>
+ <field name="contentId" field-name="contentId" map-name="content"
+ use-when="content != null && org.ofbiz.base.util.UtilValidate.isNotEmpty(content.getString("contentId"))"><display/></field>
+
<field name="contentName" field-name="contentName" map-name="content"><text/></field>
- <field name="contentId" field-name="contentId" map-name="content"><text/></field>
- <field name="contentTypeId" field-name="contentTypeId" map-name="content"><hidden value="COMPDOC_TEMPLATE"/></field>
- <field name="ownerContentId"><lookup target-form-name="LookupContent"/></field>
- <field name="instanceOfContentId" field-name="instanceOfContentId" map-name="content"><text/></field>
- <field name="dataResourceId">
+ <field name="contentTypeId" entry-name="currentContentTypeId" map-name="dummy"
+ use-when="content==null || (content != null && org.ofbiz.base.util.UtilValidate.isEmpty(content.getString("contentTypeId")))" >
+ <drop-down no-current-selected-key="COMPDOC_TEMPLATE">
+ <option key="COMPDOC_TEMPLATE" description="Template"/>
+ <option key="COMPDOC_INSTANCE" description="Instance"/>
+ </drop-down>
+ </field>
+ <field name="contentTypeId" map-name="content"
+ use-when="content != null " >
+ <drop-down no-current-selected-key="COMPDOC_TEMPLATE">
+ <option key="COMPDOC_TEMPLATE" description="Template"/>
+ <option key="COMPDOC_INSTANCE" description="Instance"/>
+ </drop-down>
+ </field>
+ <field name="ownerContentId" field-name="ownerContentId" map-name="content"
+ use-when="content != null"><lookup target-form-name="LookupContent"/></field>
+ <field name="ownerContentId" field-name="rootTemplateContentId" map-name="parameters"
+ use-when="content == null && org.ofbiz.base.util.UtilValidate.isEmpty(parameters.get("rootTemplateContentId"))"><lookup target-form-name="LookupContent"/></field>
+ <field name="ownerContentId" field-name="rootInstanceContentId" map-name="parameters"
+ use-when="content == null && org.ofbiz.base.util.UtilValidate.isNotEmpty(parameters.get("rootInstanceContentId"))"><lookup target-form-name="LookupContent"/></field>
+
+ <field name="instanceOfContentId" field-name="instanceOfContentId" map-name="content"
+ use-when="content != null"><lookup target-form-name="LookupContent"/></field>
+ <field name="instanceOfContentId" field-name="instanceOfContentId" map-name="parameters"
+ use-when="content == null"><lookup target-form-name="LookupContent"/></field>
+ <field name="dataResourceId">
<lookup target-form-name="LookupDataResource">
<sub-hyperlink use-when=""${currentValue.dataResourceId}".length()>0" link-style="buttontext" target-type="intra-app" target="gotoDataResource?dataResourceId=${currentValue.dataResourceId}" description="Go to Data Resource"/>
</lookup>
- </field>
+ </field>
<field name="templateDataResourceId" field-name="templateDataResourceId" map-name="content"><text/></field>
<field name="dataSourceId" field-name="dataSourceId" map-name="content"><text/></field>
<field name="statusId">
@@ -229,11 +293,19 @@
<field name="lastModifiedDate" field-name="lastModifiedDate" map-name="content"><text/></field>
<field name="lastModifiedByUserLogin" field-name="lastModifiedByUserLogin" map-name="content"><text/></field>
+ <field name="submitButton" title="Submit" widget-style="smallSubmit"><submit button-type="button"/></field>
+ </form>
+
+
+ <form name="CompDocWithContentAssoc" default-map-name="content" title="" type="single" target=""
+ extends="CompDocRoot"
+ default-title-style="tableheadtext" default-tooltip-style="tabletext" default-widget-style="inputBox">
+
<field name="contentIdTo" field-name="contentIdTo" map-name="contentAssoc"><text/></field>
- <field name="contentAssocTypeId" field-name="contentAssocTypeId" map-name="contentAssoc"><hidden value="COMPDOC_PART"/></field>
+ <field name="contentAssocTypeId" field-name="contentAssocTypeId" map-name="contentAssoc"><text/></field>
<field use-when="contentAssoc!=null" name="fromDate" field-name="fromDate" map-name="contentAssoc"><display/></field>
<field use-when="contentAssoc==null" name="fromDate" field-name="fromDate"><hidden value="${nowTimestamp}"/></field>
- <field name="thruDate" field-name="thruDate" map-name="contentAssoc"><date-find/></field>
+ <field name="thruDate" field-name="thruDate" map-name="contentAssoc"><date-time/></field>
<field name="contentAssocPredicateId" field-name="contentAssocPredicateId" map-name="contentAssoc"><text/></field>
<field name="sequenceNum" field-name="sequenceNum" map-name="contentAssoc"><text/></field>
<field use-when="contentAssoc!=null" name="sequenceNum" field-name="sequenceNum"><hidden value="${sequenceNum}"/></field>
@@ -249,98 +321,11 @@
<field name="objectInfo" field-name="objectInfo" map-name="DataResource"><text/></field>
<field name="imageData" map-name="dummy"><file/></field>
- <field name="submitButton" title="Update" widget-style="smallSubmit"><submit button-type="button"/></field>
+
+
</form>
- <form name="EditCompDocInstance" title="" type="single" target="persistCompDocTemplate"
- default-title-style="tableheadtext" default-tooltip-style="tabletext" default-widget-style="inputBox">
- <auto-fields-entity entity-name="Content"/>
- <auto-fields-entity entity-name="ContentAssoc"/>
- <field name="contentName"><text/></field>
- <field name="contentId"><text/></field>
- <field name="contentTypeId"><hidden value="COMPDOC_INSTANCE"/></field>
- <field name="ownerContentId"><text/></field>
- <field name="instanceOfContentId"><text/></field>
- <field name="dataResourceId"><text/></field>
- <field name="templateDataResourceId"><text/></field>
- <field name="dataSourceId"><text/></field>
- <field name="statusId"><text/></field>
- <field name="privilegeEnumId"><text/></field>
- <field name="serviceName"><text/></field>
- <field name="description"><text/></field>
- <field name="localeString"><text/></field>
- <field name="mimeTypeId"><text/></field>
- <field name="characterSetId"><text/></field>
- <field name="childLeafCount"><text/></field>
- <field name="childBranchCount"><text/></field>
- <field name="createdDate"><text/></field>
- <field name="createdByUserLogin"><text/></field>
- <field name="lastModifiedDate"><text/></field>
- <field name="lastModifiedByUserLogin"><text/></field>
-
- <field name="contentIdTo"><text/></field>
- <field name="contentAssocTypeId"><hidden value="TREE_CHILD"/></field>
- <field name="fromDate"><hidden value="${nowTimestamp}"/></field>
- <field name="thruDate"><text/></field>
- <field name="contentAssocPredicateId"><text/></field>
- <field name="sequenceNum"><text/></field>
- <field name="mapKey"><text/></field>
- <field name="upperCoordinate"><text/></field>
- <field name="leftCoordinate"><text/></field>
-
- <field name="submitButton" title="Create" widget-style="smallSubmit"><submit button-type="button"/></field>
- <field name="Approval" title="">
- <hyperlink also-hidden="false" description="Approval" target="ListContentApproval?contentId=${contentId}"/>
- </field>
- <field name="Revision" title="">
- <hyperlink also-hidden="false" description="Revision" target="ListContentRevision?contentId=${contentId}"/>
- </field>
- </form>
-
- <form name="EditCompDocContent" target="updateCompDocContent" title="" type="single"
- default-title-style="tableheadtext" default-map-name="currentValue"
- default-tooltip-style="tabletext" default-widget-style="inputBox">
- <auto-fields-entity entity-name="Content" />
- <field name="contentId"><display/></field>
- <field name="contentTypeId">
- <drop-down allow-empty="false">
- <entity-options description="${description}" entity-name="ContentType" key-field-name="contentTypeId"/>
- </drop-down>
- </field>
- <field name="dataResourceId">
- <lookup target-form-name="LookupDataResource">
- <sub-hyperlink use-when=""${currentValue.dataResourceId}".length()>0" link-style="buttontext" target-type="intra-app" target="gotoDataResource?dataResourceId=${currentValue.dataResourceId}" description="Go to Data Resource"/>
- </lookup>
- </field>
- <field name="ownerContentId"><lookup target-form-name="LookupContent"/></field>
- <field name="mimeTypeId">
- <drop-down allow-empty="true">
- <entity-options description="${mimeTypeId} - ${description}" entity-name="MimeType" key-field-name="mimeTypeId">
- <entity-order-by field-name="mimeTypeId"/>
- </entity-options>
- </drop-down>
- </field>
- <field name="characterSetId">
- <drop-down allow-empty="true">
- <entity-options description="${description}" entity-name="CharacterSet" key-field-name="characterSetId"/>
- </drop-down>
- </field>
- <field name="statusId">
- <drop-down allow-empty="true">
- <entity-options description="${description}" entity-name="StatusItem" key-field-name="statusId">
- <entity-constraint name="statusTypeId" value="PUBLISH_STATUS"/>
- <entity-order-by field-name="sequenceId"/>
- </entity-options>
- </drop-down>
- </field>
- <field name="createdByUserLogin" position="1"><display/></field>
- <field name="createdDate" position="2"><display/></field>
- <field name="lastModifiedByUserLogin" position="1"><display/></field>
- <field name="lastModifiedDate" position="2"><display/></field>
- <field name="submitButton" title="Create" widget-style="smallSubmit"><submit button-type="button"/></field>
- </form>
-
<!-- ================ CompDoc Requests ================= -->
<form name="EditContentRevisionAndItem" target="updateContentRevisionAndItem" title="" type="single"
@@ -357,4 +342,27 @@
<field name="newDataResourceId" title="" widget-style="inputBox"></field>
<field name="submitButton" title="Create" widget-style="smallSubmit"><submit/></field>
</form>
+ <form name="ListContentRevisionItemApproval" default-title-style="tableheadtext"
+ default-tooltip-style="tabletext" default-widget-style="tabletext" title="" type="list">
+ <actions>
+ <entity-and entity-name="ContentRevisionItemAndContentApprovalView" use-cache="true">
+ <field-map env-name="contentId" field-name="contentId" />
+ <field-map env-name="contentRevisionSeqId" field-name="contentRevisionSeqId" />
+ </entity-and>
+ </actions>
+ <field name="contentId"><display/></field>
+ <field name="contentRevisionSeqId"><display/></field>
+ <field name="itemContentId"><display/></field>
+ <field name="oldDataResourceId"><display/></field>
+ <field name="newDataResourceId"><display/></field>
+ <field name="contentApprovalId"><display/></field>
+
+ <field name="editLink" title=" " widget-style="buttontext" use-when="approvalCount > 0">
+ <hyperlink also-hidden="false" description="[Edit]" target="EditContentRevisionItem?contentId=${contentId}&contentRevisionSeqId=${contentRevisionSeqId}&itemContentId=${itemContentId}"/>
+ </field>
+ <field name="create" title=" " widget-style="buttontext">
+ <hyperlink also-hidden="false" description="[Create]" target="EditContentRevisionItem"/>
+ </field>
+ </form>
+
</forms>
Modified: trunk/applications/content/widget/compdoc/CompDocMenus.xml
===================================================================
--- trunk/applications/content/widget/compdoc/CompDocMenus.xml 2006-01-29 04:17:04 UTC (rev 6605)
+++ trunk/applications/content/widget/compdoc/CompDocMenus.xml 2006-01-29 08:07:31 UTC (rev 6606)
@@ -59,17 +59,20 @@
orientation="horizontal"
menu-width="100%"
default-tooltip-style="tabletext" default-widget-style="tabButton"
- default-permission-operation="HAS_AUTHOR_ROLE|CONTENT_ADMIN"
- default-permission-entity-action="_ADMIN"
- default-associated-content-id="${userLogin.userLoginId}"
selected-menuitem-context-field-name="currentMenuItemName"
title="" type="simple">
- <menu-item name="edit-cdt" title="Edit Template" >
- <link target="EditCompDocTemplate?contentId=${contentId}&templateRevisionSeqId=${templateRevisionSeqId}"/>
+ <menu-item name="viewtree" title="View Tree" >
+ <link target="ViewCompDocTree?contentRevisionSeqId=${currentContentRevisionSeqId}&rootTemplateContentId=${parameters.rootTemplateContentId}&rootInstanceContentId=${parameters.rootInstanceContentId}"/>
</menu-item>
- <menu-item name="approval-cdt" title="Req'd Approval" >
- <link target="ListTemplateApprovals?contentId=${contentId}&templateRevisionSeqId=${templateRevisionSeqId}"/>
+ <menu-item name="editcd" title="Edit" >
+ <link target="EditCompDoc?contentId=${contentId}&contentRevisionSeqId=${contentRevisionSeqId}"/>
</menu-item>
+ <menu-item name="role" title="Roles" >
+ <link target="EditCompDocContentRole?contentId=${contentId}"/>
+ </menu-item>
+ <menu-item name="approval" title="Approvals" >
+ <link target="ListContentApproval?contentId=${contentId}&rootRevisionSeqId=${rootRevisionSeqId}"/>
+ </menu-item>
<menu-item name="rev-cdt" title="Template Revisions" >
<link target="ListTemplateRevisions?contentId=${contentId}&templateRevisionSeqId=${templateRevisionSeqId}"/>
</menu-item>
@@ -85,6 +88,62 @@
</menu>
+