Merge branch 'develop' of ssh://git@github.com/Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2012-03-18 17:17:10 +01:00
commit 1fd5a0d755
20 changed files with 203 additions and 72 deletions

View File

@ -1052,7 +1052,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -57,7 +57,8 @@ if ($action == 'addcontact' && $user->rights->propale->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -54,7 +54,8 @@ if ($action == 'addcontact' && $user->rights->commande->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -1199,7 +1199,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -1514,7 +1514,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -55,7 +55,8 @@ if ($action == 'addcontact' && $user->rights->facture->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -56,7 +56,8 @@ if ($action == 'addcontact' && $user->rights->contrat->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -484,7 +484,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -0,0 +1,58 @@
<?php
/* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
*
* 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 <http://www.gnu.org/licenses/>.
*/
/**
* \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 '<!-- Ajax page called with url '.$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"].' -->'."\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);
}
?>

View File

@ -30,10 +30,10 @@ if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
require('../../main.inc.php'); require('../../main.inc.php');
require_once(DOL_DOCUMENT_ROOT."/core/class/genericobject.class.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/genericobject.class.php");
$field = GETPOST('field','alpha'); $field = GETPOST('field','alpha',2);
$element = GETPOST('element','alpha'); $element = GETPOST('element','alpha',2);
$table_element = GETPOST('table_element','alpha'); $table_element = GETPOST('table_element','alpha',2);
$fk_element = GETPOST('fk_element','alpha'); $fk_element = GETPOST('fk_element','alpha',2);
/* /*
* View * View
@ -47,11 +47,11 @@ top_httphead();
// Load original field value // Load original field value
if (! empty($field) && ! empty($element) && ! empty($table_element) && ! empty($fk_element)) 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_ $field = substr($field, 8); // remove prefix val_
$value = GETPOST('value','alpha'); $type = GETPOST('type','alpha',2);
$type = GETPOST('type','alpha'); $value = ($type == 'ckeditor' ? GETPOST('value','',2) : GETPOST('value','alpha',2));
$savemethod = GETPOST('savemethod','alpha'); $savemethod = GETPOST('savemethod','alpha',2);
$savemethodname = (! empty($savemethod) ? $savemethod : 'setValueFrom'); $savemethodname = (! empty($savemethod) ? $savemethod : 'setValueFrom');
$view=''; $view='';
@ -98,7 +98,7 @@ if (! empty($field) && ! empty($element) && ! empty($table_element) && ! empty($
} }
else if ($type == 'datepicker') else if ($type == 'datepicker')
{ {
$timestamp = GETPOST('timestamp','int'); $timestamp = GETPOST('timestamp','int',2);
$format = 'date'; $format = 'date';
$newvalue = ($timestamp / 1000); $newvalue = ($timestamp / 1000);
} }

View File

@ -49,7 +49,13 @@ if (! empty($id) && ! empty($action) && ! empty($htmlname))
$soc->fetch($id); $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);
} }
?> ?>

View File

@ -42,6 +42,7 @@ class Form
{ {
var $db; var $db;
var $error; var $error;
var $num;
// Cache arrays // Cache arrays
var $cache_types_paiements=array(); 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 string $preselected Name of Value to show/edit (not used in this function)
* @param object $object Object * @param object $object Object
* @param boolean $perm Permission to allow button to edit parameter * @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 * @param string $moreparam More param to add on a href URL
* @return string HTML edit field * @return string HTML edit field
*/ */
@ -119,7 +120,7 @@ class Form
* @param string $value Value to show/edit * @param string $value Value to show/edit
* @param object $object Object * @param object $object Object
* @param boolean $perm Permission to allow button to edit parameter * @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 string $editvalue When in edit mode, use this value as $value instead of value
* @param object $extObject External object * @param object $extObject External object
* @param string $success Success message * @param string $success Success message
@ -785,7 +786,6 @@ class Form
} }
} }
/** /**
* Return list of all contacts (for a third party or all) * Return list of all contacts (for a third party or all)
* *
@ -800,9 +800,33 @@ class Form
* @return int <0 if KO, Nb of contact in list if OK * @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 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)
*
* @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 selectcontacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $options_only=false)
{ {
global $conf,$langs; global $conf,$langs;
$langs->load('companies');
$out='';
// On recherche les societes // On recherche les societes
$sql = "SELECT sp.rowid, sp.name as name, sp.firstname, sp.poste"; $sql = "SELECT sp.rowid, sp.name as name, sp.firstname, sp.poste";
$sql.= " FROM ".MAIN_DB_PREFIX ."socpeople as sp"; $sql.= " FROM ".MAIN_DB_PREFIX ."socpeople as sp";
@ -815,10 +839,9 @@ class Form
if ($resql) if ($resql)
{ {
$num=$this->db->num_rows($resql); $num=$this->db->num_rows($resql);
if ($num == 0) return 0;
if ($htmlname != 'none') print '<select class="flat'.($moreclass?' '.$moreclass:'').'" id="'.$htmlname.'" name="'.$htmlname.'">'; if ($htmlname != 'none' || $options_only) $out.= '<select class="flat'.($moreclass?' '.$moreclass:'').'" id="'.$htmlname.'" name="'.$htmlname.'">';
if ($showempty) print '<option value="0"></option>'; if ($showempty) $out.= '<option value="0"></option>';
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
if ($num) if ($num)
@ -842,39 +865,45 @@ class Form
if (is_array($limitto) && count($limitto) && ! in_array($obj->rowid,$limitto)) $disabled=1; if (is_array($limitto) && count($limitto) && ! in_array($obj->rowid,$limitto)) $disabled=1;
if ($selected && $selected == $obj->rowid) if ($selected && $selected == $obj->rowid)
{ {
print '<option value="'.$obj->rowid.'"'; $out.= '<option value="'.$obj->rowid.'"';
if ($disabled) print ' disabled="disabled"'; if ($disabled) $out.= ' disabled="disabled"';
print ' selected="selected">'; $out.= ' selected="selected">';
print $contactstatic->getFullName($langs); $out.= $contactstatic->getFullName($langs);
if ($showfunction && $obj->poste) print ' ('.$obj->poste.')'; if ($showfunction && $obj->poste) $out.= ' ('.$obj->poste.')';
print '</option>'; $out.= '</option>';
} }
else else
{ {
print '<option value="'.$obj->rowid.'"'; $out.= '<option value="'.$obj->rowid.'"';
if ($disabled) print ' disabled="disabled"'; if ($disabled) $out.= ' disabled="disabled"';
print '>'; $out.= '>';
print $contactstatic->getFullName($langs); $out.= $contactstatic->getFullName($langs);
if ($showfunction && $obj->poste) print ' ('.$obj->poste.')'; if ($showfunction && $obj->poste) $out.= ' ('.$obj->poste.')';
print '</option>'; $out.= '</option>';
} }
} }
else else
{ {
if ($selected == $obj->rowid) if ($selected == $obj->rowid)
{ {
print $contactstatic->getFullName($langs); $out.= $contactstatic->getFullName($langs);
if ($showfunction && $obj->poste) print ' ('.$obj->poste.')'; if ($showfunction && $obj->poste) $out.= ' ('.$obj->poste.')';
} }
} }
$i++; $i++;
} }
} }
if ($htmlname != 'none') else
{ {
print '</select>'; $out.= '<option value="-1" selected="selected" disabled="disabled">'.$langs->trans("NoContactDefined").'</option>';
} }
return $num; if ($htmlname != 'none' || $options_only)
{
$out.= '</select>';
}
$this->num = $num;
return $out;
} }
else else
{ {
@ -3020,6 +3049,7 @@ class Form
$return.= $this->error; $return.= $this->error;
} }
$this->num = $num;
return $return; return $return;
} }

View File

@ -509,6 +509,9 @@ class FormCompany
* @param string $limitto Disable answers that are not id in this array list * @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 * @param int $forceid This is to force antoher object id than object->id
* @return void * @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) function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0)
{ {

View File

@ -225,14 +225,24 @@ function ajax_combobox($htmlname, $event=array())
var method = obj.method; var method = obj.method;
var url = obj.url; var url = obj.url;
var htmlname = obj.htmlname; var htmlname = obj.htmlname;
$.get(url, $.getJSON(url,
{ {
action: method, action: method,
id: id, id: id,
htmlname: htmlname htmlname: htmlname
}, },
function(response) { 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);
}); });
} }
});'; });';

View File

@ -54,7 +54,7 @@ $userstatic=new User($db);
<tr <?php echo $bc[$var]; ?>> <tr <?php echo $bc[$var]; ?>>
<td nowrap="nowrap"><?php echo img_object('','user').' '.$langs->trans("Users"); ?></td> <td nowrap="nowrap"><?php echo img_object('','user').' '.$langs->trans("Users"); ?></td>
<td><?php echo $conf->global->MAIN_INFO_SOCIETE_NOM; ?></td> <td><?php echo $conf->global->MAIN_INFO_SOCIETE_NOM; ?></td>
<td><?php echo $form->select_users($user->id,'contactid',0,$userAlreadySelected); ?></td> <td><?php echo $form->select_users($user->id,'userid',0,$userAlreadySelected); ?></td>
<td><?php echo $formcompany->selectTypeContact($object, '', 'type','internal'); ?></td> <td><?php echo $formcompany->selectTypeContact($object, '', 'type','internal'); ?></td>
<td align="right" colspan="3" ><input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"></td> <td align="right" colspan="3" ><input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"></td>
</tr> </tr>
@ -70,19 +70,31 @@ $userstatic=new User($db);
<tr <?php echo $bc[$var]; ?>> <tr <?php echo $bc[$var]; ?>>
<td nowrap="nowrap"><?php echo img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); ?></td> <td nowrap="nowrap"><?php echo img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); ?></td>
<?php if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT) { ?>
<td>
<?php
$events=array();
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
print $form->select_company($object->socid,'socid','',1,0,0,$events);
?>
</td>
<td>
<?php $nbofcontacts=$form->select_contacts($object->socid, '', 'contactid'); ?>
</td>
<?php } else { ?>
<td> <td>
<?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?> <?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?>
<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany'); ?> <?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany'); ?>
</td> </td>
<td> <td>
<?php $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); ?> <?php $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); ?>
<?php if ($nbofcontacts == 0) echo $langs->trans("NoContactDefined"); ?>
</td> </td>
<?php } ?>
<td> <td>
<?php $formcompany->selectTypeContact($object, '', 'type','external'); ?> <?php $formcompany->selectTypeContact($object, '', 'type','external'); ?>
</td> </td>
<td align="right" colspan="3" > <td align="right" colspan="3" >
<input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"<?php if (! $nbofcontacts) echo ' disabled="disabled"'; ?>> <input type="submit" id="add-customer-contact" class="button" value="<?php echo $langs->trans("Add"); ?>"<?php if (! $nbofcontacts) echo ' disabled="disabled"'; ?>>
</td> </td>
</tr> </tr>
</form> </form>

View File

@ -32,7 +32,7 @@ elseif ($module == 'project_task') { $note_private = 'note_private'; }
elseif ($module == 'invoice_supplier') { $permission=$user->rights->fournisseur->facture->creer; } elseif ($module == 'invoice_supplier') { $permission=$user->rights->fournisseur->facture->creer; }
elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->commande->creer; } elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->commande->creer; }
if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200:?:1:12:100'; if (! empty($conf->global->FCKEDITOR_ENABLE_SOCIETE)) $typeofdata='ckeditor:dolibarr_notes:100%:200::1:12:100';
else $typeofdata='textarea:12:100'; else $typeofdata='textarea:12:100';
?> ?>

View File

@ -55,7 +55,8 @@ if ($action == 'addcontact' && $user->rights->fournisseur->commande->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -820,7 +820,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -55,7 +55,8 @@ if ($action == 'addcontact' && $user->rights->fournisseur->facture->creer)
if ($result > 0 && $id > 0) 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) if ($result >= 0)

View File

@ -839,7 +839,8 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
if ($result > 0 && $id > 0) 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) if ($result >= 0)