aboutsummaryrefslogtreecommitdiff
path: root/js/lib/ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib/ui.js')
-rw-r--r--js/lib/ui.js121
1 files changed, 121 insertions, 0 deletions
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