diff --git a/media/overrider/js/overrider.js b/media/overrider/js/overrider.js index 740fb8d090111..e32bb94d320be 100644 --- a/media/overrider/js/overrider.js +++ b/media/overrider/js/overrider.js @@ -23,34 +23,37 @@ Joomla.overrider = { * * @since 2.5 */ -Joomla.overrider.refreshCache = function() { - var req = new Request.JSON({ - method : 'post', - url : 'index.php?option=com_languages&task=strings.refresh&format=json', - onRequest: function() { - this.states.refreshing = true; - document.id('refresh-status').reveal(); - }.bind(this), - onSuccess: function(r) { - if (r.error && r.message) { - alert(r.message); - } - if (r.messages) { - Joomla.renderMessages(r.messages); - } - document.id('refresh-status').dissolve(); - this.states.refreshing = false; - }.bind(this), - onFailure: function(xhr) { - alert(Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR')); - document.id('refresh-status').dissolve(); - }.bind(this), - onError : function(text, error) { - alert(error + "\n\n" + text); - document.id('refresh-status').dissolve(); - }.bind(this) +Joomla.overrider.refreshCache = function() +{ + var $ = jQuery.noConflict(), self = this; + this.states.refreshing = true; + + $('#refresh-status').slideDown().css('display', 'block'); + + $.ajax( + { + type: "POST", + url: 'index.php?option=com_languages&task=strings.refresh&format=json', + dataType: 'json' + }).done(function (r) + { + if (r.error && r.message) + { + alert(r.message); + } + + if (r.messages) + { + Joomla.renderMessages(r.messages); + } + + $('#refresh-status').slideUp().hide(); + self.states.refreshing = false; + }).fail(function (xhr) + { + alert(Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR')); + $('#refresh-status').slideUp().hide(); }); - req.post(); }; /** @@ -62,75 +65,93 @@ Joomla.overrider.refreshCache = function() { * * @since 2.5 */ -Joomla.overrider.searchStrings = function(more) { +Joomla.overrider.searchStrings = function(more) +{ + var $ = jQuery.noConflict(), self = this; + // Prevent searching if the cache is refreshed at the moment - if (this.states.refreshing) { + if (this.states.refreshing) + { return; } // Only update the used searchstring and searchtype if the search button // was used to start the search (that will be the case if 'more' is null) - if (!more) { - this.states.searchstring = document.id('jform_searchstring').value; - this.states.searchtype = document.id('jform_searchtype') !== null ? document.id('jform_searchtype').value : 'value'; + if (!more) + { + this.states.searchstring = $('#jform_searchstring').val(); + this.states.searchtype = $('#jform_searchtype') !== null ? $('#jform_searchtype').val() : 'value'; } - if (!this.states.searchstring) { - document.id('jform_searchstring').addClass('invalid'); + if (!this.states.searchstring) + { + $('#jform_searchstring').addClass('invalid'); return; } - var req = new Request.JSON({ - method : 'post', - url : 'index.php?option=com_languages&task=strings.search&format=json', - onRequest: function() { - if (more) { - // If 'more' is greater than 0 we have already displayed some results for - // the current searchstring, so display the spinner at the more link - document.id('more-results').addClass('overrider-spinner'); - } else { - // Otherwise it is a new searchstring and we have to remove all previous results first - document.id('more-results').set('style', 'display:none;'); - var children = $$('#results-container div.language-results'); - children.destroy(); - document.id('results-container').addClass('overrider-spinner').reveal(); - } - }.bind(this), - onSuccess: function(r) { - if (r.error && r.message) { - alert(r.message); + + if (more) + { + // If 'more' is greater than 0 we have already displayed some results for + // the current searchstring, so display the spinner at the more link + $('#more-results').addClass('overrider-spinner'); + } + else + { + // Otherwise it is a new searchstring and we have to remove all previous results first + $('#more-results').hide(); + var $children = $('#results-container div.language-results'); + $children.remove(); + $('#results-container').addClass('overrider-spinner').slideDown().css('display', 'block'); + } + + $.ajax( + { + type: "POST", + url: 'index.php?option=com_languages&task=strings.search&format=json', + data: 'searchstring=' + self.states.searchstring + '&searchtype=' + self.states.searchtype + '&more=' + more, + dataType: 'json' + }).done(function (r) + { + if (r.error && r.message) + { + alert(r.message); + } + + if (r.messages) + { + Joomla.renderMessages(r.messages); + } + + if (r.data) + { + if (r.data.results) + { + self.insertResults(r.data.results); } - if (r.messages) { - Joomla.renderMessages(r.messages); + + if (r.data.more) + { + // If there are more results than the sent ones + // display the more link + self.states.more = r.data.more; + $('#more-results').slideDown().css('display', 'block'); } - if (r.data) { - if (r.data.results) { - this.insertResults(r.data.results); - } - if (r.data.more) { - // If there are more results than the sent ones, display the more link - this.states.more = r.data.more; - document.id('more-results').reveal(); - } else { - document.id('more-results').set('style', 'display:none;'); - } + else + { + $('#more-results').hide(); } - document.id('results-container').removeClass('overrider-spinner'); - document.id('more-results').removeClass('overrider-spinner'); - }.bind(this), - onFailure: function(xhr) { - alert(Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR')); - document.id('results-container').removeClass('overrider-spinner'); - document.id('more-results').removeClass('overrider-spinner'); - }.bind(this), - onError : function(text, error) { - alert(error + "\n\n" + text); - document.id('results-container').removeClass('overrider-spinner'); - document.id('more-results').removeClass('overrider-spinner'); - }.bind(this) + } + + $('#results-container').removeClass('overrider-spinner'); + $('#more-results').removeClass('overrider-spinner'); + }).fail(function (xhr) + { + alert(Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR')); + $('#results-container').removeClass('overrider-spinner'); + $('#more-results').removeClass('overrider-spinner'); }); - req.post('searchstring=' + this.states.searchstring + '&searchtype=' + this.states.searchtype + '&more=' + more); }; /** @@ -142,50 +163,58 @@ Joomla.overrider.searchStrings = function(more) { * * @since 2.5 */ -Joomla.overrider.insertResults = function(results) { +Joomla.overrider.insertResults = function(results) +{ + var $ = jQuery.noConflict(); + // For creating an individual ID for each result we use a counter this.states.counter = this.states.counter + 1; // Create a container into which all the results will be inserted - var results_div = new Element('div', { - id : 'language-results' + this.states.counter, - 'class': 'language-results', - style : 'display:none;' + var $results_div = $('
', { + id : 'language-results' + this.states.counter, + class : 'language-results', + style : 'display:none;' }); // Create some elements for each result and insert it into the container Array.each(results, function(item, index) { - var div = new Element('div', { - 'class': 'result row' + index % 2, + var $div = $('
', { + class: 'result row' + index % 2, onclick: 'Joomla.overrider.selectString(' + this.states.counter + index + ');', }); - var key = new Element('div', { - id : 'override_key' + this.states.counter + index, - 'class': 'result-key', - html : item.constant, - title : item.file + + var $key = $('
', { + id: 'override_key' + this.states.counter + index, + class: 'result-key', + html: item.constant, + title: item.file }); - key.inject(div); - var string = new Element('div', { - id : 'override_string' + this.states.counter + index, - 'class': 'result-string', - html : item.string + + var $string = $('
',{ + id: 'override_string' + this.states.counter + index, + class: 'result-string', + html: item.string }); - string.inject(div); - div.inject(results_div); + + $key.appendTo($div); + $string.appendTo($div); + $div.appendTo($results_div); + }, this); // If there aren't any results display an appropriate message - if (!results.length) { - var noresult = new Element('div', { + if (!results.length) + { + var $noresult = $('
',{ html: Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_NO_RESULTS') }); - noresult.inject(results_div); + $noresult.appendTo($results_div); } // Finally insert the container afore the more link and reveal it - results_div.inject(document.id('more-results'), 'before'); - document.id('language-results' + this.states.counter).reveal(); + $('#more-results').before($results_div); + $('#language-results' + this.states.counter).slideDown().css('display','block'); }; /** @@ -197,8 +226,10 @@ Joomla.overrider.insertResults = function(results) { * * @since 2.5 */ -Joomla.overrider.selectString = function(id) { - document.id('jform_key').value = document.id('override_key' + id).get('html'); - document.id('jform_override').value = document.id('override_string' + id).get('html'); - new Fx.Scroll(window).toTop(); +Joomla.overrider.selectString = function(id) +{ + var $ = jQuery.noConflict(); + $('#jform_key').val($('#override_key' + id).html()); + $('#jform_override').val($('#override_string' + id).html()); + $(window).scrollTop(0); };