From 914816bd549f9852bacfa89947feb9672cf2179c Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Wed, 6 Oct 2010 16:45:20 -0500 Subject: [PATCH] add className filter --- www/extras/admin/admin.css | 2 +- www/extras/admin/admin.js | 48 +++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/www/extras/admin/admin.css b/www/extras/admin/admin.css index 83c3b2340..835339822 100644 --- a/www/extras/admin/admin.css +++ b/www/extras/admin/admin.css @@ -167,7 +167,7 @@ input.disabled { display: block; } -.searchFilters li { height: 28px; } /* autocomplete is position: absolute, so pretend some height */ +.searchFilters li { height: 38px; } /* autocomplete is position: absolute, so pretend some height */ .searchFilters span.name { display: block; diff --git a/www/extras/admin/admin.js b/www/extras/admin/admin.js index fa9ff81db..c3fc74472 100644 --- a/www/extras/admin/admin.js +++ b/www/extras/admin/admin.js @@ -1812,7 +1812,7 @@ WebGUI.Admin.Search newForm.style.display = "block"; var newTab = new YAHOO.widget.Tab({ - label : "Loading...", + label : "Search", content : '' }); this.tab = newTab; @@ -1969,6 +1969,52 @@ WebGUI.Admin.Search.prototype.addFilter filter.inputElem.focus(); } + else if ( filter.type == 'className' ) { + // Create a menu from the asset types + var container = document.createElement('div'); + filter.menu = new YAHOO.widget.Menu( container, { } ); + var onMenuItemClick = function (type, args, item) { + var text = item.cfg.getProperty("text"); + filter.button.set("label", text); + // Get the right span to add the background to + var button = filter.button.getElementsByClassName( "first-child" )[0]; + YAHOO.util.Dom.addClass( button, "with_icon" ); + button.style.backgroundImage = item.element.style.backgroundImage; + }; + + var items = []; + for ( className in this.admin.cfg['assetTypes'] ) { + var assetDef = this.admin.cfg.assetTypes[className]; + var menuItem = new YAHOO.widget.MenuItem( assetDef.title, { + onclick : { fn: onMenuItemClick } + } ); + menuItem.value = className; + + YAHOO.util.Dom.addClass( menuItem.element, 'with_icon' ); + menuItem.element.style.backgroundImage = 'url(' + assetDef.icon + ')'; + items.push( menuItem ); + } + + // Sort the items first + items = items.sort( function(a,b) { + var aText = a.cfg.getProperty('text'); + var bText = b.cfg.getProperty('text'); + if ( aText > bText ) { return 1; } + else if ( aText < bText ) { return -1; } + else { return 0; } + } ); + + filter.menu.addItems( items ); + filter.menu.render(document.body); + + filter.button = new YAHOO.widget.Button( { + name : "className", + type : "menu", + label : "Choose...", + container : li, + menu : filter.menu + } ); + } }; /**