From c0c9af97a22469587431881bdfd2e623322a5b26 Mon Sep 17 00:00:00 2001 From: tvannini Date: Fri, 12 Apr 2019 04:10:10 +0200 Subject: [PATCH] JXMLT: "Changed" status unflagged on Receive, instead of on Produce --- lib/jxapp.inc | 56 ++++++++++++++++++++++++++++++++++---- lib/prgs/jxmlt_do_all.prf | 2 +- lib/prgs/jxmlt_produce.prf | 7 ++--- lib/prgs/jxmlt_receive.prf | 7 +++-- lib/prgs/jxmlt_receive.prg | 7 +++-- lib/prgs/jxtranslate.prf | 39 +++++++++++++++++++++----- 6 files changed, 95 insertions(+), 23 deletions(-) diff --git a/lib/jxapp.inc b/lib/jxapp.inc index 0a8ee0c..8b026b2 100644 --- a/lib/jxapp.inc +++ b/lib/jxapp.inc @@ -11049,10 +11049,14 @@ class o2_inspector { * table. * * @param string $lang Lang code to receive + * @param string $base_lang Base language to match changes against * @param integer $tot_progress Total progress to reach (when in multiple jobs chain) * @param integer $base_progress Base progress to add (when in multiple jobs chain) */ - function mlt_get_lang($lang, $base_progress = 0, $tot_progress = 100) { + function mlt_get_lang($lang, + $base_lang = '', + $base_progress = 0, + $tot_progress = 100) { $app = $_SESSION['o2_app']; $tab = $app->get_table(self::$mlt_table); @@ -11073,7 +11077,24 @@ class o2_inspector { $idx = 0; // ___________________________________________ Loop on all translated programs ___ foreach ($prgs as $prg_dict) { + // _________________________ Read translations from dictionary file (.lng) ___ $dict = jx_parse_conf($prg_dict); + // ________________________________________ Retrieve base language records ___ + $where = $f['mlt_lang']."='".$base_lang."' AND ". + $f['mlt_prg']."='".$prg_dict->nome."'"; + $base = o2_gateway::recordset($server->type, + $server->server, + $server->user, + $server->password, + $db->nome, + $db->proprietario, + $tab->nome, + 'jx_translations', + $select, + $where, + '', + 100000); + // __________________________________________ Retrieve translation records ___ $where = $f['mlt_lang']."='".$lang."' AND ". $f['mlt_prg']."='".$prg_dict->nome."'"; $recs = o2_gateway::recordset($server->type, @@ -11092,16 +11113,41 @@ class o2_inspector { $item = $rec['CTRL'].'#'.$rec['PROPERTY']. ($rec['PROPERTY'] == 'item' || $rec['PROPERTY'] == 'page' ? '_'.$rec['PROP_VALUE'] : ''); - if ($rec['LANG_STR'] != $dict[$item]) { + if (trim($dict[$item]) && + (trim($rec['LANG_STR']) != trim($dict[$item]))) { $where_i = $where.' AND '. $f['mlt_ctrl']."='".$rec['CTRL']."' AND ". $f['mlt_property']."='".$rec['PROPERTY']."' AND ". $f['mlt_prop_value']."='". o2_gateway::normalize($server->type, $rec['PROP_VALUE'])."'"; - $sets = array($f['mlt_lang_str']->nome_fisico => - "'".o2_gateway::normalize($server->type, - $dict[$item])."'"); + // _____________________________________ Retrieve base-lang string ___ + $base_str = ''; + foreach ($base as $b_rec) { + if ($b_rec['CTRL'] == $rec['CTRL'] && + $b_rec['PROPERTY'] == $rec['PROPERTY'] && + $b_rec['PROP_VALUE'] == $rec['PROP_VALUE']) { + $base_str = $b_rec['LANG_STR']; + break; + } + } + // _______________ Remove "changed" status from translation record ___ + if ($base_str != $rec['BASE_STR']) { + $sets = array($f['mlt_lang_str'].'' => "'".o2_gateway::normalize( + $server->type, + $dict[$item]). + "'", + $f['mlt_base_str'].'' => "'".o2_gateway::normalize( + $server->type, + $base_str). + "'"); + } + else { + $sets = array($f['mlt_lang_str'].'' => "'".o2_gateway::normalize( + $server->type, + $dict[$item]). + "'"); + } o2_gateway::modifyrec($server->type, $server->server, $server->user, diff --git a/lib/prgs/jxmlt_do_all.prf b/lib/prgs/jxmlt_do_all.prf index 31d9d29..0ba66a1 100644 --- a/lib/prgs/jxmlt_do_all.prf +++ b/lib/prgs/jxmlt_do_all.prf @@ -4,7 +4,7 @@ function jxmlt_do_all // $o2exe->s(1) && True && o2act::remark("Harvest") && $o2exe->e(); $o2exe->s(2) && True && o2act::call(jxmlt_do_all_exp_10(), False, jxmlt_do_all_exp_1(), jxmlt_do_all_exp_2(), jxmlt_do_all_exp_3(), jxmlt_do_all_exp_4(), jxmlt_do_all_exp_5(), jxmlt_do_all_exp_15(), jxmlt_do_all_exp_16()) && $o2exe->e(); // $o2exe->s(3) && True && o2act::remark("Receive") && $o2exe->e(); - $o2exe->s(4) && True && o2act::call(jxmlt_do_all_exp_11(), False, jxmlt_do_all_exp_5(), jxmlt_do_all_exp_16(), jxmlt_do_all_exp_16()) && $o2exe->e(); + $o2exe->s(4) && True && o2act::call(jxmlt_do_all_exp_11(), False, jxmlt_do_all_exp_5(), jxmlt_do_all_exp_6(), jxmlt_do_all_exp_16(), jxmlt_do_all_exp_16()) && $o2exe->e(); // $o2exe->s(5) && True && o2act::remark("Produce") && $o2exe->e(); $o2exe->s(6) && True && o2act::call(jxmlt_do_all_exp_12(), False, jxmlt_do_all_exp_13(), jxmlt_do_all_exp_14(), jxmlt_do_all_exp_6(), jxmlt_do_all_exp_5(), jxmlt_do_all_exp_7(), jxmlt_do_all_exp_17(), jxmlt_do_all_exp_16()) && $o2exe->e(); } //|o2_fine_act| diff --git a/lib/prgs/jxmlt_produce.prf b/lib/prgs/jxmlt_produce.prf index ca53122..c6a7c5a 100644 --- a/lib/prgs/jxmlt_produce.prf +++ b/lib/prgs/jxmlt_produce.prf @@ -155,8 +155,8 @@ function jxmlt_produce } //|o2_fine_act| function jxmlt_produce§§string_changed_act(&$o2exe) { - $o2exe->s(1) && True && o2act::set("translation", "mlt_base_str", jxmlt_produce_exp_19()) && $o2exe->e(); - $o2exe->s(2) && True && o2act::view("translation", "S", "") && $o2exe->e(); + $o2exe->s(1) && (jxmlt_produce_exp_31() || $o2exe->e()) && o2act::set("translation", "mlt_base_str", jxmlt_produce_exp_19()) && $o2exe->e(); + $o2exe->s(2) && (jxmlt_produce_exp_31() || $o2exe->e()) && o2act::view("translation", "S", "") && $o2exe->e(); $o2exe->s(3) && True && o2act::set("prg§_§var", "txt_changed", jxmlt_produce_exp_20()) && $o2exe->e(); } //|o2_fine_act| @@ -343,8 +343,7 @@ $txt = "; Janox translation dictionary\n". (($cha_n / 3) ? "; CHANGED EXPRESSIONS TO CHECK\n". "; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n".$changed : ''); -file_put_contents($lang_dir.$prg.'.lng', $txt); - +file_put_contents($lang_dir.$prg.'.lng', $txt); return (true); } //|o2_fine_exp| diff --git a/lib/prgs/jxmlt_receive.prf b/lib/prgs/jxmlt_receive.prf index bf6c9c4..b5b38c3 100644 --- a/lib/prgs/jxmlt_receive.prf +++ b/lib/prgs/jxmlt_receive.prf @@ -6,10 +6,11 @@ function jxmlt_receive function jxmlt_receive_exp_1() { $lang = o2par(1); -$pbas = (o2par(3) ? o2par(2) : 0); -$ptot = (o2par(3) ? o2par(3) : 100); +$base = o2par(2); +$pbas = (o2par(4) ? o2par(3) : 0); +$ptot = (o2par(4) ? o2par(4) : 100); $insp = new o2_inspector(); -$insp->mlt_get_lang($lang, $pbas, $ptot); +$insp->mlt_get_lang($lang, $base, $pbas, $ptot); return (true); } //|o2_fine_exp| ?> diff --git a/lib/prgs/jxmlt_receive.prg b/lib/prgs/jxmlt_receive.prg index 6caf5ab..c21d338 100644 --- a/lib/prgs/jxmlt_receive.prg +++ b/lib/prgs/jxmlt_receive.prg @@ -9,7 +9,8 @@ o2def::prgnotes(""); o2def::prg("jxmlt_receive", "receive", "", __FILE__); o2def::act("receive", ""); -o2def::par(1, "lang", "o2sys_language"); -o2def::par(2, "base_progress", "jxjob_progress"); -o2def::par(3, "tot_progress", "jxjob_progress"); +o2def::par(1, "lang_to", "o2sys_language"); +o2def::par(2, "lang_from", "o2sys_language"); +o2def::par(3, "base_progress", "jxjob_progress"); +o2def::par(4, "tot_progress", "jxjob_progress"); ?> diff --git a/lib/prgs/jxtranslate.prf b/lib/prgs/jxtranslate.prf index 0f9302f..5c0a9bf 100644 --- a/lib/prgs/jxtranslate.prf +++ b/lib/prgs/jxtranslate.prf @@ -83,14 +83,14 @@ function jxtranslate $ctrl_o2flowbox2_Panel4->x(2); $ctrl_o2flowbox2_Panel4->y(22); $ctrl_o2flowbox2_Panel4->larghezza(350); - $ctrl_o2flowbox2_Panel4->altezza(90); + $ctrl_o2flowbox2_Panel4->altezza(100); $ctrl_o2flowbox2_Panel4->visibile(jxtranslate_exp_24()); $ctrl_o2flowbox2_Panel4->info_padre(array(4)); $ctrl_o2flowbox2_Panel5 = &$form_jxtranslate_1->ctrldef("o2flowbox2_Panel5", "frame", "o2flowbox2", "", ""); $ctrl_o2flowbox2_Panel5->x(2); $ctrl_o2flowbox2_Panel5->y(22); $ctrl_o2flowbox2_Panel5->larghezza(350); - $ctrl_o2flowbox2_Panel5->altezza(170); + $ctrl_o2flowbox2_Panel5->altezza(180); $ctrl_o2flowbox2_Panel5->visibile(jxtranslate_exp_23()); $ctrl_o2flowbox2_Panel5->info_padre(array(5)); $ctrl_o2label2 = &$form_jxtranslate_1->ctrldef("o2label2", "label", "o2flowbox2_Panel0", "", ""); @@ -459,6 +459,12 @@ function jxtranslate $ctrl_o2label10->larghezza(150); $ctrl_o2label10->altezza(20); $ctrl_o2label10->label("Translation language:"); + $ctrl_o2label42 = &$form_jxtranslate_1->ctrldef("o2label42", "label", "o2flowbox2_Panel4", "", ""); + $ctrl_o2label42->x(10); + $ctrl_o2label42->y(30); + $ctrl_o2label42->larghezza(150); + $ctrl_o2label42->altezza(20); + $ctrl_o2label42->label("Base language:"); $ctrl_o2edit5 = &$form_jxtranslate_1->ctrldef("o2edit5", "edit", "o2flowbox2_Panel4", "prg§_§var", "lang_to"); $ctrl_o2edit5->x(160); $ctrl_o2edit5->y(10); @@ -467,15 +473,21 @@ function jxtranslate $ctrl_o2edit5->on_change(jxtranslate_exp_6()); $ctrl_o2button4 = &$form_jxtranslate_1->ctrldef("o2button4", "button", "o2flowbox2_Panel4", "", ""); $ctrl_o2button4->x(250); - $ctrl_o2button4->y(50); + $ctrl_o2button4->y(60); $ctrl_o2button4->larghezza(90); $ctrl_o2button4->altezza(30); $ctrl_o2button4->modificabile(jxtranslate_exp_25()); $ctrl_o2button4->azione("receive"); $ctrl_o2button4->label("&Receive"); + $ctrl_o2edit18 = &$form_jxtranslate_1->ctrldef("o2edit18", "edit", "o2flowbox2_Panel4", "prg§_§var", "lang_from"); + $ctrl_o2edit18->x(160); + $ctrl_o2edit18->y(30); + $ctrl_o2edit18->larghezza(100); + $ctrl_o2edit18->altezza(20); + $ctrl_o2edit18->on_change(jxtranslate_exp_6()); $ctrl_o2separator4 = &$form_jxtranslate_1->ctrldef("o2separator4", "line", "o2flowbox2_Panel5", "", ""); $ctrl_o2separator4->x(10); - $ctrl_o2separator4->y(90); + $ctrl_o2separator4->y(100); $ctrl_o2separator4->larghezza(330); $ctrl_o2separator4->altezza(10); $ctrl_o2label25 = &$form_jxtranslate_1->ctrldef("o2label25", "label", "o2flowbox2_Panel5", "", ""); @@ -484,6 +496,12 @@ function jxtranslate $ctrl_o2label25->larghezza(150); $ctrl_o2label25->altezza(20); $ctrl_o2label25->label("Translation language:"); + $ctrl_o2label43 = &$form_jxtranslate_1->ctrldef("o2label43", "label", "o2flowbox2_Panel5", "", ""); + $ctrl_o2label43->x(10); + $ctrl_o2label43->y(30); + $ctrl_o2label43->larghezza(150); + $ctrl_o2label43->altezza(20); + $ctrl_o2label43->label("Base language:"); $ctrl_o2edit11 = &$form_jxtranslate_1->ctrldef("o2edit11", "edit", "o2flowbox2_Panel5", "prg§_§var", "lang_to"); $ctrl_o2edit11->x(160); $ctrl_o2edit11->y(10); @@ -492,15 +510,21 @@ function jxtranslate $ctrl_o2edit11->on_change(jxtranslate_exp_6()); $ctrl_o2button7 = &$form_jxtranslate_1->ctrldef("o2button7", "button", "o2flowbox2_Panel5", "", ""); $ctrl_o2button7->x(250); - $ctrl_o2button7->y(50); + $ctrl_o2button7->y(60); $ctrl_o2button7->larghezza(90); $ctrl_o2button7->altezza(30); $ctrl_o2button7->modificabile(jxtranslate_exp_25()); $ctrl_o2button7->azione("receive"); $ctrl_o2button7->label("&Receive"); + $ctrl_o2edit19 = &$form_jxtranslate_1->ctrldef("o2edit19", "edit", "o2flowbox2_Panel5", "prg§_§var", "lang_from"); + $ctrl_o2edit19->x(160); + $ctrl_o2edit19->y(30); + $ctrl_o2edit19->larghezza(100); + $ctrl_o2edit19->altezza(20); + $ctrl_o2edit19->on_change(jxtranslate_exp_6()); $ctrl_o2htmlarea4 = &$form_jxtranslate_1->ctrldef("o2htmlarea4", "htmlarea", "o2flowbox2_Panel5", "", ""); $ctrl_o2htmlarea4->x(20); - $ctrl_o2htmlarea4->y(110); + $ctrl_o2htmlarea4->y(120); $ctrl_o2htmlarea4->larghezza(310); $ctrl_o2htmlarea4->altezza(50); $ctrl_o2htmlarea4->html(jxtranslate_exp_26()); @@ -906,7 +930,8 @@ function jxtranslate_exp_9() { 'Import dictionaries for Multilanguage Translation', 30); } -o2job_run('jxmlt_receive', array('lang' => o2val('prg§_§var','lang_to'))); +o2job_run('jxmlt_receive', array('lang_to' => o2val('prg§_§var','lang_to'), + 'lang_from' => o2val('prg§_§var','lang_from'))); return (true); } //|o2_fine_exp|