aboutsummaryrefslogtreecommitdiff
path: root/js/lib/ui.js
blob: 4a9c64e703f370e65c66ae10a288f1b1e7b14cf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
elgg.provide('elgg.ui');

elgg.ui.init = function () {
	//if the user clicks a system message, make it disappear
	$('.elgg_system_message').live('click', function() {
		$(this).stop().fadeOut('fast');
	});
	
	$('a.collapsibleboxlink').click(elgg.ui.toggleCollapsibleBox);

	// set-up hover class for dragged widgets
	var cols = [
		"#rightcolumn_widgets",
		"#middlecolumn_widgets",
		"#leftcolumn_widgets"
	].join(',');
	
	$(cols).droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});
};

// reusable generic hidden panel
elgg.ui.toggleCollapsibleBox = function () {
	$(this.parentNode.parentNode).children(".collapsible_box").slideToggle("fast");
	return false;
};

//define some helper jquery plugins
(function($) {
	
	// ELGG TOOLBAR MENU
	$.fn.elgg_topbardropdownmenu = function(options) {
		var defaults = {
			speed: 350
		};
		
		options = $.extend(defaults, options || {});
	
		this.each(function() {
		
			var root = this, zIndex = 5000;
		
			function getSubnav(ele) {
				if (ele.nodeName.toLowerCase() == 'li') {
					var subnav = $('> ul', ele);
					return subnav.length ? subnav[0] : null;
				} else {
					return ele;
				}
			}
		
			function getActuator(ele) {
				if (ele.nodeName.toLowerCase() == 'ul') {
					return $(ele).parents('li')[0];
				} else {
					return ele;
				}
			}
		
			function hide() {
				var subnav = getSubnav(this);
				if (!subnav) {
					return;
				}
			
				$.data(subnav, 'cancelHide', false);
				setTimeout(function() {
					if (!$.data(subnav, 'cancelHide')) {
						$(subnav).slideUp(100);
					}
				}, 250);
			}
		
			function show() {
				var subnav = getSubnav(this);
				if (!subnav) {
					return;
				}
				
				$.data(subnav, 'cancelHide', true);
				
				$(subnav).css({zIndex: zIndex++}).slideDown(options.speed);
				
				if (this.nodeName.toLowerCase() == 'ul') {
					var li = getActuator(this);
					$(li).addClass('hover');
					$('> a', li).addClass('hover');
				}
			}
		
			$('ul, li', this).hover(show, hide);
			$('li', this).hover(
				function() { $(this).addClass('hover'); $('> a', this).addClass('hover'); },
				function() { $(this).removeClass('hover'); $('> a', this).removeClass('hover'); }
			);
		
		});
	};
	
	//Make delimited list
	$.fn.makeDelimitedList = function(elementAttribute) {
	
		var delimitedListArray = [];
		var listDelimiter = "::";
	
		// Loop over each element in the stack and add the elementAttribute to the array
		this.each(function(e) {
				var listElement = $(this);
				// Add the attribute value to our values array
				delimitedListArray[delimitedListArray.length] = listElement.attr(elementAttribute);
			}
		);
	
		// Return value list by joining the array
		return(delimitedListArray.join(listDelimiter));
	};
})(jQuery);

elgg.register_event_handler('init', 'system', elgg.ui.init);