Javascriptmenü: Eventhandling korrigiert
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 22 Feb 2012 11:04:47 +0000 (12:04 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 22 Feb 2012 11:04:47 +0000 (12:04 +0100)
Der originale Ansatz war Handler einfach an irgendwas dranzuklatschen, und
durch neue zu ersetzen wenn sich ein State geändert hat.

Jetzt gibts es 3 Handler, die einen Großteil der Aufgaben übernehmen:
- changeMenuBarState (auf und zuklappen, bei Topmenü Klick)
- hideSubMenus (bei Klick auf alles, was nicht changeMenuBarState triggert)
- unsetMenuBarState (Klick auf alles was Menü unkonditional schließt)

js/dhtmlsuite/menu-for-applications.js

index 2fd192a..0b849bd 100644 (file)
@@ -2343,6 +2343,14 @@ DHTMLSuite.menuBar.prototype = {
        // }}}  \r
        ,\r
     unsetMenuBarState : function() { this.menuBarState = false },\r
+    changeMenuBarState: function (target) {\r
+          var parentId = target.id.replace(/[^0-9]/gi,'');\r
+          this.menuBarState = !this.menuBarState;\r
+       this.hideSubMenus();\r
+          if(this.menuBarState) {\r
+               this.__expandGroup(parentId);\r
+       }\r
+    },\r
        // {{{ __setBasicEvents()\r
     /**\r
      * Set basic events for the menu widget.\r
@@ -2352,9 +2360,12 @@ DHTMLSuite.menuBar.prototype = {
      */        \r
        __setBasicEvents : function()\r
        {\r
-               DHTMLSuite.commonObj.addEvent(document.documentElement,"click",this.hideSubMenus);              \r
         var menu = this;\r
-        $(document).mousedown(function(){ menu.unsetMenuBarState(); });\r
+        $('div.DHTMLSuite_menuBar_sub').click(function() { menu.hideSubMenus(); menu.unsetMenuBarState() });\r
+        $('div.DHTMLSuite_menuBar_top > div > div[objectref!="0"]').click(function() { menu.changeMenuBarState(this) });\r
+        $('div.DHTMLSuite_menuBar_top').click(function(e) {\r
+          if ($(e.target).attr('class') == 'DHTMLSuite_menuBar_top') { menu.hideSubMenus(); menu.unsetMenuBarState() }\r
+        });\r
         $('#win1').load(function(){\r
             $('#win1').contents().mousedown(function(){\r
                 menu.hideSubMenus();\r