To participate you must create an account on apostrophenow.org. If you have already done so, click Login.

Changeset 4523

Show
Ignore:
Timestamp:
01/27/12 11:16:36 (4 months ago)
Author:
wjohnald
Message:

Fixed event bug in menutoggle script. Adding jQuery 1.7 to the plugin. It will not be enabled by default.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • plugins/apostrophePlugin/branches/1.5/web/js/a.js

    r4501 r4523  
    491491                }); 
    492492 
    493                 submit.closest('form').unbind('submit.aShowBusy').bind('submit.aShowBusy', function(){ 
     493                submit.closest($('form')).unbind('submit.aShowBusy').bind('submit.aShowBusy', function(){ 
    494494                        var $selfForm = $(this); 
    495495                        $selfForm.find('.a-show-busy').trigger('aShowBusy'); 
     
    570570                    message = options['message']; 
    571571                // This is called within a conditional comment for IE in Apostrophe's layout.php 
    572                 if (authenticated && ieBody.closest('.ie6').size()) 
     572                if (authenticated && ieBody.closest($('.ie6')).size()) 
    573573                { 
    574574                        ieBody.addClass('ie6').prepend('<div id="ie6-warning"><h2>' + message + '</h2></div>'); 
     
    594594                                scroll_spd      : 16, 
    595595                                context: false 
    596                         //      [ 
    597                         //                                       // { 
    598                         //                                       //              id                     : "create", 
    599                         //                                       //              label   : "Create", 
    600                         //                                       //              icon           : "create.png", 
    601                         //                                       //              visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("creatable", NODE); }, 
    602                         //                                       //              action : function (NODE, TREE_OBJ) { TREE_OBJ.create(false, TREE_OBJ.get_node(NODE)); } 
    603                         //                                       // }, 
    604                         //                                       // "separator", 
    605                         //                                       // { 
    606                         //                                       //              id                     : "rename", 
    607                         //                                       //              label   : "Rename", 
    608                         //                                       //              icon           : "rename.png", 
    609                         //                                       //              visible : function (NODE, TREE_OBJ) { if(NODE.length != 1) return false; return TREE_OBJ.check("renameable", NODE); }, 
    610                         //                                       //              action : function (NODE, TREE_OBJ) { TREE_OBJ.rename(); } 
    611                         //                                       // }, 
    612                         //                                       { 
    613                         //                                                       id                     : "delete", 
    614                         //                                                       label   : "Delete", 
    615                         //                                                       // icon                : "remove.png", 
    616                         //                                                       visible : function (NODE, TREE_OBJ) { var ok = true; $.each(NODE, function () { if(TREE_OBJ.check("deletable", this) == false) ok = false; return false; }); return ok; }, 
    617                         //                      // Also see ondelete below 
    618                         //                                                       action : function (NODE, TREE_OBJ) { $.each(NODE, function () { TREE_OBJ.remove(this); }); } 
    619                         //                                       } 
    620                         //      ] 
    621596                        }, 
    622597                        rules: { 
     
    663638                                        }); 
    664639                                } 
    665                                 // delete completed 
    666                                 // ondelete: function(node, treeObj, rb) 
    667                                 // { 
    668                                 //      // To avoid creating an inconsistent tree we need to use a synchronous request. If the request fails, refresh the 
    669                                 //      // tree page 
    670                                 // 
    671                                 //      aPageTree.parent().addClass('working'); 
    672                                 // 
    673                                 //      var nid = node.id; 
    674                                 // 
    675                                 //      jQuery.ajax({ 
    676                                 //              url: options['deleteURL'] + "?" + "id=" + nid.substr("tree-".length), 
    677                                 //              error: function(result) { 
    678                                 //                      // 404 errors etc 
    679                                 //                      window.location.reload(); 
    680                                 //              }, 
    681                                 //              success: function(result) { 
    682                                 //                      // Look for a specific "all is well" response 
    683                                 //                      if (result !== 'ok') 
    684                                 //                      { 
    685                                 //                              window.location.reload(); 
    686                                 //                      } 
    687                                 //                      aPageTree.parent().removeClass('working'); 
    688                                 //              }, 
    689                                 //              async: false 
    690                                 //      }); 
    691                                 // } 
    692640                        } 
    693641                }); 
    694642                treeRef = $.tree_reference(aPageTree.attr('id')); 
    695                 // aPageTree.find('.a-tree-delete-btn').bind('click.apostrophe', function() { 
    696                 //      var li = $(this).closest('li'); 
    697                 //      if (li.find('li').length) 
    698                 //      { 
    699                 //              if (!confirm(options['confirmDeleteWithChildren'])) 
    700                 //              { 
    701                 //                      return false; 
    702                 //              } 
    703                 //      } 
    704                 //      else 
    705                 //      { 
    706                 //              if (!confirm(options['confirmDeleteWithoutChildren'])) 
    707                 //              { 
    708                 //                      return false; 
    709                 //              } 
    710                 //      } 
    711                 //      treeRef.remove(li); 
    712                 //      return false; 
    713                 // }); 
    714                 aPageTree.find('li').each(function() { 
     643 
     644                aPageTree.find('li').each(function() { 
    715645                        var id = $(this).attr('id'); 
    716646                        var a = $(this).find('a:first'); 
     
    17141644        this.menuToggle = function(options) 
    17151645        { 
    1716                 var button = options['button']; 
    1717                 var menu; 
    1718                 if (typeof(options[menu]) != "undefined") 
    1719                 { 
    1720                         menu = options['menu']; 
    1721                 } 
    1722                 else 
    1723                 { 
    1724                         menu = $(button).parent(); 
    1725                 } 
    1726                 var classname = options['classname']; 
    1727                 var overlay = options['overlay']; 
    1728  
    1729                 if (typeof(button) == "undefined") { 
    1730                         apostrophe.log('apostrophe.menuToggle -- Button is undefined'); 
    1731                 } 
    1732                 else 
    1733                 { 
    1734                         if (typeof button == "string") { button = $(button); } /* button that toggles the menu open & closed */ 
    1735                         if (typeof classname == "undefined" || classname == '') { classname = "show-options";   } /* optional classname override to use for toggle & styling */ 
    1736                         if (typeof overlay != "undefined" && overlay) { overlay = $('.a-page-overlay'); } /* optional full overlay */ 
    1737  
    1738                         if (typeof(menu) == "object") { 
    1739                                 _menuToggle(button, menu, classname, overlay, options['beforeOpen'], options['afterClosed'], options['afterOpen'], options['beforeClosed'], options['focus'], options['debug']); 
    1740                         } 
    1741                 } 
     1646            var button = options.button || null; 
     1647            var menu = options.menu || null; 
     1648            var classname = options.classname || null; 
     1649            var overlay = options.overlay || null; 
     1650 
     1651            if (button) 
     1652            { 
     1653                button = $(options.button); 
     1654            } 
     1655            else 
     1656            { 
     1657                return; 
     1658            } 
     1659 
     1660            if (menu) 
     1661            { 
     1662                menu = $(options.menu); 
     1663            } 
     1664            else 
     1665            { 
     1666                menu = $(button).parent(); 
     1667            } 
     1668 
     1669            if (!classname) 
     1670            { 
     1671                classname = 'show-options'; 
     1672            } 
     1673 
     1674            if (overlay) 
     1675            { 
     1676                overlay = $(overlay); 
     1677            } 
     1678 
     1679            _menuToggle(button, menu, classname, overlay, options.beforeOpen, options.afterClosed, options.afterOpen, options.beforeClosed, options.focus, options.debug); 
     1680 
    17421681        }; 
    17431682 
     
    29632902        function _menuToggle(button, menu, classname, overlay, beforeOpen, afterClosed, afterOpen, beforeClosed, focus, debug) 
    29642903        { 
    2965                 // Menu must have an ID. 
    2966                 // If the menu doesn't have one, we create it by appending 'menu' to the Button ID 
    2967                 if (menu.attr('id') == '') 
    2968                 { 
    2969                         var     newID = button.attr('id')+'-menu'; 
    2970                         menu.attr('id', newID).addClass('a-options-container'); 
    2971                 } 
    2972  
    2973                 // Menu listens for ESCAPE key if it's open 
    2974     $(document).unbind('keyup.' + menu.attr('id')).bind('keyup.' + menu.attr('id'), function(event) { 
    2975       if (event.keyCode === 27) { 
    2976                                 // Hey you pressed escape 
    2977               apostrophe.log('apostrophe.menuToggle -- ESC') 
    2978                                 // Does the menu have the open class when you're pressing escape? 
    2979                                 if (menu.hasClass(classname)) 
    2980                                 { 
    2981                                         // Close that menu 
    2982                 apostrophe.log('apostrophe.menuToggle -- ESC Pressed: keyup.' + menu.attr('id')) 
    2983                                         menu.trigger('toggleClosed'); 
    2984                 return false; 
    2985                                 } 
    2986       } 
    2987     }); 
    2988  
    2989                 // Button Toggle 
    2990                 button.unbind('click.menuToggle').bind('click.menuToggle', function(event){ 
    2991                         event.preventDefault(); 
    2992                         if (!button.hasClass('aActiveMenu')) 
    2993                         { 
    2994                                 menu.trigger('toggleOpen'); 
    2995                         } 
    2996                         else 
    2997                         { 
    2998                                 menu.trigger('toggleClosed'); 
    2999                         } 
    3000                 }).addClass('a-options-button'); 
    3001  
    3002                 if (beforeOpen) { menu.bind('beforeOpen', beforeOpen); } 
    3003                 if (afterClosed) { menu.bind('afterClosed', afterClosed); } 
    3004                 if (afterOpen) { menu.bind('afterOpen', afterOpen);     } 
    3005                 if (beforeClosed) { menu.bind('beforeClosed', beforeClosed); } 
    3006  
    3007                 var clickHandler = function(event){ 
    3008                         var target = $(event.target); 
    3009                         if (target.hasClass('a-page-overlay') || target.hasClass('a-cancel') || (!target.parents().is('#'+menu.attr('id')) && !target.parents().hasClass('ui-widget')) && target.parents('html').length) 
    3010                         { 
    3011                                 menu.trigger('toggleClosed'); 
    3012                         } 
    3013                 } 
    3014  
    3015                 // Open Menu, Create Listener 
    3016                 menu.unbind('toggleOpen').bind('toggleOpen', function(){ 
    3017                         menu.trigger('beforeOpen'); 
    3018                         button.addClass('aActiveMenu'); 
    3019                         menu.parents().addClass('ie-z-index-fix'); 
    3020                         button.closest('.a-controls').addClass('aActiveMenu'); 
    3021                         menu.addClass(classname); 
    3022                         if (overlay) { overlay.fadeIn(); } 
    3023                         $(document).bind('click.menuToggleClickHandler', clickHandler); 
    3024                         if (focus) { $(focus).focus(); }; 
    3025                         menu.trigger('afterOpen'); 
    3026                 }); 
    3027  
    3028                 // Close Menu, Destroy Listener 
    3029                 menu.unbind('toggleClosed').bind('toggleClosed', function(){ 
    3030                         menu.trigger('beforeClosed'); 
    3031                         button.removeClass('aActiveMenu'); 
    3032                         menu.parents().removeClass('ie-z-index-fix'); 
    3033                         button.closest('.a-controls').removeClass('aActiveMenu'); 
    3034                         menu.removeClass(classname); 
    3035                         if (overlay) { overlay.hide(); }; 
    3036                         $(document).unbind('click.menuToggleClickHandler'); // Clear out click event 
    3037                         menu.trigger('afterClosed'); 
    3038                 }); 
    3039  
    3040                 // Any .a-cancel buttos in the menu itself close it 
    3041                 $('#' + menu.attr('id') + ' .a-cancel').die('click.aMenuToggle').live('click.aMenuToggle',function(e){ 
    3042                         e.preventDefault(); 
    3043                         menu.trigger('toggleClosed'); 
    3044                         return false; 
    3045                 }); 
     2904            // Menu must have an ID. 
     2905            // If the menu doesn't have one, we create it by appending 'menu' to the Button ID 
     2906            if (menu.attr('id') == '') 
     2907            { 
     2908                    var newID = button.attr('id')+'-menu'; 
     2909                    menu.attr('id', newID).addClass('a-options-container'); 
     2910            } 
     2911 
     2912            // Menu listens for ESCAPE key if it's open 
     2913            $(document).unbind('keyup.' + menu.attr('id')).bind('keyup.' + menu.attr('id'), function(event) { 
     2914                if (event.keyCode === 27) { 
     2915                    // Hey you pressed escape 
     2916                    apostrophe.log('apostrophe.menuToggle -- ESC') 
     2917                    // Does the menu have the open class when you're pressing escape? 
     2918                    if (menu.hasClass(classname)) 
     2919                    { 
     2920                        // Close that menu 
     2921                        apostrophe.log('apostrophe.menuToggle -- ESC Pressed: keyup.' + menu.attr('id')) 
     2922                        menu.trigger('toggleClosed'); 
     2923                        return false; 
     2924                    } 
     2925                } 
     2926            }); 
     2927 
     2928            // Button Toggle 
     2929            button.unbind('click.menuToggle').bind('click.menuToggle', function(event){ 
     2930                event.preventDefault(); 
     2931                if (!button.hasClass('aActiveMenu')) 
     2932                { 
     2933                    menu.trigger('toggleOpen'); 
     2934                } 
     2935                else 
     2936                { 
     2937                    menu.trigger('toggleClosed'); 
     2938                } 
     2939            }); 
     2940            button.addClass('a-options-button'); 
     2941 
     2942            if (beforeOpen) { menu.bind('beforeOpen', beforeOpen); } 
     2943            if (afterClosed) { menu.bind('afterClosed', afterClosed); } 
     2944            if (afterOpen) { menu.bind('afterOpen', afterOpen); } 
     2945            if (beforeClosed) { menu.bind('beforeClosed', beforeClosed); } 
     2946 
     2947            var clickHandler = function(event){ 
     2948                var target = $(event.target); 
     2949 
     2950                if ((target.closest(button.selector).length == 0)) 
     2951                { 
     2952                    menu.trigger('toggleClosed'); 
     2953                } 
     2954 
     2955                if (target.closest(overlay.selector).length) 
     2956                { 
     2957                    menu.trigger('toggleClosed'); 
     2958                } 
     2959 
     2960                if (target.closest('.a-cancel').length) 
     2961                { 
     2962                    menu.trigger('toggleClosed'); 
     2963                } 
     2964 
     2965            } 
     2966 
     2967            // Open Menu, Create Listener 
     2968            menu.unbind('toggleOpen').bind('toggleOpen', function(){ 
     2969                menu.trigger('beforeOpen'); 
     2970                button.addClass('aActiveMenu'); 
     2971                menu.parents().addClass('ie-z-index-fix'); 
     2972                button.closest('.a-controls').addClass('aActiveMenu'); 
     2973                menu.addClass(classname); 
     2974                if (overlay) { overlay.fadeIn(); } 
     2975                $(document).bind('click.menuToggleClickHandler', clickHandler); 
     2976                if (focus) { $(focus).focus(); }; 
     2977                menu.trigger('afterOpen'); 
     2978            }); 
     2979 
     2980            // Close Menu, Destroy Listener 
     2981            menu.unbind('toggleClosed').bind('toggleClosed', function(){ 
     2982                    menu.trigger('beforeClosed'); 
     2983                    button.removeClass('aActiveMenu'); 
     2984                    menu.parents().removeClass('ie-z-index-fix'); 
     2985                    button.closest('.a-controls').removeClass('aActiveMenu'); 
     2986                    menu.removeClass(classname); 
     2987                    if (overlay) { overlay.hide(); }; 
     2988                    $(document).unbind('click.menuToggleClickHandler'); // Clear out click event 
     2989                    menu.trigger('afterClosed'); 
     2990            }); 
     2991 
     2992            // Any .a-cancel buttos in the menu itself close it 
     2993            $('#' + menu.attr('id') + ' .a-cancel').die('click.aMenuToggle').live('click.aMenuToggle',function(e){ 
     2994                    e.preventDefault(); 
     2995                    menu.trigger('toggleClosed'); 
     2996                    return false; 
     2997            }); 
    30462998        } 
    30472999 
     
    30633015*/ 
    30643016function aLog(output) { 
    3065         if (window.console && console.log && apostrophe.debug === true) { 
    3066                 console.log(output); 
    3067         } 
     3017    if (window.console && console.log && apostrophe.debug === true) { 
     3018        console.log(output); 
     3019    } 
    30683020} 
    30693021