Jump to content

How to adapting blocktopmenu 1.5.1


oslayer

Recommended Posts

I tried adapt blocktopmenu in Presta 1.5.1

This module is based on superfishmenu.

 

And i have this trouble

in superfish-modified.js is a function

 

showSuperfishUl : function(){
  var o = sf.op,
   sh = sf.c.shadowClass+'-off',
   $ul = this.addClass(o.hoverClass)
 .find('>ul:hidden').css('visibility','visible');
  sf.IE7fix.call($ul);
  o.onBeforeShow.call($ul);

  $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
  return this;
 }

 

I want add another similar function

showSuperfishUl : function(){
  var o = sf.op,
   sh = sf.c.shadowClass+'-off',
   $ul = this.addClass(o.hoverClass)
 .find('>div:hidden').css('visibility','visible');
  sf.IE7fix.call($ul);
  o.onBeforeShow.call($ul);

  $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
  return this;
 }

But i don't know how :( do not understand the JS. Please help me...

 

full code of superfish-modified.js see below

;(function($){
$.fn.superfish = function(op){
 var sf = $.fn.superfish,
  c = sf.c,
  $arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')),
  over = function(){
   var $$ = $(this), menu = getMenu($$);
   clearTimeout(menu.sfTimer);
   $$.showSuperfishUl().siblings().hideSuperfishUl();
  },
  out = function(){
   var $$ = $(this), menu = getMenu($$), o = sf.op;
   clearTimeout(menu.sfTimer);
   menu.sfTimer=setTimeout(function(){
 o.retainPath=($.inArray($$[0],o.$path)>-1);
 $$.hideSuperfishUl();
 if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
   },o.delay);
  },
  getMenu = function($menu){
   var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
   sf.op = sf.o[menu.serial];
   return menu;
  },
  addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

 return this.each(function() {
  var s = this.serial = sf.o.length;
  var o = $.extend({},sf.defaults,op);
  o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
   $(this).addClass([o.hoverClass,c.bcClass].join(' '))
 .filter('li:has(ul)').removeClass(o.pathClass);
  });
  sf.o[s] = sf.op = o;

  $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
   if (o.autoArrows) addArrow( $('>a:first-child',this) );
  })
  .not('.'+c.bcClass)
   .hideSuperfishUl();

  var $a = $('a',this);
  $a.each(function(i){
   var $li = $a.eq(i).parents('li');
   $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
  });
  o.onInit.call(this);

 }).each(function() {
  menuClasses = [c.menuClass];
  if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
  $(this).addClass(menuClasses.join(' '));
 });
};
var sf = $.fn.superfish;
sf.o = [];
sf.op = {};
sf.IE7fix = function(){
 var o = sf.op;
 if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
  this.toggleClass(sf.c.shadowClass+'-off');
 };
sf.c = {
 bcClass	 : 'sf-breadcrumb',
 menuClass   : 'sf-js-enabled',
 anchorClass : 'sf-with-ul',
 arrowClass  : 'sf-sub-indicator',
 shadowClass : 'sf-shadow'
};
sf.defaults = {
 hoverClass : 'sfHover',
 pathClass : 'overideThisToUse',
 pathLevels : 1,
 delay  : 800,
 animation : {opacity:'show'},
 speed  : 'fast',
 autoArrows : false,
 dropShadows : false,
 disableHI : false,  // true disables hoverIntent detection
 onInit  : function(){}, // callback functions
 onBeforeShow: function(){},
 onShow  : function(){},
 onHide  : function(){}
};
$.fn.extend({
 hideSuperfishUl : function(){
  var o = sf.op,
   not = (o.retainPath===true) ? o.$path : '';
  o.retainPath = false;
  var $ul1 = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
 .find('>ul').hide().css('visibility','hidden');
  var $ul2 = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
 .find('>div').hide().css('visibility','hidden');
 var $ul = $ul1 . $ul2;
  o.onHide.call($ul);
  return this;
 },
 showSuperfishUl : function(){
  var o = sf.op,
   sh = sf.c.shadowClass+'-off',
   $ul = this.addClass(o.hoverClass)
 .find('>ul:hidden').css('visibility','visible');
  sf.IE7fix.call($ul);
  o.onBeforeShow.call($ul);

  $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
  return this;
 }
});
})(jQuery);
jQuery(function(){
jQuery('ul.sf-menu').superfish();
});

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...