123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ps
- (C) Copyright IBM Corp. 2005, 2015
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <!--
- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- -->
- <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" messageBase="messages/portal.xml, messages/portalRL.xml" includeConfig="true" requiredCapability="canUseAdministrationPortal">
- <xts:block id="formlogic_init" type="exec" mode="interpret" processor="XSLT" path="/logicsheets/formlogic_init.xslt" nodelist="env,credential,system,http"/>
- <!--
- ===============================================================================================
- getConfig - Need to get the list of namespace ID's. Only needed if we're on a group or role object
- ===============================================================================================
- -->
- <xts:block id="getConfig" processor="XSLT" type="exec" dependency="formlogic_init" condition=".[/root/env/param[@name='m_class']='group' or /root/env/param[@name='m_class']='role']" mandatory="false">
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="/">
- <xts:sequence>
- <xts:append>
- <xts:function name="getConfiguration">
- <xts:param name="AAA"/>
- </xts:function>
- </xts:append>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <!--
- ===============================================================================================
- getContent - get our data from Content Manager
- ===============================================================================================
- -->
- <xts:block id="getContent" processor="XSLT" type="exec" dependency="formlogic_init getConfig">
- <xts:logicsheet path="logicsheets/buslogic.xslt"/>
- <xts:logicsheet path="logicsheets/portal.xsl"/>
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
- xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
- xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- exclude-result-prefixes="xsl send cm pf">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:key name="env-param" match="/root/env/param" use="@name"/>
- <pf:variables/>
-
- <xsl:template match="/">
- <xts:sequence>
- <xts:append>
- <xts:transform src="transforms/portal/config/mergeRoutingTableAndRoutingHints.xslt" processor="XSLT">
- <routingHints>
- <objectType><xsl:value-of select="key('env-param','m_class')"/></objectType>
- <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
- <send:request provider="cm">
- <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
- <cm:query>
- <cm:requests>
- <xsl:choose>
- <xsl:when test="key('env-param','m_class')='package'">
- <!-- get all the packages -->
- <cm:query>
- <cm:search>//package[hasProperty('routingHints')]</cm:search>
- <cm:properties>
- <cm:property name="searchPath"/>
- <cm:property name="defaultName"/>
- <cm:property name="routingHints"/>
- <cm:property name="storeID"/>
- </cm:properties>
- </cm:query>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="classFilter">
- <xsl:choose>
- <xsl:when test="key('env-param','m_class')='group'">[@objectClass='group']</xsl:when>
- <xsl:when test="key('env-param','m_class')='role'">[@objectClass='role']</xsl:when>
- </xsl:choose>
- </xsl:variable>
- <!-- Cognos namespace-->
- <cm:query>
- <cm:search>/directory/namespace[@id = ':']//*<xsl:value-of select="$classFilter"/>[hasProperty('routingHints')]</cm:search>
- <cm:properties>
- <cm:property name="searchPath"/>
- <cm:property name="defaultName"/>
- <cm:property name="routingHints"/>
- <cm:property name="storeID"/>
- </cm:properties>
- </cm:query>
- <!-- third party namespaces -->
- <xsl:for-each select="/root/configuration/property[@name='AAA']/*[local-name()='value']/*[local-name()='instances']/*[local-name()='instance']/*[local-name()='parameter' and @name='id']/*[local-name()='value' and . != '']">
- <cm:query>
- <cm:search>/directory/namespace[@id="<xsl:value-of select="."/>"]//*<xsl:value-of select="$classFilter"/>[hasProperty('routingHints')]</cm:search>
- <cm:properties>
- <cm:property name="searchPath"/>
- <cm:property name="defaultName"/>
- <cm:property name="routingHints"/>
- <cm:property name="storeID"/>
- </cm:properties>
- </cm:query>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- <cm:query>
- <cm:search>/configuration</cm:search>
- <cm:properties>
- <cm:property name="routingTable"/>
- </cm:properties>
- </cm:query>
- </cm:requests>
- </cm:query>
- </xts:transform>
- </send:request>
- </xts:transform>
- </routingHints>
- </xts:transform>
- </xts:append>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
- <!--
- ===============================================================================================
- format - render the page
- ===============================================================================================
- -->
- <xts:block id="format" mode="output" processor="XSLT" type="exec" dependency="getContent" mimeType="text/html">
- <!-- portal specific information -->
- <xts:logicsheet path="logicsheets/portal.xsl"/>
-
- <!-- get the new theme stuff -->
- <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
- <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
- <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
- <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
- <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
- <xts:logicsheet path="logicsheets/formlogic_lite.xslt"/>
- <xts:logicsheet path="logicsheets/validation.xslt"/>
- <xts:logicsheet path="logicsheets/presentation/touch_up.xslt"/>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
- xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/"
- xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
- xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/"
- xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/"
- xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
- xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/"
- xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- exclude-result-prefixes="pf lyt dp cf cp df utml xtsext cm">
-
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
-
- <!-- Global template variables -->
- <pf:variables/>
- <!-- time varibales needed for the calendar control -->
- <xsl:variable name="mname" select="'specify_advanced_routing.xts'"/>
- <xsl:key name="hints" match="/root/routingHints/cm:string[. != '']" use="."/>
- <xsl:variable name="uniqueHints" select="/root/routingHints/*[generate-id(.)=generate-id(key('hints',.))]"/>
- <!-- start the output -->
- <xsl:template match="/root">
- <xsl:variable name="browserTitle">
- <xts:string id="IDS_ARS_TITLE">
- <xts:param name="obj"><span lang="{$contentLocale}"><xsl:value-of select="key('env-param','m_name')"/></span></xts:param>
- </xts:string>
- </xsl:variable>
- <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text><dp:page longTitle="$browserTitle" dp:kbA11y="true">
- <dp:meta>
- <pf:meta/> <!-- Standard meta tags -->
- </dp:meta>
- <pf:help/>
- <script language="javascript">
- function validate()
- {
- frm = document.pform;
-
- var duplicate = false;
- var alertUser = false;
-
- <!-- need to select all the entries or they won't get returned to the general dialog
- also remove any duplicate entries-->
- selectAll(frm.m_routingHints);
- for (var i=0; i < frm.m_routingHints.options.length; i++)
- {
- for (var ii=i+1; ii < frm.m_routingHints.options.length; ii++)
- {
- if (i != ii && frm.m_routingHints.options[i].value == frm.m_routingHints.options[ii].value && frm.m_routingHints.options[ii].selected == true)
- {
- duplicate = true;
- alertUser = true;
- break;
- }
- }
-
- if (duplicate)
- {
- frm.m_routingHints.options[ii].selected = false;
- }
-
- duplicate = false;
- }
-
- if (alertUser)
- {
- alert("<xts:string id="IDS_ARS_DUPLICATE_ENTRY" encode="javascript"/>");
- }
-
- return true;
- }
-
- <!-- used to replace linefeeds to </br> for the html version of the body -->
- function replaceCarriageReturns(string, replaceWith)
- {
- <!-- encode textarea string's carriage returns -->
- string = escape(string);
-
- <!--loop through string, replacing carriage return encoding with HTML break tag-->
- for(i=0; i<string.length; i++)
- {
- if(string.indexOf("%0D%0A") > -1)
- {
- <!-- Windows encodes returns as \r\n hex-->
- string=string.replace("%0D%0A",replaceWith);
- }
- else if(string.indexOf("%0A") > -1)
- {
- <!-- Unix encodes returns as \n hex-->
- string=string.replace("%0A",replaceWith);
- }
- else if(string.indexOf("%0D") > -1)
- {
- <!-- Macintosh encodes returns as \r hex -->
- string=string.replace("%0D",replaceWith);
- }
- }
-
- string=unescape(string) <!-- unescape all other encoded characters -->
-
- return string;
- }
-
- <!-- trim leading and trailing spaces (around ';') -->
- function trimWhiteSpaces(string)
- {
- <!-- Trim leading white spaces -->
- while (string.substring(0,1) == ' ')
- {
- string = string.substring(1, string.length);
- }
- <!-- Trim trailing white spaces -->
- while (string.substring(string.length-1, string.length) == ' ')
- {
- string = string.substring(0,string.length-1);
- }
-
- index =1;
- while (index != -1)
- {
- index = string.indexOf('; ');
- if (index != -1)
- {
- string = string.replace('; ', ';');
- }
- }
- index =1;
- while (index != -1)
- {
- index = string.indexOf(' ;');
- if (index != -1)
- {
- string = string.replace(' ;', ';');
- }
- }
- return string;
- }
- function addRoutingSet(addFrom)
- {
- frm = document.pform;
- deselectAll(frm.m_routingHints);
- if (addFrom == 'typed')
- {
- if (frm.routing_set_add.value == '')
- return;
-
- typedText = frm.routing_set_add.value;
- typedText = trimWhiteSpaces(typedText);
- typedText = replaceCarriageReturns(typedText,";");
-
- while (typedText != '')
- {
- index = typedText.indexOf(';');
- if (index != -1)
- {
- routingSet = typedText.substring(0,index);
- typedText = typedText.substring(index+1);
- createSelectOption(routingSet);
- }
- else
- {
- createSelectOption(typedText);
- typedText = '';
- }
- }
- frm.routing_set_add.value = '';
- frm.routing_set_add.focus();
- }
- else
- {
- for (var i = 0; i < frm.availableHints.options.length ; i++)
- {
- if (frm.availableHints.options[i].selected)
- {
- createSelectOption(frm.availableHints.options[i].value);
- frm.availableHints.options[i].selected = false;
- }
- }
- }
- }
-
- function deselectAll(obj)
- {
- for (var i = 0; i < obj.options.length ; i++) {
- obj.options[i].selected = false;
- }
- }
- function selectAll(obj)
- {
- for (var i = 0; i < obj.options.length ; i++) {
- obj.options[i].selected = true;
- }
- }
- function selectLast(obj)
- {
- obj.options[obj.options.length-1].selected = true;
- }
-
- function createSelectOption(routingSet)
- {
- if (routingSet != '')
- {
- document.pform.m_routingHints.options[document.pform.m_routingHints.options.length] = new Option(routingSet, routingSet, false, true);
- }
- }
-
- function removeRoutingSet()
- {
- frm = document.pform;
- for (var i=(frm.m_routingHints.options.length - 1); i > -1; i--)
- {
- if (frm.m_routingHints.options[i].selected)
- {
- frm.m_routingHints.options[i] = null;
- }
- }
- }
- </script>
-
- <!-- Get date control includes -->
- <utml:form name="pform" method="post" action="{$gateway}">
- <utml:input type="hidden" name="routingHintsChanged" value="true" utml:update="false"/>
- <!-- header -->
- <dp:header dp:kbA11y="true">
- <dp:title>
- <xsl:copy-of select="$browserTitle"/>
- </dp:title>
- <dp:description>
- <xts:string id="IDS_ARS_INTRO"/>
- </dp:description>
- <span style="position: absolute;margin-left: -9999px; margin-top: -9999px;" id="arsIntro"><xts:string id="IDS_ARS_INTRO"/></span>
- </dp:header>
-
-
- <!-- body -->
- <lyt:layout style="1" lyt:kbA11y="true">
- <lyt:section>
- <table cellpadding="0" cellspacing="0" width="650" role="presentation">
- <tr>
- <td class="formLabel" style="width:300px; padding-right:15px">
- <label for="ctrl_availableHints"><xts:string id="IDS_ARS_AVAILABLE_SETS"/></label>
- </td>
- <td/>
- <td class="formLabel" style="width:300px;padding-left:15px;">
- <label for="ctrl_m_routingHints"><xts:string id="IDS_ARS_ASSIGNED_ROUTING_SETS"/></label>
- </td>
- </tr>
- <tr>
- <td class="dialogHintText" style="width:300px; padding-right:15px">
- <xts:string id="IDS_ARS_AVAILABLE_DESCRIPTION"/>
- </td>
- <td/>
- <!-- Assigned routing sets -->
- <td rowspan="5" style="padding-left:15px;" nowrap="nowrap">
- <utml:select size="15" name="m_routingHints" multiple="true" style="width:300px;" id="ctrl_m_routingHints">
- <xsl:for-each select="key('env-param','m_routingHints')">
- <xsl:sort select="." lang="$productLocale"/>
- <option value="{.}">
- <xsl:value-of select="."/>
- </option>
- </xsl:for-each>
- </utml:select>
- <br/>
- </td>
- </tr>
- <tr>
- <!-- Available routing sets -->
- <td style="width:300px; padding-right:15px">
- <utml:select name="availableHints" size="5" multiple="true" style="width:300px;" id="ctrl_availableHints">
- <xsl:for-each select="$uniqueHints">
- <xsl:sort select="." lang="$productLocale"/>
-
- <option value="{.}">
- <xsl:value-of select="."/>
- </option>
- </xsl:for-each>
- </utml:select>
- </td>
- <df:button df:id="IDS_ARS_ADD_EXISTING" df:noText='true' df:style="href" df:href="#" onclick="addRoutingSet('available');">
- <df:image df:tooltip="IDS_ARS_ADD_EXISTING">{$image_root}move_right.gif</df:image>
- </df:button>
- <td/>
- </tr>
- <tr>
- <td style="width:300px;" class="formLabel">
- <label for="ctrl_typedRoutingSets"><xts:string id="IDS_ARS_TYPE_SETS"/></label>
- </td>
- <td/>
- </tr>
- <tr>
- <td style="width:300px;" class="dialogHintText">
- <xts:string id="IDS_ARS_TYPE_DESCRIPTION"/>
- </td>
- <td/>
- </tr>
- <tr>
- <td style="width:300px;">
- <!-- typed routing sets -->
- <utml:textarea name="routing_set_add" cols="80" rows="3" style="width:300px;" id="ctrl_typedRoutingSets" role="textbox">
- <utml:value>
- <xsl:if test="not(key('env-param','m_routingHints')) or key('env-param','m_routingHints')=''">
- <xsl:value-of select="key('env-param','m_name')"/>
- </xsl:if>
- </utml:value>
- </utml:textarea>
- </td>
- <df:button df:id="IDS_ARS_ADD_NEW" df:noText='true' df:style="href" df:href="#" onclick="addRoutingSet('typed');">
- <df:image df:tooltip="IDS_ARS_ADD_NEW">{$image_root}move_right.gif</df:image>
- </df:button>
- </tr>
- <tr>
- <td style="width:300px;"/>
- <td/>
- <td align="right" class="formLink">
- <a href="#" onclick="removeRoutingSet()"><xts:string id="IDS_ARS_REMOVE"/></a>
- </td>
- </tr>
- </table>
- </lyt:section>
- </lyt:layout>
- <!-- footer -->
- <dp:footer>
- <df:button df:id="IDS_OK" utml:validate="true" df:style="stack-down-save"/>
- <xsl:choose>
- <xsl:when test="key('env-param', 'ps_nav_stack') and not(key('env-param', 'ps_nav_stack') = '') ">
- <df:button df:id="IDS_CANCEL" df:style="stack-down"/>
- </xsl:when>
- <xsl:otherwise>
- <df:button df:id="IDS_CANCEL" df:style="back-url"/>
- </xsl:otherwise>
- </xsl:choose>
- </dp:footer>
- </utml:form>
- </dp:page>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <!--
- ===============================================================================================
- debug - display debug information
- ===============================================================================================
- -->
- <xts:block id="debug" dependency="format" condition=".[/root/session/param[@name='debug']='1']" type="exec" mode="output" processor="XSLT" mandatory="false" mimeType="text/html">
- <!-- get the debug logic sheet -->
- <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbg="http://developer.cognos.com/schemas/xts/logicsheets/xslt/debug/" exclude-result-prefixes="dbg">
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
- <xsl:template match="/">
- <dbg:dumpxml select="/root"/>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
- </xts:morphlet>
|