123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ASV
- (C) Copyright IBM Corp. 2005, 2010
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pf="http://developer.cognos.com/schemas/xts/pf" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" exclude-result-prefixes="xsl xtsext pf">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <!-- ignore the root - just interested in the contents -->
- <xsl:template match="/root">
- <xsl:apply-templates select="*"/>
- </xsl:template>
- <!-- but not interested in the request parameters -->
- <xsl:template match="*[local-name()='requestParams']"/>
- <xsl:template match="*[local-name()='createNotificationManualTask']">
- <xsl:apply-templates/>
- </xsl:template>
- <xsl:template match="*[local-name()='createApproveManualTask']">
- <param name="m_ro_owner_action">approve</param>
- <xsl:apply-templates/>
- </xsl:template>
- <xsl:template match="*[local-name()='createAgentUserTask']">
- <param name="m_ro_owner_action">agent</param>
- <xsl:apply-templates/>
- </xsl:template>
- <xsl:template match="*[local-name()='recipients' or local-name()='potentialOwners' and ./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[local-name()='user' or local-name()='group']]">
- <!-- pull in topics -->
- <xsl:if test="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and starts-with(.,'[')]">
- <param name="email_to">
- <xsl:value-of select="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and starts-with(.,'[')]"/>
- </param>
- </xsl:if>
- <!-- pull in CM recipients -->
- <xsl:if test="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and not(starts-with(.,'['))]">
- <to>
- <xsl:for-each select="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and not(starts-with(.,'['))]">
- <searchPath>
- <xsl:value-of select="."/>
- </searchPath>
- </xsl:for-each>
- </to>
- </xsl:if>
- </xsl:template>
- <xsl:template match="*[local-name()='taskStakeholders' and ./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[local-name()='user' or local-name()='group']]">
- <!-- pull in topics -->
- <xsl:if test="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and starts-with(.,'[')]">
- <param name="email_cc">
- <xsl:value-of select="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and starts-with(.,'[')]"/>
- </param>
- </xsl:if>
- <!-- pull in CM recipients -->
- <xsl:if test="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and not(starts-with(.,'['))]">
- <cc>
- <xsl:for-each select="./*[local-name()='from']/*[local-name()='literal']/*[local-name()='organizationalEntity']/*[local-name()='users' or local-name()='groups']/*[(local-name()='user' or local-name()='group') and not(starts-with(.,'['))]">
- <searchPath>
- <xsl:value-of select="."/>
- </searchPath>
- </xsl:for-each>
- </cc>
- </xsl:if>
- </xsl:template>
- <!-- build up the string that will go into the field -->
- <xsl:template match="*[local-name()='potentialOwner']" mode="items">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:value-of select="';'"/>
- </xsl:if>
- </xsl:template>
- <!-- build up the string that will go into the field -->
- <xsl:template match="*[local-name()='stakeholder']" mode="items">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:value-of select="';'"/>
- </xsl:if>
- </xsl:template>
- <!-- email subject field -->
- <xsl:template match="*[local-name()='subject']">
- <param name="email_subject">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='taskIconPath']">
- <xsl:choose>
- <xsl:when test="./text() and ./text()!='ps/portal/images/icon_approval_task.gif'">
- <param name="m_ro_icon_radio">item</param>
- <param name="m_ro_icon_item">
- <xsl:value-of select="./text()"/>
- </param>
- </xsl:when>
- <xsl:otherwise>
- <param name="m_ro_icon_radio">default</param>
- <param name="m_ro_icon_item"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="*[local-name()='priority']">
- <xsl:choose>
- <xsl:when test="/root/*[local-name()='requestParams']/*[local-name()='param' and @name='agentStudio'] = 'true'">
- <xsl:choose>
- <!-- have to choose whether or not we have a default or an item priority -->
- <xsl:when test="text()='1' or text()='3' or text()='5' ">
- <param name="m_ro_priority">
- <xsl:value-of select="."/>
- </param>
- <param name="m_ro_priority_radio">
- <xsl:text>priority</xsl:text>
- </param>
- </xsl:when>
- <xsl:otherwise>
- <param name="m_ro_priority_item">
- <xsl:value-of select="."/>
- </param>
- <param name="m_ro_priority_radio">
- <xsl:text>item</xsl:text>
- </param>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <param name="m_ro_priority">
- <xsl:value-of select="."/>
- </param>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="*[local-name()='completeFor']">
- <param name="m_ro_readExpiry_due">
- <xsl:value-of select="'true'"/>
- </param>
- <xsl:variable name="duration">
- <xsl:call-template name="getDeadlineDuration">
- <xsl:with-param name="expression" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="unit">
- <xsl:call-template name="getDeadlineUnit">
- <xsl:with-param name="expression" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <param name="m_ro_readExpireUnit_due">
- <xsl:value-of select="$unit"/>
- </param>
- <param name="m_ro_readExpireUnitCount_due">
- <xsl:value-of select="$duration"/>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='startFor']">
- <param name="m_ro_readExpiry_start">
- <xsl:value-of select="'true'"/>
- </param>
- <xsl:variable name="duration">
- <xsl:call-template name="getDeadlineDuration">
- <xsl:with-param name="expression" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="unit">
- <xsl:call-template name="getDeadlineUnit">
- <xsl:with-param name="expression" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <param name="m_ro_readExpireUnit_start">
- <xsl:value-of select="$unit"/>
- </param>
- <param name="m_ro_readExpireUnitCount_start">
- <xsl:value-of select="$duration"/>
- </param>
- </xsl:template>
- <xsl:template name="getDeadlineDuration">
- <xsl:param name="expression"/>
- <xsl:variable name="expression_length" select="string-length($expression)"/>
- <xsl:choose>
- <xsl:when test="starts-with($expression,'PT')">
- <xsl:value-of select="substring($expression, 3 , $expression_length - 3)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring($expression, 2 , $expression_length - 2)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template name="getDeadlineUnit">
- <xsl:param name="expression"/>
- <xsl:variable name="expression_length" select="string-length($expression)"/>
- <xsl:value-of select="substring($expression, $expression_length,1)"/>
- </xsl:template>
- <!-- Build these options :
- m_ro_sub_notifyOnCreation
- m_ro_sub_notifyNotCompleted
- m_ro_sub_notifyNotStarted
- m_ro_sub_notifyOnStateChange
- m_ro_sub_notifyOnStateChange_started
- m_ro_sub_notifyOnStateChange_owner
- m_ro_sub_notifyOnStateChange_suspended
- m_ro_sub_notifyOnStateChange_completed
- m_ro_sub_notifyOnStateChange_failed
- from :
- <options>
- <notifyOnCreation>true</notifyOnCreation>
- <notifyNotCompleted>true</notifyNotCompleted>
- <notifyNotStarted>true</notifyNotStarted>
- <stateChange>
- <started>unchecked</started>
- <owner>unchecked</owner>
- <suspended>unchecked</suspended>
- <completed>unchecked</completed>
- <failed>unchecked</failed>
- </stateChange>
- </options>
- -->
- <xsl:template match="*[local-name()='notifyOnCreation']">
- <param name="m_ro_sub_notifyOnCreation">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='notifyNotCompleted']">
- <param name="m_ro_sub_notifyNotCompleted">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='notifyNotStarted']">
- <param name="m_ro_sub_notifyNotStarted">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='stateChangeStarted']">
- <param name="m_ro_sub_notifyOnStateChange_started">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='stateChangeOwner']">
- <param name="m_ro_sub_notifyOnStateChange_owner">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='stateChangeCompleted']">
- <param name="m_ro_sub_notifyOnStateChange_completed">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='comments']">
- <param name="m_ro_sub_notifyOnStateChange_comment">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='stateChangeCancelled']">
- <param name="m_ro_sub_notifyOnStateChange_cancelled">
- <xsl:call-template name="makeSubscriptionParamValue">
- <xsl:with-param name="value">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </param>
- </xsl:template>
-
- <xsl:template match="*[local-name()='recordReadReceipt']">
- <param name="m_ro_readReceipt">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='description' and @contentType='text/plain']">
- <param name="email_body">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template name="makeSubscriptionParamValue">
- <xsl:param name="value"/>
- <xsl:choose>
- <xsl:when test="contains($value, 'UNSUBSCRIBE')">unchecked</xsl:when>
- <xsl:otherwise>true</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="*[local-name()='description' and @contentType='text/html']">
- <xsl:variable name="richEditBody">
- <xsl:call-template name="serialize-html">
- <xsl:with-param name="node-set">
- <xsl:copy-of select="./*"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($richEditBody, '<HEAD><META name="user-entered-html-email-body"></META></HEAD>') or contains($richEditBody, '<HEAD><META name="user-entered-html-email-body"/></HEAD>')">
- <param name="hidden_richEditBody">
- <xsl:value-of select="$richEditBody"/>
- </param>
- <param name="richEditMode">true</param>
- </xsl:when>
- <xsl:otherwise>
- <param name="richEditMode">false</param>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <!-- email as URL -->
- <xsl:template match="*[local-name()='linksList']">
- <xsl:choose>
- <xsl:when test="/root/*[local-name()='requestParams']/*[local-name()='param' and @name='agentStudio'] = 'true'">
- <xsl:if test="*[local-name()='link']">
- <link>
- <xsl:for-each select="*[local-name()='link']/*[local-name()='id']">
- <item>
- <searchPath>
- <xsl:value-of select="."/>
- </searchPath>
- </item>
- </xsl:for-each>
- </link>
- </xsl:if>
- </xsl:when>
- <xsl:when test="/root/*[local-name()='requestParams']/*[local-name()='param' and @name='subscription'] = 'true'">
- <param name="m_ro_taskAsURL">
- <xsl:value-of select="'true'"/>
- </param>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="*[local-name()='taskLinksList']">
- <attachments>
- <!-- loop through all the attachments except the eventList (format and locale are null) -->
- <xsl:for-each select="*[local-name()='taskLink' and ./*[local-name()='id'] !='eventOutput' ]">
- <item>
- <searchPath>
- <xsl:value-of select="*[local-name()='id']"/>
- </searchPath>
- <xsl:if test="*[local-name()='format']!='' ">
- <format>
- <xsl:value-of select="*[local-name()='format']"/>
- </format>
- </xsl:if>
- <xsl:if test="*[local-name()='locale']!=''">
- <locale>
- <xsl:value-of select="*[local-name()='locale']"/>
- </locale>
- </xsl:if>
- </item>
- </xsl:for-each>
- </attachments>
- <xsl:variable name="eventOutput" select="*[local-name()='taskLink' and ./*[local-name()='id'] ='eventOutput' ]"/>
- <xsl:if test="$eventOutput">
- <eventOutput>
- <searchPath>
- <xsl:value-of select="$eventOutput/*[local-name()='id']"/>
- </searchPath>
- <position>
- <xsl:value-of select="count($eventOutput/preceding-sibling::*) + 2"/>
- </position>
- </eventOutput>
- </xsl:if>
- </xsl:template>
- <xsl:template match="*[local-name()='futureTaskList']">
- <xsl:for-each select="*[local-name()='futureTask']">
- <xsl:variable name="id" select="*[local-name()='id']"/>
- <xsl:if test="/root/*[local-name()='requestParams']/*[local-name()='param' and @name='followingTaskList']/futureTask/id=$id">
- <param name="{concat('m_ro_agentTaskItem_', $id)}">true</param>
- <param name="{concat('m_ro_agentTaskItem_display_', $id)}">
- <xsl:value-of select="*[local-name()='display']"/>
- </param>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
- <!-- maintain the values of the subject/reject/approve buttons -->
- <xsl:template match="*[local-name()='approveText']">
- <param name="m_ro_approveValue">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='rejectText']">
- <param name="m_ro_rejectValue">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template match="*[local-name()='submitText']">
- <param name="m_ro_submitValue">
- <xsl:value-of select="."/>
- </param>
- </xsl:template>
- <xsl:template match="text()" priority="0"/>
- <xsl:template name="serialize-html">
- <xsl:param name="node-set"/>
- <xsl:apply-templates mode="markup" select="$node-set"/>
- </xsl:template>
- <!-- generate text for simple element -->
- <xsl:template match="*" mode="markup">
- <xsl:text><</xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:apply-templates select="@*" mode="markup"/>
- <xsl:if test="( namespace-uri() != '' ) and ( name() = local-name() ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:text> xmlns="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- <xsl:if test="( contains( name(), ':' ) ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:text> xmlns:</xsl:text>
- <xsl:value-of select="substring-before( name(), ':' )"/>
- <xsl:text>="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- <xsl:text>/></xsl:text>
- </xsl:template>
- <!-- generate text for an element with children or text -->
- <xsl:template match="*[* | text()]" mode="markup">
- <xsl:text><</xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:apply-templates select="@*" mode="markup"/>
- <xsl:if test="( namespace-uri() != '' ) and ( name() = local-name() ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:text> xmlns="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- <xsl:if test="( contains( name(), ':' ) ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:text> xmlns:</xsl:text>
- <xsl:value-of select="substring-before( name(), ':' )"/>
- <xsl:text>="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- <xsl:text>></xsl:text>
- <xsl:apply-templates select="* | text()" mode="markup"/>
- <xsl:text></</xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:text>></xsl:text>
- </xsl:template>
- <!-- generate text for an attribute -->
- <xsl:template match="@*" mode="markup">
- <xsl:value-of select="concat(' ', name(), '="', xtsext:htmlencode(string(.)), '"')"/>
- <xsl:if test="( namespace-uri() != '' ) and ( name() = local-name() ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:variable name="currentNamespace" select="namespace-uri()"/>
- <xsl:if test="generate-id(.) = generate-id(../@*[namespace-uri() = $currentNamespace][1])">
- <xsl:text> xmlns="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:if test="( contains( name(), ':' ) ) and ( namespace-uri() != namespace-uri(..) )">
- <xsl:variable name="currentNamespace" select="namespace-uri()"/>
- <xsl:if test="generate-id(.) = generate-id(../@*[namespace-uri() = $currentNamespace][1])">
- <xsl:text> xmlns:</xsl:text>
- <xsl:value-of select="substring-before( name(), ':' )"/>
- <xsl:text>="</xsl:text>
- <xsl:value-of select="namespace-uri()"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
- <!-- generate text -->
- <xsl:template match="text()" mode="markup">
- <xsl:value-of select="xtsext:htmlencode( string( . ) )"/>
- </xsl:template>
- </xsl:stylesheet>
|