navigatpr widget fix

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5844 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2009-03-11 05:36:33 +00:00
parent f14d588445
commit ed300def8a

View file

@ -13,18 +13,10 @@ function WidgetNavigator(menu_srl){
var node_srl = jQuery(this).attr('node_srl');
if(self.menu_srl && node_srl && widget_navigator && widget_navigator[self.menu_srl]){
// 생성되지 않을때만 생성
if(jQuery('ul[node_srl='+node_srl+']').size() ==0){
var wn = widget_navigator[self.menu_srl].drawMenu(node_srl);
if(wn) wn.appendTo(jQuery('html>body'));
jQuery('ul[node_srl='+node_srl+']').remove();
var wn = widget_navigator[self.menu_srl].drawMenu(node_srl);
if(wn) wn.appendTo(jQuery('html>body'));
// 이미 있다면 show
}else{
jQuery('a',this).show();
jQuery('ul[node_srl='+node_srl+']').show();
jQuery('ul[node_srl='+node_srl+']').children('li').show();
jQuery('ul[node_srl='+node_srl+']').children('li').children('a').show();
}
}
}
).mouseout(
@ -74,7 +66,7 @@ WidgetNavigator.prototype.drawMenu = function(parent_srl){
var parent_offset = jQuery('li.node_'+parent_srl).offset();
h.css({
top : parent_offset.top + jQuery('li.node_'+parent_srl).height()-2,
left : parent_offset.left
left : parent_offset.left
})
// 2차메뉴
@ -98,181 +90,39 @@ WidgetNavigator.prototype.drawMenu = function(parent_srl){
var t = jQuery(this);
var m = t.attr('text');
if(!m) return;
var u ='#';
if(t.attr('url')){
if(/^http\:\/\//.test(t.attr('url'))){
u = t.attr('url');
}else{
u = request_uri.setQuery('mid',t.attr('url'));
}
}
m = '<a href="' + u + '"'+(t.attr('open_window')=='Y'?' target="blank"':'')+'>'+m+'</a>';
jQuery('<li class="node_'+ t.attr('node_srl') +( i==0?' ':'')+'" node_srl="'+ t.attr('node_srl')+'">')
.html(m)
.mouseover(function(){
jQuery(this).toggleClass('active','');
var node_srl = jQuery(this).attr('node_srl');
if(self.menu_srl && node_srl && widget_navigator && widget_navigator[self.menu_srl]){
if(jQuery('ul[node_srl='+node_srl+']').size() ==0){
var wn = widget_navigator[self.menu_srl].drawMenu(node_srl);
// if(wn) wn.appendTo(jQuery('li[node_srl='+node_srl+']'));
}else{
jQuery('ul[node_srl='+node_srl+']').show();
}
if(m){
var u ='#';
if(t.attr('url')){
if(/^http\:\/\//.test(t.attr('url'))){
u = t.attr('url');
}else{
u = request_uri.setQuery('mid',t.attr('url'));
}
})
.mouseout(function(){
var node_srl = jQuery(this).attr('node_srl');
jQuery('ul[node_srl='+node_srl+']').hide();
})
.appendTo(h);
});
}
m = '<a href="' + u + '"'+(t.attr('open_window')=='Y'?' target="blank"':'')+'>'+m+'</a>';
return h;
}
WidgetNavigator.prototype.load = function(xml){
this.xml = xml;
var self = this;
jQuery.get(xml,{},function(data){
// for ie
self.data = jQuery(data.replace(/\<(\/|)node/g,'<$1span').replace(/\<(\/|)root/g,'<$1div'));
},'text');
}
WidgetNavigator.prototype.getMenu = function(parent_srl){
var m = this.data;
return m.find("[parent_srl="+parent_srl+"]");
}
WidgetNavigator.prototype.getDepth = function(node_srl){
var m = this.data.find('span[node_srl='+node_srl+']');
return m.parents("span").size();
}
/*
function WidgetNavigator(menu_srl){
var self = this;
self.menu_srl = menu_srl;
// 1depth 메뉴를 먼저
jQuery(function(){
jQuery('ul.widget_navigator_'+menu_srl+' > li')
.mouseover(
function(e){
jQuery(this).parent().children('li').removeClass('active');
jQuery(this).addClass('active');
jQuery('<li class="node_'+ t.attr('node_srl') +( i==0?' ':'')+'" node_srl="'+ t.attr('node_srl')+'">')
.html(m)
.mouseover(function(){
jQuery(this).toggleClass('active','');
var node_srl = jQuery(this).attr('node_srl');
if(self.menu_srl && node_srl && widget_navigator && widget_navigator[self.menu_srl]){
// 생성되지 않을때만 생성
if(self.menu_srl && node_srl && widget_navigator && widget_navigator[self.menu_srl]){
if(jQuery('ul[node_srl='+node_srl+']').size() ==0){
var wn = widget_navigator[self.menu_srl].drawMenu(node_srl);
if(wn) wn.appendTo(jQuery('html>body'));
// 이미 있다면 show
// if(wn) wn.appendTo(jQuery('li[node_srl='+node_srl+']'));
}else{
jQuery('ul[node_srl='+node_srl+']').show();
}
}
}
).mouseout(
function(e){
jQuery(this).parent().children('li.active').removeClass('active');
jQuery(this).parent().children('li._active').addClass('active');
})
.mouseout(function(){
var node_srl = jQuery(this).attr('node_srl');
// jQuery('ul[node_srl='+node_srl+']').hide();
}
);
});
}
WidgetNavigator.prototype.drawMenu = function(parent_srl){
var self = this;
var c = this.getMenu(parent_srl);
// 하위메뉴가 없다
if(c.size()==0) return '';
var depth = this.getDepth(parent_srl);
// 하위 메뉴를 만든다
var h = jQuery('<ul class="widgetNavSub '+hrMenuColorset+'" node_srl="'+parent_srl+'">')
.css({ position:'absolute' })
.mouseover(function(){
jQuery('li.[node_srl='+parent_srl+']').parent().show();
jQuery(this).show();
})
.mouseout(function(){
// jQuery(this).hide();
});
// 1차메뉴
if(depth <1){
var parent_offset = jQuery('li.node_'+parent_srl).offset();
h.css({
top : parent_offset.top + jQuery('li.node_'+parent_srl).height(),
left : parent_offset.left
})
// 2차메뉴
}else{
h.css({
left: 40
});
}
h.mouseover(function(e){
jQuery('li[node_srl='+parent_srl+']').mouseover();
})
.mouseout(function(e){
jQuery('li[node_srl='+parent_srl+']').mouseout();
});
c.each(function(i){
var t = jQuery(this);
var m = t.attr('text');
m = '<a href="' + (t.attr('url')?t.attr('url'):'#') + '"'+(t.attr('open_window')=='Y'?' target="blank"':'')+'>'+m+'</a>';
jQuery('<li class="node_'+ t.attr('node_srl') +( i==0?' ':'')+'" node_srl="'+ t.attr('node_srl')+'">')
.html(m)
.mouseover(function(){
jQuery(this).toggleClass('active','');
var node_srl = jQuery(this).attr('node_srl');
if(self.menu_srl && node_srl && widget_navigator && widget_navigator[self.menu_srl]){
if(jQuery('ul[node_srl='+node_srl+']').size() ==0){
var wn = widget_navigator[self.menu_srl].drawMenu(node_srl);
if(wn) wn.appendTo(jQuery('li[node_srl='+node_srl+']'));
}else{
jQuery('ul[node_srl='+node_srl+']').show();
}
}
})
.mouseout(function(){
var node_srl = jQuery(this).attr('node_srl');
jQuery('ul[node_srl='+node_srl+']').hide();
})
.appendTo(h);
jQuery('ul[node_srl='+node_srl+']').hide();
})
.appendTo(h);
}
});
@ -297,5 +147,4 @@ WidgetNavigator.prototype.getMenu = function(parent_srl){
WidgetNavigator.prototype.getDepth = function(node_srl){
var m = this.data.find('span[node_srl='+node_srl+']');
return m.parents("span").size();
}
*/
}