Advertisement
brilliantmojo

nav.js

Aug 3rd, 2020 (edited)
1,076
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var page; // Value of current page
  2.  
  3. // History objects
  4. var state;
  5. var title;
  6. var path;
  7. function HistoryPush(state, title, path) {
  8.     history.pushState(state, title, path);
  9. }
  10.    
  11. $(document).ready(function() {
  12.  
  13.     // Get path name, remove back slashes using regex and uppercase the first letter
  14.     page = window.location.pathname.replace(/.*\/(.)(.*?)\/?$/, (...m) => `${m[1].toUpperCase()}${m[2]}`);
  15.    
  16.     var SiteContent = $('#pageRoot'); // Content container
  17.    
  18.     var banner = $('.banner'); // Header container
  19.  
  20.     function loadContent(page) {
  21.    
  22.         // If page is empty, just has '/', 'Index' or is 'Home'
  23.         if(!page || page.indexOf('/') > -1 || page.indexOf('Index') > -1 || page === 'Home') {
  24.                
  25.             banner.hide();
  26.    
  27.             page = 'Home';
  28.    
  29.         }
  30.        
  31.         // Load page
  32.         $(SiteContent).load('/vendors/pages/' + page + '/' + page + '.php', function(response, status, xhr, ItemNumber) {
  33.    
  34.             if(status = 'success') {
  35.    
  36.                 // Check if page needs inventory functions because certain things need to run when HTML loads
  37.                 if($('#Inventory').length) {
  38.    
  39.                     banner.show();
  40.    
  41.                     Inventory(); // Begin paginating in Pagination.js
  42.    
  43.                 }
  44.                
  45.                 if($('#Shows, #Contact').length) {
  46.                     banner.show();
  47.                 }
  48.                
  49.             }
  50.    
  51.         });
  52.                        
  53.         // Toggle selected
  54.         $('.navLink').removeClass('navClicked');
  55.         $('.' + page + 'Link').addClass('navClicked');
  56.                
  57.         // Add space to Contact Us for heading
  58.         switch(page) {
  59.    
  60.             case 'Contact':
  61.                 page = 'Contact Us';
  62.             break;
  63.    
  64.         }
  65.    
  66.         $('#pageTitle').text(page); // Change page heading
  67.    
  68.     }
  69.  
  70.     // If document has SiteContent
  71.     if(SiteContent.length) {
  72.                
  73.         $(document).on('click', '#navLink', function() {
  74.  
  75.             page = $(this).attr('href').replace(/^.*[\\\/]/, '');
  76.  
  77.             // Update history
  78.             state = {page: page};
  79.             title = null;
  80.             path = '/' + page;
  81.             HistoryPush(state, title, path);
  82.                            
  83.             loadContent(page);
  84.  
  85.             return false;
  86.  
  87.         });
  88.  
  89.         $(window).on('popstate', function(event) {
  90.  
  91.             page = event.originalEvent.state.page;
  92.  
  93.             ItemNumber = event.originalEvent.state.ItemNumber;
  94.  
  95.             if(ItemNumber) {
  96.  
  97.                 page = 'Inventory';
  98.  
  99.                 if(!$('#Inventory').length) {
  100.  
  101.                     loadContent(page);
  102.  
  103.                     loadItem(ItemNumber);
  104.            
  105.                 } else {                    
  106.                     loadItem(ItemNumber);
  107.                 }
  108.  
  109.  
  110.             } else {
  111.                 loadContent(page);
  112.             }
  113.        
  114.         });
  115.  
  116.         loadContent(page); // Run loadContent when document is ready and has SiteContent
  117.  
  118.     }
  119.  
  120. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement