From 75f634c2524acda1802016a7264ba15f6bd5035b Mon Sep 17 00:00:00 2001 From: Alan Date: Thu, 3 Aug 2023 12:53:38 +0800 Subject: [PATCH] fix #7754 - fix download and upload for translations --- Import/Core_templatestr.php | 64 ++++++++++++++++++---------------- Pman.Tab.AdminTranslations.bjs | 6 ++-- Pman.Tab.AdminTranslations.js | 4 +-- UpdateBjsTemplates.php | 3 +- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/Import/Core_templatestr.php b/Import/Core_templatestr.php index 47ace8d..9a4f49c 100644 --- a/Import/Core_templatestr.php +++ b/Import/Core_templatestr.php @@ -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; } diff --git a/Pman.Tab.AdminTranslations.bjs b/Pman.Tab.AdminTranslations.bjs index 97441f0..ac4d5e6 100644 --- a/Pman.Tab.AdminTranslations.bjs +++ b/Pman.Tab.AdminTranslations.bjs @@ -246,7 +246,7 @@ " 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", " };", @@ -265,7 +265,7 @@ " 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:/)) {", @@ -792,7 +792,7 @@ "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", diff --git a/Pman.Tab.AdminTranslations.js b/Pman.Tab.AdminTranslations.js index b0d95d5..34de2e9 100644 --- a/Pman.Tab.AdminTranslations.js +++ b/Pman.Tab.AdminTranslations.js @@ -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:/)) { diff --git a/UpdateBjsTemplates.php b/UpdateBjsTemplates.php index 5f85755..b4aff11 100644 --- a/UpdateBjsTemplates.php +++ b/UpdateBjsTemplates.php @@ -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; } -- 2.39.2