You've already forked joomla_test
first commit
This commit is contained in:
1
media/overrider/css/index.html
Normal file
1
media/overrider/css/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
52
media/overrider/css/overrider.css
Normal file
52
media/overrider/css/overrider.css
Normal file
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_languages
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
.overrider-spinner {
|
||||
background-image:url(../../system/images/modal/spinner.gif);
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
#refresh-status{
|
||||
display:none;
|
||||
height:16px;
|
||||
padding-left:25px;
|
||||
background-position:left;
|
||||
}
|
||||
|
||||
#results-container{
|
||||
display:none;
|
||||
padding-bottom:10px;
|
||||
}
|
||||
#more-results{
|
||||
display:none;
|
||||
height:16px;
|
||||
padding:10px 0;
|
||||
}
|
||||
.row0{
|
||||
background-color:#f7f7f7;
|
||||
}
|
||||
.row1{
|
||||
background-color:#f0f0f0;
|
||||
border-top:1px solid #ffffff;
|
||||
}
|
||||
.result{
|
||||
padding:5px 0px;
|
||||
border:1px solid #ffffff;
|
||||
}
|
||||
.result:hover{
|
||||
background-color:#e8f6fe;
|
||||
cursor:pointer;
|
||||
}
|
||||
.result-key{
|
||||
color:#666666;
|
||||
padding-left:5px;
|
||||
}
|
||||
.result-string{
|
||||
padding-left:25px;
|
||||
margin-top:5px;
|
||||
}
|
1
media/overrider/index.html
Normal file
1
media/overrider/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
1
media/overrider/js/index.html
Normal file
1
media/overrider/js/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
236
media/overrider/js/overrider.js
Normal file
236
media/overrider/js/overrider.js
Normal file
@ -0,0 +1,236 @@
|
||||
/**
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* Some state variables for the overrider
|
||||
*/
|
||||
Joomla.overrider = {
|
||||
states : {
|
||||
refreshing: false,
|
||||
refreshed: false,
|
||||
counter: 0,
|
||||
searchstring: '',
|
||||
searchtype: 'value'
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Method for refreshing the database cache of known language strings via Ajax
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @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)
|
||||
});
|
||||
req.post();
|
||||
};
|
||||
|
||||
/**
|
||||
* Method for searching known language strings via Ajax
|
||||
*
|
||||
* @param int more Determines the limit start of the results
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
Joomla.overrider.searchStrings = function(more)
|
||||
{
|
||||
// Prevent searching if the cache is refreshed at the moment
|
||||
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 = 'value';
|
||||
if (document.id('jform_searchtype0').checked)
|
||||
{
|
||||
this.states.searchtype = 'constant';
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.states.searchstring)
|
||||
{
|
||||
document.id('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 (r.messages)
|
||||
{
|
||||
Joomla.renderMessages(r.messages);
|
||||
}
|
||||
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;');
|
||||
}
|
||||
}
|
||||
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)
|
||||
});
|
||||
req.post('searchstring=' + this.states.searchstring + '&searchtype=' + this.states.searchtype + '&more=' + more);
|
||||
};
|
||||
|
||||
/**
|
||||
* Method inserting the received results into the results container
|
||||
*
|
||||
* @param array results An array of search result objects
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
Joomla.overrider.insertResults = function(results)
|
||||
{
|
||||
// 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;'
|
||||
});
|
||||
|
||||
// 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,
|
||||
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
|
||||
});
|
||||
key.inject(div);
|
||||
var string = new Element('div', {
|
||||
id: 'override_string' + this.states.counter + index,
|
||||
'class': 'result-string',
|
||||
html: item.string
|
||||
});
|
||||
string.inject(div);
|
||||
div.inject(results_div);
|
||||
}, this);
|
||||
|
||||
// If there aren't any results display an appropriate message
|
||||
if (!results.length)
|
||||
{
|
||||
var noresult = new Element('div', {
|
||||
html: Joomla.JText._('COM_LANGUAGES_VIEW_OVERRIDE_NO_RESULTS')
|
||||
});
|
||||
noresult.inject(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();
|
||||
};
|
||||
|
||||
/**
|
||||
* Inserts a specific constant/value pair into the form and scrolls the page back to the top
|
||||
*
|
||||
* @param int id The ID of the element which was selected for insertion
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @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();
|
||||
};
|
Reference in New Issue
Block a user