From 45860b24948d71bc96084d15fe9814f258228028 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 14 Oct 2018 20:04:25 +0200 Subject: [PATCH] Work on multilang --- htdocs/core/lib/website.lib.php | 6 ++-- htdocs/core/website.inc.php | 47 +++++++++++++++++--------- htdocs/website/class/website.class.php | 18 +++++++++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 9f848fb68ee..ab0cbbdbdfb 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -307,7 +307,7 @@ function includeContainer($containerref) { global $conf, $db, $hookmanager, $langs, $mysoc, $user, $website, $weblangs; // Very important. Required to have var available when running inluded containers. global $includehtmlcontentopened; - global $websitekey; + global $websitekey, $websitepagefile; $MAXLEVEL=20; @@ -607,7 +607,7 @@ function dolSavePageContent($filetpl, $object, $objectpage) $tplcontent =''; $tplcontent.= "setDefaultLang(GETPOST('l','aZ09')); // A lang was forced, so we check to find if we must make a redirect on translation page -if (! defined('USEDOLIBARREDITOR')) +if ($_SERVER['PHP_SELF'] != DOL_URL_ROOT.'/website/index.php') // If we browsing page using Dolibarr server or a Native web server { + //print_r(get_defined_constants(true));exit; if (GETPOST('l','aZ09')) { - $sql ="SELECT wp.rowid, wp.lang, wp.pageurl, wp.fk_page"; - $sql.=" FROM ".MAIN_DB_PREFIX."website_page as wp, ".MAIN_DB_PREFIX."website as w"; - $sql.=" WHERE w.rowid = wp.fk_website AND w.ref = '".$db->escape($websitekey)."' AND fk_page = '".$db->escape($pageid)."' AND lang = '".$db->escape(GETPOST('l','aZ09'))."'"; - $resql = $db->query($sql); - if ($resql) + if (! $pageid && ! empty($websitepagefile)) { - $obj = $db->fetch_object($resql); - if ($obj) + $pageid = str_replace(array('.tpl.php', 'page'), array('', ''), basename($websitepagefile)); + } + if ($pageid > 0) + { + $sql ="SELECT wp.rowid, wp.lang, wp.pageurl, wp.fk_page"; + $sql.=" FROM ".MAIN_DB_PREFIX."website_page as wp, ".MAIN_DB_PREFIX."website as w"; + $sql.=" WHERE w.rowid = wp.fk_website AND w.ref = '".$db->escape($websitekey)."' AND wp.lang = '".$db->escape(GETPOST('l','aZ09'))."'"; + $sql.=" AND wp.fk_page = ".$db->escape($pageid); + //var_dump($sql);exit; + $resql = $db->query($sql); + if ($resql) { - //$pageid = $obj->rowid; - //$pageref = $obj->pageurl; - if (! defined('USEDOLIBARRSERVER')) { - // TODO Redirect - } - else + $obj = $db->fetch_object($resql); + if ($obj) { - // TODO Redirect + $newpageid = $obj->rowid; + if ($newpageid != $pageid) // To avoid to make a redirect on same page (infinite loop) + { + if (defined('USEDOLIBARRSERVER')) { + header("Location: ".DOL_URL_ROOT.'/public/website/index.php?website='.$websitekey.'&pageid='.$newpageid.'.php&l='.GETPOST('l','aZ09')); + exit; + } + else + { + $newpageref = $obj->pageurl; + header("Location: ".$newpageref.'.php?l='.GETPOST('l','aZ09')); + exit; + } + } } } } diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 843304fbe45..658e35edcd9 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -1089,10 +1089,26 @@ class Website extends CommonObject */ public function componentSelectLang($languagecodes, $weblangs, $morecss='', $htmlname='') { + global $websitepagefile; + if (! is_object($weblangs)) return 'ERROR componentSelectLang called with parameter $weblangs not defined'; - $languagecodeselected = $weblangs->defaultlang; + $languagecodeselected= $weblangs->defaultlang; // Becasue we must init with a value, but real value is the lang of main parent container + if (! empty($websitepagefile)) + { + $pageid = str_replace(array('.tpl.php', 'page'), array('', ''), basename($websitepagefile)); + if ($pageid > 0) + { + $tmppage=new WebsitePage($this->db); + $tmppage->fetch($pageid); + + $languagecodeselected=$tmppage->lang; + $languagecodes[]=$tmppage->lang; // We add language code of page into combo list + } + } + $weblangs->load('languages'); + //var_dump($weblangs->defaultlang); $url = $_SERVER["REQUEST_URI"]; $url = preg_replace('/(\?|&)l=([a-zA-Z_]*)/', '', $url); // We remove param l from url