identity_merge.ftl
1 <#--
2 Macro: identityMerge
3
4 Renders the UI for merging identities.
5
6 The macro generates a column with actions and UI elements allowing the user to merge identities.
7 This macro makes use of filtered attributes and certain conditions to render buttons and
8 other UI components for each identity attribute.
9
10 @param identity_to_keep The primary identity data object.
11 @param identity_to_merge The secondary identity data object to be potentially merged into the primary identity.
12 @param current_rule_code The code of the current rule in context.
13 @param current_page The current page reference.
14 @param service_contract A reference containing attribute definitions and other related data.
15
16 @returns A rendered column for merging actions between identities.
17
18 Usage:
19 <@identityMerge />
20 -->
21 <#macro identityMerge>
22 <div id="lutece-merge" class="p-0 m-0 position-absolute start-50 translate-middle-x z-2" style="width:100px;">
23 <ul class="list-group list-group-flush">
24 <li class="position-relative d-flex justify-content-center align-items-center" style="height:155px;">
25 <div class="position-absolute top-50 start-0 end-0 bg-dark border-top border-primary-subtle mediation-line-merge" style="z-index:-1"></div>
26 <div class="text-center w-100">
27 <a href="jsp/admin/plugins/identitymediation/IdentityDuplicate.jsp?action_swapIdentities&cuid=${identity_to_keep.customerId}&code=${current_rule_code}&page=${current_page}&identity-cuid-1=${identity_to_keep.customerId}&identity-cuid-2=${identity_to_merge.customerId}" class="btn btn-rounded border-primary-subtle btn-light m-auto mediation-btn-merge" data-bs-toggle="tooltip" data-bs-placement="top" title="Inverser">
28 <i class="ti ti-switch-horizontal"></i>
29 </a>
30 </div>
31 </li>
32 <#list service_contract.attributeDefinitions?filter(a -> a.attributeRight.readable) as readableAttr>
33 <li class="list-group-item text-center d-flex justify-content-center align-items-center border-0" data-name="${readableAttr.name}" style="min-height:55px">
34 <#if readableAttr.attributeRight.writable >
35 <#list identity_to_merge.attributes?filter(a -> a.key == readableAttr.keyName) as attrToMerge>
36 <#assign attrToKeep = (identity_to_keep.attributes?filter(a -> a.key == readableAttr.keyName)?first)!{} >
37 <#if ( !identity_to_keep.monParisActive && !identity_to_merge.monParisActive && ( attrToMerge.certificationLevel gte (attrToKeep.certificationLevel)!0 ) && ( !(attrToKeep?has_content) || (attrToKeep.value != attrToMerge.value) ) )
38 || !(attrToKeep?has_content) >
39 <div class="position-absolute top-50 start-0 end-0 bg-dark border-top border-primary-subtle mediation-line-merge" style="z-index:-1"></div>
40 <div class="text-center w-100">
41 <@button class='btn btn-rounded border-primary-subtle btn-light m-auto mediation-btn-merge' color='-' buttonIcon='arrow-left' params=' data-name="${readableAttr.name}" data-key="${attrToMerge.key}" data-value="${attrToMerge.value}" data-certif="${attrToMerge.certifier}" data-certifdate="${attrToMerge.certificationDate?date}" data-timestamp-certif="${attrToMerge.certificationDate?long}"' />
42 </div>
43 </#if>
44 </#list>
45 </#if>
46 </li>
47 </#list>
48 </ul>
49 </div>
50 </#macro>