<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <base href="https://issues.shibboleth.net/jira" /> 
        <title>Message Title</title> 
    </head> 
    <body class="jira" style="color: #333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429"> 
        <table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
            <!-- header here --> 
            <tr> 
                <td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px"> 
                    <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                        <tr> 
                            <td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px"> <img id="header-avatar-image" class="image_fix" src="cid:jira-generated-image-avatar-0ae25825-d68a-4d93-b2bb-5bfe6925e57b" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top" /> 
                            </td> 
                            <td id="header-text-container" valign="middle" style="padding: 0px; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="rt6oq14klzc8s1yxeui4gs4fvv4=@https://aai-logon.switch.ch/idp/shibboleth" id="email_rt6oq14klzc8s1yxeui4gs4fvv4=@https://aai-logon.switch.ch/idp/shibboleth" href="https://issues.shibboleth.net/jira/secure/ViewProfile.jspa?name=rt6oq14klzc8s1yxeui4gs4fvv4%3D%40https%3A%2F%2Faai-logon.switch.ch%2Fidp%2Fshibboleth" style="color:#3b73af;; color: #3b73af; text-decoration: none">Thomas Lenggenhager</a> <strong>created</strong> an issue 
                            </td> 
                        </tr> 
                    </table> 
                </td> 
            </tr> 
            <tr> 
                <td id="email-content-container" style="padding: 0px; border-collapse: collapse; padding: 0 20px"> 
                    <table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: separate"> 
                        <tr> 
                            <!-- there needs to be content in the cell for it to render in some clients --> 
                            <td class="email-content-rounded-top mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly">
                                 
                            </td> 
                        </tr> 
                        <tr> 
                            <td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff"> 
                                <table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                                    <tr> 
                                        <td class="page-title-pattern-first-line " style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://issues.shibboleth.net/jira/browse/IDP" style="color: #3b73af; text-decoration: none">Identity Provider</a> / <a href="https://issues.shibboleth.net/jira/browse/IDP-1157" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-c229a0f3-9069-4acc-a09c-e91581e24849" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://issues.shibboleth.net/jira/browse/IDP-1157" style="color: #3b73af; text-decoration: none">IDP-1157</a> 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <td style="vertical-align: top;; padding: 0px; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://issues.shibboleth.net/jira/browse/IDP-1157" style="color: #3b73af; text-decoration: none">ToU consent broken in combination with multiple languages</a> </span> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                        <tr> 
                            <td class="email-content-main mobile-expand  wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 10px; padding-bottom: 5px"> 
                                <table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Issue Type:
                                        </th> 
                                        <td class="has-icon" style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-avatar-c229a0f3-9069-4acc-a09c-e91581e24849" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /> Bug 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Affects Versions:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
                                             3.3.1, 3.3.0 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Assignee:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="tzeller@shibboleth.net" id="email_tzeller@shibboleth.net" href="https://issues.shibboleth.net/jira/secure/ViewProfile.jspa?name=tzeller%40shibboleth.net" style="color:#3b73af;; color: #3b73af; text-decoration: none">Tom Zeller</a> 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Components:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
                                             Terms of Use 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Created:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
                                             05/Apr/17 10:13 AM 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Labels:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
                                             i18n 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Priority:
                                        </th> 
                                        <td class="has-icon" style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-static-major-40ae1f2e-c832-42ca-8cf9-0a6a1d149f5c" height="16" width="16" border="0" align="absmiddle" alt="Major" style="vertical-align: text-bottom" /> Major 
                                        </td> 
                                    </tr> 
                                    <tr> 
                                        <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
                                            Reporter:
                                        </th> 
                                        <td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="rt6oq14klzc8s1yxeui4gs4fvv4=@https://aai-logon.switch.ch/idp/shibboleth" id="email_rt6oq14klzc8s1yxeui4gs4fvv4=@https://aai-logon.switch.ch/idp/shibboleth" href="https://issues.shibboleth.net/jira/secure/ViewProfile.jspa?name=rt6oq14klzc8s1yxeui4gs4fvv4%3D%40https%3A%2F%2Faai-logon.switch.ch%2Fidp%2Fshibboleth" style="color:#3b73af;; color: #3b73af; text-decoration: none">Thomas Lenggenhager</a> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                        <tr> 
                            <td class="email-content-main mobile-expand  issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 5px; padding-bottom: 10px"> 
                                <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
                                    <tr> 
                                        <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">Let's assume we want to configure a single ToU statement and we would like to present it in multiple languages, depending on the user's browser settings.</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">For such a multi-lingual scenario, the current v3.3 configuration capabilities have two major limitations:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">a) The key for the hash is based on the <tt>.text</tt> property and that results in different hashes when multiple languages need to be supported!</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">b) It is currently not possible to configure some other value than '.text' to be used as key<br /> in the user configuration ({{$</p> {idp.home}/conf}}).<br /> <br /> Although the class <tt>net.shibboleth.idp.consent.logic.impl.MessageSourceConsentFunction</tt><br /> would allow to set a different suffix, neither the system configuration ({{${idp.home} 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">/system}})<br /> nor the user configuration ({{$</p> {idp.home} 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">/conf}}) allow to set a different suffix.</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">We propose to fix this in the system configuration, e.g. as follows in<br /> {{$</p> {idp_home}/system/flows/intercept/terms-of-use-beans.xml}}:<br /> <br /> {{ <bean id="TermsOfUseConsentFunction"<br /> class="net.shibboleth.idp.consent.logic.impl.MessageSourceConsentFunction"<br /> - p:consentKeyLookupStrategy-ref="shibboleth.consent.terms-of-use.Key" /><br /> + p:consentKeyLookupStrategy-ref="shibboleth.consent.terms-of-use.Key"<br /> + p:consentValueMessageCodeSuffix=".text" /><br /> %{idp.consent.terms-of-use.consentValueMessageCodeSuffix:.text}<br /> }}<br /> <br /> And additionally in {{${idp_home} 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">/conf/idp.properties}}:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{+# Suffix of the message property to be used as key to store the consent.<br /> +# Default is to use the text that is shown to the user.<br /> +#idp.consent.terms-of-use.consentValueMessageCodeSuffix = .text<br /> }}</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">As a current workaround we introduced a new <tt>.html</tt> property (see below), but it would be more straightforward to make the property configurable that gets used for the key, e.g. <tt>.version</tt>.</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">We adapted the following in <tt>consent-intercept-config.xml</tt>:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{<alias alias="shibboleth.consent.terms-of-use.Key" name="shibboleth.SingleTermsOfUseText" /></p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0"><bean id="shibboleth.SingleTermsOfUseText"<br /> class="com.google.common.base.Functions" factory-method="constant"><br /> <constructor-arg value="my-terms-of-use" /><br /> </bean>}}</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">and we originally included in <tt>messages.properties</tt>:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{my-terms-of-use = my-tou<br /> my-tou.title = Example Terms of Use<br /> my-tou.text = <p>Example organization Terms of Use (ToU)</p> \<br /> <p>Lorem ipsum dolor sit amet, \<br /> consectetur adipiscing elit. \<br /> </p><br /> }}</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">The key is the <tt>.text</tt> property. As soon as we add the <tt>my-tou.text</tt> property in additional languages, the key for each language is different!<br /> Provided a user switches between browsers with different language settings, this user will have to accept the ToU over and over again, simply because the hash is not the same for all languages.</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">Our workaround for this was to introduce an additional property <tt>my-tou.text.html</tt>, see below.</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">So we now included in <tt>messages.properties</tt>:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{my-terms-of-use = my-tou<br /> my-tou.title = Example Terms of Use<br /> my-tou.text = ToU version 1.0 - 20170405<br /> my-tou.html = <p>Example organization Terms of Use (ToU)</p> \<br /> <p>Lorem ipsum dolor sit amet, \<br /> consectetur adipiscing elit. \<br /> </p><br /> }}</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">and we needed to replace in <tt>/opt/shibboleth-idp/views/intercept/terms-of-use.vm</tt>:</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">this line</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{#springMessageText("$</p> {termsOfUseId}.text", "Terms of Use Text...")}}<br /> <br /> with this line<br /> <br /> {{#springMessageText("${termsOfUseId} 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">.html", "Terms of Use Text...")}}</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">For the translations we only add the properties <tt>my-tou.title</tt> and <tt>my-tou.html</tt> into the language dependent <tt>.properties</tt> file. That way, we have a single <tt>my-tou.text</tt> property as key for the hash!</p> 
                                            <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">That way you can even correct a typo or a minor change that does not require a new approval in any of the languages. From now on, you only change the version information in the <tt>my-tou.text property</tt> when the legal counsel asks you to replace the current ToU version with a new one that requires approval. That has to happen in sync for all the languages.</p> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                        <tr> 
                            <td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff"> 
                                <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
                                    <tr> 
                                        <td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0"> 
                                            <table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                                                <tr> 
                                                    <td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"> <a href="https://issues.shibboleth.net/jira/browse/IDP-1157#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-9aeeb249-0166-47f2-a3ad-091e9ba51b93" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle" /> </a> 
                                                    </td> 
                                                    <td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://issues.shibboleth.net/jira/browse/IDP-1157#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> 
                                                    </td> 
                                                </tr> 
                                            </table> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                        <!-- there needs to be content in the cell for it to render in some clients --> 
                        <tr> 
                            <td class="email-content-rounded-bottom mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #fff; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly">
                                 
                            </td> 
                        </tr> 
                    </table> 
                </td> 
            </tr> 
            <tr> 
                <td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px"> 
                    <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                        <tr> 
                            <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px">
                                 This message was sent by Atlassian JIRA <span id="footer-build-information">(v7.0.10#70120-<span title="37e3d7a6fc4d580639533e7f7c232c925e554a6a" data-commit-id="37e3d7a6fc4d580639533e7f7c232c925e554a6a}">sha1:37e3d7a</span>)</span> 
                            </td> 
                            <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0px; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
                                <table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt"> 
                                    <tr> 
                                        <td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-1e8991c5-4a64-4bf3-b7ea-5eaa5d321ded" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" /> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                    </table> 
                </td> 
            </tr> 
        </table>   
    </body>
</html>