aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Lang.php46
-rw-r--r--app/lang.apd2
-rw-r--r--view/js/main.js59
3 files changed, 106 insertions, 1 deletions
diff --git a/Zotlabs/Module/Lang.php b/Zotlabs/Module/Lang.php
index a32f933a6..1a2f1664e 100644
--- a/Zotlabs/Module/Lang.php
+++ b/Zotlabs/Module/Lang.php
@@ -7,6 +7,52 @@ use Zotlabs\Web\Controller;
class Lang extends Controller {
+ const MYP = 'ZIN';
+ const VERSION = '2.0.0';
+
+ function post() {
+
+ $re = [];
+ $isajax = is_ajax();
+ $eol = $isajax ? "\n" : EOL;
+
+ if (! Apps::system_app_installed(local_channel(), 'Language')) {
+ $re['msg'] = 'ZIN0202E, ' . t('Language App') . ' (' . t('Not Installed') . ')' ;
+ notice( $re['msg'] . EOL);
+ if ($isajax) {
+ echo json_encode( $re );
+ killme();
+ exit;
+ } else {
+ return;
+ }
+ }
+
+ $lc = x($_POST['zinlc']) && preg_match('/^\?\?|[a-z]{2,2}[x_\-]{0,1}[a-zA-Z]{0,2}$/', $_POST['zinlc'])
+ ? $_POST['zinlc'] : '';
+ $lcs= x($_POST['zinlcs']) && preg_match('/^[a-z,_\-]{0,191}$/', $_POST['zinlcs'])
+ ? $_POST['zinlcs'] : '';
+
+ if ($isajax) {
+
+ if ($lc == '??') {
+ $re['lc'] = get_best_language();
+ $re['lcs'] = language_list();
+ } else {
+ $re['lc'] = $lc;
+ $re['alc'] = App::$language;
+ $re['slc'] = $_SESSION['language'];
+ $_SESSION['language'] = $lc;
+ App::$language = $lc;
+ load_translation_table($lc, true);
+ }
+
+ echo json_encode( $re );
+ killme();
+ exit;
+ }
+ }
+
function get() {
if(local_channel()) {
diff --git a/app/lang.apd b/app/lang.apd
index 65495dd5b..1856336ef 100644
--- a/app/lang.apd
+++ b/app/lang.apd
@@ -1,4 +1,4 @@
-version: 2
+version: 5.6
url: $baseurl/lang
name: Language
photo: icon:language
diff --git a/view/js/main.js b/view/js/main.js
index 6c418b213..11e0f812c 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -78,6 +78,65 @@ $(document).ready(function() {
}
});
+ // @hilmar |->
+ if ( typeof(window.tao) == 'undefined' ) {
+ window.tao = {};
+ }
+ if ( typeof(window.tao.zin) == 'undefined' ) {
+ tao.zin = { syslc: '', syslcs: {}, htm: '', me: '', debug: '' };
+ tao.zin.axim = '<div class="zinpax fa fa-sync fa-spin"> </div>';
+ $('.navbar-app[href*="/lang"]').attr({"data-toggle": "dropdown", "aria-expand": "true", "id": "zintog"})
+ .removeAttr('href').addClass('zinlcx zinlcxp dropdown dropdown-toggle');
+ $('.dropdown-item[href*="/lang"]').addClass('zinlcxmi zinlcx').removeAttr('href').css('cursor','pointer');
+ }
+ $('.zinlcx').on('click', function(e) {
+ if (tao.zin.syslc == '') {
+ $('.zinlcx').append(tao.zin.axim);
+ $.ajax({
+ type: 'POST', url: 'lang',
+ data: { zinlc: '??' }
+ }).done( function(re) {
+ tao.zin.re = JSON.parse(re);
+ tao.zin.syslc = tao.zin.re.lc;
+ tao.zin.syslcs = tao.zin.re.lcs;
+ tao.zin.htm = '<ul class="zinlcs fa-ul">';
+ $.each( tao.zin.syslcs, function( k, v ) {
+ tao.zin.htm += '<li><a id="zinlc' + k + '" class="zinlc dropdown-item fakelink">' + k + ' ' + v + '</a></li>';
+ });
+ tao.zin.htm += '</ul>';
+ $('.zinpax').remove();
+ $('.zinlcx').append(tao.zin.htm);
+ $('.zinlcxp > ul').addClass('dropdown dropdown-menu dropdown-menu-right').css('left','-16em');
+ });
+ return false;
+ } else {
+ if (e.target.id == '') {
+ // noop click on lang again
+ return false;
+ }
+ tao.zin.me = e.target.id.substr(5);
+ $('#right_aside_wrapper').append(tao.zin.axim);
+ $.ajax({
+ type: 'POST', url: 'lang',
+ data: { zinlc: tao.zin.me }
+ }).done( function(re) {
+ tao.zin.re = JSON.parse(re);
+ location.reload(true);
+ });
+ }
+ });
+ $('#zintog').on('click', function() {
+ $('.zinlcs').toggle();
+ });
+ $('#dropdown-menu').on('shown.bs.dropdown', function() {
+ tao.zin.debug += 'e,';
+ //$('.zinlcs').removeAttr('display');
+ })
+ .on('mouseleave', function() {
+ $(this).trigger('click');
+ });
+ // @hilmar <-|
+
var tf = new Function('n', 's', 'var k = s.split("/")['+aStr['plural_func']+']; return (k ? k : s);');
jQuery.timeago.settings.strings = {