diff options
author | ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-11-01 07:34:24 +0000 |
---|---|---|
committer | ewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-11-01 07:34:24 +0000 |
commit | f3fa93acb1063be2a2de88a6d2841b5d3a982d85 (patch) | |
tree | 50ab3704976d7416baa929673395867d3b07f39a /engine/js/lib/ui.js | |
parent | 7e54b4efb86eecf550c23aa21146d7e191a2da0e (diff) | |
download | elgg-f3fa93acb1063be2a2de88a6d2841b5d3a982d85.tar.gz elgg-f3fa93acb1063be2a2de88a6d2841b5d3a982d85.tar.bz2 |
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
Diffstat (limited to 'engine/js/lib/ui.js')
-rw-r--r-- | engine/js/lib/ui.js | 118 |
1 files changed, 118 insertions, 0 deletions
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 |