From 12cf04ba798de6dcd4af012c5dc55c24a6a21832 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Sep 2009 13:24:47 +0000 Subject: [PATCH] Fix: Ajax use of third party select --- htdocs/admin/cashdesk.php | 10 +++++----- htdocs/html.form.class.php | 7 ++++--- htdocs/lib/ajax.lib.php | 7 +++++-- htdocs/lib/lib_head.js | 12 ++++++------ htdocs/societe/ajaxcompanies.php | 6 ++++++ 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/htdocs/admin/cashdesk.php b/htdocs/admin/cashdesk.php index b1ecb317d07..f4093bfa51d 100644 --- a/htdocs/admin/cashdesk.php +++ b/htdocs/admin/cashdesk.php @@ -28,11 +28,11 @@ require_once(DOL_DOCUMENT_ROOT."/lib/admin.lib.php"); require_once(DOL_DOCUMENT_ROOT."/html.formproduct.class.php"); // If socid provided by ajax company selector -if (! empty($_REQUEST['socid_id'])) +if (! empty($_REQUEST['CASHDESK_ID_THIRDPARTY_id'])) { - $_GET['socid'] = $_GET['socid_id']; - $_POST['socid'] = $_POST['socid_id']; - $_REQUEST['socid'] = $_REQUEST['socid_id']; + $_GET['CASHDESK_ID_THIRDPARTY'] = $_GET['CASHDESK_ID_THIRDPARTY_id']; + $_POST['CASHDESK_ID_THIRDPARTY'] = $_POST['CASHDESK_ID_THIRDPARTY_id']; + $_REQUEST['CASHDESK_ID_THIRDPARTY'] = $_REQUEST['CASHDESK_ID_THIRDPARTY_id']; } // Security check @@ -89,7 +89,7 @@ print "\n"; $var=!$var; print ''.$langs->trans("CashDeskThirdPartyForSell").''; print ''; -print $form->select_societes($conf->global->CASHDESK_ID_THIRDPARTY,'CASHDESK_ID_THIRDPARTY','',1); +print $form->select_societes($conf->global->CASHDESK_ID_THIRDPARTY,'CASHDESK_ID_THIRDPARTY','',1,1); print ''; if ($conf->global->MAIN_MODULE_BANQUE) { diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php index 7f82e341512..11f647d35a2 100644 --- a/htdocs/html.form.class.php +++ b/htdocs/html.form.class.php @@ -462,8 +462,9 @@ class Form * \param filter Optionnal filters criteras * \param showempty Add an empty field * \param showtype Show if third party is customer, prospect or supplier + * \param forcecombo Force to use combo box */ - function select_societes($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0) + function select_societes($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0, $forcecombo=0) { global $conf,$user,$langs; @@ -473,7 +474,7 @@ class Form if (!$user->rights->societe->client->voir && !$user->societe_id) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE s.entity = ".$conf->entity; if ($filter) $sql.= " AND ".$filter; - if ($selected && $conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT) $sql.= " AND rowid = ".$selected; + if (is_numeric($selected) && $conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT) $sql.= " AND s.rowid = ".$selected; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; $sql.= " ORDER BY nom ASC"; @@ -481,7 +482,7 @@ class Form $resql=$this->db->query($sql); if ($resql) { - if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT) + if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT && ! $forcecombo) { $socid = 0; if ($selected) diff --git a/htdocs/lib/ajax.lib.php b/htdocs/lib/ajax.lib.php index 3dc1d0876c3..84e5623a56a 100644 --- a/htdocs/lib/ajax.lib.php +++ b/htdocs/lib/ajax.lib.php @@ -133,11 +133,14 @@ function ajax_autocompleter($selected='',$htmlname,$url,$indicator='working') $script.= ''; return $script; diff --git a/htdocs/lib/lib_head.js b/htdocs/lib/lib_head.js index 3f542634fdb..9d331759503 100644 --- a/htdocs/lib/lib_head.js +++ b/htdocs/lib/lib_head.js @@ -579,22 +579,22 @@ function newpopup(url,title) { /*================================================================= - Purpose: Recupere id d'une autcompletion Ajax - Input: field,item + Purpose: Set value of a field after return of Ajax call + Input: HTML field name, val Author: Regis Houssin Licence: GPL ==================================================================*/ -function ac_return(field, item){ -/* alert('field.name='+field.name+'-'+item.innerHTML); */ +function ac_return(field, val){ +/* alert('field.name='+field.name+'-'+val.innerHTML); */ /* on met en place l'expression reguliere */ var regex = new RegExp('[0123456789]*-idcache', 'i'); /* on l'applique au contenu */ - var idCache = regex.exec(item.innerHTML); + var idCache = regex.exec(val.innerHTML); /* on recupere id */ id = idCache[0].replace('-idcache', ''); /* alert('field.name='+field.name+'-'+idCache[0]+'-'+id); */ /* et on l'affecte au champ cache */ -/* alert('field.name='+field.name+'-'+item.innerHTML+'-id='+id); */ +/* alert('field.name='+field.name+'-'+val.innerHTML+'-id='+id); */ $(field.name+'_id').value = id; } diff --git a/htdocs/societe/ajaxcompanies.php b/htdocs/societe/ajaxcompanies.php index 574b997eec1..30896f497b6 100644 --- a/htdocs/societe/ajaxcompanies.php +++ b/htdocs/societe/ajaxcompanies.php @@ -36,6 +36,8 @@ top_htmlhead("", "", 1, 1); print ''; +dol_syslog(join(',',$_POST)); + // Generation liste des societes if (! empty($_POST['newcompany']) || ! empty($_POST['socid']) || ! empty($_POST['id_fourn'])) { @@ -66,6 +68,10 @@ if (! empty($_POST['newcompany']) || ! empty($_POST['socid']) || ! empty($_POST[ print ''; } } +else +{ + +} print ""; print "";