From a2a4957fa5b45eb549756669b4260a685cba7396 Mon Sep 17 00:00:00 2001 From: Naomi Guyer Date: Wed, 7 Aug 2013 13:46:40 +1200 Subject: [PATCH] BUG: Context menu too long (Fixes #811) Added javascript to add and remove classes on context sub menus, to allow for multi column layout. --- javascript/CMSMain.Tree.js | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/javascript/CMSMain.Tree.js b/javascript/CMSMain.Tree.js index e866f440..f5713c1d 100644 --- a/javascript/CMSMain.Tree.js +++ b/javascript/CMSMain.Tree.js @@ -2,6 +2,40 @@ $.entwine('ss.tree', function($){ $('.cms-tree').entwine({ + onadd: function(){ + var self = this; + $(document).on('context_show.vakata', function(){ + self.adjustContextClass(this); + }); + + this._super(); + }, + /* + * Add and remove classes from context menus to allow for + * adjusting the display + */ + adjustContextClass: function(){ + var menus = $('#vakata-contextmenu').find("ul ul"); + + menus.each(function(i){ + var col = "1", + count = $(menus[i]).find('li').length; + + //Assign columns to menus over 10 items long + if(count > 20){ + col = "3"; + }else if(count > 10){ + col = "2"; + } + + $(menus[i]).addClass('col-' + col).removeClass('right'); + + //Remove "right" class that jstree adds on mouseenter + $(menus[i]).find('li').on("mouseenter", function (e) { + $(this).parent('ul').removeClass("right"); + }); + }); + }, getTreeConfig: function() { var self = this, config = this._super(), hints = this.getHints(); config.plugins.push('contextmenu'); @@ -101,7 +135,7 @@ ); } } - ] + ] }; return menuitems;