diff --git a/ChangeLog b/ChangeLog
index c567d47a9bc..ed4498c342a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -162,7 +162,8 @@ Dolibarr better:
creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
- A lot of pages called fiche.php were renamed into card.php
- A lot of pages called liste.php were renamed into list.php
-
+- If you used warehouse/stock module, recheck setup of stock increase/decrease rules of the
+ warehouse module and your Point Of Sale module if you use one.
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
diff --git a/dev/detectduplicatelangkey.sh b/dev/detectduplicatelangkey.sh
deleted file mode 100755
index 06d9cd8a69e..00000000000
--- a/dev/detectduplicatelangkey.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-# Helps find duplicate translation keys in language files
-#
-# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
-
-for file in `find . -type f`
-do
- dupes=$(
- sed "s/^\s*//" "$file" | # Remove any leading whitespace
- sed "s/\s*\=/=/" | # Remove any whitespace before =
- grep -Po "(^.*?)=" | # Non greedeely match everything before =
- sed "s/\=//" | # Remove trailing = so we get the key
- sort | uniq -d # Find duplicates
- )
-
- if [ -n "$dupes" ]
- then
- echo "Duplicates found in $file"
- echo "$dupes"
- fi
-done
diff --git a/dev/fixnotabfiles.sh b/dev/detectnotabfiles.sh
similarity index 91%
rename from dev/fixnotabfiles.sh
rename to dev/detectnotabfiles.sh
index 3e5d28966c9..c89b999b03d 100755
--- a/dev/fixnotabfiles.sh
+++ b/dev/detectnotabfiles.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#------------------------------------------------------
-# Script to find files that are not Unix encoded
+# Detect files that does not contains any tab inside
#
# Laurent Destailleur - eldy@users.sourceforge.net
#------------------------------------------------------
diff --git a/dev/fixduplicatelangkey.sh b/dev/fixduplicatelangkey.sh
new file mode 100755
index 00000000000..2d9cb7f7a85
--- /dev/null
+++ b/dev/fixduplicatelangkey.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Helps find duplicate translation keys in language files
+#
+# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
+
+
+# Syntax
+if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
+then
+ echo "Usage: detectduplicatelangkey.sh (list|fix)"
+fi
+
+
+if [ "x$1" = "xlist" ]
+then
+ for file in `find htdocs/langs/en_US -name *.lang -type f`
+ do
+ dupes=$(
+ sed "s/^\s*//" "$file" | # Remove any leading whitespace
+ sed "s/\s*\=/=/" | # Remove any whitespace before =
+ grep -Po "(^.*?)=" | # Non greedeely match everything before =
+ sed "s/\=//" | # Remove trailing = so we get the key
+ sort | uniq -d # Find duplicates
+ )
+
+ if [ -n "$dupes" ]
+ then
+ echo "Duplicates found in $file"
+ echo "$dupes"
+ fi
+ done
+fi
+
+# To convert
+if [ "x$1" = "xfix" ]
+then
+ echo Feature not implemented. Please fix files manually.
+fi
diff --git a/dev/optimize_images.sh b/dev/optimize_images.sh
index 616eec75757..0d532d054ad 100755
--- a/dev/optimize_images.sh
+++ b/dev/optimize_images.sh
@@ -10,6 +10,7 @@ INPLACE='0'
max_input_size=0
max_output_size=0
+
usage()
{
cat </dev/null
rm -fr $2.firstpass
fi
@@ -67,6 +69,25 @@ get_max_file_length()
main()
{
+ test=`type pngcrush >/dev/null 2>&1`
+ result=$?
+ if [ "x$result" == "x1" ]; then
+ echo "Tool pngcrush not found" && exit
+ fi
+
+ test=`type optipng >/dev/null 2>&1`
+ result=$?
+ if [ "x$result" == "x1" ]; then
+ echo "Tool optipng not found" && exit
+ fi
+
+ test=`type jpegtran >/dev/null 2>&1`
+ result=$?
+ if [ "x$result" == "x1" ]; then
+ echo "Tool jpegtran not found" && exit
+ fi
+
+
# If $INPUT is empty, then we use current directory
if [[ "$INPUT" == "" ]]; then
INPUT=$(pwd)
@@ -81,6 +102,8 @@ main()
OUTPUT='/tmp/optimize'
fi
+ echo "Mode is $INPLACE (1=Images are replaced, 0=New images are stored into $OUTPUT)"
+
# We create the output directory
mkdir -p $OUTPUT
@@ -96,6 +119,7 @@ main()
# Search of all jpg/jpeg/png in $INPUT
# We remove images from $OUTPUT if $OUTPUT is a subdirectory of $INPUT
+ echo "Scan $INPUT to find images"
IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v $OUTPUT)
if [ "$QUIET" == "0" ]; then
@@ -103,6 +127,7 @@ main()
echo
fi
for CURRENT_IMAGE in $IMAGES; do
+ echo "Process $CURRENT_IMAGE"
filename=$(basename $CURRENT_IMAGE)
if [ "$QUIET" == "0" ]; then
printf '%s ' "$filename"
@@ -155,6 +180,13 @@ SHORTOPTS="h,i:,o:,q,s,p"
LONGOPTS="help,input:,output:,quiet,no-stats,inplace"
ARGS=$(getopt -s bash --options $SHORTOPTS --longoptions $LONGOPTS --name $PROGNAME -- "$@")
+# Syntax
+if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
+then
+ echo "Usage: optimize_images.sh (list|fix) -i dirtoscan"
+ exit
+fi
+
eval set -- "$ARGS"
while true; do
case $1 in
@@ -191,5 +223,11 @@ while true; do
shift
done
+# To convert
+if [ "x$1" = "xlist" ]
+then
+ INPLACE=0
+fi
+
main
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index fd3f74c06c2..9ce93a6bc26 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -534,7 +534,7 @@ dol_fiche_end();
// Show warning about external users
-if ($mode != 'marketplace') print '
';
diff --git a/htdocs/cashdesk/css/style.css b/htdocs/cashdesk/css/style.css
index 0972527a73b..f62a9193830 100644
--- a/htdocs/cashdesk/css/style.css
+++ b/htdocs/cashdesk/css/style.css
@@ -222,6 +222,7 @@ p.titre {
margin: 0 15px;
padding: 0;
max-width: 500px;
+ width: 100%;
}
.titre1 {
@@ -308,7 +309,7 @@ p.titre {
}
.texte_ref {
- width: 80px;
+ min-width: 150px;
}
.texte1,.texte1_off {
@@ -321,8 +322,8 @@ p.titre {
/* ------------------- */
.textarea_note {
- width: 300px;
- height: 150px;
+ width: 100%;
+ height: 50px;
padding: 2px 2px;
}
@@ -362,7 +363,7 @@ p.titre {
}
.resume_label,.note_label {
- width: 200px;
+ min-width: 200px;
font-weight: bold;
font-size: 1.1em;
}
diff --git a/htdocs/cashdesk/facturation_verif.php b/htdocs/cashdesk/facturation_verif.php
index 42e1c00f651..8953f7b0ccc 100644
--- a/htdocs/cashdesk/facturation_verif.php
+++ b/htdocs/cashdesk/facturation_verif.php
@@ -137,16 +137,17 @@ switch ( $_GET['action'] )
case 'ajout_article': // We have clicked on button "Add product"
- //var_dump($obj_facturation);
+ //var_dump('ajout_article');
//exit;
- if (! empty($obj_facturation->id)) // A product has been selected and stored in session
+ if (! empty($obj_facturation->id)) // A product was previously selected and stored in session, so we can add it
{
$obj_facturation->qte($_POST['txtQte']);
$obj_facturation->tva($_POST['selTva']);
$obj_facturation->remisePercent($_POST['txtRemise']);
- $obj_facturation->ajoutArticle();
-
+ $obj_facturation->ajoutArticle(); // This add an entry into $_SESSION['poscart']
+ // We update prixTotalTtc
+
}
$redirection = DOL_URL_ROOT.'/cashdesk/affIndex.php?menu=facturation';
@@ -160,7 +161,7 @@ switch ( $_GET['action'] )
}
-
+// We saved object obj_facturation
$_SESSION['serObjFacturation'] = serialize($obj_facturation);
header('Location: '.$redirection);
diff --git a/htdocs/cashdesk/include/environnement.php b/htdocs/cashdesk/include/environnement.php
index f0545181ff0..3e6a88f252a 100644
--- a/htdocs/cashdesk/include/environnement.php
+++ b/htdocs/cashdesk/include/environnement.php
@@ -32,6 +32,7 @@ $conf_db_base = $dolibarr_main_db_name;
$conf_fksoc = (! empty($_SESSION["CASHDESK_ID_THIRDPARTY"]))?$_SESSION["CASHDESK_ID_THIRDPARTY"]:($conf->global->CASHDESK_ID_THIRDPARTY>0?$conf->global->CASHDESK_ID_THIRDPARTY:0);
// Identifiant unique correspondant a l'entrepot a utiliser
$conf_fkentrepot = (! empty($_SESSION["CASHDESK_ID_WAREHOUSE"]))?$_SESSION["CASHDESK_ID_WAREHOUSE"]:($conf->global->CASHDESK_ID_WAREHOUSE>0?$conf->global->CASHDESK_ID_WAREHOUSE:0);
+if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $conf_fkentrepot = 0; // If option to disable stock decrease is on, we set warehouse id to 0.
// Identifiant unique correspondant au compte caisse / liquide
$conf_fkaccount_cash = (! empty($_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"]))?$_SESSION["CASHDESK_ID_BANKACCOUNT_CASH"]:($conf->global->CASHDESK_ID_BANKACCOUNT_CASH>0?$conf->global->CASHDESK_ID_BANKACCOUNT_CASH:0);
diff --git a/htdocs/cashdesk/index.php b/htdocs/cashdesk/index.php
index a2eb40f2932..fa1c6723d20 100644
--- a/htdocs/cashdesk/index.php
+++ b/htdocs/cashdesk/index.php
@@ -99,16 +99,15 @@ print $form->select_company(GETPOST('socid','int')?GETPOST('socid','int'):$conf-
print '';
print "\n";
-if (! empty($conf->stock->enabled))
+if (! empty($conf->stock->enabled) && empty($conf->global->CASHDESK_NO_DECREASE_STOCK))
{
$langs->load("stocks");
print "
";
print '
'.$langs->trans("Warehouse").'
';
print '
';
$disabled=0;
- if (! empty($conf->global->CASHDESK_ID_WAREHOUSE)) $disabled=1; // If a particular stock is defined, we disable choice
- print $formproduct->selectWarehouses((GETPOST('warehouseid')?GETPOST('warehouseid'):(empty($conf->global->CASHDESK_ID_WAREHOUSE)?'ifone':$conf->global->CASHDESK_ID_WAREHOUSE)),'warehouseid','',!$disabled,$disabled);
- //print '';
+ if ($conf->global->CASHDESK_ID_WAREHOUSE > 0) $disabled=1; // If a particular stock is defined, we disable choice
+ print $formproduct->selectWarehouses((GETPOST('warehouseid')?GETPOST('warehouseid','int'):(empty($conf->global->CASHDESK_ID_WAREHOUSE)?'ifone':$conf->global->CASHDESK_ID_WAREHOUSE)),'warehouseid','',!$disabled,$disabled);
print '
diff --git a/htdocs/cashdesk/validation_verif.php b/htdocs/cashdesk/validation_verif.php
index 173c1894555..27ce3380dd4 100644
--- a/htdocs/cashdesk/validation_verif.php
+++ b/htdocs/cashdesk/validation_verif.php
@@ -218,7 +218,33 @@ switch ($action)
$resultcreate=$invoice->create($user,0,dol_stringtotime($obj_facturation->paiementLe()));
if ($resultcreate > 0)
{
- $resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), (isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0));
+ $warehouseidtodecrease=(isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0);
+ if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $warehouseidtodecrease=0; // If a particular stock is defined, we disable choice
+
+ $resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), 0);
+
+ if ($warehouseidtodecrease > 0)
+ {
+ // Decrease
+ require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
+ $langs->load("agenda");
+ // Loop on each line
+ $cpt=count($invoice->lines);
+ for ($i = 0; $i < $cpt; $i++)
+ {
+ if ($invoice->lines[$i]->fk_product > 0)
+ {
+ $mouvP = new MouvementStock($db);
+ $mouvP->origin = &$invoice;
+ // We decrease stock for product
+ if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
+ else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
+ if ($result < 0) {
+ $error++;
+ }
+ }
+ }
+ }
}
else
{
@@ -232,7 +258,33 @@ switch ($action)
$resultcreate=$invoice->create($user,0,0);
if ($resultcreate > 0)
{
- $resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), (isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0));
+ $warehouseidtodecrease=(isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0);
+ if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $warehouseidtodecrease=0; // If a particular stock is defined, we disable choice
+
+ $resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), 0);
+
+ if ($warehouseidtodecrease > 0)
+ {
+ // Decrease
+ require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
+ $langs->load("agenda");
+ // Loop on each line
+ $cpt=count($invoice->lines);
+ for ($i = 0; $i < $cpt; $i++)
+ {
+ if ($invoice->lines[$i]->fk_product > 0)
+ {
+ $mouvP = new MouvementStock($db);
+ $mouvP->origin = &$invoice;
+ // We decrease stock for product
+ if ($invoice->type == $invoice::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
+ else $result=$mouvP->livraison($user, $invoice->lines[$i]->fk_product, $warehouseidtodecrease, $invoice->lines[$i]->qty, $invoice->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarrFromPos",$invoice->newref));
+ if ($result < 0) {
+ $error++;
+ }
+ }
+ }
+ }
$id = $invoice->id;
diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php
index 15a74483411..ca4c27bfdbc 100644
--- a/htdocs/comm/mailing/card.php
+++ b/htdocs/comm/mailing/card.php
@@ -94,6 +94,13 @@ $object->substitutionarrayfortest=array(
//,'__PERSONALIZED__' => 'TESTPersonalized' // Not used yet
);
+// List of sending methods
+$listofmethods=array();
+$listofmethods['mail']='PHP mail function';
+//$listofmethods['simplemail']='Simplemail class';
+$listofmethods['smtps']='SMTP/SMTPS socket library';
+
+
/*
* Actions
@@ -741,10 +748,21 @@ else
{
// Define message to recommand from command line
- // Pour des raisons de securite, on ne permet pas cette fonction via l'IHM,
- // on affiche donc juste un message
+ $sendingmode=$conf->global->MAIN_MAIL_SENDMODE;
+ if (empty($sendingmode)) $sendingmode='mail'; // If not defined, we use php mail function
- if (empty($conf->global->MAILING_LIMIT_SENDBYWEB))
+ if (! empty($conf->global->MAILING_NO_USING_PHPMAIL) && $sendingmode == 'mail')
+ {
+ // EMailing feature may be a spam problem, so when you host several users/instance, having this option may force each user to use their own SMTP agent.
+ // You ensure that every user is using its own SMTP server.
+ $linktoadminemailbefore='';
+ $linktoadminemailend='';
+ setEventMessage($langs->trans("MailSendSetupIs", $listofmethods[$sendingmode]), 'warnings');
+ setEventMessage($langs->trans("MailSendSetupIs2", $linktoadminemailbefore, $linktoadminemailend, $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $listofmethods['smtps']), 'warnings');
+ if (! empty($conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS)) setEventMessage($langs->trans("MailSendSetupIs3", $conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS), 'warnings');
+ $_GET["action"]='';
+ }
+ else if (empty($conf->global->MAILING_LIMIT_SENDBYWEB))
{
// Pour des raisons de securite, on ne permet pas cette fonction via l'IHM,
// on affiche donc juste un message
@@ -764,7 +782,7 @@ else
}
$text.=$langs->trans('ConfirmSendingEmailing').' ';
$text.=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB);
- print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('SendMailing'),$text,'sendallconfirmed',$formquestion,'',1,260);
+ print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('SendMailing'),$text,'sendallconfirmed',$formquestion,'',1,270);
}
}
diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php
index 49d2f1befa2..75f2399017b 100644
--- a/htdocs/comm/mailing/cibles.php
+++ b/htdocs/comm/mailing/cibles.php
@@ -276,7 +276,8 @@ if ($object->fetch($id) >= 0)
$obj = new $classname($db);
- $qualified=1;
+ // Check dependencies
+ $qualified=(isset($obj->enabled)?$obj->enabled:1);
foreach ($obj->require_module as $key)
{
if (! $conf->$key->enabled || (! $user->admin && $obj->require_admin))
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 56511f43c97..115b3248a05 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -1998,7 +1998,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$rowspan ++;
// Bank Account
- if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled))
+ if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled))
{
print '
';
print '
';
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index a6877ad9ed8..b924b059bfd 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -1600,7 +1600,7 @@ class Facture extends CommonInvoice
*
* @param User $user Object user that validate
* @param string $force_number Reference to force on invoice
- * @param int $idwarehouse Id of warehouse to use for stock decrease
+ * @param int $idwarehouse Id of warehouse to use for stock decrease if option to decreasenon stock is on (0=no decrease)
* @param int $notrigger 1=Does not execute triggers, 0= execuete triggers
* @return int <0 if KO, >0 if OK
*/
@@ -1728,7 +1728,7 @@ class Facture extends CommonInvoice
$result=$this->client->set_as_client();
// Si active on decremente le produit principal et ses composants a la validation de facture
- if ($this->type != self::TYPE_DEPOSIT && $result >= 0 && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_BILL))
+ if ($this->type != self::TYPE_DEPOSIT && $result >= 0 && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $idwarehouse > 0)
{
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs->load("agenda");
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 87ee2f1a1d2..1b0438bdea1 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -3016,30 +3016,33 @@ abstract class CommonObject
$marginInfo = $this->getMarginInfos($force_price);
- print $langs->trans('ShowMarginInfos').' : ';
- $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW'];
- print ''.img_picto($langs->trans("Disabled"),'switch_off').'';
- print ''.img_picto($langs->trans("Enabled"),'switch_on').'';
+ if (! empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON)) // FIXME Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better
+ {
+ print $langs->trans('ShowMarginInfos').' : ';
+ $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW'];
+ print ''.img_picto($langs->trans("Disabled"),'switch_off').'';
+ print ''.img_picto($langs->trans("Enabled"),'switch_on').'';
- print '';
- if (!empty($hidemargininfos)) print '';
-
- print '
';
if ($conf->global->MARGIN_TYPE == "1")
- print '
'.$langs->trans('BuyingPrice').'
';
+ print '
'.$langs->trans('BuyingPrice').'
';
else
- print '
'.$langs->trans('CostPrice').'
';
- print '
'.$langs->trans('Margin').'
';
+ print '
'.$langs->trans('CostPrice').'
';
+ print '
'.$langs->trans('Margin').'
';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
- print '
'.$langs->trans('MarginRate').'
';
+ print '
'.$langs->trans('MarginRate').'
';
if (! empty($conf->global->DISPLAY_MARK_RATES))
- print '
'.$langs->trans('MarkRate').'
';
+ print '
'.$langs->trans('MarkRate').'
';
print '
';
if (! empty($conf->product->enabled))
diff --git a/htdocs/core/class/html.formadmin.class.php b/htdocs/core/class/html.formadmin.class.php
index 042474781d7..30ecadedb55 100644
--- a/htdocs/core/class/html.formadmin.class.php
+++ b/htdocs/core/class/html.formadmin.class.php
@@ -53,9 +53,10 @@ class FormAdmin
* @param array $filter Array of keys to exclude in list
* @param int $showempty Add empty value
* @param int $showwarning Show a warning if language is not complete
+ * @param int $disabled Disable edit of select
* @return string Return HTML select string with list of languages
*/
- function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=0,$showempty=0,$showwarning=0)
+ function select_language($selected='',$htmlname='lang_id',$showauto=0,$filter=0,$showempty=0,$showwarning=0,$disabled=0)
{
global $langs;
@@ -63,7 +64,7 @@ class FormAdmin
$out='';
- $out.= '