diff --git a/ChangeLog b/ChangeLog
index f72d5f3e5a4..460e2dc73ae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -57,6 +57,7 @@ For users:
- New: Added ODT Template tag {object_total_discount}
- New: Add new import options: Third parties bank details, warehouses and stocks, categories and suppliers prices
- New: English bank account need a bank code (called sort code) to identify an account.
+- New: Can choose menu entry to show with external site module.
- New: Add hidden option MAIN_PDF_MARGIN_LEFT, MAIN_PDF_MARGIN_RIGHT, MAIN_PDF_MARGIN_TOP, MAIN_PDF_MARGIN_BOTTOM
to force margins of generated PDF.
New experimental modules:
@@ -87,6 +88,7 @@ For developers:
- New: Add ChromePHP output into syslog module.
- New: Add PRODUCT_PRICE_MODIFY trigger.
- New: Created function to retrieve total amount of discount of an invoice/proposal...
+- New: We can use a dynamic value ($conf->global->XXX for example) into titles of menus.
For translators:
- New: Update language files (de, tr, pt, ca, es, en, fr).
diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php
index c42b220bd98..d454cc3d005 100644
--- a/htdocs/core/class/translate.class.php
+++ b/htdocs/core/class/translate.class.php
@@ -152,7 +152,7 @@ class Translate
* @param string $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US or fr_FR or es_ES)
* @param int $stopafterdirection Stop when the DIRECTION tag is found (optimize speed)
* @param int $forcelangdir To force a different lang directory
- * @return int <0 if KO, 0 if already loaded, >0 if OK
+ * @return int <0 if KO, 0 if already loaded or loading not required, >0 if OK
*/
function Load($domain,$alt=0,$stopafterdirection=0,$forcelangdir='')
{
@@ -164,7 +164,7 @@ class Translate
dol_print_error('',get_class($this)."::Load ErrorWrongParameters");
exit;
}
- if ($this->defaultlang == 'none_NONE') return; // Special language code to not translate keys
+ if ($this->defaultlang == 'none_NONE') return 0; // Special language code to not translate keys
//dol_syslog("Translate::Load Start domain=".$domain." alt=".$alt." forcelangdir=".$forcelangdir." this->defaultlang=".$this->defaultlang);
@@ -388,7 +388,7 @@ class Translate
{
$str=$this->tab_translate[$key];
- // Overwrite translation
+ // Overwrite translation (TODO Move this at a higher level when we load tab_translate to avoid doing it for each trans call)
$overwritekey='MAIN_OVERWRITE_TRANS_'.$this->defaultlang;
if (! empty($conf->global->$overwritekey)) // Overwrite translation with key1:newstring1,key2:newstring2
{
@@ -399,7 +399,7 @@ class Translate
if ($tmparray2[0]==$key) { $str=$tmparray2[1]; break; }
}
}
-
+
if (! preg_match('/^Format/',$key)) $str=sprintf($str,$param1,$param2,$param3,$param4); // Replace %s and %d except for FormatXXX strings.
if ($maxsize) $str=dol_trunc($str,$maxsize);
@@ -417,8 +417,7 @@ class Translate
}
else // Translation is not available
{
- //$str=$this->getTradFromKey($key);
- //return $this->convToOutputCharset($str);
+ if ($key[0] == '$') { return dol_eval($key,1); }
return $this->getTradFromKey($key);
}
}
@@ -460,7 +459,7 @@ class Translate
function transnoentitiesnoconv($key, $param1='', $param2='', $param3='', $param4='')
{
global $conf;
-
+
if (! empty($this->tab_translate[$key])) // Translation is available
{
$str=$this->tab_translate[$key];
@@ -476,14 +475,16 @@ class Translate
if ($tmparray2[0]==$key) { $str=$tmparray2[1]; break; }
}
}
-
+
if (! preg_match('/^Format/',$key)) $str=sprintf($str,$param1,$param2,$param3,$param4); // Replace %s and %d except for FormatXXX strings.
+
+ return $str;
}
else
{
- $str=$this->getTradFromKey($key);
+ if ($key[0] == '$') { return dol_eval($key,1); }
+ return $this->getTradFromKey($key);
}
- return $str;
}
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 0e4ca0113bb..4422e6d6453 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -3874,12 +3874,13 @@ function verifCond($strRights)
/**
* Replace eval function to add more security.
- * This function is called by verifCond()
+ * This function is called by verifCond() or trans() and transnoentitiesnoconv().
*
- * @param string $s String to evaluate
- * @return mixed Result of eval
+ * @param string $s String to evaluate
+ * @param int $returnvalue 0=No return (used to execute $a=something). 1=Value of eval is returned (used to eval $something).
+ * @return mixed Nothing or return of eval
*/
-function dol_eval($s)
+function dol_eval($s,$returnvalue=0)
{
// Only global variables can be changed by eval function and returned to caller
global $langs, $user, $conf;
@@ -3887,7 +3888,8 @@ function dol_eval($s)
global $rights;
//print $s." \n";
- eval($s);
+ if ($returnvalue) return eval('return '.$s.';');
+ else eval($s);
}
/**
diff --git a/htdocs/core/modules/modExternalSite.class.php b/htdocs/core/modules/modExternalSite.class.php
index da66f18c2cb..cc0fa60c35a 100644
--- a/htdocs/core/modules/modExternalSite.class.php
+++ b/htdocs/core/modules/modExternalSite.class.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2004-2010 Laurent Destailleur
+ * Copyright (C) 2004-2012 Laurent Destailleur
* Copyright (C) 2005-2009 Regis Houssin
*
* This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ class modExternalSite extends DolibarrModules
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
$this->name = preg_replace('/^mod/i','',get_class($this));
// Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value)
- $this->description = "Include any external web site into Dolibarr menus and view it into a Dolibarr frame.";
+ $this->description = "This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame.";
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this->version = 'dolibarr';
// Key used in llx_const table to save module status enabled/disabled (XXX is id value)
@@ -63,7 +63,7 @@ class modExternalSite extends DolibarrModules
// Name of png file (without png) used for this module
$this->picto='bookmark';
// Call to inside lang's file
- $this->langfiles = array("@externalsite");
+ $this->langfiles = array("externalsite");
// Data directories to create when module is enabled
$this->dirs = array();
@@ -76,7 +76,11 @@ class modExternalSite extends DolibarrModules
$this->requiredby = array(); // List of modules id to disable if this one is disabled
// Constants
- $this->const = array(); // List of parameters
+ // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
+ // Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',1),
+ // 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0)
+ // );
+ $this->const = array(0=>array('EXTERNALSITE_LABEL','chaine','ExternalSite','To declare label to use into external site menu entry', 0));
// Boxes
$this->boxes = array(); // List of boxes
@@ -97,18 +101,19 @@ class modExternalSite extends DolibarrModules
//------
$r=0;
- $this->menu[$r]=array('fk_menu'=>0,
- 'type'=>'top',
- 'titre'=>'ExternalSites',
- 'mainmenu'=>'externalsite',
- 'url'=>'/externalsite/frames.php',
- 'langs'=>'other',
- 'position'=>100,
- 'perms'=>'',
- 'enabled'=>'$conf->externalsite->enabled',
- 'target'=>'',
- 'user'=>0
- );
+ $this->menu[$r]=array(
+ 'fk_menu'=>0,
+ 'type'=>'top',
+ 'titre'=>'$conf->global->EXTERNALSITE_LABEL',
+ 'mainmenu'=>'externalsite',
+ 'url'=>'/externalsite/frames.php',
+ 'langs'=>'other',
+ 'position'=>100,
+ 'perms'=>'',
+ 'enabled'=>'$conf->externalsite->enabled',
+ 'target'=>'',
+ 'user'=>0
+ );
$r++;
}
diff --git a/htdocs/externalsite/admin/externalsite.php b/htdocs/externalsite/admin/externalsite.php
index 59a98ded0a2..830d191bc82 100644
--- a/htdocs/externalsite/admin/externalsite.php
+++ b/htdocs/externalsite/admin/externalsite.php
@@ -48,13 +48,15 @@ if ($action == 'update')
$i=0;
$db->begin();
-
+
+ $label = GETPOST('EXTERNALSITE_LABEL','alpha');
$exturl = GETPOST('EXTERNALSITE_URL','alpha');
+ $i+=dolibarr_set_const($db,'EXTERNALSITE_LABEL',trim($label),'chaine',0,'',$conf->entity);
$i+=dolibarr_set_const($db,'EXTERNALSITE_URL',trim($exturl),'chaine',0,'',$conf->entity);
//$i+=dolibarr_set_const($db,'EXTERNALSITE_LABEL',trim($_POST["EXTERNALSITE_LABEL"]),'chaine',0,'',$conf->entity);
- if ($i >= 1)
+ if ($i >= 2)
{
$db->commit();
$mesg = "".$langs->trans("SetupSaved")."";
@@ -75,8 +77,9 @@ llxHeader();
$linkback=''.$langs->trans("BackToModuleList").'';
print_fiche_titre($langs->trans("ExternalSiteSetup"),$linkback,'setup');
-print ' ';
+print $langs->trans("Module100Desc")." \n";
+print ' ';
print '