From f3fa93acb1063be2a2de88a6d2841b5d3a982d85 Mon Sep 17 00:00:00 2001 From: ewinslow Date: Mon, 1 Nov 2010 07:34:24 +0000 Subject: Refs #2538: Pulled in elgg JS object and unit tests git-svn-id: http://code.elgg.org/elgg/trunk@7173 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/js/lib/ui.js | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 engine/js/lib/ui.js (limited to 'engine/js/lib/ui.js') diff --git a/engine/js/lib/ui.js b/engine/js/lib/ui.js new file mode 100644 index 000000000..b584d66d1 --- /dev/null +++ b/engine/js/lib/ui.js @@ -0,0 +1,118 @@ +elgg.provide('elgg.ui'); + +elgg.ui.init = function () { + $('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); + +$(function() { + elgg.ui.init(); +}); \ No newline at end of file -- cgit v1.2.3