From a53c3903d530aabc55e17f688b33a08e1964f7eb Mon Sep 17 00:00:00 2001 From: Alan Date: Mon, 28 Mar 2022 12:19:54 +0800 Subject: [PATCH] Fix #7175 - refine translation code --- DataObjects/Core_template.php | 47 ++++++++++++++++++++++++++++---- DataObjects/Core_templatestr.php | 5 ++-- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/DataObjects/Core_template.php b/DataObjects/Core_template.php index 23f885be..09a9584a 100644 --- a/DataObjects/Core_template.php +++ b/DataObjects/Core_template.php @@ -58,6 +58,39 @@ class Pman_Core_DataObjects_Core_template extends DB_DataObject } + function beforeUpdate($old, $q, $roo) + { + if (!empty($q['_rescan'])){ + if ($this->filetype != 'html') { + $roo->jerr("can not update a php source file currently - TDOD"); + } + $pg = HTML_FlexyFramework::get()->page; + + $this->syncTemplatePage(array( + 'template_dir' => $pg->rootDir . '/'. str_replace('.', '/', $this->view_name). '/templates', + 'template' => $this->template, + 'base' => $this->view_name, + 'force' => true + )); + // update the different langage versions of this page. + $x = DB_Dataobject::Factory('core_templatestr'); + $x->selectAdd(); + $x->selectAdd('distinct(lang) as lang'); + $x->whereAdd("lang != ''"); + $langs = $x->fetchAll('lang'); + foreach($langs as $l) { + $x = DB_Dataobject::Factory('core_templatestr'); + $x->syncLang($l, $this->id); + } + + + $roo->jok("updated -" . $this->template); + } + } + + + + /* * @param base (should be full path to template directory) * @param subdir = empty for top or subpath. @@ -159,6 +192,7 @@ class Pman_Core_DataObjects_Core_template extends DB_DataObject * @param template_dir << the path to the template dir ... Pman/XXX/template ... * @param template << name of template used by name field) * @param base << view name (module ? + templates?) + * @param force << optional - forces even if database is newer. * * */ @@ -172,7 +206,7 @@ class Pman_Core_DataObjects_Core_template extends DB_DataObject ini_set('memory_limit', '512M'); //var_dump($n); - $n= $pgdata['template']; // remove trailing slash.. + $n = $pgdata['template']; // remove trailing slash.. $fopts = HTML_FlexyFramework::get()->HTML_Template_Flexy; $opts = HTML_FlexyFramework::get()->Pman_Core; @@ -214,17 +248,18 @@ class Pman_Core_DataObjects_Core_template extends DB_DataObject $tmpl->filetype = 'html'; $tmpl->update($oo); } - - - - return $tmpl; + if (empty($pgdata['force'])) { + return $tmpl; + } } } - + //die("got here"); try { $r = $flexy->compile($pgdata['template']); + + } catch(Exception $e) { $old = clone($tmpl); $tmpl->updated = date('Y-m-d H:i:s',filemtime($flexy->resolvePath ($pgdata['template']))); diff --git a/DataObjects/Core_templatestr.php b/DataObjects/Core_templatestr.php index 44e58e11..c1aadbff 100644 --- a/DataObjects/Core_templatestr.php +++ b/DataObjects/Core_templatestr.php @@ -261,9 +261,8 @@ class Pman_Core_DataObjects_Core_templatestr extends DB_DataObject //print_r($words);exit; // grab original $tt = DB_DataObject::factory($this->tableName()); - - - $t = DB_DataObject::factory($this->tableName()); + + $t = clone($tt); $t->template_id = $tmpl->id; $t->whereAdd("lang = ''"); -- 2.39.2