From 441c9e85dcb824dba2a44657a31fa29ad71a4ee1 Mon Sep 17 00:00:00 2001 From: ewinslow Date: Tue, 2 Nov 2010 16:06:53 +0000 Subject: Refs #2538: Moved js directory to elgg root. git-svn-id: http://code.elgg.org/elgg/trunk@7189 36083f99-b078-4883-b0ff-0f9b5a30f544 --- js/lib/ui.js | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 js/lib/ui.js (limited to 'js/lib/ui.js') diff --git a/js/lib/ui.js b/js/lib/ui.js new file mode 100644 index 000000000..4a9c64e70 --- /dev/null +++ b/js/lib/ui.js @@ -0,0 +1,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); \ No newline at end of file -- cgit v1.2.3