r909 - in branches/experimental: tests/visual/menu ui

r909 - in branches/experimental: tests/visual/menu ui


Author: paul.bakaus
Date: Tue Nov 11 08:30:28 2008
New Revision: 909
Modified:
branches/experimental/tests/visual/menu/menu.html
branches/experimental/ui/ui.menu.js
Log:
menu: JSON functionality (works both in 'add' and options.items)
Modified: branches/experimental/tests/visual/menu/menu.html
==============================================================================
--- branches/experimental/tests/visual/menu/menu.html    (original)
+++ branches/experimental/tests/visual/menu/menu.html    Tue Nov 11 08:30:28
2008
@@ -66,7 +66,21 @@
                });
                
                $('#menu2').menu({
-                    items: '#items3',
+                    items: {
+                        'Menu Item 1': {
+                            items: {
+                                'Sub Item 1': {},
+                                'Sub Item 2': {}
+                            },
+                            icon: null,
+                            choose: function() {
+                                alert(1);
+                            }
+                        },
+                        'Menu Item 2': {},
+                        'Menu Item 3': {},
+                        'Menu Item 4': {}
+                    },
                    mode: 'context',
                    appendTo: 'element',
                    direction: 'left above',
Modified: branches/experimental/ui/ui.menu.js
==============================================================================
--- branches/experimental/ui/ui.menu.js    (original)
+++ branches/experimental/ui/ui.menu.js    Tue Nov 11 08:30:28 2008
@@ -32,7 +32,7 @@
        if(o.items.constructor == String) {
            this.items = $(this.options.items, this.element).length ?
$(this.options.items, this.element).remove() :
$(this.options.items).remove();
        } else {
-            this.items = o.items.length ? o.items.remove() :
this._generateMarkupFromJSON();
+            this.items = o.items.length ? o.items.remove() :
this._generateMarkupFromJSON(o.items);
        }
        
        //Create the actual wrapping menu and append the markup
@@ -365,7 +365,17 @@
    },
    
    _generateMarkupFromJSON: function(json) {
+        
+        var html = $('<ul></ul>');
+        for(var i in json) {    
+            var item = $('<li><a href="#">'+i+'</a></li>').appendTo(html);
+            if(json[i].items)
item.append(this._generateMarkupFromJSON(json[i].items));
+            
+        }
+        
+        return html;
+        
    },
    
    add: function(item, position) {