diff --git a/modules/loop_search_node/js/loopResultController.js b/modules/loop_search_node/js/loopResultController.js index e849ae6c..dcfa615c 100644 --- a/modules/loop_search_node/js/loopResultController.js +++ b/modules/loop_search_node/js/loopResultController.js @@ -71,7 +71,7 @@ angular.module('searchResultApp').controller('loopResultController', ['CONFIG', // Ensure that hits titles are stream lined. var hits = data.hits; for (var i in hits.results) { - if (hits.results[i].hasOwnProperty('_highlight')) { + if (hits.results[i].hasOwnProperty('_highlight')) { hits.results[i].title = hits.results[i]._highlight.title[0]; } } @@ -127,6 +127,49 @@ angular.module('searchResultApp').controller('loopResultController', ['CONFIG', } }); + /** + * Helper function to ensure that the form is loaded and ready for the + * jQuery hacks. + * + * @param data + * Data from the XHR request. + */ + function enabled_no_results_form(data) { + // There is currently no safeway to detect if a element is ready. So we + // us a simple timeout. + setTimeout(function () { + if (document.getElementById('edit-field-description-und-0-value').length === 0) { + enabled_no_results_form(data); + } + else { + var no_result_text = $scope.Drupal.t('Enter value.', {}, {'context': 'angular'}); + var placeholder_text = $scope.Drupal.t('Enter value.', {}, {'context': 'angular'}); + + jQuery('.js-chosen-select-area-of-expertise').chosen({ + no_results_text: no_result_text, + placeholder_text: placeholder_text + }); + + jQuery('.js-chosen-select-profession').chosen({ + no_results_text: no_result_text, + placeholder_text: placeholder_text + }); + + // Make auto-complete deluxe work (hackish). + Drupal.settings.autocomplete_deluxe = data.settings[1].data.autocomplete_deluxe; + jQuery.getScript('/' + data.settings[0]).done(function (script, textStatus) { + Drupal.attachBehaviors(); + + // Copy question text into the form. + document.getElementById('edit-field-description-und-0-value').innerHTML = document.getElementById('loop-search-field').value; + }) + .fail(function (jqxhr, settings, exception) { + console.error(jqxhr.responseText); + }); + } + }, 100); + } + /** * Callback to get the "no results found" create new post form. */ @@ -136,28 +179,7 @@ angular.module('searchResultApp').controller('loopResultController', ['CONFIG', url: '/loop_search_node/not_found' }).then(function successCallback(response) { document.getElementById('no_result_form').innerHTML = response.data.form; - - var no_result_text = $scope.Drupal.t('Enter value.', { }, { 'context': 'angular' }); - var placeholder_text = $scope.Drupal.t('Enter value.', { }, { 'context': 'angular' }); - - jQuery('.js-chosen-select-area-of-expertise').chosen({ - no_results_text: no_result_text, - placeholder_text : placeholder_text - }); - - jQuery('.js-chosen-select-profession').chosen({ - no_results_text: no_result_text, - placeholder_text : placeholder_text - }); - - // Make auto-complete deluxe work (hackish). - Drupal.settings.autocomplete_deluxe = response.data.settings[1].data.autocomplete_deluxe; - jQuery.getScript(response.data.settings[0], function() { - Drupal.attachBehaviors(); - - // Copy question text into the form. - document.getElementById('edit-field-description-und-0-value').innerHTML = document.getElementById('loop-search-field').value; - }); + enabled_no_results_form(response.data); }); } }