1 if ( typeof(Dataface) == 'undefined' ) Dataface = {}; 2 if ( typeof(Dataface.RelatedList) == 'undefined' ) Dataface.RelatedList = {}; 3 Dataface.RelatedList.searchElement = null; 4 Dataface.RelatedList.advancedSearchElement = null; 5 Dataface.RelatedList.searchHTML = null; 6 Dataface.RelatedList.advancedSearchHTML = null; 7 require(DATAFACE_URL+'/js/ajaxgold.js'); 8 9 /** 10 * Shows the standard search form for a related list. 11 */ 12 Dataface.RelatedList.showSearch = function(relationship, e){ 13 if ( this.searchElement && this.searchElement != e ){ 14 this.searchElement.innerHTML = ''; 15 this.searchElement.style.display = 'none'; 16 this.searchElement = null; 17 } 18 this.searchElement = e; 19 20 21 if ( this.searchHTML ){ 22 this.searchElement.innerHTML = this.searchHTML; 23 // In case there are <script> tags embedded in the HTML, 24 // let's load them. 25 loadScripts(this.searchElement); 26 this.searchElement.style.display = ''; 27 } else { 28 this.searchElement.innerHTML = '<img src="'+DATAFACE_URL+'/images/progress.gif" alt="Loading search form" />'; 29 this.searchElement.style.display=''; 30 getDataReturnText(DATAFACE_SITE_HREF+'?-action=ajax_related_find_form&-relationship='+relationship+'&-related:search='+escape(this.getSearchTerm()), function(text){ 31 var me = Dataface.RelatedList; 32 if ( text ){ 33 me.searchHTML = text; 34 } else { 35 me.searchHTML = "[Error loading find form. No content returned]"; 36 } 37 38 // Now that we have our innerHTML set we can call the showSearch method 39 // again. 40 me.showSearch(null, me.searchElement); 41 }); 42 } 43 44 45 }; 46 47 Dataface.RelatedList.showAdvancedSearch = function(relationship, e){ 48 if ( this.advancedSearchElement && this.advancedSearchElement != e ){ 49 this.advancedSearchElement.innerHTML = ''; 50 this.advancedSearchElement.style.display = 'none'; 51 this.advancedSearchElement = null; 52 } 53 54 this.advancedSearchElement = e; 55 56 if ( this.advancedSearchHTML ){ 57 this.advancedSearchElement.innerHTML = this.advancedSearchHTML; 58 // In case there are script tags embedded in the HTML, let's load them 59 60 loadScripts(this.advancedSearchElement); 61 this.advancedSearchElement.style.display = ''; 62 } else { 63 this.advancedSearchElement.innerHTML = '<img src="'+DATAFACE_URL+'/images/progress.gif" alt="Loading search form" />'; 64 this.searchElement.style.display=''; 65 getDataReturnText(DATAFACE_SITE_HREF+'?-action=ajax_related_advanced_find_form&-relationship='+relationship, function(text){ 66 var me = Dataface.RelatedList; 67 if (text){ 68 me.advancedSearchHTML = text; 69 } else { 70 me.advancedSearchHTML = "[Error loading advanced find form. No content returned]"; 71 } 72 73 me.showAdvancedSearch(null, me.advancedSearchElement); 74 }); 75 } 76 }; 77 78 Dataface.RelatedList.hideSearch = function(e){ 79 e.style.display = 'none'; 80 }; 81 82 Dataface.RelatedList.getSearchTerm = function(){ 83 var qstr = window.location.search; 84 var params = qstr.split('&'); 85 for ( var i=0; i<params.length; i++){ 86 var parts = params[i].split('='); 87 if ( parts[0] == '-related:search' ){ 88 return unescape(parts[1]); 89 } 90 } 91 return ''; 92 } 93 94 95