portal_footer.html

 1   <@cTpl>
 2   <footer class="mt-5">
 3   	<div class="container">
 4   		<div class="row">
 5   			<div class="col-12 col-md-6 col-lg-4">
 6   				<form class="form-inline mx-5 mx-md-0 mb-3 mb-md-0" action="jsp/site/Portal.jsp" method="get">
 7   					<input name="page" type="hidden" value="search" >
 8   					<div class="input-group">
 9   						<input id="query" class="form-control input-lg" name="query"  type="text" placeholder="Rechercher" />
 10   						<button type="submit" class="btn btn-light btn-lg" title="#i18n{portal.site.page_menu_tools.labelSearch}">
 11   							<i class="ti ti-search"></i> <span class="visually-hidden">#i18n{portal.site.page_menu_tools.labelSearch}</span>
 12   						</button>
 13   					</div>
 14   				</form>
 15   			</div>
 16   			<div class="col-12 col-md-3 col-lg-4 ps-5">
 17   				<h3 class="ms-5">#i18n{portal.site.portal_footer.labelTitle}</h3>
 18   				<ul class="list-unstyled ms-5">
 19   					<li><a href="#home" class="page-scroll text-capitalize">#i18n{portal.site.page_home.label}</a></li>
 20   					<li><a href="jsp/site/Portal.jsp?page=map" data-bs-info="#i18n{portal.site.site_map.pageTitle}" data-bs-toggle="modal" data-bs-target="#lutece-modal" >#i18n{portal.site.site_map.pageTitle}</a></li>
 21   					<li><a href="jsp/site/PopupCredits.jsp" data-bs-info="#i18n{portal.site.portal_footer.labelCredits}" data-bs-toggle="modal" data-bs-target="#lutece-modal" title="[#i18n{portal.site.portal_footer.newWindow}] #i18n{portal.site.portal_footer.labelCredits}" target="info_credit">#i18n{portal.site.portal_footer.labelCredits}</a></li>
 22   					<li><a href="jsp/site/PopupLegalInfo.jsp" data-bs-info="#i18n{portal.site.portal_footer.labelInfo}" data-bs-toggle="modal" data-bs-target="#lutece-modal" title="[#i18n{portal.site.portal_footer.newWindow}] #i18n{portal.site.portal_footer.labelInfo}" target="info_legal">#i18n{portal.site.portal_footer.labelInfo}</a></li>
 23   				</ul>	
 24   			</div>
 25   			<div class="col-12 col-md-3 col-lg-4 mt-3">
 26   				<p class="text-sm-center text-md-end">
 27   					<a class="text-decoration-none" href="http://lutece.paris.fr/" title="Lutece [Open in new window]" target="_blank">
 28   						<span class="me-2">Powered by</span>
 29   						<img src="images/logo-footer.png" alt="Powered by Lutece" class="logo-footer" >
 30   					</a>	
 31   				</p>
 32   			</div>
 33   		</div>
 34   		<!-- <div class="row mt-3">
 35   			<div class="col-sm-12 col-md-3 col-lg-3 mt-3">
 36   				<p class="text-sm-center text-md-start">
 37   					<a class="text-decoration-none" href="http://lutece.paris.fr/" title="Lutece [Open in new window]" target="_blank">
 38   						<span class="me-2">Powered by</span>
 39   						<img src="images/logo-footer.png" alt="Powered by Lutece" class="logo-footer" >
 40   					</a>	
 41   				</p>
 42   			</div>
 43   			<div class="col-sm-12 col-md-9 col-lg-9 mt-3">
 44   				<p class="mb-3 text-center">2025 - Coded by the <a href="https://github.com/orgs/lutece-platform/people" title="Lutece Github [Open in new window]">Lutece Dev Team</a> on <a href="https://github.com/lutece-platform/lutece-core" title="Lutece Github [Open in new window]"> Lutece core 7 </a></p>
 45   			</div>
 46   		</div>
 47   	</div> -->
 48   </footer>
 49   <div class="modal" tabindex="-1" id="lutece-modal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="lutece-mdoal-label" aria-hidden="true">
 50       <div class="modal-dialog modal-dialog-scrollable modal-dialog-centered" role="document">
 51         <div class="modal-content">
 52           <div class="modal-header">
 53             <h5 class="modal-title"  id="lutece-mdoal-label"></h5>
 54             <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="#i18n{portal.util.labelClose}"></button>
 55           </div>
 56           <div class="modal-body">
 57           </div>
 58           <div class="modal-footer">
 59             <button type="button" class="btn me-auto" data-bs-dismiss="modal">#i18n{portal.util.labelClose}</button>
 60           </div>
 61         </div>
 62       </div>
 63   </div>
 64   <#noparse>
 65   <script>
 66   function loadModalContent( url, body, sel ) {
 67       const xhr = new XMLHttpRequest();
 68   	xhr.open('GET', url, true);
 69       xhr.onreadystatechange = () => {
 70           if (xhr.readyState == 4 && xhr.status == 200) {
 71   			const response = xhr.responseText;
 72   			// Convert the response to a temporary div to manipulate as DOM
 73   			const qDiv = document.createElement('div');
 74       		qDiv.innerHTML = response;
 75   		    // Use querySelector or getElementsByClassName to select elements
 76       		body.innerHTML = qDiv.querySelector( sel ).innerHTML;
 77   		}
 78   	}
 79       xhr.send();
 80   };
 81   
 82   // Load content in modal on activation
 83   document.addEventListener("DOMContentLoaded", function() {
 84   	const luteceModal = document.getElementById('lutece-modal')
 85   
 86   	luteceModal.addEventListener('show.bs.modal', event => {
 87   		// Button that triggered the modal
 88   		const button = event.relatedTarget
 89   		// Extract info from data-bs-* attributes
 90   		const title = button.getAttribute('data-bs-info')
 91   		const modalTitle = luteceModal.querySelector('.modal-title')
 92   		// Update the modal's content.
 93   		const url = button.getAttribute('href')
 94   		const modalBody = luteceModal.querySelector('.modal-body')
 95   		const content = loadModalContent( url, modalBody, '.main-content' );
 96   		modalTitle.textContent = `${title}`
 97   		modalBody.innerHTML = content;
 98   	}) 
 99   });
 100   </script>
 101   </#noparse>
 102   </@cTpl>