From d370bbc3d3550bb5c6015215c9af48a812e240e9 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 08 Jun 2012 05:43:10 -0400
Subject: [PATCH] Implemented: FS#2280 - Extend the tform library to apply filters on form values

---
 interface/web/js/jquery.ispconfigsearch.js |   33 ++++++++++++++++++++++++++++-----
 1 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/interface/web/js/jquery.ispconfigsearch.js b/interface/web/js/jquery.ispconfigsearch.js
index 211dcd7..fbd594d 100644
--- a/interface/web/js/jquery.ispconfigsearch.js
+++ b/interface/web/js/jquery.ispconfigsearch.js
@@ -33,11 +33,15 @@
 			timeout: 500,
 			minChars: 2,
 			resultBox: '-resultbox',
+			resultBoxPosition: 's', // n = north, e = east, s = south, w = west
 			cssPrefix: 'gs-',
 			fillSearchField: false,
 			fillSearchFieldWith: 'title',
-			resultsText: '$ of % results',
+			ResultsTextPrefix: '',
+			resultsLimit: '$ of % results',
 			noResultsText: 'No results.',
+			noResultsLimit: '0 results',
+			searchFieldWatermark: 'Search',
 			displayEmptyCategories: false,
 			runJS: true
 		};
@@ -48,6 +52,7 @@
 		settings.resultBox = $(this).attr('id')+settings.resultBox;
 		
 		$(this).attr('autocomplete', 'off');
+		if($(this).val() == '') $(this).val(settings.searchFieldWatermark);
 		$(this).wrap('<div class="'+settings.cssPrefix+'container" />');
 		$(this).after('<ul id="'+settings.resultBox+'" class="'+settings.cssPrefix+'resultbox" style="display:none;"></ul>');
 		var searchField = $(this);
@@ -60,7 +65,7 @@
 				// query value
 				var q = searchField.val();
 				
-				if (settings.minChars > q.length || q == ''){
+				if (settings.minChars > q.length || (q == '' && settings.minChars > 0)){
 					resultBox.fadeOut();
 					resetTimer(timeout);
 				} else {
@@ -91,7 +96,7 @@
 								}
 
 								if (!resultsFound){
-									output += '<li class="'+settings.cssPrefix+'cheader"><p class="'+settings.cssPrefix+'cheader-title">'+settings.noResultsText+'</p><p class="'+settings.cssPrefix+'cheader-limit">0 results</p></li>';
+									output += '<li class="'+settings.cssPrefix+'cheader"><p class="'+settings.cssPrefix+'cheader-title">'+(settings.ResultsTextPrefix == '' ? '' : settings.ResultsTextPrefix+': ')+settings.noResultsText+'</p><p class="'+settings.cssPrefix+'cheader-limit">'+settings.noResultsLimit+'</p></li>';
 								} else {
 								
 									$.each(data, function(i, category){
@@ -100,7 +105,7 @@
 											var limit = category['cheader']['limit'];
 											var cnt = 0;
 
-											output += '<li class="'+settings.cssPrefix+'cheader"><p class="'+settings.cssPrefix+'cheader-title">'+category['cheader']['title']+'</p><p class="'+settings.cssPrefix+'cheader-limit">'+settings.resultsText.replace("%", category['cheader']['total']).replace("$", (category['cheader']['limit'] < category['cdata'].length ? category['cheader']['limit'] : category['cdata'].length))+'</p></li>';
+											output += '<li class="'+settings.cssPrefix+'cheader"><p class="'+settings.cssPrefix+'cheader-title">'+(settings.ResultsTextPrefix == '' ? '' : settings.ResultsTextPrefix+': ')+category['cheader']['title']+'</p><p class="'+settings.cssPrefix+'cheader-limit">'+settings.resultsLimit.replace("%", category['cheader']['total']).replace("$", (category['cheader']['limit'] < category['cdata'].length ? category['cheader']['limit'] : category['cdata'].length))+'</p></li>';
 
 											var fillSearchFieldCode = (settings.fillSearchField) ? 'document.getElementById(\''+searchField.attr('id')+'\').value = \'%\';' : '';
 											//var fillSearchFieldCode = 'document.getElementById(\''+searchField.attr('id')+'\').value = \'%\';';
@@ -125,7 +130,19 @@
 									});
 								}
 
-								resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top+searchField.outerHeight(), 'right' : '0'}).fadeIn();
+								//resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top+searchField.outerHeight(), 'right' : '0'}).fadeIn();
+								if(settings.resultBoxPosition == 'n'){
+									resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top-resultBox.outerHeight(), 'left' : searchField.position().left+searchField.outerWidth()-resultBox.outerWidth()}).fadeIn();
+								}
+								if(settings.resultBoxPosition == 'e'){
+									resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top, 'left' : searchField.position().left+searchField.outerWidth()}).fadeIn();
+								}
+								if(settings.resultBoxPosition == 's'){
+									resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top+searchField.outerHeight(), 'left' : searchField.position().left+searchField.outerWidth()-resultBox.outerWidth()}).fadeIn();
+								}
+								if(settings.resultBoxPosition == 'w'){
+									resultBox.html(output).css({'position' : 'absolute', 'top' : searchField.position().top, 'left' : searchField.position().left-resultBox.outerWidth()}).fadeIn();
+								}
 
 								searchField.removeClass(settings.cssPrefix+'loading');
 							}
@@ -137,11 +154,17 @@
 		
 		searchField.blur(function(){
 			resultBox.fadeOut();
+			if (searchField.val() == ''){
+				searchField.val(settings.searchFieldWatermark);
+			}
 		});
 
 		searchField.focus(function(){
 			if (searchField.val() == previousQ && searchField.val() != ''){
 				resultBox.fadeIn();
+			} else if(searchField.val() == settings.searchFieldWatermark){
+				searchField.val('');
+				if(settings.minChars == 0) searchField.trigger('keyup');
 			} else if (searchField.val() != ''){
 				searchField.trigger('keyup');
 			}

--
Gitblit v1.9.1