You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2011/07/05 10:15:37 UTC
svn commit: r1142915 [27/28] - in /ofbiz/trunk/specialpurpose: ./ scrum/
scrum/config/ scrum/data/ scrum/data/helpdata/ scrum/data/hookscripts/
scrum/documents/ scrum/dtd/ scrum/entitydef/ scrum/lib/ scrum/patches/
scrum/script/ scrum/script/org/ scrum...
Added: ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml?rev=1142915&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml (added)
+++ ofbiz/trunk/specialpurpose/scrum/widget/scrumScreens.xml Tue Jul 5 08:15:32 2011
@@ -0,0 +1,2965 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
+
+ <screen name="Sprints">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleProjectAndSprintList"/>
+ <set field="headerItem" value="Sprints"/><!--this highlights the selected menu-item with name "Sprints" -->
+ <set field="partyId" from-field="userLogin.partyId"/>
+ <set field="permissionMap.projectId" from-field="parameters.projectId"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <entity-one entity-name="WorkEffort" value-field="project"/>
+ <script location="component://scrum/webapp/scrum/WEB-INF/actions/ListCurrentSprints.groovy"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="scrumCommonDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
+ </condition>
+ <widgets>
+ <container style="button-bar">
+ <link text="${uiLabelMap.ScrumCreateProject}" target="editScrumProject" style="buttontext create"/>
+ </container>
+ </widgets>
+ </section>
+ <section>
+ <widgets>
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="TASK"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintList}">
+ <include-form name="projectList" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintList}">
+ <include-form name="projectListWithNoLinkProfile" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="AddSprint">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleAddSprint"/>
+ <set field="tabButtonItem" value="editProject"/>
+ <set field="sprintId" from-field="parameters.sprintId"/>
+ <entity-one value-field="projectWorkEffort" entity-name="WorkEffort">
+ <field-map field-name="workEffortId" from-field="parameters.projectId"/>
+ </entity-one>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonProjectScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="CREATE" resource-description="SPRINT"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumCreateSprint}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="addSprint"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="addSprintBacklog"/>
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumListOfSprintBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogList"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet>
+ <label style="h3">You[${userLogin.partyId}] are have not permission to perform this action</label>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="ViewSprint">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleSprintOverview"/>
+ <set field="tabButtonItem" value="SprintSummary"/>
+ <set field="permissionMap.sprintId" from-field="parameters.sprintId"/>
+ <entity-one value-field="sprintStatus" entity-name="WorkEffort">
+ <field-map field-name="workEffortId" from-field="parameters.sprintId"/>
+ </entity-one>
+ <script location="component://scrum/webapp/scrum/WEB-INF/actions/SprintBacklogListItems.groovy"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonSprintScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <or>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="SPRINT"/>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="SCRUM"/>
+ </or>
+ </condition>
+ <widgets>
+ <section>
+ <actions>
+ <entity-one value-field="project" entity-name="WorkEffort">
+ <field-map field-name="workEffortId" from-field="parameters.projectId"/>
+ </entity-one>
+ </actions>
+ <widgets>
+ <container style="lefthalf">
+ <screenlet title="${uiLabelMap.ScrumSprintInformation}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="showSprintInfo"/>
+ </screenlet>
+ </container>
+ <container style="righthalf">
+ <include-screen name="sprintMemberList"/>
+ </container>
+ <container style="clear"/>
+ <container style="body">
+ <screenlet title="${uiLabelMap.ScrumBurnDownChart}" id="BDChart" collapsible="true" initially-collapsed="false">
+ <platform-specific>
+ <html><html-template location="component://scrum/webapp/scrum/includes/burndown.ftl"/></html>
+ </platform-specific>
+ </screenlet>
+ </container>
+ <container style="clear"/>
+ <section>
+ <condition>
+ <if-compare operator="equals" value="SPJ_CLOSED" field="project.currentStatusId"/>
+ </condition>
+ <widgets>
+ <section>
+ <condition>
+ <and>
+ <if-compare operator="not-equals" value="SPRINT_CLOSED" field="sprintStatus.currentStatusId"/>
+ <or>
+ <if-compare operator="not-equals" value="Any" field="parameters.backlogStatusId"/>
+ </or>
+ </and>
+ </condition>
+ <widgets>
+ <screenlet id="sprintBacklogListItems" title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="AllBacklogItem" collapsible="true">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="AllBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewSprintBacklogListItemsNoAction"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet id="sprintBacklogListItemsOnFail" title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="notCompleteBacklogItem" collapsible="true">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="notCompleteBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewSprintBacklogListItemsNoAction"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </widgets>
+ <fail-widgets>
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
+ </condition>
+ <widgets>
+ <section>
+ <condition>
+ <and>
+ <if-compare operator="not-equals" value="SPRINT_CLOSED" field="sprintStatus.currentStatusId"/>
+ <or>
+ <if-compare operator="not-equals" value="Any" field="parameters.backlogStatusId"/>
+ </or>
+ </and>
+ </condition>
+ <widgets>
+ <screenlet id="sprintBacklogListItems" title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="AllBacklogItem" collapsible="true">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="AllBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogListItems"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet id="sprintBacklogListItemsOnFail" title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="notCompleteBacklogItem" collapsible="true">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="notCompleteBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogListItems"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+
+ </widgets>
+ <fail-widgets>
+ <screenlet>
+ <section>
+ <condition>
+ <if-has-permission permission="SCRUM_TASK" action="_CREATE"/>
+ </condition>
+ <widgets>
+ <section>
+ <actions>
+ <set field="isScrumTeam" value="true" type="Boolean"/>
+ </actions>
+ <widgets>
+ <section>
+ <condition>
+ <and>
+ <if-compare operator="not-equals" value="SPRINT_CLOSED" field="sprintStatus.currentStatusId"/>
+ <or>
+ <if-compare operator="not-equals" value="Any" field="parameters.backlogStatusId"/>
+ </or>
+ </and>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="AllBacklogItem">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="AllBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogListItemsHideDelete"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="notCompleteBacklogItem">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="notCompleteBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogListItemsHideDelete"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </widgets>
+ </section>
+ </widgets>
+ <fail-widgets>
+ <section>
+ <actions>
+ <set field="isScrumTeam" value="false" type="Boolean"/>
+ </actions>
+ <widgets>
+ <section>
+ <condition>
+ <and>
+ <if-compare operator="not-equals" value="SPRINT_CLOSED" field="sprintStatus.currentStatusId"/>
+ <or>
+ <if-compare operator="not-equals" value="Any" field="parameters.backlogStatusId"/>
+ </or>
+ </and>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="AllBacklogItem">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="AllBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewSprintBacklogListItemsNoAction"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintBacklogList}" navigation-menu-name="notCompleteBacklogItem">
+ <include-menu location="component://scrum/widget/scrumMenus.xml" name="notCompleteBacklogItem"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewSprintBacklogListItemsNoAction"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </widgets>
+ </section>
+ </widgets>
+ <fail-widgets>
+ <container style="button-bar">
+ <link target="SprintList" text="Back" style="buttontext">
+ <parameter param-name="projectId" from-field="parameters.projectId"/>
+ </link>
+ </container>
+ <screenlet>
+ <label style="h3">You[${userLogin.partyId}] are have not permission to perform this action</label>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="EditSprint">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleEditSprint"/>
+ <set field="tabButtonItem" value="EditSprint"/>
+ <set field="sprintId" from-field="parameters.sprintId"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonSprintScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
+ </condition>
+ <widgets>
+ <section>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumEditSprintInformation}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="EditSprint"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="AddSprintBacklog">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleAddSprintBacklog"/>
+ <entity-one entity-name="WorkEffort" value-field="sprintInfo">
+ <field-map field-name="workEffortId" from-field="parameters.sprintId"></field-map>
+ </entity-one>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonSprintScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="SPRINT"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumAddSprintBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="addSprintBacklog"/>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="sprintBacklogList"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="editScrumProject">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleEditScrumProject"/>
+ <set field="headerItem" value="main"/>
+ <set field="tabButtonItem" value="editProject"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <entity-and entity-name="WorkEffortAndProduct" list="workEffortList">
+ <field-map field-name="workEffortId" from-field="workEffortId"/>
+ </entity-and>
+ <set field="workEffort" from-field="workEffortList[0]"/>
+ <entity-one entity-name="StatusItem" value-field="currentStatus">
+ <field-map field-name="statusId" from-field="workEffort.currentStatusId"/>
+ </entity-one>
+ <entity-and entity-name="ProductAndRole" list="productAndRoleList">
+ <field-map field-name="productId" from-field="workEffort.productId"/>
+ <field-map field-name="statusId" value="PRODUCT_ACTIVE"/>
+ <field-map field-name="roleTypeId" value="PRODUCT_OWNER_COMP"/>
+ </entity-and>
+ <set field="productAndRoleMap" from-field="productAndRoleList[0]"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonProjectScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <widgets>
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="PROJECT"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumEditProject}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="editScrumProject"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="viewScrumProject">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleScrumProjectOverview"/>
+ <set field="tabButtonItem" value="projectSummary"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <set field="permissionMap.projectId" from-field="parameters.projectId"/>
+ <entity-and entity-name="WorkEffortAndProduct" list="projectList">
+ <field-map field-name="workEffortId" from-field="workEffortId"/>
+ </entity-and>
+ <set field="project" from-field="projectList[0]"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonProjectScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <container style="lefthalf">
+ <screenlet name="ScrumProject" title="${uiLabelMap.ScrumProject} : ${project.workEffortName}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ScrumProject"/>
+ </screenlet>
+ <include-screen name="sprintListInfo"/>
+ </container>
+ <container style="righthalf">
+ <include-screen name="ListProjectContent"/>
+ </container>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="sprintListInfo">
+ <section>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumSprintList}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="SprintListInfo"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="productInfoList">
+ <section>
+ <widgets>
+ <screenlet name="projectMemberList" title="Product Information">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ProductListInfo"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="tasksInfoList">
+ <section>
+ <actions>
+ <entity-and list="tasksList" entity-name="ScrumProjectSprintBacklogAndTask">
+ <field-map field-name="projectId" from-field="parameters.projectId"/>
+ <field-map field-name="workEffortTypeId" value="TASK"/>
+ </entity-and>
+ </actions>
+ <widgets>
+ <screenlet name="tasksListInfo" title="Tasks">
+ <screenlet name="taskListErrot" title="Error Tasks List">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="TasksListInfoError"/>
+ </screenlet>
+ <screenlet name="taskListTest" title="Test Tasks List">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="TasksListInfoTest"/>
+ </screenlet>
+ <screenlet name="taskListCoding" title="Coding Tasks List">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="TasksListInfoCoding"/>
+ </screenlet>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="AddProdBacklog">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleProductBacklog"/>
+ <set field="tabButtonItem" value="editProductBacklog"/>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-one value-field="product" entity-name="Product">
+ <field-map field-name="productId"/>
+ </entity-one>
+ <entity-one entity-name="CustRequest" value-field="custRequest"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <set field="parameters.statusId" value="CRQ_ACCEPTED"/>
+ <set field="description" from-field="parameters.description"/>
+ <set field="sequence" from-field="parameters.sequence" default-value="Y"/>
+ <set field="UnplannedSequence" from-field="parameters.UnplannedSequence" default-value="Y"/>
+ <set field="backlogListTarget" value="AddProdBacklog"/>
+ <set field="viewIndex" from-field="parameters.VIEW_INDEX_1" type="Integer"/>
+ <script location="component://scrum/webapp/scrum/WEB-INF/actions/AddProductBacklogItem.groovy"/>
+ <entity-and list="checkOwnerList" entity-name="ProductAndRole">
+ <field-map field-name="roleTypeId" value="PRODUCT_OWNER"/>
+ <field-map field-name="productId" from-field="productId"/>
+ <field-map field-name="partyId" from-field="userLogin.partyId"/>
+ </entity-and>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumAddNewProductBacklogItem}" collapsible="true" id="NewBack" initially-collapsed="true">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="EditProdBacklog"/>
+ </screenlet>
+ </widgets>
+ </section>
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="DELETE" resource-description="BACKLOG"/>
+ </condition>
+ <widgets>
+ <section>
+ <condition>
+ <not><if-empty field="unplanBacklogItems"/></not>
+ </condition>
+ <widgets>
+ <container>
+ <section>
+ <condition>
+ <if-compare field="UnplannedSequence" operator="equals" value="Y"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumUnplannedBacklogItemList}" navigation-menu-name="UnplannedBacklogListOption" id="productBacklogItemList" collapsible="true" initially-collapsed="true">
+ <include-menu name="UnplannedBacklogListOption" location="component://scrum/widget/scrumMenus.xml"/>
+ <section>
+ <condition>
+ <not><if-empty field="checkOwnerList"/></not>
+ </condition>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="unplannedBacklogListForOwner" />
+ </widgets>
+ <fail-widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="unplannedBacklogList" />
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumUnplannedBacklogItemList}" navigation-menu-name="UnplannedBacklogListOption" id="productBacklogItemList" collapsible="true" initially-collapsed="true">
+ <include-menu name="UnplannedBacklogListOption" location="component://scrum/widget/scrumMenus.xml"/>
+ <section>
+ <condition>
+ <not><if-empty field="checkOwnerList"/></not>
+ </condition>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="unplannedBacklogListByCategoriesForOwner"/>
+ </widgets>
+ <fail-widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="unplannedBacklogListByCategories"/>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </container>
+ </widgets>
+ </section>
+ <container>
+ <section>
+ <condition>
+ <if-compare field="sequence" operator="equals" value="Y"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemList}" navigation-menu-name="BacklogListOption" id="productBacklogItemList">
+ <include-menu name="BacklogListOption" location="component://scrum/widget/scrumMenus.xml"/>
+ <section>
+ <condition>
+ <not><if-empty field="checkOwnerList"/></not>
+ </condition>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklogBySeqForOwner"/>
+ </widgets>
+ <fail-widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklogBySeq"/>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemList}" navigation-menu-name="BacklogListOption" id="productBacklogItemList">
+ <include-menu name="BacklogListOption" location="component://scrum/widget/scrumMenus.xml"/>
+ <section>
+ <condition>
+ <not><if-empty field="checkOwnerList"/></not>
+ </condition>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklogForOwner"/>
+ </widgets>
+ <fail-widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklog"/>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </container>
+ </widgets>
+ <fail-widgets>
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="DELETE" resource-description="BACKLOG"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemList}" navigation-menu-name="BacklogListOption" id="productBacklogItemList">
+ <include-menu name="BacklogListOption" location="component://scrum/widget/scrumMenus.xml"/>
+ <section>
+ <condition>
+ <if-compare field="sequence" operator="equals" value="Y"/>
+ </condition>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklogBySeq"/>
+ </widgets>
+ <fail-widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListProdBacklog"/>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemList}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewListProdBacklog"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="DeleteProductBacklogItem">
+ <section>
+ <actions>
+ <set field="tabButtonItem" value="editProductBacklog"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <entity-one value-field="custRequestMap" entity-name="CustRequest"/>
+ <entity-and entity-name="CustRequestAndCustRequestItem" list="categoryList">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="custRequestTypeId" value="RF_PARENT_BACKLOG"/>
+ <field-map field-name="custRequestId" from-field="custRequestMap.parentCustRequestId"/>
+ </entity-and>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-one entity-name="Product" value-field="productMap"/>
+ <entity-condition entity-name="ProductBacklog" list="productBacklogs">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="workEffortTypeId" operator="equals" value="SCRUM_SPRINT"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintId" from-field="productBacklogs[0].workEffortId"/>
+ <entity-one entity-name="WorkEffort" value-field="workEffort">
+ <field-map field-name="workEffortId" from-field="sprintId"/>
+ </entity-one>
+ <set field="sprintName" from-field="workEffort.workEffortName"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet title="${uiLabelMap.ScrumDeleteBacklogItem}">
+ <include-form name="DeleteProductBacklogItem" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemInfo}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewEditProdBacklog"/>
+ </screenlet>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="ViewProdBacklogItem">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleProductBacklogItemsOverview"/>
+ <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
+ <set field="tabButtonItem" value="view"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <entity-and list="custRequestItemList" entity-name="CustRequestItem">
+ <field-map field-name="custRequestId" from-field="parameters.custRequestId"/>
+ </entity-and>
+ <entity-one value-field="custRequest" entity-name="CustRequest"/>
+ <set field="parameters.productId" from-field="custRequestItemList[0].productId"/>
+ <entity-one entity-name="Product" value-field="productMap">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ </entity-one>
+ <entity-and entity-name="CustRequestAndContent" list="custRequestAndContents">
+ <field-map field-name="custRequestId" from-field="custRequestId"/>
+ <field-map field-name="thruDate" value=""></field-map>
+ </entity-and>
+ <entity-and entity-name="CustRequestAndCustRequestItem" list="categoryList">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="custRequestTypeId" value="RF_PARENT_BACKLOG"/>
+ <field-map field-name="custRequestId" from-field="custRequest.parentCustRequestId"/>
+ </entity-and>
+ <set field="update.productId" from-field="custRequestItemList[0].productId"/>
+ <set field="update.custRequestId" from-field="parameters.custRequestId"/>
+ <entity-condition list="commEvents" entity-name="CommunicationEventAndCustRequest">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" operator="equals" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_CANCELLED"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_DRAFT"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_ENTERED"/>
+ <condition-list combine="or">
+ <condition-expr field-name="communicationEventTypeId" operator="equals" value="EMAIL_COMMUNICATION"/>
+ <condition-expr field-name="communicationEventTypeId" operator="equals" value="AUTO_EMAIL_COMM"/>
+ </condition-list>
+ </condition-list>
+ <order-by field-name="-entryDate"/>
+ </entity-condition>
+ <entity-and entity-name="ProductRole" list="productRole">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="roleTypeId" value="PRODUCT_OWNER"/>
+ </entity-and>
+ <set field="productOwnerId" value="${productRole[0].partyId}"/>
+ <entity-one value-field="parentCom" entity-name="CommunicationEvent">
+ <field-map field-name="communicationEventId" from-field="parameters.parentCommEventId"/>
+ </entity-one>
+ <entity-one value-field="custStatus" entity-name="CustRequest">
+ <field-map field-name="custRequestId" from-field="parameters.custRequestId"/>
+ </entity-one>
+ <entity-condition entity-name="ProductBacklog" list="productBacklogs">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="workEffortTypeId" operator="equals" value="SCRUM_SPRINT"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintId" from-field="productBacklogs[0].workEffortId" default-value="${parameters.sprintId}"/>
+ <set field="statusId" from-field="productBacklogs[0].statusId"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <actions>
+
+ <entity-one entity-name="WorkEffort" value-field="workEffort">
+ <field-map field-name="workEffortId" from-field="sprintId"/>
+ </entity-one>
+ <set field="sprintName" from-field="workEffort.workEffortName"/>
+ <entity-condition entity-name="WorkEffortPartyAssignment" list="sprintMembers">
+ <condition-list combine="and">
+ <condition-expr field-name="workEffortId" from-field="sprintId"/>
+ <condition-expr field-name="partyId" from-field="userLogin.partyId"/>
+ <condition-expr field-name="roleTypeId" operator="equals" value="SCRUM_TEAM"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintMember" from-field="sprintMembers[0]"/>
+ <set field="isTeamMember" value="false" type="Boolean"/>
+ </actions>
+ <widgets>
+ <container style="lefthalf">
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemInfo}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewEditProdBacklog"/>
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumRevisions}" name="RevisionsList">
+ <section>
+ <actions>
+ <entity-condition list="plannedTasks" entity-name="ProjectSprintBacklogAndTask">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="sprintTypeId" value="SCRUM_SPRINT"/>
+ <condition-list combine="or">
+ <condition-expr field-name="taskTypeId" value="SCRUM_TASK_ERROR"/>
+ <condition-expr field-name="taskTypeId" value="SCRUM_TASK_TEST"/>
+ <condition-expr field-name="taskTypeId" value="SCRUM_TASK_IMPL"/>
+ <condition-expr field-name="taskTypeId" value="SCRUM_TASK_INST"/>
+ </condition-list>
+ </condition-list>
+ <select-field field-name="taskId"/>
+ </entity-condition>
+ <set field="taskIds" type="List" value="${groovy:return org.ofbiz.entity.util.EntityUtil.getFieldListFromEntityList(plannedTasks, "taskId", true)}"/>
+ <entity-condition list="unplannedTasks" entity-name="UnPlannedBacklogsAndTasks">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-list combine="or">
+ <condition-expr field-name="workEffortTypeId" value="SCRUM_TASK_ERROR"/>
+ <condition-expr field-name="workEffortTypeId" value="SCRUM_TASK_TEST"/>
+ <condition-expr field-name="workEffortTypeId" value="SCRUM_TASK_IMPL"/>
+ <condition-expr field-name="workEffortTypeId" value="SCRUM_TASK_INST"/>
+ </condition-list>
+ </condition-list>
+ <select-field field-name="workEffortId"/>
+ </entity-condition>
+ <set field="workEffortIds" type="List" value="${groovy:return org.ofbiz.entity.util.EntityUtil.getFieldListFromEntityList(unplannedTasks, "workEffortId", true)}"/>
+ <entity-condition list="listIt" entity-name="WorkEffortAndContentDataResource">
+ <condition-list combine="and">
+ <condition-expr field-name="workEffortContentTypeId" value="TASK_SUB_INFO"/>
+ <condition-list combine="or">
+ <condition-expr field-name="workEffortId" operator="in" from-field="taskIds" ignore-if-null="true"/>
+ <condition-expr field-name="workEffortId" operator="in" from-field="workEffortIds" ignore-if-null="true"/>
+ </condition-list>
+ </condition-list>
+ <order-by field-name="fromDate"/>
+ </entity-condition>
+ </actions>
+ <widgets>
+ <include-form name="ListBacklogRevisions" location="component://scrum/widget/scrumForms.xml"/>
+ </widgets>
+ </section>
+ </screenlet>
+ </container>
+ <container style="righthalf">
+ <screenlet title="${uiLabelMap.ScrumBacklogItemStatusList}" navigation-form-name="ViewRequest">
+ <include-form name="ViewBacklogStatus" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <section>
+ <condition>
+ <if-empty field="sprintId"/>
+ </condition>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumTasks}">
+ <include-form name="taskRelateBacklog" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumTasks}" navigation-menu-name="NewTask" >
+ <include-form name="taskRelateBacklog" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </fail-widgets>
+ </section>
+ <screenlet title="${uiLabelMap.CommonEmail}" name="Emails">
+ <include-form name="ViewRequestCommunicationEvents" location="component://scrum/widget/CommunicationEventForms.xml" />
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumBacklogItemContentList}">
+ <include-form name="ViewListCustRequestContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <include-screen name="BacklogNoteInfo"/>
+ </container>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="EditProdBacklog">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleEditProductBacklogItems"/>
+ <set field="tabButtonItem" value="editProductBacklogItem"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <entity-and list="custRequestItem" entity-name="CustRequestItem">
+ <field-map field-name="custRequestId" from-field="parameters.custRequestId"/>
+ </entity-and>
+ <entity-one value-field="custRequest" entity-name="CustRequest"/>
+ <set field="custRequestItemSeqId" from-field="parameters.custRequestItemSeqId"/>
+ <set field="productId" from-field="custRequestItem[0].productId"/>
+ <set field="update.productId" from-field="custRequestItem[0].productId"/>
+ <set field="update.custRequestId" from-field="parameters.custRequestId"/>
+ <entity-condition list="commEvents" entity-name="CommunicationEventAndCustRequest">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" operator="equals" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_CANCELLED"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_DRAFT"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_ENTERED"/>
+ </condition-list>
+ <order-by field-name="-entryDate"/>
+ </entity-condition>
+ <entity-and entity-name="ProductRole" list="productRole">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="roleTypeId" value="PRODUCT_OWNER"/>
+ </entity-and>
+ <set field="productOwnerId" value="${productRole[0].partyId}"/>
+ <entity-one value-field="parentCom" entity-name="CommunicationEvent">
+ <field-map field-name="communicationEventId" from-field="parameters.parentCommEventId"/>
+ </entity-one>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <and>
+ <if-compare operator="equals" value="CRQ_ACCEPTED" field="custRequest.statusId"/>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="VIEW" resource-description="BACKLOG"/>
+ </and>
+ </condition>
+ <actions>
+ <entity-condition entity-name="ProductBacklog" list="productBacklogs">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="workEffortTypeId" operator="equals" value="SCRUM_SPRINT"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintId" from-field="productBacklogs[0].workEffortId"/>
+ <entity-condition entity-name="WorkEffortPartyAssignment" list="sprintMembers">
+ <condition-list combine="and">
+ <condition-expr field-name="workEffortId" from-field="sprintId"/>
+ <condition-expr field-name="partyId" from-field="userLogin.partyId"/>
+ <condition-expr field-name="roleTypeId" operator="equals" value="SCRUM_TEAM"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintMember" from-field="sprintMembers[0]"/>
+ <set field="isTeamMember" value="false" type="Boolean"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumUpdateProductBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="EditProdBacklog"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <!-- Member section-->
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
+ </condition>
+ <widgets>
+ <section>
+ <condition>
+ <if-has-permission permission="SCRUM" action="_ADMIN"/>
+ </condition>
+ <actions>
+ <set field="isTeamMember" type="Boolean" value="false"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumUpdateProductBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="EditProdBacklog"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <section>
+ <actions>
+ <set field="isTeamMember" type="Boolean" value="true"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumUpdateProductBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="EditProdBacklog"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </widgets>
+ <fail-widgets>
+ <include-screen name="ViewEditProdBacklog"/>
+ </fail-widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="ProdBacklogNote">
+ <section>
+ <actions>
+ <set field="titleProperty" value="CommonNotes"/>
+ <set field="tabButtonItem" value="productBacklogItemNote"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-and list="custNoteList" entity-name="CustRequestNote">
+ <field-map field-name="custRequestId" from-field="custRequestId"/>
+ <order-by field-name="-noteId"/>
+ </entity-and>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet id="addProdBacklogNote" title="${uiLabelMap.PageTitleNewBacklogItemNote}" collapsible="true">
+ <include-form name="AddProdBacklogNote" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <screenlet id="listProdBacklogNote" title="${uiLabelMap.PageTitleBacklogItemNoteList}" collapsible="true">
+ <include-form name="ListProdBacklogNote" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="BacklogNoteInfo">
+ <section>
+ <actions>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-and list="noteDataList" entity-name="NoteData">
+ <field-map field-name="noteName" value="How to test"/>
+ </entity-and>
+ <set field="noteIds" value="${groovy:org.ofbiz.entity.util.EntityUtil.getFieldListFromEntityList(noteDataList, 'noteId', true);}" type="List"/>
+ <entity-condition list="custNoteList" entity-name="CustRequestNote" >
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="custRequestId"/>
+ <condition-expr field-name="noteId" operator="not-in" from-field="noteIds" ignore-if-empty="true"/>
+ </condition-list>
+ <order-by field-name="-noteId"/>
+ <limit-range start="0" size="5"/>
+ </entity-condition>
+ </actions>
+ <widgets>
+ <screenlet id="listProdBacklogNote" title="${uiLabelMap.PageTitleBacklogItemNoteList}">
+ <include-form name="ListProdBacklogNoteInfo" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="EditBacklogItemContent">
+ <section>
+ <actions>
+ <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
+ <set field="titleProperty" value="PageTitleProductBacklogItemsContents"/>
+ <set field="tabButtonItem" value="productBacklogItemContent"/>
+ <set field="headerItem" value="request"/>
+ <set field="contentId" from-field="parameters.contentId"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-and entity-name="CustRequestAndContent" list="custRequestAndContents">
+ <field-map field-name="custRequestId" from-field="custRequestId"/>
+ <field-map field-name="thruDate" value=""></field-map>
+ </entity-and>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <or>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="PROJECT"/>
+ <if-service-permission service-name="projectUpdateMemberPermission" context-map="permissionMap"/>
+ </or>
+ </condition>
+ <widgets>
+ <screenlet id="listCustRequestContent" title="${uiLabelMap.ScrumBacklogItemContentList}" collapsible="true">
+ <include-form name="ListCustRequestContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <screenlet id="addCustRequestContent" title="${uiLabelMap.ScrumBacklogItemAddProductContent}" collapsible="true">
+ <include-form name="AddCustRequestContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <screenlet title="${uiLabelMap.ScrumBacklogItemContentList}">
+ <include-form name="ViewListCustRequestContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </fail-widgets>
+
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="ProductBacklogEmails">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleProductBacklogItemsCommunication"/>
+ <set field="tabButtonItem" value="productBacklogItemComm"/>
+ <entity-and list="custRequestItem" entity-name="CustRequestItem">
+ <field-map field-name="custRequestId" from-field="parameters.custRequestId"/>
+ </entity-and>
+ <entity-one value-field="custRequest" entity-name="CustRequest"/>
+ <entity-condition list="commEvents" entity-name="CommunicationEventAndCustRequest">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" operator="equals" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_CANCELLED"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_DRAFT"/>
+ <condition-expr field-name="statusId" operator="not-equals" value="COM_ENTERED"/>
+ <condition-list combine="or">
+ <condition-expr field-name="communicationEventTypeId" operator="equals" value="EMAIL_COMMUNICATION"/>
+ <condition-expr field-name="communicationEventTypeId" operator="equals" value="AUTO_EMAIL_COMM"/>
+ </condition-list>
+ </condition-list>
+ <order-by field-name="-entryDate"/>
+ </entity-condition>
+ <entity-and entity-name="ProductRole" list="productRole">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="roleTypeId" value="PRODUCT_OWNER"/>
+ </entity-and>
+ <set field="productOwnerId" value="${productRole[0].partyId}"/>
+ <entity-one value-field="parentCom" entity-name="CommunicationEvent">
+ <field-map field-name="communicationEventId" from-field="parameters.parentCommEventId"/>
+ </entity-one>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumBacklogItemCommDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
+ </condition>
+ <actions>
+ <entity-condition entity-name="ProductBacklog" list="productBacklogs">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="workEffortTypeId" operator="equals" value="SCRUM_SPRINT"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintId" from-field="productBacklogs[0].workEffortId"/>
+ <entity-condition entity-name="WorkEffortPartyAssignment" list="sprintMembers">
+ <condition-list combine="and">
+ <condition-expr field-name="workEffortId" from-field="sprintId"/>
+ <condition-expr field-name="partyId" from-field="userLogin.partyId"/>
+ <condition-expr field-name="roleTypeId" operator="equals" value="SCRUM_TEAM"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintMember" from-field="sprintMembers[0]"/>
+ <set field="isTeamMember" value="false" type="Boolean"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogEmail}">
+ <include-form name="ViewRequestCommunicationEvents" location="component://scrum/widget/CommunicationEventForms.xml" />
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <!-- Member section -->
+ <section>
+ <condition>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="BACKLOG"/>
+ </condition>
+ <actions>
+ <set field="isTeamMember" type="Boolean" value="true"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.CommonEmails}">
+ <include-form name="ViewRequestCommunicationEvents" location="component://scrum/widget/CommunicationEventForms.xml" />
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <include-screen name="ViewEditProdBacklog"/>
+ </fail-widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="NewBacklogTask">
+ <section>
+ <actions>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet title="${uiLabelMap.ScrumCreateTaskforProductBacklog}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="NewBacklogTask"/>
+ </screenlet>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="EditDeleteBacklogItem">
+ <section>
+ <actions>
+ <set field="tabButtonItem" value="view"/>
+ <set field="custRequestId" from-field="parameters.custRequestId"/>
+ <entity-one value-field="custRequestMap" entity-name="CustRequest"/>
+ <entity-and entity-name="CustRequestAndCustRequestItem" list="categoryList">
+ <field-map field-name="productId" from-field="parameters.productId"/>
+ <field-map field-name="custRequestTypeId" value="RF_PARENT_BACKLOG"/>
+ <field-map field-name="custRequestId" from-field="custRequestMap.parentCustRequestId"/>
+ </entity-and>
+ <set field="productId" from-field="parameters.productId"/>
+ <entity-one entity-name="Product" value-field="productMap"/>
+ <entity-condition entity-name="ProductBacklog" list="productBacklogs">
+ <condition-list combine="and">
+ <condition-expr field-name="custRequestId" from-field="parameters.custRequestId"/>
+ <condition-expr field-name="workEffortTypeId" operator="equals" value="SCRUM_SPRINT"/>
+ </condition-list>
+ </entity-condition>
+ <set field="sprintId" from-field="productBacklogs[0].workEffortId"/>
+ <entity-one entity-name="WorkEffort" value-field="workEffort">
+ <field-map field-name="workEffortId" from-field="sprintId"/>
+ </entity-one>
+ <set field="sprintName" from-field="workEffort.workEffortName"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonScrumProductBacklogItemDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet title="${uiLabelMap.ScrumDeleteBacklogItem}">
+ <include-form name="EditDeleteBacklogItem" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumProductBacklogItemInfo}">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ViewEditProdBacklog"/>
+ </screenlet>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="EditProjectContents">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleScrumProjectContents"/>
+ <set field="tabButtonItem" value="projectContent"/>
+ <set field="headerItem" value="EditProjectContents"/>
+ <set field="contentId" from-field="parameters.contentId"/>
+ <set field="projectId" from-field="parameters.projectId" default-value="${parameters.workEffortId}"/>
+ <set field="workEffortId" from-field="parameters.projectId" default-value="${parameters.workEffortId}"/>
+ <entity-and entity-name="WorkEffortAndContentDataResource" list="workEffortAndContentDataResources">
+ <field-map field-name="workEffortId" from-field="projectId"/>
+ </entity-and>
+ <set field="permissionMap.projectId" from-field="projectId"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonProjectScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <or>
+ <if-service-permission service-name="scrumPermissionCheck" main-action="UPDATE" resource-description="PROJECT"/>
+ <if-service-permission service-name="projectUpdateMemberPermission" context-map="permissionMap"/>
+ </or>
+ </condition>
+ <widgets>
+ <screenlet id="listContents" title="${uiLabelMap.ScrumContentList}" collapsible="true">
+ <include-form name="ListContents" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ <screenlet id="uploadWorkEffortContent" title="${uiLabelMap.PageTitleAddProjectContent}" collapsible="true">
+ <include-form name="UploadWorkEffortContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <include-screen name="ListProjectContent"/>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="ListProjectContent">
+ <section>
+ <actions>
+ <property-map resource="ContentUiLabels" map-name="uiLabelMap"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumContentList}">
+ <include-form name="ListProjectContent" location="component://scrum/widget/scrumForms.xml"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="DailyScrumMeetingMinute">
+ <section>
+ <actions>
+ <set field="titleProperty" value="PageTitleDailyMeetingMinutes"/>
+ <set field="tabButtonItem" value="DailySprintMeetingMinute"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <set field="sprintId" from-field="parameters.sprintId"/>
+ <entity-one entity-name="WorkEffort" value-field="project"/>
+ <entity-one value-field="custRequest" entity-name="CustRequest"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="CommonSprintScreenDecorator" location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <section>
+ <condition>
+ <or>
+ <if-has-permission permission="SCRUM_DAILY" action="_UPDATE"/>
+ <if-has-permission permission="SCRUM" action="_ADMIN"/>
+ </or>
+ </condition>
+ <widgets>
+ <screenlet name="DailyScrumMeetingMinute" title="${uiLabelMap.ScrumAddDailyMeetingMinutes} : ${parameters.projectId}" collapsible="true">
+ <include-form location="component://scrum/widget/scrumForms.xml" name="DailyMeetingMinute"/>
+ </screenlet>
+ <screenlet title="${uiLabelMap.ScrumListUpdateDailyMeetingMinutes}">
+ <include-screen name="ListDailyMeetingMinutes"/>
+ </screenlet>
+ </widgets>
+ <fail-widgets>
+ <section>
+ <widgets>
+ <screenlet title="${uiLabelMap.ScrumListUpdateDailyMeetingMinutes}">
+ <include-screen name="ListDailyMeetingMinutes"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </fail-widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="ListDailyMeetingMinutes">
+ <section>
+ <actions>
+ <set field="tabButtonItem" value="SprintList"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <entity-one entity-name="WorkEffort" value-field="project"/>
+ <entity-one value-field="custRequest" entity-name="CustRequest"/>
+ </actions>
+ <widgets>
+ <include-form location="component://scrum/widget/scrumForms.xml" name="ListDailyMeetingMinute"/>
+ </widgets>
+ </section>
+ </screen>
+
+ <screen name="ViewDailyMeetingMinutes">
+ <section>
+ <actions>
+ <set field="tabButtonItem" value="SprintList"/>
+ <set field="workEffortId" from-field="parameters.projectId"/>
+ <entity-one entity-name="WorkEffort" value-field="project"/>
[... 1667 lines stripped ...]