Work on multilang

This commit is contained in:
Laurent Destailleur 2018-10-14 20:54:28 +02:00
parent 45860b2494
commit ac143b28ae
2 changed files with 48 additions and 12 deletions

View File

@ -607,7 +607,7 @@ function dolSavePageContent($filetpl, $object, $objectpage)
$tplcontent ='';
$tplcontent.= "<?php // BEGIN PHP\n";
$tplcontent.= '$websitekey=basename(dirname(__FILE__)); $websitepagefile=__FILE__;'."\n";
$tplcontent.= '$websitekey=basename(dirname(__FILE__)); if (empty($websitepagefile)) $websitepagefile=__FILE__;'."\n";
$tplcontent.= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once './master.inc.php'; } // Not already loaded"."\n";
$tplcontent.= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n";
$tplcontent.= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n";
@ -672,7 +672,7 @@ function dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl, $filewrapper)
dol_delete_file($fileindex);
$indexcontent = '<?php'."\n";
$indexcontent.= "// BEGIN PHP File generated to provide an index.php as Home Page or alias redirector - DO NOT MODIFY - It is just a generated wrapper.\n";
$indexcontent.= '$websitekey=basename(dirname(__FILE__)); $websitepagefile=__FILE__;'."\n";
$indexcontent.= '$websitekey=basename(dirname(__FILE__)); if (empty($websitepagefile)) $websitepagefile=__FILE__;'."\n";
$indexcontent.= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once './master.inc.php'; } // Load master if not already loaded\n";
$indexcontent.= 'if (! empty($_GET[\'pageref\']) || ! empty($_GET[\'pagealiasalt\']) || ! empty($_GET[\'pageid\'])) {'."\n";
$indexcontent.= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n";

View File

@ -1079,31 +1079,67 @@ class Website extends CommonObject
}
/**
* Component to select language (Full CSS Only)
* Component to select language inside a container (Full CSS Only)
*
* @param array $languagecodes Language codes array. Example: array('en_US','fr_FR','de_DE','es_ES')
* @param Translate $weblangs Language Object
* @param string $morecss More CSS class on component
* @param string $htmlname Suffix for HTML name
* @return string HTML select component
* @param array|string $languagecodes 'auto' to show all languages available for page or language codes array like array('en_US','fr_FR','de_DE','es_ES')
* @param Translate $weblangs Language Object
* @param string $morecss More CSS class on component
* @param string $htmlname Suffix for HTML name
* @return string HTML select component
*/
public function componentSelectLang($languagecodes, $weblangs, $morecss='', $htmlname='')
{
global $websitepagefile;
global $websitepagefile, $website;
if (! is_object($weblangs)) return 'ERROR componentSelectLang called with parameter $weblangs not defined';
$languagecodeselected= $weblangs->defaultlang; // Becasue we must init with a value, but real value is the lang of main parent container
// Load tmppage if we have $websitepagefile defined
$tmppage=new WebsitePage($this->db);
$pageid = 0;
if (! empty($websitepagefile))
{
$pageid = str_replace(array('.tpl.php', 'page'), array('', ''), basename($websitepagefile));
if ($pageid > 0)
{
$tmppage=new WebsitePage($this->db);
$tmppage->fetch($pageid);
}
}
// Fill with existing translation, nothing if none
if (! is_array($languagecodes) && $pageid > 0)
{
$languagecodes = array();
$sql ="SELECT wp.rowid, wp.lang, wp.pageurl, wp.fk_page";
$sql.=" FROM ".MAIN_DB_PREFIX."website_page as wp";
$sql.=" WHERE wp.fk_website = ".$website->id;
$sql.=" AND (wp.fk_page = ".$pageid." OR wp.rowid = ".$pageid;
if ($tmppage->fk_page > 0) $sql.=" OR wp.fk_page = ".$tmppage->fk_page." OR wp.rowid = ".$tmppage->fk_page;
$sql.=")";
$resql = $this->db->query($sql);
if ($resql)
{
while ($obj = $this->db->fetch_object($resql))
{
$newlang = $obj->lang;
if ($obj->rowid == $pageid) $newlang = $obj->lang;
if (! in_array($newlang, $languagecodes)) $languagecodes[]=$newlang;
}
}
}
// Now $languagecodes is always an array
$languagecodeselected= $weblangs->defaultlang; // Because 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)
{
$languagecodeselected=$tmppage->lang;
$languagecodes[]=$tmppage->lang; // We add language code of page into combo list
if (! in_array($tmppage->lang, $languagecodes)) $languagecodes[]=$tmppage->lang; // We add language code of page into combo list
}
}