view_dashboards.html
1 <@pageContainer id="adminTechnical" height="full">
2 <@pageColumn id="adminTechnicalMenu" class="bg-light border-end p-4" width="28rem" height="full" responsiveMenuSize="xl" responsiveMenuPlacement="start" title="#i18n{portal.admindashboard.view_dashboards.title}">
3 <@tabList id="adminTechnicalList" style='pills' vertical=true>
4 <h3 class="fw-bolder mb-2 mt-2">#i18n{portal.templates.manage_autoincludes.menuTitle}</h3>
5 <@tabLink href='#autoincludes' title='#i18n{portal.templates.manage_autoincludes.tabTitle}' tabIcon='code' />
6 <h3 class="fw-bolder mb-2 mt-4">#i18n{portal.users.adminDashboard.menuTitle}</h3>
7 <@tabLink href='#defaultUserParameterValues' title='#i18n{portal.users.manage_advanced_parameters.defaultUserParameterValues}' tabIcon='user' />
8 <@tabLink href='#modifyEmailPattern' title='#i18n{portal.users.manage_advanced_parameters.labelModifyEmailPattern}' tabIcon='at' />
9 <@tabLink href='#advancedSecurityParameters' title='#i18n{portal.users.manage_advanced_parameters.securityParameters}' tabIcon='shield-alt' />
10 <@tabLink href='#lifeTimeEmails' title='#i18n{portal.users.accountLifeTime.labelLifeTimeNotifications}' tabIcon='envelope' />
11 <@tabLink href='#attributes_management' title='#i18n{portal.users.manage_attributes.pageTitle}' tabIcon='id-card' />
12 <@tabLink href='#anonymizeUsers' title='#i18n{portal.users.anonymize_user.titleAnonymizeUser}' tabIcon='user-secret' />
13 <@tabLink href='#right_levels' title='#i18n{portal.users.adminFeature.level_right_management.name}' tabIcon='users' />
14 <h3 class="fw-bolder mb-2 mt-4">#i18n{portal.search.manage_advanced_parameters.menuTitle}</h3>
15 <@tabLink href='#search' title='#i18n{portal.search.manage_advanced_parameters.pageTitle}' tabIcon='search' />
16 <h3 class="fw-bolder mb-2 mt-4">#i18n{portal.admindashboard.editorChoice.menuTitle}</h3>
17 <@tabLink href='#editors' title='#i18n{portal.admindashboard.editorChoice.title}' tabIcon='edit' />
18 <h3 class="fw-bolder mb-2 mt-4">#i18n{portal.admin.adminFeature.features_management.menuTitle}</h3>
19 <@tabLink href='#features_management' title='#i18n{portal.features.manage_groups.title}' tabIcon='folder' />
20 <@tabLink href='#assign_features_groups' title='#i18n{portal.features.dispatch_features.title}' tabIcon='list' />
21 <@tabLink href='#external_features' title='#i18n{portal.features.external_features.manage_external_features.pageTitle}' tabIcon='users' />
22 <h3 class="fw-bolder mb-2 mt-4">#i18n{portal.xsl.adminFeature.xsl_export_management.name}</h3>
23 <@tabLink href='#xslexportManagement' title='#i18n{portal.xsl.manage_xsl_export.page_title}' tabIcon='file-code' />
24 </@tabList>
25 </@pageColumn>
26 <@pageColumn class="p-4" height="full">
27 <@pageColumnBtn class="mb-3" hideSize="xl" title="#i18n{portal.admindashboard.view_dashboards.title}" idPageColumn="adminTechnicalMenu" />
28 <@tabContent id="admin-tab-content">
29 <#if column_content_1?has_content>
30 ${column_content_1}
31 </#if>
32 <#if column_content_2?has_content>
33 ${column_content_2}
34 </#if>
35 </@tabContent>
36 </@pageColumn>
37 </@pageContainer>
38 <#noparse>
39 <script type="module">
40 const tabsLink = (element) => {
41 const tabs = element.querySelectorAll('.nav-link');
42 for (const tab of tabs) {
43 tab.addEventListener('show.bs.tab', (e) => {
44 const url = new URL(window.location.href);
45 url.searchParams.set('tab', e.target.getAttribute('href').substring(1));
46 window.history.pushState({}, '', url);
47 });
48 }
49 const urlParams = new URLSearchParams(window.location.search);
50 const hashFragments = window.location.hash.split('#');
51 const activeTab = urlParams.get('tab') || (hashFragments.length > 2 ? document.getElementById( hashFragments[2] ).getAttribute('tab') : hashFragments[1]);
52 const tabToActivate = element.querySelector(`.nav-link[href="#${activeTab}"]`);
53 if (tabToActivate) {
54 tabToActivate.click();
55 tabToActivate.scrollIntoView({ behavior: 'instant', block: hashFragments.length > 2 ? 'start' : 'end'});
56 hashFragments.length > 2 && document.getElementById( hashFragments[2] ).scrollIntoView({ behavior: 'instant', block: 'start' });
57 } else {
58 tabs[0].click();
59 tabs[0].scrollIntoView({ behavior: 'smooth', block: 'end' });
60 }
61 };
62 tabsLink(document.getElementById('adminTechnical'));
63 const tabListParent = document.getElementById('adminTechnicalList');
64 const tabList = tabListParent.querySelectorAll('.nav-link');
65 const tabListContent = document.getElementById('admin-tab-content').querySelectorAll('.tab-pane');
66 tabListContent.forEach((content) => {
67 const contentId = content.getAttribute('id');
68 const isMatchFound = Array.from(tabList).some((tab) => {
69 return tab.getAttribute('href') === `#${contentId}`;
70 });
71 if (!isMatchFound) {
72 const tablink = `<h3 class="fw-bolder mb-2 mt-4">${content.getAttribute('title')}</h3><a href="#${content.getAttribute('id')}" class="nav-link" id="${content.getAttribute('id')}-tab" title="${content.getAttribute('title')}" role="tab" aria-expanded="false" aria-controls="search" data-bs-toggle="tab" aria-selected="false" tabindex="-1">
73 ${content.getAttribute('title')}
74 </a>`
75 tabListParent.insertAdjacentHTML('beforeend', tablink);
76 }
77 });
78 </script>
79 </#noparse>