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/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index e518fab260d..b380b384713 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();
@@ -785,23 +786,45 @@ 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 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 +838,9 @@ class Form
if ($resql)
{
$num=$this->db->num_rows($resql);
- $disable=($num==0 ? ' disabled="disabled"' : '');
- if ($htmlname != 'none') print '';
}
- return $num;
+
+ $this->num = $num;
+ return $out;
}
else
{
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 800ed417988..b1e685104ab 100644
--- a/htdocs/core/tpl/contacts.tpl.php
+++ b/htdocs/core/tpl/contacts.tpl.php
@@ -54,7 +54,7 @@ $userstatic=new User($db);