search2widget.js 5.41 KB
Ext.onReady(function(){

Ext.BLANK_IMAGE_URL = '../../thirdpartyjs/extjs/resources/images/default/s.gif';

var bSearchOptionMetadataAndContent = true;

function doAdvancedSearch()
{
	document.location=rootURL + "/search2.php?action=guiBuilder";
}

function doViewPreviousSearchResults()
{
	document.location=rootURL + "/search2.php?action=searchResults";
}

function onMetadataAndContentClick()
{
	bSearchOptionMetadataAndContent = true;
	//Ext.example.msg(sSearchTranslations[0], sSearchTranslations[1]); /* Quick Search Options, Searches will now search both content and metadata   */
}

function onMetadataClick()
{
	bSearchOptionMetadataAndContent = false;
	//Ext.example.msg(sSearchTranslations[0], sSearchTranslations[2]); /* Quick Search Options, Searches will now only search metadata */
}

function onSearchEngineFormatClick()
{
    bResultsFormatSearchEngine = true;
    document.location=rootURL + "/search2.php?action=searchResults&format=searchengine";
}

function onBrowseFormatClick()
{
    bResultsFormatSearchEngine = false;
    document.location=rootURL + "/search2.php?action=searchResults&format=browseview";
}

function onSavedSearchClick(item)
{
	id = item.id.substr(11);
	document.location=rootURL + "/search2.php?action=processSaved&fSavedSearchId=" + id;
}

function onSearchClick(sender)
{

	var suffix = sender.id.substring(12);

	var text = Ext.get('txtSearchBar' + suffix).getValue(false);

	if (text == sSearchTranslations[12] || text == '')
	{
//		Ext.example.msg(sSearchTranslations[3], sSearchTranslations[4]); /* Hint, Please enter some search criteria!  */
		return;
	}

	var sq = document.getElementById('txtQuery');
	var qg = document.getElementById('cbQuickGeneral');

	text = text.replace(/\"/g, "'");

	if (bSearchOptionMetadataAndContent)
	{
		sq.value = '(GeneralText contains "' + text + '")';
	}
	else
	{
		sq.value = '(Metadata contains "' + text + '")';
	}
	qg.value = bSearchOptionMetadataAndContent?1:0;

	var frm = document.getElementById('frmQuickSearch');
	frm.submit();

}

function populateSavedSearch(menu)
{
	if (aSavedSearches.length == 0)
	{
		return;
	}
	var item = menu.addMenuItem({
		text: sSearchTranslations[5], /*Saved Searches*/
		menu:	{
			items: []
		}
	});

	for(i = 0; i < aSavedSearches.length; i++)
	{
		var search = aSavedSearches[i];
		var name = search.name;

		item.menu.addMenuItem({
								text: name,
								id: 'miSavedItem' + search.id,
								handler: onSavedSearchClick
		});
	}
}

function createSearchBar(div, suffix)
{
	var x = Ext.get(div);
	if (x == null)
	{
		return;
	}

	var button;

	if (suffix == 1)
	{
		var menu = new Ext.menu.Menu({
		    shadow: false,
			items: [
				{
					text: sSearchTranslations[6], /* Advanced Search */
					handler: doAdvancedSearch
				},
				{
					text: sSearchTranslations[7], /* Previous Search Results */
					handler: doViewPreviousSearchResults
				},
				{
					text: sSearchTranslations[8] , /*Quick Search Options*/
					menu: {
					    shadow: false,
						items: [
							new Ext.menu.CheckItem({
								text: sSearchTranslations[9], /* content and metadata */
								id: 'cbSearchOptionContentMetadata' + suffix,
								checked: bSearchOptionMetadataAndContent,
								group: 'options',
								handler: onMetadataAndContentClick
							}),
							new Ext.menu.CheckItem({
								text: sSearchTranslations[10], /* metadata */
								checked: !bSearchOptionMetadataAndContent,
								id: 'cbSearchOptionMetadata' +  suffix,
								group: 'options',
								handler: onMetadataClick
							})
						]
					}
				},
				{
					text: sSearchTranslations[13] , /*Toggle results format*/
					menu: {
					    shadow: false,
						items: [
							new Ext.menu.CheckItem({
								text: sSearchTranslations[14], /* search engine format */
								id: 'cbResultsFormatSearchEngine' + suffix,
								checked: bResultsFormatSearchEngine,
								group: 'format',
								handler: onSearchEngineFormatClick
							}),
							new Ext.menu.CheckItem({
								text: sSearchTranslations[15], /* browse view format */
								id: 'cbBrowseSearchEngine' +  suffix,
								checked: !bResultsFormatSearchEngine,
								group: 'format',
								handler: onBrowseFormatClick
							})
						]
					}
				}
			]
		});

		button = new Ext.Toolbar.MenuButton({
			text: sSearchTranslations[11], /* search */
			handler: onSearchClick,
			id: 'searchButton' + suffix,
			//cls: 'x-btn-text-icon blist',
			menu : menu
		});

		populateSavedSearch(menu);

	}
	else
	{
		menu = null;
		 button = new Ext.Toolbar.Button({
			text: sSearchTranslations[11], /* search */
			pressed: true,
			handler: onSearchClick,
			id: 'searchButton' + suffix
			//cls: 'x-btn-text-icon blist',

		});
	}

	var tb = new Ext.Toolbar(div);

	tb.add(
	new Ext.form.TextField({
			emptyText: sSearchTranslations[12], /* Enter search criteria... */
			value: quickQuery,
			selectOnFocus:true,
			id:'txtSearchBar' + suffix,
			width: (suffix == 1) ? 180 : 110
		}),
		button);

	var map = new Ext.KeyMap("txtSearchBar" + suffix,
				{
					key: Ext.EventObject.ENTER,
					fn: function() {
						onSearchClick(Ext.get('txtSearchBar' + suffix));
					}
				});

	var el = Ext.get(div);
	if (suffix == 1)
	{
		el.applyStyles('position:relative; margin-right: 15px');
	}
	else
	{
		el.applyStyles('position:relative; left: 20px; top: 0px;');
	}

	return menu;
}

/* create the top search widget */
var menu = createSearchBar('newSearchQuery',1);

/* create the search portlet if possible */
createSearchBar('searchPortletCriteria',2);

});