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>