Ignore:
Timestamp:
Dec 22, 2013, 5:06:43 PM (10 years ago)
Author:
mistic100
Message:

rewrite elegant javascript : use session storage instead of cookies, factorize jQuery variables, remove unecessary event handlers, wrap into anonymous function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/themes/elegant/scripts.js

    r23535 r26085  
    1 /**
    2  * Cookie plugin
    3  * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
    4  * Dual licensed under the MIT and GPL licenses:
    5  */
    6 jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=jQuery.extend({},options);options.expires=-1;}
    7 var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
    8 expires='; expires='+date.toUTCString();}
    9 var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
    10 return cookieValue;}};
     1(function() {
     2  var session_storage = window.sessionStorage || {};
    113
    12 if (jQuery.cookie('page-menu') == 'hidden') {
    13         jQuery("head").append("<style type=\"text/css\">#the_page #menubar {display:none;} #content.contentWithMenu, #the_page > .content {margin-left:35px;}</style>");
    14 } else {
    15         jQuery("head").append("<style type=\"text/css\">#content.contentWithMenu, #the_page > .content {margin-left:240px;}</style>");
    16 }
     4  var menubar=jQuery("#menubar"),
     5      menuswitcher=jQuery("#menuSwitcher"),
     6      content=jQuery("#the_page > .content"),
     7      pcontent=jQuery("#content");
    178
    18 function hideMenu(delay) {
    19         var menubar=jQuery("#menubar");
    20         var menuswitcher=jQuery("#menuSwitcher");
    21         var content=jQuery("#the_page > .content");
    22         var pcontent=jQuery("#content");
    23        
    24         menubar.hide(delay);
    25         menuswitcher.addClass("menuhidden").removeClass("menushown");
    26         content.addClass("menuhidden").removeClass("menushown");
    27         pcontent.addClass("menuhidden").removeClass("menushown");
    28         jQuery.cookie('page-menu', 'hidden', {path: "/"});
    29        
    30 }
     9  if (session_storage['page-menu'] == 'hidden') {
     10    jQuery("head").append('<style>#the_page #menubar {display:none;} #content.contentWithMenu, #the_page > .content {margin-left:35px;}</style>');
     11  }
     12  else {
     13    jQuery("head").append('<style>#content.contentWithMenu, #the_page > .content {margin-left:240px;}</style>');
     14  }
    3115
    32 function showMenu(delay) {
     16  function hideMenu(delay) {
     17    menubar.hide(delay);
     18    menuswitcher.addClass("menuhidden").removeClass("menushown");
     19    content.addClass("menuhidden").removeClass("menushown");
     20    pcontent.addClass("menuhidden").removeClass("menushown");
     21    session_storage['page-menu'] = 'hidden';
     22  }
    3323
    34         var menubar=jQuery("#menubar");
    35         var menuswitcher=jQuery("#menuSwitcher");
    36         var content=jQuery("#the_page > .content");
    37         var pcontent=jQuery("#content");
     24  function showMenu(delay) {
     25    menubar.show(delay);
     26    menuswitcher.addClass("menushown").removeClass("menuhidden");
     27    content.addClass("menushown").removeClass("menuhidden");
     28    pcontent.addClass("menushown").removeClass("menuhidden");
     29    session_storage['page-menu'] = 'visible';
     30  }
    3831
    39         menubar.show(delay);
    40         menuswitcher.addClass("menushown").removeClass("menuhidden");
    41         content.addClass("menushown").removeClass("menuhidden");
    42         pcontent.addClass("menushown").removeClass("menuhidden");
    43         jQuery.cookie('page-menu', 'visible', {path: "/"});
    44        
    45 }
     32  jQuery(function(){
     33    if (menubar.length == 1 && p_main_menu!="disabled") {
     34      menuswitcher.html('<div class="switchArrow">&nbsp;</div>');
    4635
    47 jQuery("document").ready(function(jQuery){
     36      if (session_storage['page-menu'] == 'hidden' || p_main_menu == 'off') {
     37        hideMenu(0);
     38      }
     39      else {
     40        showMenu(0);
     41      }
    4842
    49         var sidemenu = jQuery.cookie('page-menu');
    50         var menubar=jQuery("#menubar");
    51 
    52         if (menubar.length == 1 && p_main_menu!="disabled") {
    53 
    54                 jQuery("#menuSwitcher").html("<div class=\"switchArrow\">&nbsp;</div>");
    55 
    56                 // if cookie says the menu is hiding, keep it hidden!
    57                 if (sidemenu == 'hidden') {
    58                         hideMenu(0);
    59                 } else if (sidemenu == 'visible') {
    60                         showMenu(0);
    61                 } else if (p_main_menu == 'off') {
    62                         hideMenu(0);
    63                 }       else {
    64                         showMenu(0);
    65                 }
    66    
    67                 jQuery("#menuSwitcher").click(function(){
    68                         if (jQuery("#menubar").is(":hidden")) {
    69                                 showMenu(0);
    70                                 return false;
    71                         } else {
    72                                 hideMenu(0);
    73                                 return false;
    74                         }
    75                 });
    76         }
    77   else if (menubar.length == 1 && p_main_menu=="disabled") {
    78     showMenu(0);
    79   }
    80        
    81 });
    82 
    83 
     43      menuswitcher.click(function(e){
     44        if (menubar.is(":hidden")) {
     45          showMenu(0);
     46        }
     47        else {
     48          hideMenu(0);
     49        }
     50        e.preventDefault();
     51      });
     52    }
     53    else if (menubar.length == 1 && p_main_menu=="disabled") {
     54      showMenu(0);
     55    }
     56  });
     57}());
Note: See TracChangeset for help on using the changeset viewer.