fix #7754 - fix download and upload for translations
authorAlan <alan@roojs.com>
Thu, 3 Aug 2023 04:53:38 +0000 (12:53 +0800)
committerAlan <alan@roojs.com>
Thu, 3 Aug 2023 04:53:38 +0000 (12:53 +0800)
Import/Core_templatestr.php
Pman.Tab.AdminTranslations.bjs
Pman.Tab.AdminTranslations.js
UpdateBjsTemplates.php

index 47ace8d..9a4f49c 100644 (file)
@@ -100,28 +100,23 @@ class Pman_Admin_Import_Core_templatestr extends Pman
         if (empty($r['template']) || empty($r['module']) || empty($r['code'])) {
             $this->jerr("missing template / module or code column");
         }
-        if (isset($r['language'])) {
-            $this->updateTableTranslationRow($r);
-            return;
+
+        if (!isset($r['language'])) {
+            $this->jerr("missing language");
         }
-        $ff = HTML_FlexyFramework::get();
-        if (!isset($ff->Pman_Admin['languages'])) {
-            $this->jerr("invalid language configuration");
+
+        // table translation
+        if($r['module'] == 'database') {
+            $arr = explode(':', $r['template']);
+            $r['table'] = $arr[0];
+            $r['column'] = $arr[1];
+            $this->updateTableTranslation($r);
         }
-        
-        
-        foreach($ff->Pman_Admin['languages'] as $lang) {
-            if (!isset($r[strtolower($lang)])) {
-                //echo "SKIP $lang\n";
-                continue;
-            }
-            $rr = $r;
-            $rr['language'] = $lang;
-            $rr['translation'] = $r[strtolower($lang)];
-            $this->updateTranslationRow($rr);
+        // template translation
+        else {
+            $this->updateTranslationRow($r);
         }
-        
-        
+        return;
     }
     
     var $seq = 1;
@@ -156,22 +151,31 @@ class Pman_Admin_Import_Core_templatestr extends Pman
         $tr = DB_DataObject::Factory('core_templatestr');
         $tr->autoJoin();
 
-       
-        $tr->whereAdd("core_templatestr.on_id='{$tr->escape($r['table id'])}'");
+
+        // update duplicate with same on_table, on_col, mdsum and lang
+        // $tr->whereAdd("core_templatestr.on_id='{$tr->escape($r['table id'])}'");
         $tr->whereAdd("core_templatestr.on_table='{$tr->escape($r['table'])}'");
         $tr->whereAdd("core_templatestr.on_col='{$tr->escape($r['column'])}'");
         $tr->whereAdd("join_src_id_id.mdsum='{$tr->escape($r['code'])}'");
-        $tr->lang = $r['translation'];
-        if ($tr->find(true) && strlen(trim($r['txt']))) {
-            $tt = DB_DataObject::Factory('core_templatestr');
-            $tt->get($tr->id);
-            $tr= clone($tt);
-            $tt->txt = $r['txt'];
-            $tt->updated = date('Y-m-d H:i:s');
-            $tt->update($tr);
-             
+        $tr->lang = $r['language'];
+
+        $duplicate = $tr->fetchAll('id');
+
+        if(!empty($duplicate)) {
+
+            $t = DB_DataObject::factory('core_templatestr');
+            $t->query(
+            "UPDATE 
+                core_templatestr
+            SET 
+                txt = '" . $r['translation'] . "',
+                updated = '" . date('Y-m-d H:i:s') . "' 
+            WHERE 
+                id IN (" . implode(',', $duplicate) . ")"
+            );
             return 1;
         }
+
         return 0;
     }
     
index 97441f0..ac4d5e6 100644 (file)
              "        csvCols : 'src_id_mdsum,template_id_view_name,template_id_template,src_id_txt,lang,txt',",
              "        csvTitles : 'Code,Module,Template,Original,Language,Translation',",
              "        limit : 9999,",
-             "        sort: 'template_id_view_name,template_id_template,src_id_txt',",
+             "        sort: 'template_id_view_name,template_id_template,on_table,on_col,src_id_txt',",
              "        dir: 'ASC',",
              "        active : 1",
              "    };",
              "        p.lang = sns[1];",
              "        p.on_table = sns[2];",
              "        p.csvCols = 'src_id_mdsum,on_table,on_id,on_col,src_id_txt,lang,txt';",
-             "        p.csvTitles = 'Code,Table,Table id,Column,Language,Translation';",
+             "        p.csvTitles = 'Code,Table,Table id,Column,Original,Language,Translation';",
              "    }",
              "    ",
              "    if (typeof(sn.id) == 'string' && sn.id.match(/^view:/)) {",
  "modOrder" : "950",
  "name" : "Pman.Tab.AdminTranslations",
  "parent" : "Pman.Tab.AdminTranslationsInt",
- "path" : "/home/alan/gitlive/Pman.Admin/Pman.Tab.AdminTranslations.bjs",
+ "path" : "/home/leon/gitlive/web.MediaOutreach/Pman/Admin/Pman.Tab.AdminTranslations.bjs",
  "permname" : "Admin.Translations",
  "strings" : {
   "03c2e7e41ffc181a4e84080b4710e81e" : "New",
index b0d95d5..34de2e9 100644 (file)
@@ -294,7 +294,7 @@ Pman.Tab.AdminTranslations = new Roo.XComponent({
                    csvCols : 'src_id_mdsum,template_id_view_name,template_id_template,src_id_txt,lang,txt',
                    csvTitles : 'Code,Module,Template,Original,Language,Translation',
                    limit : 9999,
-                   sort: 'template_id_view_name,template_id_template,src_id_txt',
+                   sort: 'template_id_view_name,template_id_template,on_table,on_col,src_id_txt',
                    dir: 'ASC',
                    active : 1
                };
@@ -313,7 +313,7 @@ Pman.Tab.AdminTranslations = new Roo.XComponent({
                    p.lang = sns[1];
                    p.on_table = sns[2];
                    p.csvCols = 'src_id_mdsum,on_table,on_id,on_col,src_id_txt,lang,txt';
-                   p.csvTitles = 'Code,Table,Table id,Column,Language,Translation';
+                   p.csvTitles = 'Code,Table,Table id,Column,Original,Language,Translation';
                }
                
                if (typeof(sn.id) == 'string' && sn.id.match(/^view:/)) {
index 5f85755..b4aff11 100644 (file)
@@ -128,7 +128,6 @@ class Pman_Admin_UpdateBjsTemplates extends Pman
     
     function scanPmanBJS()
     {
-        
         $ids = array();
         foreach ($this->modules() as $m){
             $view_name = "Pman.$m";
@@ -174,7 +173,7 @@ class Pman_Admin_UpdateBjsTemplates extends Pman
                 $template->updated = $template->sqlValue("NOW()");
 
                 (empty($o)) ? $template->insert() : $template->update($o);
-                
+
                 if (strtotime($updated) >= filemtime('Pman' . '/' . $m . '/' . $fn)) {
                     continue;
                 }