diff --git a/www/extras/admin/admin.js b/www/extras/admin/admin.js
index 468a1416f..deb1e24a8 100644
--- a/www/extras/admin/admin.js
+++ b/www/extras/admin/admin.js
@@ -1076,165 +1076,7 @@ WebGUI.Admin.LocationBar.prototype.goHome
*/
WebGUI.Admin.LocationBar.prototype.createSearchTab
= function ( ) {
- // Prepare the tab
- var newForm = document.getElementById( 'searchForm' ).cloneNode( true );
- newForm.id = null; // Duplicate IDs are baaaad
- newForm.style.display = "block";
-
- var newTab = new YAHOO.widget.Tab({
- label : "Loading...",
- content : ''
- });
- newTab.get('contentEl').appendChild( newForm );
-
- // Fire when ready, Gridley
- window.admin.tabBar.addTab( newTab );
-
- var searchForm = newForm.getElementsByTagName('form')[0];
- var searchButton = searchForm.elements['searchButton'];
- new YAHOO.widget.Button( searchButton, {
- onclick : { fn: this.requestSearch, scope: newTab }
- } );
-
- var searchFilterSelect = searchForm.elements['searchFilterSelect'];
- var searchFilterAdd = searchForm.elements['searchFilterAdd'];
- new YAHOO.widget.Button( searchFilterAdd, {
- type : "menu",
- menu : searchFilterSelect
- } );
- var self = this;
- YAHOO.util.Event.on( window, "load", function () {
- self.filterSelect.getMenu().subscribe( "click", self.addFilter, newTab, true );
- } );
-
- var searchKeywords = searchForm.elements['searchKeywords'];
- YAHOO.util.Event.on( searchKeywords, 'keyup', this.updateLocationBarQuery, newTab, true );
- YAHOO.util.Event.on( searchKeywords, 'focus', this.focusKeywords, newTab, true );
- YAHOO.util.Event.on( searchKeywords, 'blur', this.blurKeywords, newTab, true );
-};
-
-/**
- * addFilter ( eventType, args )
- * Add the selected filter into the filter list
- */
-WebGUI.Admin.LocationBar.prototype.addFilter
-= function ( eventType, args ) {
- var self = this;
- var ev = args[0];
- var menuitem = args[1];
- var keys = {}; // Listen for all keys
-
- // Keep track of our filters
- var filter = { };
- this.filters.push( filter );
-
- var li = document.createElement( 'li' );
- filter.li = li;
-
- var type = menuitem.value;
- filter.type = type;
- li.className = "filter_" + filter.type;
-
- var ul = document.getElementById( 'searchFilters' );
- ul.appendChild( li );
-
- var delIcon = document.createElement('img');
- delIcon.className = "clickable";
- YAHOO.util.Event.on( delIcon, "click", function(){
- self.removeFilter( filter.li );
- } );
-
- var name = menuitem.cfg.getProperty('text');
- var nameElem = document.createElement('span');
- nameElem.className = "name";
- nameElem.appendChild( document.createTextNode( name ) );
- li.appendChild( nameElem );
-
- if ( filter.type == "title" ) {
- var inputElem = document.createElement('input');
- filter.inputElem = inputElem;
- inputElem.type = "text";
- li.appendChild( inputElem );
- YAHOO.util.Event.on( inputElem, 'keyup', this.updateLocationBarQuery, this, true );
- inputElem.focus();
- }
- else if ( filter.type == "ownerUserId" ) {
- var container = document.createElement( 'div' );
- container.className = "autocomplete";
- li.appendChild( container );
-
- var inputElem = document.createElement('input');
- filter.inputElem = inputElem;
- inputElem.type = "text";
- container.appendChild( inputElem );
- filter.dataSource = new YAHOO.util.XHRDataSource( '?op=admin;method=findUser;' );
- filter.dataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
- filter.dataSource.responseSchema = {
- resultsList : "results",
- fields : [ 'username', 'name', 'userId', 'avatar', 'email' ]
- };
-
- // Auto-complete container
- var acDiv = document.createElement('div');
- filter.acDiv = acDiv;
- container.appendChild( acDiv );
-
- filter.autocomplete = new YAHOO.widget.AutoComplete( inputElem, acDiv, filter.dataSource );
- filter.autocomplete.queryQuestionMark = false;
- filter.autocomplete.animVert = true;
- filter.autocomplete.animSpeed = 0.1;
- filter.autocomplete.minQueryLength = 1;
- filter.autocomplete.queryDelay = 0.2;
- filter.autocomplete.typeAhead = true;
- filter.autocomplete.resultTypeList = false;
- filter.autocomplete.applyLocalFilter = true;
- filter.autocomplete.formatResult = function ( result, query, match ) {
- var subtext = ( result.name ? result.name : "" )
- + ( result.email ? " <" + result.email + ">" : "" )
- ;
- return '
'
- + '' + result.username + "
"
- + '' + subtext + '
';
-
- };
-
- inputElem.focus();
- }
-};
-
-/**
- * updateLocationBarQuery( )
- * Update the location bar text with the filters in the search box
- */
-WebGUI.Admin.LocationBar.prototype.updateLocationBarQuery
-= function () {
- var query = "";
-
- // First add filters
- var filterVals = [];
- for ( var i = 0; i < this.filters.length; i++ ) {
- var filter = this.filters[i];
- if ( filter.type == "title" ) {
- var value = filter.inputElem.value;
- if ( !value ) continue;
- var quote = "";
- if ( value.match(/\s/) ) {
- quote = '"';
- }
- filterVals.push( "title:" + quote + filter.inputElem.value + quote );
- }
- }
- query += filterVals.join(" ");
-
-
- // Then add keywords
- if ( query != "" ) {
- query += " "; // Add a space between filters and keywords
- }
- query += document.getElementById( 'searchKeywords' ).value;
-
- // Set the new value
- document.getElementById( 'locationInput' ).value = query;
+ new WebGUI.Admin.Search( window.admin, {} );
};
/****************************************************************************
@@ -1953,3 +1795,185 @@ WebGUI.Admin.AdminBar.prototype.show
};
+/**********************************************************************
+ * WebGUI.Admin.Search( admin, cfg )
+ *
+ * Search for assets
+ */
+WebGUI.Admin.Search
+= function (admin, cfg) {
+ this.admin = admin;
+ this.cfg = cfg;
+
+ // Prepare the tab
+ var newForm = document.getElementById( 'searchForm' ).cloneNode( true );
+ this.formContainer = newForm;
+ newForm.id = null; // Duplicate IDs are baaaad
+ newForm.style.display = "block";
+
+ var newTab = new YAHOO.widget.Tab({
+ label : "Loading...",
+ content : ''
+ });
+ this.tab = newTab;
+ newTab.get('contentEl').appendChild( newForm );
+
+ // Fire when ready, Gridley
+ this.admin.tabBar.addTab( newTab );
+
+ var searchForm = newForm.getElementsByTagName('form')[0];
+ this.form = searchForm;
+ var searchButton = searchForm.elements['searchButton'];
+ this.searchButton = searchButton;
+ new YAHOO.widget.Button( searchButton, {
+ onclick : { fn: this.requestSearch, scope: this }
+ } );
+
+ var searchFilterSelect = searchForm.elements['searchFilterSelect'];
+ this.searchFilterSelect = searchFilterSelect;
+ var searchFilterAdd = searchForm.elements['searchFilterAdd'];
+ this.searchFilterAdd = searchFilterAdd;
+ new YAHOO.widget.Button( searchFilterAdd, {
+ type : "menu",
+ menu : searchFilterSelect
+ } );
+ var self = this;
+ YAHOO.util.Event.on( window, "load", function () {
+ self.filterSelect.getMenu().subscribe( "click", self.addFilter, newTab, true );
+ } );
+
+ var searchKeywords = searchForm.elements['searchKeywords'];
+ this.searchKeywords = searchKeywords;
+ YAHOO.util.Event.on( searchKeywords, 'keyup', this.updateLocationBarQuery, this, true );
+ YAHOO.util.Event.on( searchKeywords, 'focus', this.focusKeywords, this, true );
+ YAHOO.util.Event.on( searchKeywords, 'blur', this.blurKeywords, this, true );
+
+ var searchFiltersContainer = searchForm.getElementsByTagName('ul')[0];
+ this.searchFiltersContainer = searchFiltersContainer;
+};
+
+
+/**
+ * addFilter ( eventType, args )
+ * Add the selected filter into the filter list
+ */
+WebGUI.Admin.Search.prototype.addFilter
+= function ( eventType, args ) {
+ var self = this;
+ var ev = args[0];
+ var menuitem = args[1];
+ var keys = {}; // Listen for all keys
+
+ // Keep track of our filters
+ var filter = { };
+ this.filters.push( filter );
+
+ var li = document.createElement( 'li' );
+ filter.li = li;
+
+ var type = menuitem.value;
+ filter.type = type;
+ li.className = "filter_" + filter.type;
+
+ var ul = this.searchFiltersContainer;
+ ul.appendChild( li );
+
+ var delIcon = document.createElement('img');
+ delIcon.className = "clickable";
+ YAHOO.util.Event.on( delIcon, "click", function(){
+ self.removeFilter( filter.li );
+ } );
+
+ var name = menuitem.cfg.getProperty('text');
+ var nameElem = document.createElement('span');
+ nameElem.className = "name";
+ nameElem.appendChild( document.createTextNode( name ) );
+ li.appendChild( nameElem );
+
+ if ( filter.type == "title" ) {
+ var inputElem = document.createElement('input');
+ filter.inputElem = inputElem;
+ inputElem.type = "text";
+ li.appendChild( inputElem );
+ YAHOO.util.Event.on( inputElem, 'keyup', this.updateLocationBarQuery, this, true );
+ inputElem.focus();
+ }
+ else if ( filter.type == "ownerUserId" ) {
+ var container = document.createElement( 'div' );
+ container.className = "autocomplete";
+ li.appendChild( container );
+
+ var inputElem = document.createElement('input');
+ filter.inputElem = inputElem;
+ inputElem.type = "text";
+ container.appendChild( inputElem );
+ filter.dataSource = new YAHOO.util.XHRDataSource( '?op=admin;method=findUser;' );
+ filter.dataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
+ filter.dataSource.responseSchema = {
+ resultsList : "results",
+ fields : [ 'username', 'name', 'userId', 'avatar', 'email' ]
+ };
+
+ // Auto-complete container
+ var acDiv = document.createElement('div');
+ filter.acDiv = acDiv;
+ container.appendChild( acDiv );
+
+ filter.autocomplete = new YAHOO.widget.AutoComplete( inputElem, acDiv, filter.dataSource );
+ filter.autocomplete.queryQuestionMark = false;
+ filter.autocomplete.animVert = true;
+ filter.autocomplete.animSpeed = 0.1;
+ filter.autocomplete.minQueryLength = 1;
+ filter.autocomplete.queryDelay = 0.2;
+ filter.autocomplete.typeAhead = true;
+ filter.autocomplete.resultTypeList = false;
+ filter.autocomplete.applyLocalFilter = true;
+ filter.autocomplete.formatResult = function ( result, query, match ) {
+ var subtext = ( result.name ? result.name : "" )
+ + ( result.email ? " <" + result.email + ">" : "" )
+ ;
+ return ''
+ + '' + result.username + "
"
+ + '' + subtext + '
';
+
+ };
+
+ inputElem.focus();
+ }
+};
+
+/**
+ * updateLocationBarQuery( )
+ * Update the location bar text with the filters in the search box
+ */
+WebGUI.Admin.Search.prototype.updateLocationBarQuery
+= function () {
+ var query = "";
+
+ // First add filters
+ var filterVals = [];
+ for ( var i = 0; i < this.filters.length; i++ ) {
+ var filter = this.filters[i];
+ if ( filter.type == "title" ) {
+ var value = filter.inputElem.value;
+ if ( !value ) continue;
+ var quote = "";
+ if ( value.match(/\s/) ) {
+ quote = '"';
+ }
+ filterVals.push( "title:" + quote + filter.inputElem.value + quote );
+ }
+ }
+ query += filterVals.join(" ");
+
+
+ // Then add keywords
+ if ( query != "" ) {
+ query += " "; // Add a space between filters and keywords
+ }
+ query += document.getElementById( 'searchKeywords' ).value;
+
+ // Set the new value
+ document.getElementById( 'locationInput' ).value = query;
+};
+