plugin updates
This commit is contained in:
1
wp/wp-content/plugins/wp-media-folder/jutranslation/assets/js/bootbox.js
vendored
Normal file
1
wp/wp-content/plugins/wp-media-folder/jutranslation/assets/js/bootbox.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
wp/wp-content/plugins/wp-media-folder/jutranslation/assets/js/bootstrap.min.js
vendored
Normal file
6
wp/wp-content/plugins/wp-media-folder/jutranslation/assets/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,842 @@
|
||||
var joomunited_url = 'https://www.joomunited.com/';
|
||||
|
||||
jQuery(document).ready(function($){
|
||||
// Define jutranslation_ajax_action if doesn't exist
|
||||
if (typeof jutranslation.ajax_action === 'undefined') {
|
||||
jutranslation.ajax_action='';
|
||||
}
|
||||
|
||||
//Load the available version from Joomunited
|
||||
$.each(julanguages, function(){
|
||||
var julanguage = this;
|
||||
$.ajax({
|
||||
url : joomunited_url + "index.php?option=com_jutranslation&task=translations.getTranslations",
|
||||
type : 'POST',
|
||||
data : julanguage,
|
||||
success : function(data){
|
||||
data = JSON.parse(data);
|
||||
|
||||
$('#jutranslations-languages tbody tr[data-slug="'+ julanguage.extension + '"]').each(function(){
|
||||
var lang = $(this).data('lang');
|
||||
var slug = $(this).data('slug');
|
||||
|
||||
//Is this language one of Joomunited has translated
|
||||
var found = false;
|
||||
|
||||
//For each translation found add the version and an install btn
|
||||
$.each(data.data,function(){
|
||||
if(this.language === lang && this.extension === slug){
|
||||
found = true;
|
||||
//Add new version availability information
|
||||
var html;
|
||||
switch (versionCompare(julanguage.versions[this.language], this.extension_version, julanguage.revisions[this.language], this.revision)) {
|
||||
case 1:
|
||||
html = 'You already have the newer version<br/>The latest version on Joomunited is ' + this.extension_version + ' rev'+this.revision + '<a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">Install this version</a>';
|
||||
break;
|
||||
case 0:
|
||||
html = 'You already have the latest version <a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">Reinstall</a>';
|
||||
break;
|
||||
case -1:
|
||||
if (julanguage.versions[this.language]) {
|
||||
install_update = 'Update';
|
||||
} else {
|
||||
install_update = 'Install';
|
||||
}
|
||||
|
||||
html = 'There is a new version of language file available v' + this.extension_version + ' rev'+this.revision + '<a class="jutranslation-install" href="#" data-extension="' + this.extension + '" data-id="' + this.id + '">' + install_update + '</a>';
|
||||
}
|
||||
$('#jutranslations-languages tr[data-lang="'+ this.language + '"][data-slug="'+ julanguage.extension + '"] td .latest_version').html(html);
|
||||
|
||||
//Initialize all installation button
|
||||
$('.jutranslation-install').unbind().bind('click',function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var $clicked_button = $(this);
|
||||
var $parent_line = $clicked_button.parents('tr');
|
||||
var slug = $clicked_button.parents('tr').data('slug');
|
||||
|
||||
//Get from Joomunited the translation
|
||||
$.ajax({
|
||||
url : joomunited_url + "index.php?option=com_jutranslation&task=translations.download",
|
||||
type : 'POST',
|
||||
data : {
|
||||
extension : $clicked_button.data("extension"),
|
||||
translation : $clicked_button.data("id")
|
||||
},
|
||||
success : function(result){
|
||||
result = JSON.parse(result);
|
||||
|
||||
//Do not show language columns if it's en-US
|
||||
var show_reference = true;
|
||||
if(result.datas.language==='en-US'){
|
||||
show_reference = false;
|
||||
}
|
||||
|
||||
//auto save after download translation
|
||||
var strings = {};
|
||||
var modified = 0;
|
||||
$.each(result.datas.strings,function(key,value){
|
||||
strings[value.key] = value.language;
|
||||
});
|
||||
|
||||
|
||||
var ajax_data = {
|
||||
action : jutranslation.ajax_action,
|
||||
slug: slug,
|
||||
strings : JSON.stringify(strings),
|
||||
language : result.datas.language,
|
||||
extension_version : result.datas.version,
|
||||
revision : result.datas.revision,
|
||||
modified : modified,
|
||||
wp_nonce : jutranslation.token
|
||||
};
|
||||
ajax_data[jutranslation.token] = 1;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: jutranslation.base_url + 'task=jutranslation.saveStrings',
|
||||
data: ajax_data,
|
||||
success: function (result2) {
|
||||
result2 = JSON.parse(result2);
|
||||
if (result2.status === 'success') {
|
||||
toast('Language is installed successfully');
|
||||
$parent_line.find('.current_version').html(result.datas.version + ' rev' + result.datas.revision);
|
||||
$parent_line.attr('data-version', result.datas.version);
|
||||
|
||||
if(modified){
|
||||
$parent_line.find('.jutranslation-share').show().addClass('just-added');
|
||||
}else{
|
||||
$parent_line.find('.jutranslation-share').hide();
|
||||
}
|
||||
|
||||
$parent_line.find('.latest_version').html('The language file has been updated');
|
||||
$parent_line.find('.jutranslation-edition').removeClass('disabled');
|
||||
} else {
|
||||
alert('Error while updating language file');
|
||||
}
|
||||
}
|
||||
});
|
||||
//(end) auto save after download translation
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//Check if a translation has been found on joomunited
|
||||
var $line = $('#jutranslations-languages tr[data-lang="'+ lang + '"][data-slug="'+ julanguage.extension + '"]');
|
||||
|
||||
if(found===false){
|
||||
$line.find('td .latest_version').html('No translation found');
|
||||
}
|
||||
|
||||
if(!$line.attr('data-installed')){
|
||||
$line.find('td .jutranslation-edition').addClass('disabled').attr({'data-toggle': 'tooltip','data-placement': 'top', 'data-tippy': 'Please install the latest available version first'});
|
||||
} else {
|
||||
$line.find('td .jutranslation-edition').attr({'data-toggle': 'tooltip','data-placement': 'top', 'data-tippy': 'Make sure you have the latest version installed before editing the original file'});
|
||||
}
|
||||
$line.find('td .jutranslation-override').attr({'data-toggle': 'tooltip','data-placement': 'top', 'data-tippy': 'Override the extension translation for your own needs, without modifying the original language file'});
|
||||
|
||||
tippy('.jutranslation-edition, .jutranslation-override', {
|
||||
theme: 'wpmf',
|
||||
animation: 'scale',
|
||||
animateFill: false,
|
||||
maxWidth: 300,
|
||||
duration: 0,
|
||||
arrow: true,
|
||||
onShow(instance) {
|
||||
instance.popper.hidden = false;
|
||||
instance.setContent($(instance.reference).data('tippy'));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
// Edit an installed version
|
||||
$('.jutranslation-edition').click(function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var $clicked_button = $(this);
|
||||
|
||||
// Do nothing is disabled
|
||||
if ($clicked_button.hasClass('disabled')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var language = $clicked_button.parents('tr').data('lang');
|
||||
var slug = $clicked_button.parents('tr').data('slug');
|
||||
|
||||
getStrings(language, slug, function(datas){
|
||||
|
||||
var table_option = {
|
||||
language : language,
|
||||
slug : slug,
|
||||
confirm_button_action : function(e, $_content, close){
|
||||
if(e!==undefined){
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
if (typeof getAutoSave !== 'undefined') clearTimeout(getAutoSave);
|
||||
|
||||
|
||||
var caller = this;
|
||||
|
||||
//Get the strings
|
||||
var values = {};
|
||||
var modified = 0;
|
||||
|
||||
$.each($_content.find('.do_table_line'),function(){
|
||||
var value = $(this).find('.do_table_language').val();
|
||||
if(value !== ''){
|
||||
values[$(this).find('.do_table_constant').data('value')] = value;
|
||||
}
|
||||
|
||||
//Check if something has been modified
|
||||
if ($(this).find('.do_table_language').prop('defaultValue') !== $(this).find('.do_table_language').val()) {
|
||||
modified = 1;
|
||||
}
|
||||
});
|
||||
|
||||
if (modified === 1) {
|
||||
//Initialize ajax request datas
|
||||
var ajax_data = {
|
||||
action : jutranslation.ajax_action,
|
||||
strings: JSON.stringify(values),
|
||||
language: language,
|
||||
slug: slug,
|
||||
destination: 'edition',
|
||||
modified: '1',
|
||||
wp_nonce : jutranslation.token
|
||||
};
|
||||
ajax_data[jutranslation.token] = 1;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: jutranslation.base_url + 'task=jutranslation.saveStrings',
|
||||
data: ajax_data,
|
||||
success: function (result) {
|
||||
result = JSON.parse(result);
|
||||
if (result.status === 'success') {
|
||||
//Close the edition
|
||||
if(close) {
|
||||
caller.cancel_button_action(e);
|
||||
}
|
||||
toast('Modifications saved');
|
||||
|
||||
$clicked_button.parents('tr').find('.jutranslation-share').show().addClass('just-added');
|
||||
} else {
|
||||
alert('Error while updating language file');
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
//Do nothing and close the edition
|
||||
if(close) {
|
||||
caller.cancel_button_action(e);
|
||||
}
|
||||
toast('Modifications saved');
|
||||
}
|
||||
},
|
||||
columns : {
|
||||
language : {
|
||||
editable : true,
|
||||
title : 'Language ' + language,
|
||||
allow_copy : false
|
||||
},
|
||||
override : {
|
||||
show : false
|
||||
}
|
||||
},
|
||||
copy_destination : 'do_table_language',
|
||||
after_init : function($_content){
|
||||
//Add a message for translators before allowing to do anything
|
||||
var message = '<p>This feature is for translators only, the content may be overwritten during the next language update. ' +
|
||||
'If you only want to edit language strings for your own purpose please use the override feature.</p>' +
|
||||
'<p><a href="#" id="jutranslation_show_edition" class="btn btn-lg btn-success button button-primary">OK got it, let me translate and share</a>' +
|
||||
'<a href="#" id="jutranslation_cancel_edition" class="btn btn-lg btn-success button button-primary">Cancel</a></p>';
|
||||
|
||||
$_content.hide().after('<div class="control-group edition-message">' + message + '</div>');
|
||||
|
||||
//Click on ok edit button
|
||||
$('#jutranslation_show_edition').click(function(){
|
||||
$('#jutranslation .control-group.edition-message').remove();
|
||||
$('#jutranslation .control-group.edition').show();
|
||||
});
|
||||
|
||||
//Click on cancel edition button
|
||||
$('#jutranslation_cancel_edition').click(function(){
|
||||
$('#jutranslation .control-group.edition-message').remove();
|
||||
$('#jutranslation .control-group.edition').remove();
|
||||
$('#jutranslation .control-group').show();
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
//Generate the table
|
||||
doTable(datas, table_option);
|
||||
});
|
||||
});
|
||||
|
||||
$('.jutranslation-override').click(function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var $clicked_button = $(this);
|
||||
|
||||
var language = $clicked_button.parents('tr').data('lang');
|
||||
var slug = $clicked_button.parents('tr').data('slug');
|
||||
|
||||
//Do not show language columns if it's en-US
|
||||
var show_language = true;
|
||||
if(language==='en-US'){
|
||||
show_language = false;
|
||||
}
|
||||
|
||||
getStrings(language, slug, function(datas) {
|
||||
var table_option = {
|
||||
language : language,
|
||||
confirm_button_action : function(e, $_content, close){
|
||||
if(e!==undefined){
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
if (typeof getAutoSave !== 'undefined') clearTimeout(getAutoSave);
|
||||
|
||||
var caller = this;
|
||||
|
||||
//Get the strings
|
||||
var overrides = {};
|
||||
$.each($_content.find('.do_table_line'),function(){
|
||||
var value = $(this).find('.do_table_override').val();
|
||||
if(value !== ''){
|
||||
overrides[$(this).find('.do_table_constant').data('value')] = value;
|
||||
}
|
||||
});
|
||||
|
||||
//Initialize ajax request datas
|
||||
var ajax_data = {
|
||||
action : jutranslation.ajax_action,
|
||||
strings : JSON.stringify(overrides),
|
||||
language : this.language,
|
||||
slug: slug,
|
||||
destination : 'override',
|
||||
wp_nonce : jutranslation.token
|
||||
};
|
||||
ajax_data[jutranslation.token] = 1;
|
||||
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : jutranslation.base_url + 'task=jutranslation.saveStrings',
|
||||
data : ajax_data,
|
||||
success : function(result){
|
||||
result = JSON.parse(result);
|
||||
if(result.status === 'success'){
|
||||
$clicked_button.parents('tr').find('.jutranslation-override-count').html(Object.keys(overrides).length);
|
||||
|
||||
if(close) {
|
||||
caller.cancel_button_action(e);
|
||||
}
|
||||
toast('Modifications saved');
|
||||
}else{
|
||||
alert('Error while updating language file');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
columns : {
|
||||
language : {
|
||||
title : 'Language ' + language,
|
||||
show : show_language
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//Generate the table
|
||||
doTable(datas, table_option);
|
||||
});
|
||||
});
|
||||
|
||||
//Share a translation to Joomunited
|
||||
$('.jutranslation-share').click(function(e){
|
||||
e.preventDefault();
|
||||
if(typeof SqueezeBox !== 'undefined' ){
|
||||
//Open Joomla lightbox
|
||||
SqueezeBox.open(jutranslation.base_url + 'action=&task=jutranslation.showViewForm&wp_nonce=' + jutranslation.token + '&language=' + $(this).closest('tr').attr('data-lang'), {handler: 'iframe'});
|
||||
}else{
|
||||
//Open Wordpress lightbox
|
||||
tb_show('Share with Joomunited',jutranslation.base_url + 'action=' + jutranslation.ajax_action + '&task=jutranslation.showViewForm&wp_nonce=' + jutranslation.token + '&slug=' + $(this).closest('tr').attr('data-slug') + '&language=' + $(this).closest('tr').attr('data-lang') + '&TB_iframe=true');
|
||||
}
|
||||
});
|
||||
|
||||
var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = (eventMethod == 'attachEvent') ? 'onmessage' : 'message';
|
||||
|
||||
// Listen to message from jutranslation window
|
||||
eventer(messageEvent, function (e) {
|
||||
var res = e.data;
|
||||
if(typeof res != 'undefined' && typeof res.type != 'undefined' && res.type === 'translation_login'){
|
||||
$.ajax({
|
||||
url : jutranslation.base_url + 'task=jutranslation.saveJuToken',
|
||||
type: 'POST',
|
||||
data: {
|
||||
action : jutranslation.ajax_action,
|
||||
token: res.token,
|
||||
wp_nonce: jutranslation.token
|
||||
},
|
||||
success: function () {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}, false);
|
||||
|
||||
function doTable(datas, options) {
|
||||
// DOM element containing the generated content
|
||||
var $_content;
|
||||
|
||||
var default_options = {
|
||||
language : null,
|
||||
slug : null,
|
||||
confirm_button_label: 'Save and close',
|
||||
save_button_label: 'Save',
|
||||
cancel_button_label: 'Cancel',
|
||||
cancel_button_action: function (e) {
|
||||
if(e!==undefined){
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
$('#jutranslation .control-group.edition').remove();
|
||||
$('#jutranslation .control-group').show();
|
||||
},
|
||||
confirm_button_action : function (e) {
|
||||
if(e!==undefined){
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
if (typeof getAutoSave !== 'undefined') clearTimeout(getAutoSave);
|
||||
|
||||
if (typeof getAutoSave !== "undefined") {
|
||||
clearTimeout(getAutoSave);
|
||||
}
|
||||
|
||||
options.cancel_button_action(e);
|
||||
},
|
||||
after_init : function () {},
|
||||
columns : {
|
||||
constant : {
|
||||
show : true,
|
||||
title : 'Constant',
|
||||
allow_copy : false
|
||||
},
|
||||
reference : {
|
||||
show : true,
|
||||
editable : false,
|
||||
title : 'Reference en-US',
|
||||
allow_copy : true
|
||||
|
||||
},
|
||||
language : {
|
||||
show : true,
|
||||
editable : false,
|
||||
title : 'Language',
|
||||
allow_copy : true
|
||||
},
|
||||
override : {
|
||||
show : true,
|
||||
editable : true,
|
||||
title : 'Override',
|
||||
allow_copy : false
|
||||
}
|
||||
},
|
||||
copy_destination : 'do_table_override'
|
||||
};
|
||||
|
||||
// Initialize options variable if not already
|
||||
if(options === undefined){
|
||||
var options = {};
|
||||
}
|
||||
|
||||
// Merge the default options to the passed ones
|
||||
options = $.extend(true, {}, default_options, options);
|
||||
|
||||
//Add a button to save
|
||||
var content = '';
|
||||
content += '<p class="do_table_buttons">';
|
||||
content += ' <a href="#" class="do_table_confirm btn btn-primary button button-primary">' + options.confirm_button_label + '</a>';
|
||||
content += ' <a href="#" class="do_table_save btn btn-primary button button-primary">' + options.save_button_label + '</a>';
|
||||
content += ' <a href="#" class="do_table_cancel btn btn-primary button">' + options.cancel_button_label + '</a>';
|
||||
content += '</p>';
|
||||
|
||||
//Create the table of strings
|
||||
content += '<table>';
|
||||
|
||||
//Add columns names
|
||||
content += '<tr class="do_table_heading">' +
|
||||
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '>' + options.columns.constant.title + '</td>' +
|
||||
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '>' + options.columns.reference.title + '</td>' +
|
||||
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '>' + options.columns.language.title + '</td>' +
|
||||
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '>' + options.columns.override.title + '</td>' +
|
||||
'</tr>';
|
||||
|
||||
//Add filter inputs
|
||||
content += '<tr class="do_table_filters">' +
|
||||
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '><input class="do_table_filter_constant" type="text" placeholder="Filter by constant"/></td>' +
|
||||
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '><input class="do_table_filter_reference" type="text" placeholder="Filter by reference"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_reference"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_reference"/></td>' +
|
||||
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '><input class="do_table_filter_language" type="text" placeholder="Filter by language"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_language"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_language"/></td>' +
|
||||
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '><input class="do_table_filter_override" type="text" placeholder="Filter by override"/><br/>Show only empty <input type="checkbox" class="do_table_filter_empty_override"/><br/>Show only not empty <input type="checkbox" class="do_table_filter_not_empty_override"/></td>' +
|
||||
'</tr>';
|
||||
|
||||
$.each(datas, function(key,value){
|
||||
content += '' +
|
||||
'<tr class="do_table_line">' +
|
||||
' <td' + ( options.columns.constant.show?'':' class="hidden"' ) + '>' +
|
||||
' <span class="do_table_constant" data-value="' + htmlEntities(value.key) + '">' + htmlEntities(value.key) + '</span>' +
|
||||
' </td>' +
|
||||
' <td' + ( options.columns.reference.show?'':' class="hidden"' ) + '>' +
|
||||
' <input type="text" class="do_table_reference" value="' + htmlEntities(value.reference) + '" ' + ( options.columns.reference.editable?'':'readonly="readonly"' ) + ' />' + (options.columns.reference.allow_copy?'<a title="copy" href="#" class="do_table_copy_reference"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
||||
' </td>' +
|
||||
' <td' + ( options.columns.language.show?'':' class="hidden"' ) + '>' +
|
||||
' <input type="text" class="do_table_language" value="' + htmlEntities(value.language) + '" ' + ( options.columns.language.editable?'':'readonly="readonly"' ) + ' >' + (options.columns.language.allow_copy?'<a title="copy" href="#" class="do_table_copy_language"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
||||
' </td>' +
|
||||
' <td' + ( options.columns.override.show?'':' class="hidden"' ) + '>' +
|
||||
' <input type="text" class="do_table_override" value="' + htmlEntities(value.override) + '" ' + ( options.columns.override.editable?'':'readonly="readonly"' ) + ' >' + (options.columns.override.allow_copy?'<a title="copy" href="#" class="do_table_copy_override"><i class="icon-arrow-right-4 dashicons dashicons-arrow-right-alt2"></i></a>':'') +
|
||||
' </td>' +
|
||||
'</tr>';
|
||||
});
|
||||
content += '</table>';
|
||||
|
||||
$('#jutranslation .control-group').after('<div class="control-group edition">' + content + '</div>');
|
||||
$_content = $('#jutranslation .control-group.edition');
|
||||
|
||||
// Enable filtering
|
||||
$_content.find('[class^="do_table_filter_"]').on("change keyup paste", function(){
|
||||
//Texts filters
|
||||
var filter_constant = $_content.find('.do_table_filter_constant').val();
|
||||
var filter_reference = $_content.find('.do_table_filter_reference').val();
|
||||
var filter_language = $_content.find('.do_table_filter_language').val();
|
||||
var filter_override = $_content.find('.do_table_filter_override').val();
|
||||
|
||||
// Do not allow to check both filters
|
||||
switch (1==1) {
|
||||
case $(this).hasClass('do_table_filter_empty_reference') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_not_empty_reference').attr('checked',null);
|
||||
break;
|
||||
case $(this).hasClass('do_table_filter_empty_language') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_not_empty_language').attr('checked',null);
|
||||
break;
|
||||
case $(this).hasClass('do_table_filter_empty_override') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_not_empty_override').attr('checked',null);
|
||||
break;
|
||||
case $(this).hasClass('do_table_filter_not_empty_reference') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_empty_reference').attr('checked',null);
|
||||
break;
|
||||
case $(this).hasClass('do_table_filter_not_empty_language') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_empty_language').attr('checked',null);
|
||||
break;
|
||||
case $(this).hasClass('do_table_filter_not_empty_override') && $(this).is(':checked'):
|
||||
$_content.find('.do_table_filter_empty_override').attr('checked',null);
|
||||
break;
|
||||
|
||||
}
|
||||
if($(this).is('[class^="do_table_filter_empty"]')){
|
||||
|
||||
} else if ($(this).is('[class^="do_table_filter_not_empty"]')) {
|
||||
|
||||
}
|
||||
$_content.find('.do_table_filter_not_empty_reference');
|
||||
|
||||
//Empty filters
|
||||
var filter_empty_reference = $_content.find('.do_table_filter_empty_reference').is(":checked");
|
||||
var filter_empty_language = $_content.find('.do_table_filter_empty_language').is(":checked");
|
||||
var filter_empty_override = $_content.find('.do_table_filter_empty_override').is(":checked");
|
||||
|
||||
var filter_not_empty_reference = $_content.find('.do_table_filter_not_empty_reference').is(":checked");
|
||||
var filter_not_empty_language = $_content.find('.do_table_filter_not_empty_language').is(":checked");
|
||||
var filter_not_empty_override = $_content.find('.do_table_filter_not_empty_override').is(":checked");
|
||||
|
||||
// Show all rows
|
||||
$_content.find('tr.do_table_line').show();
|
||||
|
||||
// Filtering is active
|
||||
if(filter_constant !== '' || filter_reference !== '' || filter_language !== '' || filter_override != '' || filter_empty_reference!==false || filter_empty_language !== false || filter_empty_override !== false || filter_not_empty_reference!==false || filter_not_empty_language !== false || filter_not_empty_override !== false){
|
||||
// Show only rows matching search
|
||||
$_content.find('.do_table_line').filter(function(){
|
||||
//Filter by empty reference
|
||||
if(filter_empty_reference && $(this).find('.do_table_reference').val() !== ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by empty language
|
||||
if(filter_empty_language && $(this).find('.do_table_language').val() !== ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by empty override
|
||||
if(filter_empty_override && $(this).find('.do_table_override').val() !== ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by not empty reference
|
||||
if(filter_not_empty_reference && $(this).find('.do_table_reference').val() === ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by empty language
|
||||
if(filter_not_empty_language && $(this).find('.do_table_language').val() === ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by empty override
|
||||
if(filter_not_empty_override && $(this).find('.do_table_override').val() === ''){
|
||||
return true;
|
||||
}
|
||||
|
||||
//Filter by constant
|
||||
if(filter_constant !== ''){
|
||||
var regex = new RegExp(escapeRegExp(filter_constant), 'i');
|
||||
if(!regex.test($(this).find('.do_table_constant').data('value'))){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//Filter by reference
|
||||
if(filter_reference !== ''){
|
||||
var regex = new RegExp(escapeRegExp(filter_reference), 'i');
|
||||
if(!regex.test($(this).find('.do_table_reference').val())){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//Filter by current language
|
||||
if(filter_language !== ''){
|
||||
var regex = new RegExp(escapeRegExp(filter_language), 'i');
|
||||
if(!regex.test($(this).find('.do_table_language').val())){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//Filter by override
|
||||
if(filter_override !== ''){
|
||||
var regex = new RegExp(escapeRegExp(filter_override), 'i');
|
||||
if(!regex.test($(this).find('.do_table_override').val())){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}).hide();
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
var getAutoSave;
|
||||
|
||||
var autoSave = () => {
|
||||
clearTimeout(getAutoSave);
|
||||
getAutoSave = setTimeout(function () {
|
||||
bootbox.confirm(jutranslationCmd.warning_auto_save, function (result) {
|
||||
clearTimeout(getAutoSave);
|
||||
if (result) {
|
||||
options.confirm_button_action(undefined, $_content, false);
|
||||
}
|
||||
});
|
||||
}, 300000)
|
||||
};
|
||||
|
||||
// Enable copy from one input to another
|
||||
$_content.find('[class^="do_table_copy_"]').click(function(e){
|
||||
e.preventDefault();
|
||||
|
||||
//Get the value from clicked element
|
||||
if($(this).hasClass('do_table_copy_reference')){
|
||||
var value = $(this).parents('tr').find('.do_table_reference').val();
|
||||
}else if($(this).hasClass('do_table_copy_language')){
|
||||
var value = $(this).parents('tr').find('.do_table_language').val();
|
||||
}else if($(this).hasClass('do_table_copy_override')){
|
||||
var value = $(this).parents('tr').find('.do_table_override').val();
|
||||
}
|
||||
|
||||
//Copy value to destination input
|
||||
|
||||
autoSave();
|
||||
$(this).parents('tr').find('.'+options.copy_destination).val(value);
|
||||
});
|
||||
|
||||
//Save and close
|
||||
$_content.find('.do_table_confirm').click(function(e){
|
||||
clearTimeout(getAutoSave);
|
||||
options.confirm_button_action(e, $_content, true);
|
||||
});
|
||||
|
||||
//Confirm the current action
|
||||
$_content.find('.do_table_save').click(function(e){
|
||||
clearTimeout(getAutoSave);
|
||||
options.confirm_button_action(e, $_content, false);
|
||||
});
|
||||
|
||||
//Cancel the current action
|
||||
$_content.find('.do_table_cancel').click(function(e, $_content){
|
||||
clearTimeout(getAutoSave);
|
||||
options.cancel_button_action(e);
|
||||
});
|
||||
|
||||
$('#jutranslation .control-group').not('.edition').hide();
|
||||
|
||||
$_content.find('.do_table_line input').focus(function(){
|
||||
var $this = $(this);
|
||||
var $this_line = $this.parents('tr');
|
||||
|
||||
//Do nothing if already hidden
|
||||
if($(this).is(":hidden")){
|
||||
return;
|
||||
}
|
||||
|
||||
//Remove all old textarea
|
||||
$this_line.find('textarea').remove();
|
||||
|
||||
$this_line.find('input').each(function(){
|
||||
// Get the input value
|
||||
var val = $(this).val();
|
||||
|
||||
// Add a textarea after the inpu
|
||||
$('<textarea style="width:' + $(this).css('width') + '" ' + ($(this).is('[readonly="readonly"]')?'readonly="readonly"':'') + '>' + htmlEntities(val) + '</textarea>').insertAfter(this);
|
||||
|
||||
// Hide the input
|
||||
$(this).hide();
|
||||
});
|
||||
|
||||
// Remove textarea on focus out
|
||||
$this.siblings('textarea').focus().focusout(function(){
|
||||
$this.val(($(this).val()));
|
||||
autoSave();
|
||||
$this_line.find('input').show();
|
||||
$this_line.find('textarea').hide(); //Hide instead of remove to avoid html5fallback.js error
|
||||
});
|
||||
});
|
||||
|
||||
options.after_init.call(options, $_content);
|
||||
}
|
||||
|
||||
function getStrings(language, slug, done_function) {
|
||||
var strings = {};
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: jutranslation.base_url + 'task=jutranslation.getTranslation',
|
||||
data: {
|
||||
action : jutranslation.ajax_action,
|
||||
language: language,
|
||||
slug: slug,
|
||||
wp_nonce : jutranslation.token
|
||||
},
|
||||
success: function (result) {
|
||||
result = JSON.parse(result);
|
||||
|
||||
if (result.status === 'success') {
|
||||
done_function(result.datas.strings);
|
||||
} else {
|
||||
alert('Error while loading strings');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Escape a string to allow using it literally in a regex
|
||||
* @param string
|
||||
* @return string escaped
|
||||
*/
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
||||
}
|
||||
|
||||
/**
|
||||
* Secure a string to use it in html content
|
||||
* @param string to espace
|
||||
* @return {string} escaped string
|
||||
*/
|
||||
function htmlEntities(string){
|
||||
return String(string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare two version numbers and their revisions
|
||||
* @param version1
|
||||
* @param version2
|
||||
* @param revision_version1
|
||||
* @param revision_version2
|
||||
* @return int 1 if version1>version2, -1 if version1<version2 , 0 if version1==version2
|
||||
*/
|
||||
function versionCompare(version1, version2, revision_version1, revision_version2){
|
||||
if(version1==='') {
|
||||
version1 = '0';
|
||||
}
|
||||
|
||||
if(version2==='') {
|
||||
version2 = '0';
|
||||
}
|
||||
|
||||
version1 = version1.split('.');
|
||||
version2 = version2.split('.');
|
||||
|
||||
if(typeof revision_version1 === 'undefined'){
|
||||
revision_version1 = 0;
|
||||
}
|
||||
|
||||
if(typeof revision_version2 === 'undefined'){
|
||||
revision_version2 = 0;
|
||||
}
|
||||
|
||||
for(var ij=0; ij < version1.length; ij++ ) {
|
||||
if(typeof version2[ij] === 'undefined'){
|
||||
//Version 1 has the longest version
|
||||
for(var ik=ij; ik < version1.length; ik++){
|
||||
//Check if it has another thing as 0 trailing
|
||||
if(parseInt(version[1]) > 0){
|
||||
//Latest version is upper
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
//End only with 0 version numbers, it's equal
|
||||
if(revision_version1 > revision_version2){
|
||||
return 1;
|
||||
} else if(revision_version1 < revision_version2){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
if(parseInt(version1[ij]) > parseInt(version2[ij])) {
|
||||
return 1;
|
||||
} else if(parseInt(version1[ij]) < parseInt(version2[ij])) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Version 2 has the longest version or is equal
|
||||
for(var ik=ij; ik < version2.length; ik++){
|
||||
//Check if it has another thing as 0 trailing
|
||||
if(parseInt(version2[ik]) > 0){
|
||||
//Latest version is upper
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
//End only with 0 version numbers, it's equal
|
||||
if(revision_version1 > revision_version2){
|
||||
return 1;
|
||||
} else if(revision_version1 < revision_version2){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function toast(text) {
|
||||
$('#jutranslation_toast').remove();
|
||||
$('body').append('<div id="jutranslation_toast">' + text + '</div>');
|
||||
setTimeout(function() {
|
||||
$('#jutranslation_toast').remove();
|
||||
}, 2000);
|
||||
}
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user