diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 431190327da..79fcafbad3a 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -1051,8 +1051,9 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
$result = $object->fetch($id);
if ($result > 0 && $id > 0)
- {
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ {
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php
index b7c0e83904c..46ce0ac7afe 100644
--- a/htdocs/comm/propal/contact.php
+++ b/htdocs/comm/propal/contact.php
@@ -35,10 +35,10 @@ $langs->load("orders");
$langs->load("sendings");
$langs->load("companies");
-$id=GETPOST('id', 'int');
-$ref= GETPOST('ref', 'alpha');
-$lineid=GETPOST('lineid', 'int');
-$action=GETPOST('action', 'alpha');
+$id=GETPOST('id','int');
+$ref= GETPOST('ref','alpha');
+$lineid=GETPOST('lineid','int');
+$action=GETPOST('action','alpha');
// Security check
if ($user->societe_id) $socid=$user->societe_id;
@@ -57,7 +57,8 @@ if ($action == 'addcontact' && $user->rights->propale->creer)
if ($result > 0 && $id > 0)
{
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php
index eeca19cce3c..9e4cfd2923b 100644
--- a/htdocs/commande/contact.php
+++ b/htdocs/commande/contact.php
@@ -54,7 +54,8 @@ if ($action == 'addcontact' && $user->rights->commande->creer)
if ($result > 0 && $id > 0)
{
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php
index 976b62d9fb4..ec39a9b14c8 100644
--- a/htdocs/commande/fiche.php
+++ b/htdocs/commande/fiche.php
@@ -1198,8 +1198,9 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
$result = $object->fetch($id);
if ($result > 0 && $id > 0)
- {
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ {
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 439062a6517..6a280ba068a 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -1513,8 +1513,9 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
$result = $object->fetch($id);
if ($result > 0 && $id > 0)
- {
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ {
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php
index 59b61483541..d840db56dce 100644
--- a/htdocs/compta/facture/contact.php
+++ b/htdocs/compta/facture/contact.php
@@ -55,7 +55,8 @@ if ($action == 'addcontact' && $user->rights->facture->creer)
if ($result > 0 && $id > 0)
{
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/contrat/contact.php b/htdocs/contrat/contact.php
index 8482df92fcc..7a35a414481 100644
--- a/htdocs/contrat/contact.php
+++ b/htdocs/contrat/contact.php
@@ -56,7 +56,8 @@ if ($action == 'addcontact' && $user->rights->contrat->creer)
if ($result > 0 && $id > 0)
{
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php
index 2da8fc9083d..3cacf53ee17 100644
--- a/htdocs/contrat/fiche.php
+++ b/htdocs/contrat/fiche.php
@@ -483,8 +483,9 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
$result = $object->fetch($id);
if ($result > 0 && $id > 0)
- {
- $result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+ {
+ $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid'));
+ $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
}
if ($result >= 0)
diff --git a/htdocs/core/ajax/contacts.php b/htdocs/core/ajax/contacts.php
new file mode 100644
index 00000000000..025d1dc9dd0
--- /dev/null
+++ b/htdocs/core/ajax/contacts.php
@@ -0,0 +1,58 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file htdocs/core/ajax/contacts.php
+ * \brief File to load contacts combobox
+ */
+
+if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disables token renewal
+if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
+//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
+if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
+//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
+//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
+
+require('../../main.inc.php');
+
+$id = GETPOST('id','int');
+$action = GETPOST('action','alpha');
+$htmlname = GETPOST('htmlname','alpha');
+
+/*
+ * View
+ */
+
+top_httphead();
+
+//print ''."\n";
+
+// Load original field value
+if (! empty($id) && ! empty($action) && ! empty($htmlname))
+{
+ $form = new Form($db);
+
+ $return=array();
+
+ $return['value'] = $form->selectcontacts($id,'','contactid',0,'','',0,'',true);
+ $return['num'] = $form->num;
+ $return['error'] = $form->error;
+
+ echo json_encode($return);
+}
+
+?>
diff --git a/htdocs/core/ajax/saveinplace.php b/htdocs/core/ajax/saveinplace.php
index bdedcd6b2db..9af6a83e54a 100644
--- a/htdocs/core/ajax/saveinplace.php
+++ b/htdocs/core/ajax/saveinplace.php
@@ -30,10 +30,10 @@ if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
require('../../main.inc.php');
require_once(DOL_DOCUMENT_ROOT."/core/class/genericobject.class.php");
-$field = GETPOST('field','alpha');
-$element = GETPOST('element','alpha');
-$table_element = GETPOST('table_element','alpha');
-$fk_element = GETPOST('fk_element','alpha');
+$field = GETPOST('field','alpha',2);
+$element = GETPOST('element','alpha',2);
+$table_element = GETPOST('table_element','alpha',2);
+$fk_element = GETPOST('fk_element','alpha',2);
/*
* View
@@ -47,11 +47,11 @@ top_httphead();
// Load original field value
if (! empty($field) && ! empty($element) && ! empty($table_element) && ! empty($fk_element))
{
- $ext_element = GETPOST('ext_element','alpha');
+ $ext_element = GETPOST('ext_element','alpha',2);
$field = substr($field, 8); // remove prefix val_
- $value = GETPOST('value','alpha');
- $type = GETPOST('type','alpha');
- $savemethod = GETPOST('savemethod','alpha');
+ $type = GETPOST('type','alpha',2);
+ $value = ($type == 'ckeditor' ? GETPOST('value','',2) : GETPOST('value','alpha',2));
+ $savemethod = GETPOST('savemethod','alpha',2);
$savemethodname = (! empty($savemethod) ? $savemethod : 'setValueFrom');
$view='';
@@ -98,7 +98,7 @@ if (! empty($field) && ! empty($element) && ! empty($table_element) && ! empty($
}
else if ($type == 'datepicker')
{
- $timestamp = GETPOST('timestamp','int');
+ $timestamp = GETPOST('timestamp','int',2);
$format = 'date';
$newvalue = ($timestamp / 1000);
}
diff --git a/htdocs/core/ajax/vatrates.php b/htdocs/core/ajax/vatrates.php
index d987b074bc6..c4ecc36ae9b 100644
--- a/htdocs/core/ajax/vatrates.php
+++ b/htdocs/core/ajax/vatrates.php
@@ -49,7 +49,13 @@ if (! empty($id) && ! empty($action) && ! empty($htmlname))
$soc->fetch($id);
- echo $form->load_tva('tva_tx','',$soc,$mysoc,0,0,'',true);
+ $return=array();
+
+ $return['value'] = $form->load_tva('tva_tx','',$soc,$mysoc,0,0,'',true);
+ $return['num'] = $form->num;
+ $return['error'] = $form->error;
+
+ echo json_encode($return);
}
?>
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index b2df69dc8a6..08787c8b1bc 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -42,6 +42,7 @@ class Form
{
var $db;
var $error;
+ var $num;
// Cache arrays
var $cache_types_paiements=array();
@@ -74,7 +75,7 @@ class Form
* @param string $preselected Name of Value to show/edit (not used in this function)
* @param object $object Object
* @param boolean $perm Permission to allow button to edit parameter
- * @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:xxx'...)
+ * @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select:xxx'...)
* @param string $moreparam More param to add on a href URL
* @return string HTML edit field
*/
@@ -119,7 +120,7 @@ class Form
* @param string $value Value to show/edit
* @param object $object Object
* @param boolean $perm Permission to allow button to edit parameter
- * @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:?:1:rows:cols', 'select:xxx'...)
+ * @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select:xxx'...)
* @param string $editvalue When in edit mode, use this value as $value instead of value
* @param object $extObject External object
* @param string $success Success message
@@ -785,23 +786,46 @@ class Form
}
}
+ /**
+ * Return list of all contacts (for a third party or all)
+ *
+ * @param int $socid Id ot third party or 0 for all
+ * @param string $selected Id contact pre-selectionne
+ * @param string $htmlname Name of HTML field ('none' for a not editable field)
+ * @param int $show_empty 0=no empty value, 1=add an empty value
+ * @param string $exclude List of contacts id to exclude
+ * @param string $limitto Disable answers that are not id in this array list
+ * @param string $showfunction Add function into label
+ * @param string $moreclass Add more class to class style
+ * @return int <0 if KO, Nb of contact in list if OK
+ */
+ function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='')
+ {
+ print $this->selectcontacts($socid,$selected,$htmlname,$showempty,$exclude,$limitto,$showfunction, $moreclass);
+ return $this->num;
+ }
/**
- * Return list of all contacts (for a third party or all)
+ * Return list of all contacts (for a third party or all)
*
- * @param int $socid Id ot third party or 0 for all
- * @param string $selected Id contact pre-selectionne
- * @param string $htmlname Name of HTML field ('none' for a not editable field)
- * @param int $show_empty 0=no empty value, 1=add an empty value
- * @param string $exclude List of contacts id to exclude
- * @param string $limitto Disable answers that are not id in this array list
- * @param string $showfunction Add function into label
- * @param string $moreclass Add more class to class style
- * @return int <0 if KO, Nb of contact in list if OK
+ * @param int $socid Id ot third party or 0 for all
+ * @param string $selected Id contact pre-selectionne
+ * @param string $htmlname Name of HTML field ('none' for a not editable field)
+ * @param int $show_empty 0=no empty value, 1=add an empty value
+ * @param string $exclude List of contacts id to exclude
+ * @param string $limitto Disable answers that are not id in this array list
+ * @param string $showfunction Add function into label
+ * @param string $moreclass Add more class to class style
+ * @param bool $options_only Return options only (for ajax treatment)
+ * @return int <0 if KO, Nb of contact in list if OK
*/
- function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='')
+ function selectcontacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $options_only=false)
{
global $conf,$langs;
+
+ $langs->load('companies');
+
+ $out='';
// On recherche les societes
$sql = "SELECT sp.rowid, sp.name as name, sp.firstname, sp.poste";
@@ -815,10 +839,9 @@ class Form
if ($resql)
{
$num=$this->db->num_rows($resql);
- if ($num == 0) return 0;
- if ($htmlname != 'none') print '';
+ }
+
+ $this->num = $num;
+ return $out;
}
else
{
@@ -3019,7 +3048,8 @@ class Form
{
$return.= $this->error;
}
-
+
+ $this->num = $num;
return $return;
}
diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php
index 6e1e06f6279..52c0ce52e5f 100644
--- a/htdocs/core/class/html.formcompany.class.php
+++ b/htdocs/core/class/html.formcompany.class.php
@@ -509,6 +509,9 @@ class FormCompany
* @param string $limitto Disable answers that are not id in this array list
* @param int $forceid This is to force antoher object id than object->id
* @return void
+ * TODO obsolete ?
+ * cette fonction doit utiliser du javascript quoi qu'il en soit !
+ * autant utiliser le système combobox sans rechargement de page non ?
*/
function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0)
{
diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php
index 2d7426f279e..f433374f83c 100644
--- a/htdocs/core/lib/ajax.lib.php
+++ b/htdocs/core/lib/ajax.lib.php
@@ -225,14 +225,24 @@ function ajax_combobox($htmlname, $event=array())
var method = obj.method;
var url = obj.url;
var htmlname = obj.htmlname;
- $.get(url,
+ $.getJSON(url,
{
action: method,
id: id,
htmlname: htmlname
},
function(response) {
- $("select#" + htmlname).html(response);
+ $.each(obj.params, function(key,action) {
+ if (key.length) {
+ var num = response.num;
+ if (num > 0) {
+ $("#" + key).removeAttr(action);
+ } else {
+ $("#" + key).attr(action, action);
+ }
+ }
+ });
+ $("select#" + htmlname).html(response.value);
});
}
});';
diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php
index 3143722e952..5c4368d4bc0 100644
--- a/htdocs/core/tpl/contacts.tpl.php
+++ b/htdocs/core/tpl/contacts.tpl.php
@@ -54,7 +54,7 @@ $userstatic=new User($db);