diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2014-03-15 14:58:52 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2014-03-15 14:58:52 -0300 |
commit | 2d9b20157957a55bd83875775085ed31c9062577 (patch) | |
tree | f051d6d805a3448ea243379a2457be8d67dcfa5f /actions/translate_search.php | |
download | elgg-2d9b20157957a55bd83875775085ed31c9062577.tar.gz elgg-2d9b20157957a55bd83875775085ed31c9062577.tar.bz2 |
Squashed 'mod/translation_editor/' content from commit 9d86955
git-subtree-dir: mod/translation_editor
git-subtree-split: 9d86955e6d8b6807578f5a9da0346ac1a146881c
Diffstat (limited to 'actions/translate_search.php')
-rw-r--r-- | actions/translate_search.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/actions/translate_search.php b/actions/translate_search.php new file mode 100644 index 000000000..623828b39 --- /dev/null +++ b/actions/translate_search.php @@ -0,0 +1,84 @@ +<?php + global $CONFIG; + + //action_gatekeeper(); + gatekeeper(); + + // Fixes for KSES filtering + // fix to allow javascript in href + $CONFIG->allowedprotocols[] = "javascript"; + + // fix allowed tags + $CONFIG->allowedtags["a"]["onclick"] = array(); + $CONFIG->allowedtags["span"]["id"] = array(); + + // get inputs + $current_language = get_input("current_language"); + $translation = get_input("translation"); + $jquery = get_input("jquery", false); + + // Preparing jQuery result + $json_result = array(); + $json_result["result"] = false; + + if(translation_editor_is_translation_editor()){ + $trans = get_installed_translations(); + + if(!empty($current_language) && !empty($translation) && array_key_exists($current_language, $trans)){ + foreach($translation as $plugin => $translate_input){ + // merge with existing custom translations + if($custom_translation = translation_editor_read_translation($current_language, $plugin)){ + $translate_input = array_merge($custom_translation, $translate_input); + } + + $translated = translation_editor_compare_translations($current_language, $translate_input); + + if(!empty($translated)){ + if(translation_editor_write_translation($current_language, $plugin, $translated)){ + if(!$jquery){ + system_message(elgg_echo("translation_editor:action:translate:success")); + } else { + $json_result["result"] = true; + } + } else { + if(!$jquery){ + register_error(elgg_echo("translation_editor:action:translate:error:write")); + } + } + } else { + translation_editor_delete_translation($current_language, $plugin); + if(!$jquery){ + system_message(elgg_echo("translation_editor:action:translate:no_changed_values")); + } else { + $json_result["result"] = true; + } + } + } + + // merge translations + translation_editor_merge_translations($current_language, true); + } else { + if(!$jquery){ + register_error(elgg_echo("translation_editor:action:translate:error:input")); + } + } + } else { + if(!$jquery){ + register_error(elgg_echo("translation_editor:action:translate:error:not_authorized")); + } + } + + if(!$jquery){ + forward(REFERER); + } else { + // Send JSON data + $json_string = json_encode($json_result); + + header("Content-Type: application/json; charset=UTF-8"); + header("Content-Length: " . strlen($json_string)); + header("Cache-Control: no-cache"); + header("Pragma: no-cache"); + + echo $json_string; + exit(); + } |