mirror of
				https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
				synced 2025-10-30 17:55:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Gives active classes to links with active URLs
 | |
| // Marks links as active which target URL starts with the current URL
 | |
| const markactive_startswith = function (element) {
 | |
|     var all_links = element.getElementsByTagName("a"),
 | |
|         i = 0,
 | |
|         len = all_links.length,
 | |
|         full_path = location.href.split("#")[0].toLowerCase(); //Ignore hashes
 | |
| 
 | |
|     for (; i < len; i++) {
 | |
|         if (full_path.startsWith(all_links[i].href.toLowerCase())) {
 | |
|             all_links[i].className += " active";
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| // Marks links active which target URL is exact the same as the current URL
 | |
| const markactive_exact = function (element) {
 | |
|     var all_links = element.getElementsByTagName("a"),
 | |
|         i = 0,
 | |
|         len = all_links.length,
 | |
|         full_path = location.href.split("#")[0].toLowerCase(); //Ignore hashes
 | |
| 
 | |
|     for (; i < len; i++) {
 | |
|         if (full_path == all_links[i].href.toLowerCase() || full_path == all_links[i].href.toLowerCase() + "/") {
 | |
|             all_links[i].className += " active";
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| // Marks links as active, single links mutch match exactly, dropdown only the beginning
 | |
| const markactive_menu = function (element) {
 | |
|     var all_links = element.getElementsByTagName("a"),
 | |
|         i = 0,
 | |
|         len = all_links.length,
 | |
|         marked = false,
 | |
|         full_path = location.href.split("#")[0].toLowerCase(); //Ignore hashes
 | |
|     full_path = full_path.split("?")[0];
 | |
| 
 | |
|     for (; i < len; i++) {
 | |
|         if (all_links[i].parentNode.classList.contains("ha-topnav-dropdown")) {
 | |
|             if (full_path.startsWith(all_links[i].href.toLowerCase())) {
 | |
|                 all_links[i].className += " active pointer-events-none";
 | |
|                 marked = true;
 | |
|             }
 | |
|         } else {
 | |
|             if (full_path == all_links[i].href.toLowerCase() || full_path == all_links[i].href.toLowerCase() + "/") {
 | |
|                 all_links[i].className += " active pointer-events-none";
 | |
|                 marked = true;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     i = 0;
 | |
|     if (marked === false) {
 | |
|         for (; i < len; i++) {
 | |
|             if (all_links[i].classList.contains("ha-active-default")) {
 | |
|                 all_links[i].className += " active";
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| if (document.getElementById("ha-topnav") !== null)
 | |
|     markactive_menu(document.getElementById("ha-topnav"));
 | |
| if (document.getElementById("ha-register-nav") !== null)
 | |
|     markactive_exact(document.getElementById("ha-register-nav"));
 | |
| if (this.document.getElementById("ha-adminuploadfields") !== null)
 | |
|     markactive_exact(document.getElementById("ha-adminuploadfields"));
 | 
