mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Uniformize code for contacts forms.
This commit is contained in:
parent
8f3e9b1832
commit
d8b8f8c646
|
|
@ -41,13 +41,15 @@ For developers:
|
|||
- New: Add new hook function addMoreActionsButtons to allow a module to add/replace
|
||||
action buttons into an element.
|
||||
- New: Normalize code for barcode generation to match other modules.
|
||||
- New: Uniformize code for contacts forms.
|
||||
|
||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
||||
- The deprecated way (with 4 parameters) to declare a new tab into a module descriptor file has been
|
||||
removed. You must now use the 6 parameters way. See file modMyModule.class.php for example.
|
||||
-
|
||||
- Remove the javascrit function ac_delay() that is not used anymore by core code.
|
||||
|
||||
|
||||
***** ChangeLog for 3.5 compared to 3.4.* *****
|
||||
For users:
|
||||
|
|
|
|||
|
|
@ -135,27 +135,6 @@ else
|
|||
}
|
||||
print '</td></tr>';
|
||||
|
||||
/*
|
||||
// USER_USE_SEARCH_TO_SELECT
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td>'.$langs->trans("HideClosedUserComboBox").'</td>';
|
||||
print '<td align="center" width="20"> </td>';
|
||||
if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX))
|
||||
{
|
||||
print '<td align="center" width="100"><a href="'.$_SERVER['PHP_SELF'].'?action=sethideinactiveuser&status=0">';
|
||||
print img_picto($langs->trans("Activated"),'switch_on');
|
||||
print '</a></td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<td align="center" width="100"><a href="'.$_SERVER['PHP_SELF'].'?action=sethideinactiveuser&status=1">';
|
||||
print img_picto($langs->trans("Disabled"),'switch_off');
|
||||
print '</a></td>';
|
||||
}
|
||||
print '</tr>';
|
||||
*/
|
||||
|
||||
print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
|
|
|||
|
|
@ -60,8 +60,8 @@ $object = new ActionComm($db);
|
|||
* Actions
|
||||
*/
|
||||
|
||||
// Add new nouveau contact
|
||||
if ($action == 'addcontact')
|
||||
// Add new contact
|
||||
if ($action == 'addcontact' && $user->rights->action->creer)
|
||||
{
|
||||
$result = $object->fetch($id);
|
||||
|
||||
|
|
@ -233,189 +233,20 @@ if ($id > 0 || ! empty($ref))
|
|||
// Location
|
||||
print '<tr><td>'.$langs->trans("Location").'</td><td colspan="2">'.$object->location.'</td></tr>';
|
||||
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '</div>';
|
||||
/*
|
||||
* Lignes de contacts
|
||||
*/
|
||||
print '<br><table class="noborder" width="100%">';
|
||||
|
||||
/*
|
||||
* Ajouter une ligne de contact
|
||||
* Non affiche en mode modification de ligne
|
||||
*/
|
||||
if ($action != 'editline')
|
||||
dol_fiche_end();
|
||||
|
||||
print '<br>';
|
||||
|
||||
// Contacts lines (modules that overwrite templates must declare this into descriptor)
|
||||
$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
|
||||
foreach($dirtpls as $reldir)
|
||||
{
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Source").'</td>';
|
||||
print '<td>'.$langs->trans("Company").'</td>';
|
||||
print '<td>'.$langs->trans("Contacts").'</td>';
|
||||
print '<td>'.$langs->trans("ContactType").'</td>';
|
||||
print '<td colspan="3"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
$var = false;
|
||||
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="internal">';
|
||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||
|
||||
// Ligne ajout pour contact interne
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
||||
print '<td class="nowrap">';
|
||||
print img_object('','user').' '.$langs->trans("Users");
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
print $conf->global->MAIN_INFO_SOCIETE_NOM;
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
// On recupere les id des users deja selectionnes
|
||||
$form->select_users($user->id,'contactid',0);
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($object, '', 'type','internal','rowid');
|
||||
print '</td>';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="external">';
|
||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||
|
||||
// Line to add external contact. Only if project is linked to a third party.
|
||||
if ($object->socid)
|
||||
{
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]>";
|
||||
|
||||
print '<td class="nowrap">';
|
||||
print img_object('','contact').' '.$langs->trans("ThirdPartyContacts");
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid;
|
||||
$selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany');
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$nbofcontacts=$form->select_contacts($selectedCompany,'','contactid');
|
||||
if ($nbofcontacts == 0) print $langs->trans("NoContactDefinedForThirdParty");
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($object,'','type','external','rowid');
|
||||
print '</td>';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"';
|
||||
if (! $nbofcontacts) print ' disabled="true"';
|
||||
print '></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
print "</form>";
|
||||
|
||||
print '<tr><td colspan="6"> </td></tr>';
|
||||
$res=@include dol_buildpath($reldir.'/contacts.tpl.php');
|
||||
if ($res) break;
|
||||
}
|
||||
|
||||
// Liste des contacts lies
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Source").'</td>';
|
||||
print '<td>'.$langs->trans("Company").'</td>';
|
||||
print '<td>'.$langs->trans("Contacts").'</td>';
|
||||
print '<td>'.$langs->trans("ContactType").'</td>';
|
||||
print '<td align="center">'.$langs->trans("Status").'</td>';
|
||||
print '<td colspan="2"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
$companystatic = new Societe($db);
|
||||
$var = true;
|
||||
|
||||
foreach(array('internal','external') as $source)
|
||||
{
|
||||
$tab = $object->liste_contact(-1,$source);
|
||||
$num=count($tab);
|
||||
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$var = !$var;
|
||||
|
||||
print '<tr '.$bc[$var].' valign="top">';
|
||||
|
||||
// Source
|
||||
print '<td align="left">';
|
||||
if ($tab[$i]['source']=='internal') print $langs->trans("User");
|
||||
if ($tab[$i]['source']=='external') print $langs->trans("ThirdPartyContact");
|
||||
print '</td>';
|
||||
|
||||
// Societe
|
||||
print '<td align="left">';
|
||||
if ($tab[$i]['socid'] > 0)
|
||||
{
|
||||
$companystatic->fetch($tab[$i]['socid']);
|
||||
print $companystatic->getNomUrl(1);
|
||||
}
|
||||
if ($tab[$i]['socid'] < 0)
|
||||
{
|
||||
print $conf->global->MAIN_INFO_SOCIETE_NOM;
|
||||
}
|
||||
if (! $tab[$i]['socid'])
|
||||
{
|
||||
print ' ';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Contact
|
||||
print '<td>';
|
||||
if ($tab[$i]['source']=='internal')
|
||||
{
|
||||
print '<a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$tab[$i]['id'].'">';
|
||||
print img_object($langs->trans("ShowUser"),"user").' '.$tab[$i]['nom'].'</a>';
|
||||
}
|
||||
if ($tab[$i]['source']=='external')
|
||||
{
|
||||
print '<a href="'.DOL_URL_ROOT.'/contact/fiche.php?id='.$tab[$i]['id'].'">';
|
||||
print img_object($langs->trans("ShowContact"),"contact").' '.$tab[$i]['nom'].'</a>';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Type de contact
|
||||
print '<td>'.$tab[$i]['libelle'].'</td>';
|
||||
|
||||
// Statut
|
||||
print '<td align="center">';
|
||||
// Activation desativation du contact
|
||||
if ($object->statut >= 0 ) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=swapstatut&line='.$tab[$i]['rowid'].'">';
|
||||
print $contactstatic->LibStatut($tab[$i]['status'],3);
|
||||
if ($object->statut >= 0 ) print '</a>';
|
||||
print '</td>';
|
||||
|
||||
// Icon update et delete
|
||||
print '<td align="center" nowrap>';
|
||||
/*if ($user->rights->business->write && $userAccess)
|
||||
{*/
|
||||
print ' ';
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=deleteline&line='.$tab[$i]['rowid'].'">';
|
||||
print img_delete();
|
||||
print '</a>';
|
||||
//}
|
||||
print '</td>';
|
||||
|
||||
print "</tr>\n";
|
||||
|
||||
$i ++;
|
||||
}
|
||||
}
|
||||
print "</table>";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -71,16 +71,16 @@ if ($action == 'addcontact' && $user->rights->facture->creer)
|
|||
if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
|
||||
{
|
||||
$langs->load("errors");
|
||||
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
|
||||
setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg = '<div class="error">'.$object->error.'</div>';
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// bascule du statut d'un contact
|
||||
// Bascule du statut d'un contact
|
||||
else if ($action == 'swapstatut' && $user->rights->facture->creer)
|
||||
{
|
||||
if ($object->fetch($id))
|
||||
|
|
@ -179,7 +179,7 @@ if ($id > 0 || ! empty($ref))
|
|||
print '<td colspan="3">'.$object->client->getNomUrl(1,'compta').'</td></tr>';
|
||||
print "</table>";
|
||||
|
||||
print '</div>';
|
||||
dol_fiche_end();
|
||||
|
||||
print '<br>';
|
||||
|
||||
|
|
|
|||
|
|
@ -345,7 +345,12 @@ class Conf
|
|||
$this->use_javascript_ajax=1;
|
||||
if (isset($this->global->MAIN_DISABLE_JAVASCRIPT)) $this->use_javascript_ajax=! $this->global->MAIN_DISABLE_JAVASCRIPT;
|
||||
// If no javascript_ajax, Ajax features are disabled.
|
||||
if (! $this->use_javascript_ajax) $this->global->PRODUIT_USE_SEARCH_TO_SELECT=0;
|
||||
if (empty($this->use_javascript_ajax))
|
||||
{
|
||||
unset($this->global->PRODUIT_USE_SEARCH_TO_SELECT);
|
||||
unset($this->global->COMPANY_USE_SEARCH_TO_SELECT);
|
||||
unset($this->global->CONTACT_USE_SEARCH_TO_SELECT);
|
||||
}
|
||||
|
||||
// conf->currency
|
||||
if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR';
|
||||
|
|
|
|||
|
|
@ -673,7 +673,6 @@ class ExtraFields
|
|||
$out = '';
|
||||
if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT && ! $forcecombo)
|
||||
{
|
||||
//$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
|
||||
$out.= ajax_combobox('options_'.$key, $event, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
|
||||
}
|
||||
|
||||
|
|
@ -693,7 +692,6 @@ class ExtraFields
|
|||
$out = '';
|
||||
if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT && ! $forcecombo)
|
||||
{
|
||||
//$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
|
||||
$out.= ajax_combobox('options_'.$key, $event, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
|
||||
}
|
||||
|
||||
|
|
@ -959,18 +957,18 @@ class ExtraFields
|
|||
}
|
||||
$sql.= " WHERE ".$selectkey."='".$this->db->escape($value)."'";
|
||||
//$sql.= ' AND entity = '.$conf->entity;
|
||||
|
||||
|
||||
dol_syslog(get_class($this).':showOutputField:$type=sellist sql='.$sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$value=''; // value was used, so now we reste it to use it to build final output
|
||||
|
||||
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
// Several field into label (eq table:code|libelle:rowid)
|
||||
$fields_label = explode('|',$InfoFieldList[1]);
|
||||
|
||||
|
||||
if(is_array($fields_label))
|
||||
{
|
||||
foreach ($fields_label as $field_toshow)
|
||||
|
|
|
|||
|
|
@ -683,14 +683,14 @@ class Form
|
|||
|
||||
$out='';
|
||||
|
||||
/* TODO Use ajax autocompletion (not finished)
|
||||
/* TODO Use ajax_autocompleter like for products (not finished)
|
||||
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT) && ! $forcecombo)
|
||||
{
|
||||
$placeholder='';
|
||||
|
||||
if ($selected && empty($selected_input_value))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/societe/ajaxcompanies.php';
|
||||
$societe = new Societe($this->db);
|
||||
$societe->fetch($selected);
|
||||
$selected_input_value=$societe->ref;
|
||||
|
|
@ -728,13 +728,13 @@ class Form
|
|||
* @param int $showempty Add an empty field
|
||||
* @param int $showtype Show third party type in combolist (customer, prospect or supplier)
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @return string HTML string with
|
||||
* @deprecated Use select_thirdparty instead
|
||||
*/
|
||||
function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $event=array())
|
||||
function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array())
|
||||
{
|
||||
return $this->select_thirdparty_list($selected,$htmlname, $filter, $showempty, $showtype, $forcecombo, $event);
|
||||
return $this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -746,13 +746,13 @@ class Form
|
|||
* @param int $showempty Add an empty field
|
||||
* @param int $showtype Show third party type in combolist (customer, prospect or supplier)
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param string $filterkey Filter on key value
|
||||
* @param int $outputmode 0=HTML select string, 1=Array
|
||||
* @param int $limit Limit number of answers
|
||||
* @return string HTML string with
|
||||
*/
|
||||
function select_thirdparty_list($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0, $forcecombo=0, $event=array(), $filterkey='', $outputmode=0, $limit=20)
|
||||
function select_thirdparty_list($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0, $forcecombo=0, $events=array(), $filterkey='', $outputmode=0, $limit=20)
|
||||
{
|
||||
global $conf,$user,$langs;
|
||||
|
||||
|
|
@ -800,8 +800,7 @@ class Form
|
|||
{
|
||||
if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT && ! $forcecombo)
|
||||
{
|
||||
//$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
|
||||
$out.= ajax_combobox($htmlname, $event, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
|
||||
$out.= ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
|
||||
}
|
||||
|
||||
// Construct $out and $outarray
|
||||
|
|
@ -943,13 +942,13 @@ class Form
|
|||
* @param string $moreclass Add more class to class style
|
||||
* @param string $showsoc Add company into label
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @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='', $showsoc=0, $forcecombo=0, $event=array(), $options_only=false)
|
||||
function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $showsoc=0, $forcecombo=0, $events=array(), $options_only=false)
|
||||
{
|
||||
print $this->selectcontacts($socid,$selected,$htmlname,$showempty,$exclude,$limitto,$showfunction, $moreclass, $options_only, $showsoc, $forcecombo, $event);
|
||||
print $this->selectcontacts($socid,$selected,$htmlname,$showempty,$exclude,$limitto,$showfunction, $moreclass, $options_only, $showsoc, $forcecombo, $events);
|
||||
return $this->num;
|
||||
}
|
||||
|
||||
|
|
@ -967,10 +966,10 @@ class Form
|
|||
* @param bool $options_only Return options only (for ajax treatment)
|
||||
* @param string $showsoc Add company into label
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @return int <0 if KO, Nb of contact in list if OK
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @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, $showsoc=0, $forcecombo=0, $event=array())
|
||||
function selectcontacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $options_only=false, $showsoc=0, $forcecombo=0, $events=array())
|
||||
{
|
||||
global $conf,$langs;
|
||||
|
||||
|
|
@ -1000,7 +999,7 @@ class Form
|
|||
|
||||
if ($conf->use_javascript_ajax && $conf->global->CONTACT_USE_SEARCH_TO_SELECT && ! $forcecombo && ! $options_only)
|
||||
{
|
||||
$out.= ajax_combobox($htmlname, $event, $conf->global->CONTACT_USE_SEARCH_TO_SELECT);
|
||||
$out.= ajax_combobox($htmlname, $events, $conf->global->CONTACT_USE_SEARCH_TO_SELECT);
|
||||
}
|
||||
|
||||
if ($htmlname != 'none' || $options_only) $out.= '<select class="flat'.($moreclass?' '.$moreclass:'').'" id="'.$htmlname.'" name="'.$htmlname.'">';
|
||||
|
|
@ -3160,10 +3159,10 @@ class Form
|
|||
* @param int $showempty Add an empty field
|
||||
* @param int $showtype Show third party type in combolist (customer, prospect or supplier)
|
||||
* @param int $forcecombo Force to use combo box
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @return void
|
||||
*/
|
||||
function form_thirdparty($page, $selected='', $htmlname='socid', $filter='',$showempty=0, $showtype=0, $forcecombo=0, $event=array())
|
||||
function form_thirdparty($page, $selected='', $htmlname='socid', $filter='',$showempty=0, $showtype=0, $forcecombo=0, $events=array())
|
||||
{
|
||||
global $langs;
|
||||
|
||||
|
|
@ -3174,7 +3173,7 @@ class Form
|
|||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">';
|
||||
print '<tr><td>';
|
||||
print $this->select_company($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $event);
|
||||
print $this->select_company($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events);
|
||||
print '</td>';
|
||||
print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td>';
|
||||
print '</tr></table></form>';
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ class FormCompany
|
|||
* un code donnee mais dans ce cas, le champ pays differe).
|
||||
* Ainsi les liens avec les departements se font sur un departement independemment de son nom.
|
||||
*
|
||||
* @param string $selected Code state preselected (mus be state id)
|
||||
* @param string $selected Code state preselected (mus be state id)
|
||||
* @param string $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show
|
||||
* @param string $htmlname Id of department
|
||||
* @return string String with HTML select
|
||||
|
|
@ -501,7 +501,7 @@ class FormCompany
|
|||
|
||||
|
||||
/**
|
||||
* Return list of third parties
|
||||
* Output list of third parties.
|
||||
*
|
||||
* @param object $object Object we try to find contacts
|
||||
* @param string $var_id Name of id field
|
||||
|
|
@ -509,12 +509,11 @@ class FormCompany
|
|||
* @param string $htmlname Name of HTML form
|
||||
* @param array $limitto Disable answers that are not id in this array list
|
||||
* @param int $forceid This is to force another object id than object->id
|
||||
* @return int The selected third party ID
|
||||
* TODO obsolete ?
|
||||
* cette fonction doit utiliser du javascript quoi qu'il en soit !
|
||||
* autant utiliser le système combobox sans rechargement de page non ?
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param string $moreparam String with more param to add into url when noajax search is used.
|
||||
* @return int The selected third party ID
|
||||
*/
|
||||
function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0)
|
||||
function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0, $events=array(), $moreparam='')
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
|
|
@ -539,6 +538,7 @@ class FormCompany
|
|||
{
|
||||
if ($conf->use_javascript_ajax && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT))
|
||||
{
|
||||
// Use Ajax search
|
||||
$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
|
||||
|
||||
$socid=0;
|
||||
|
|
@ -548,18 +548,63 @@ class FormCompany
|
|||
$socid = $obj->rowid?$obj->rowid:'';
|
||||
}
|
||||
|
||||
// We call a page after a small delay when a new input has been selected
|
||||
$javaScript = "window.location=\'".$_SERVER['PHP_SELF']."?".$var_id."=".($forceid>0?$forceid:$object->id)."&".$htmlname."=\' + document.getElementById(\'".$htmlname."\').value;";
|
||||
$htmloption = 'onChange="ac_delay(\''.$javaScript.'\',\'500\');"'; // When we select with mouse
|
||||
$htmloption.= 'onKeyUp="if (event.keyCode== 13) { ac_delay(\''.$javaScript.'\',\'500\'); }"'; // When we select with keyboard
|
||||
// We recall a page after a small delay when a new input has been selected
|
||||
$htmloption='';
|
||||
//$javaScript = "window.location=\'".$_SERVER['PHP_SELF']."?".$var_id."=".($forceid>0?$forceid:$object->id)."&".$htmlname."=\' + document.getElementById(\'".$htmlname."\').value;";
|
||||
//$htmloption.= 'onChange="ac_delay(\''.$javaScript.'\',\'500\');"'; // When we select with mouse
|
||||
//$htmloption.= 'onKeyUp="if (event.keyCode== 13) { ac_delay(\''.$javaScript.'\',\'500\'); }"'; // When we select with keyboard
|
||||
|
||||
if (count($events)) // If there is some ajax events to run once selection is done, we add code here to run events
|
||||
{
|
||||
print '<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
$("#search_'.$htmlname.'").change(function() {
|
||||
var obj = '.json_encode($events).';
|
||||
$.each(obj, function(key,values) {
|
||||
if (values.method.length) {
|
||||
getMethod'.$htmlname.'(values);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Function used to execute events when search_htmlname change
|
||||
function getMethod'.$htmlname.'(obj) {
|
||||
var id = $("#'.$htmlname.'").val();
|
||||
var method = obj.method;
|
||||
var url = obj.url;
|
||||
var htmlname = obj.htmlname;
|
||||
$.getJSON(url,
|
||||
{
|
||||
action: method,
|
||||
id: id,
|
||||
htmlname: htmlname
|
||||
},
|
||||
function(response) {
|
||||
if (response != null)
|
||||
{
|
||||
$.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);
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
|
||||
print "\n".'<!-- Input text for third party with Ajax.Autocompleter (selectCompaniesForNewContact) -->'."\n";
|
||||
print '<table class="nobordernopadding"><tr class="nobordernopadding">';
|
||||
print '<td class="nobordernopadding">';
|
||||
if ($obj->rowid == 0)
|
||||
{
|
||||
//$langs->load("companies");
|
||||
//print '<input type="text" size="30" id="'.$htmlname.'_label" name="'.$htmlname.'" value="'.$langs->trans("SelectCompany").'" '.$htmloption.' />';
|
||||
print '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="" '.$htmloption.' />';
|
||||
}
|
||||
else
|
||||
|
|
@ -575,8 +620,14 @@ class FormCompany
|
|||
}
|
||||
else
|
||||
{
|
||||
$javaScript = "window.location='".$_SERVER['PHP_SELF']."?".$var_id."=".($forceid>0?$forceid:$object->id)."&".$htmlname."=' + form.".$htmlname.".options[form.".$htmlname.".selectedIndex].value;";
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'" onChange="'.$javaScript.'">';
|
||||
// No Ajax search
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"';
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
$javaScript = "window.location='".$_SERVER['PHP_SELF']."?".$var_id."=".($forceid>0?$forceid:$object->id).$moreparam."&".$htmlname."=' + form.".$htmlname.".options[form.".$htmlname.".selectedIndex].value;";
|
||||
print ' onChange="'.$javaScript.'"';
|
||||
}
|
||||
print '>';
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@
|
|||
|
||||
|
||||
/**
|
||||
* Get value of an HTML field, do Ajax process and show result
|
||||
* Get value of an HTML field, do Ajax process and show result.
|
||||
* The HTML field must be an input text with id=search_$htmlname.
|
||||
*
|
||||
* @param string $selected Preselecte value
|
||||
* @param string $htmlname HTML name of input field
|
||||
|
|
@ -54,11 +55,12 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt
|
|||
$("#'.$htmlname.'").val("");
|
||||
});
|
||||
$("input#search_'.$htmlname.'").change(function() {
|
||||
//console.log(\'keyup\');
|
||||
//console.log(\'change\');
|
||||
$("#'.$htmlname.'").trigger("change");
|
||||
});
|
||||
// Check when keyup
|
||||
$("input#search_'.$htmlname.'").onDelayedKeyup({ handler: function() {
|
||||
//console.log(\'keyup\');
|
||||
if ($(this).val().length == 0)
|
||||
{
|
||||
$("#search_'.$htmlname.'").val("");
|
||||
|
|
@ -120,9 +122,9 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt
|
|||
},
|
||||
dataType: "json",
|
||||
minLength: '.$minLength.',
|
||||
select: function( event, ui ) {
|
||||
select: function( event, ui ) { // Function ran when new value is selected into javascript combo
|
||||
//console.log(\'set value of id with \'+ui.item.id);
|
||||
$("#'.$htmlname.'").val(ui.item.id).trigger("change");
|
||||
$("#'.$htmlname.'").val(ui.item.id).trigger("change"); // Select new value
|
||||
// Disable an element
|
||||
if (options.option_disabled) {
|
||||
if (ui.item.disabled) {
|
||||
|
|
@ -162,6 +164,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt
|
|||
}
|
||||
});
|
||||
}
|
||||
$("#search_'.$htmlname.'").trigger("change"); // To tell that input text field was modified
|
||||
}
|
||||
}).data( "autocomplete" )._renderItem = function( ul, item ) {
|
||||
return $( "<li></li>" )
|
||||
|
|
@ -169,6 +172,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt
|
|||
.append( \'<a><span class="tag">\' + item.label + "</span></a>" )
|
||||
.appendTo(ul);
|
||||
};
|
||||
|
||||
});';
|
||||
$script.= '</script>';
|
||||
|
||||
|
|
@ -293,14 +297,16 @@ function ajax_dialog($title,$message,$w=350,$h=150)
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert a html select field into an ajax combobox
|
||||
* Convert a html select field into an ajax combobox.
|
||||
* Use ajax_combobox() only for small combo list! If not, use instead ajax_autocompleter().
|
||||
* TODO: It is used when COMPANY_USE_SEARCH_TO_SELECT and CONTACT_USE_SEARCH_TO_SELECT are set by html.formcompany.class.php. Should use ajax_autocompleter instead like done by html.form.class.php for select_produits.
|
||||
*
|
||||
* @param string $htmlname Name of html select field
|
||||
* @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param int $minLengthToAutocomplete Minimum length of input string to start autocomplete
|
||||
* @return string Return html string to convert a select field into a combo
|
||||
* @param string $htmlname Name of html select field
|
||||
* @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
|
||||
* @param int $minLengthToAutocomplete Minimum length of input string to start autocomplete
|
||||
* @return string Return html string to convert a select field into a combo
|
||||
*/
|
||||
function ajax_combobox($htmlname, $event=array(), $minLengthToAutocomplete=0)
|
||||
function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
|
|
@ -326,7 +332,7 @@ function ajax_combobox($htmlname, $event=array(), $minLengthToAutocomplete=0)
|
|||
$("#'.$htmlname.'").combobox({
|
||||
minLengthToAutocomplete : '.$minLengthToAutocomplete.',
|
||||
selected : function(event,ui) {
|
||||
var obj = '.json_encode($event).';
|
||||
var obj = '.json_encode($events).';
|
||||
$.each(obj, function(key,values) {
|
||||
if (values.method.length) {
|
||||
getMethod(values);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
*
|
||||
* This template needs:
|
||||
* $object
|
||||
* $withproject (if we are on task contact)
|
||||
*/
|
||||
|
||||
if (! class_exists('Contact')) {
|
||||
|
|
@ -34,6 +35,9 @@ elseif ($module == 'fichinter') { $permission=$user->rights->ficheinter->creer
|
|||
elseif ($module == 'invoice_supplier') { $permission=$user->rights->fournisseur->facture->creer; }
|
||||
elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->commande->creer; }
|
||||
elseif ($module == 'project') { $permission=$user->rights->projet->creer; }
|
||||
elseif ($module == 'action') { $permission=$user->rights->agenda->myactions->create; }
|
||||
elseif ($module == 'shipping') { $permission=$user->rights->expedition->creer; }
|
||||
elseif ($module == 'project_task') { $permission=$user->rights->projet->creer; }
|
||||
elseif (! isset($permission)) { $permission=$user->rights->$module->creer; } // If already defined by caller page
|
||||
|
||||
$formcompany= new FormCompany($db);
|
||||
|
|
@ -64,6 +68,7 @@ $userstatic=new User($db);
|
|||
<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
|
||||
<input type="hidden" name="action" value="addcontact" />
|
||||
<input type="hidden" name="source" value="internal" />
|
||||
<?php if ($withproject) print '<input type="hidden" name="withproject" value="'.$withproject.'">'; ?>
|
||||
<div class="nowrap tagtd"><?php echo img_object('','user').' '.$langs->trans("Users"); ?></div>
|
||||
<div class="tagtd"><?php echo $conf->global->MAIN_INFO_SOCIETE_NOM; ?></div>
|
||||
<div class="tagtd maxwidthonsmartphone"><?php echo $form->select_dolusers($user->id, 'userid', 0, (! empty($userAlreadySelected)?$userAlreadySelected:null), 0, null, null, 0, 56); ?></div>
|
||||
|
|
@ -79,29 +84,24 @@ $userstatic=new User($db);
|
|||
<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
|
||||
<input type="hidden" name="action" value="addcontact" />
|
||||
<input type="hidden" name="source" value="external" />
|
||||
<?php if ($withproject) print '<input type="hidden" name="withproject" value="'.$withproject.'">'; ?>
|
||||
<div class="tagtd nowrap"><?php echo img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); ?></div>
|
||||
<?php if ($conf->use_javascript_ajax && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) { ?>
|
||||
<?php
|
||||
$events=array();
|
||||
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
|
||||
?>
|
||||
<div class="tagtd nowrap maxwidthonsmartphone">
|
||||
<?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);
|
||||
?>
|
||||
</div>
|
||||
<div class="tagtd maxwidthonsmartphone">
|
||||
<?php $nbofcontacts=$form->select_contacts($object->socid, '', 'contactid'); ?>
|
||||
</div>
|
||||
<?php } else { ?>
|
||||
<div class="tagtd maxwidthonsmartphone">
|
||||
<?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', '', 0, $events); ?>
|
||||
</div>
|
||||
<div class="tagtd maxwidthonsmartphone">
|
||||
<?php $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="tagtd maxwidthonsmartphone">
|
||||
<?php $formcompany->selectTypeContact($object, '', 'type','external'); ?>
|
||||
<?php
|
||||
$tmpobject=$object;
|
||||
if ($object->element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc;
|
||||
$formcompany->selectTypeContact($tmpobject, '', 'type','external'); ?>
|
||||
</div>
|
||||
<div class="tagtd"> </div>
|
||||
<div class="tagtd" align="right">
|
||||
|
|
@ -124,7 +124,11 @@ $userstatic=new User($db);
|
|||
|
||||
<?php
|
||||
foreach(array('internal','external') as $source) {
|
||||
$tab = $object->liste_contact(-1,$source);
|
||||
|
||||
$tmpobject=$object;
|
||||
if ($object->element == 'shipping' && is_object($objectsrc)) $tmpobject=$objectsrc;
|
||||
|
||||
$tab = $tmpobject->liste_contact(-1,$source);
|
||||
$num=count($tab);
|
||||
|
||||
$i = 0;
|
||||
|
|
|
|||
|
|
@ -106,9 +106,9 @@ else if ($action == 'swapstatut' && $user->rights->expedition->creer)
|
|||
}
|
||||
|
||||
// Efface un contact
|
||||
else if ($action == 'deleteline' && $user->rights->expedition->creer)
|
||||
else if ($action == 'deletecontact' && $user->rights->expedition->creer)
|
||||
{
|
||||
$result = $objectsrc->delete_contact($_GET["lineid"]);
|
||||
$result = $objectsrc->delete_contact(GETPOST("lineid"));
|
||||
|
||||
if ($result >= 0)
|
||||
{
|
||||
|
|
@ -233,186 +233,20 @@ if ($id > 0 || ! empty($ref))
|
|||
|
||||
print "</table>";
|
||||
|
||||
print '</div>';
|
||||
dol_fiche_end();
|
||||
|
||||
// Lignes de contacts
|
||||
echo '<br><table class="noborder" width="100%">';
|
||||
echo '<br>';
|
||||
|
||||
/*
|
||||
* Ajouter une ligne de contact. Non affiche en mode modification de ligne
|
||||
*/
|
||||
if ($action != 'editline' && $user->rights->expedition->creer)
|
||||
|
||||
// Contacts lines (modules that overwrite templates must declare this into descriptor)
|
||||
$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
|
||||
foreach($dirtpls as $reldir)
|
||||
{
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Source").'</td>';
|
||||
print '<td>'.$langs->trans("Company").'</td>';
|
||||
print '<td>'.$langs->trans("Contacts").'</td>';
|
||||
print '<td>'.$langs->trans("ContactType").'</td>';
|
||||
print '<td> </td>';
|
||||
print '<td colspan="2"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
$var = false;
|
||||
|
||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="internal">';
|
||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||
|
||||
// Ligne ajout pour contact interne
|
||||
print '<tr '.$bc[$var].'>';
|
||||
|
||||
print '<td class="nowrap">';
|
||||
print img_object('','user').' '.$langs->trans("Users");
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
print $conf->global->MAIN_INFO_SOCIETE_NOM;
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$form->select_users($user->id,'contactid');
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($objectsrc, '', 'type','internal');
|
||||
print '</td>';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="external">';
|
||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||
|
||||
// Ligne ajout pour contact externe
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
|
||||
print '<td class="nowrap">';
|
||||
print img_object('','contact').' '.$langs->trans("ThirdPartyContacts");
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->client->id;
|
||||
$selectedCompany = $formcompany->selectCompaniesForNewContact($objectsrc, 'id', $selectedCompany, 'newcompany', '', $object->id);
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid');
|
||||
if ($nbofcontacts == 0) print $langs->trans("NoContactDefined");
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
|
||||
$formcompany->selectTypeContact($objectsrc, '', 'type','external');
|
||||
print '</td>';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"';
|
||||
if (! $nbofcontacts) print ' disabled="disabled"';
|
||||
print '></td>';
|
||||
print '</tr>';
|
||||
|
||||
print "</form>";
|
||||
|
||||
print '<tr><td colspan="7"> </td></tr>';
|
||||
$res=@include dol_buildpath($reldir.'/contacts.tpl.php');
|
||||
if ($res) break;
|
||||
}
|
||||
|
||||
// List of linked contacts
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Source").'</td>';
|
||||
print '<td>'.$langs->trans("Company").'</td>';
|
||||
print '<td>'.$langs->trans("Contacts").'</td>';
|
||||
print '<td>'.$langs->trans("ContactType").'</td>';
|
||||
print '<td align="center">'.$langs->trans("Status").'</td>';
|
||||
print '<td colspan="2"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
$companystatic=new Societe($db);
|
||||
$var = true;
|
||||
|
||||
foreach(array('internal','external') as $source)
|
||||
{
|
||||
$tab = $objectsrc->liste_contact(-1,$source);
|
||||
$num=count($tab);
|
||||
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$var = !$var;
|
||||
|
||||
print '<tr '.$bc[$var].' valign="top">';
|
||||
|
||||
// Source
|
||||
print '<td align="left">';
|
||||
if ($tab[$i]['source']=='internal') print $langs->trans("User");
|
||||
if ($tab[$i]['source']=='external') print $langs->trans("ThirdPartyContact");
|
||||
print '</td>';
|
||||
|
||||
// Societe
|
||||
print '<td align="left">';
|
||||
if ($tab[$i]['socid'] > 0)
|
||||
{
|
||||
$companystatic->fetch($tab[$i]['socid']);
|
||||
print $companystatic->getNomUrl(1);
|
||||
}
|
||||
if ($tab[$i]['socid'] < 0)
|
||||
{
|
||||
print $conf->global->MAIN_INFO_SOCIETE_NOM;
|
||||
}
|
||||
if (! $tab[$i]['socid'])
|
||||
{
|
||||
print ' ';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Contact
|
||||
print '<td>';
|
||||
if ($tab[$i]['source']=='internal')
|
||||
{
|
||||
$userstatic->id=$tab[$i]['id'];
|
||||
$userstatic->lastname=$tab[$i]['lastname'];
|
||||
$userstatic->firstname=$tab[$i]['firstname'];
|
||||
print $userstatic->getNomUrl(1);
|
||||
}
|
||||
if ($tab[$i]['source']=='external')
|
||||
{
|
||||
$contactstatic->id=$tab[$i]['id'];
|
||||
$contactstatic->lastname=$tab[$i]['lastname'];
|
||||
$contactstatic->firstname=$tab[$i]['firstname'];
|
||||
print $contactstatic->getNomUrl(1);
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Type de contact
|
||||
print '<td>'.$tab[$i]['libelle'].'</td>';
|
||||
|
||||
// Statut
|
||||
print '<td align="center">';
|
||||
// Activation desativation du contact
|
||||
if ($object->statut >= 0) print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=swapstatut&ligne='.$tab[$i]['rowid'].'">';
|
||||
print $contactstatic->LibStatut($tab[$i]['status'],3);
|
||||
if ($object->statut >= 0) print '</a>';
|
||||
print '</td>';
|
||||
|
||||
// Icon update et delete
|
||||
print '<td align="center" class="nowrap" colspan="2">';
|
||||
if ($object->statut < 5 && $user->rights->expedition->creer)
|
||||
{
|
||||
print ' ';
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=deleteline&lineid='.$tab[$i]['rowid'].'">';
|
||||
print img_delete();
|
||||
print '</a>';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print "</tr>\n";
|
||||
|
||||
$i ++;
|
||||
}
|
||||
}
|
||||
print "</table>";
|
||||
}
|
||||
|
||||
llxFooter();
|
||||
|
|
|
|||
|
|
@ -260,7 +260,17 @@ if ($id > 0 || ! empty($ref))
|
|||
/*
|
||||
* Lignes de contacts
|
||||
*/
|
||||
print '<br><table class="noborder" width="100%">';
|
||||
print '<br>';
|
||||
/*
|
||||
// Contacts lines (modules that overwrite templates must declare this into descriptor)
|
||||
$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
|
||||
foreach($dirtpls as $reldir)
|
||||
{
|
||||
$res=@include dol_buildpath($reldir.'/contacts.tpl.php');
|
||||
if ($res) break;
|
||||
}
|
||||
*/
|
||||
print '<table class="noborder" width="100%">';
|
||||
|
||||
/*
|
||||
* Ajouter une ligne de contact
|
||||
|
|
@ -283,7 +293,7 @@ if ($id > 0 || ! empty($ref))
|
|||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="internal">';
|
||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||
print '<input type="hidden" name="withproject" value="'.$withproject.'">';
|
||||
if ($withproject) print '<input type="hidden" name="withproject" value="'.$withproject.'">';
|
||||
|
||||
// Ligne ajout pour contact interne
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
|
@ -299,7 +309,7 @@ if ($id > 0 || ! empty($ref))
|
|||
print '<td colspan="1">';
|
||||
// On recupere les id des users deja selectionnes
|
||||
$contactsofproject=$projectstatic->getListContactId('internal');
|
||||
$form->select_users($user->id,'contactid',0,'',0,'',$contactsofproject);
|
||||
$form->select_users($user->id,'userid',0,'',0,'',$contactsofproject);
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($object, '', 'type','internal','rowid');
|
||||
|
|
@ -317,6 +327,7 @@ if ($id > 0 || ! empty($ref))
|
|||
print '<input type="hidden" name="action" value="addcontact">';
|
||||
print '<input type="hidden" name="source" value="external">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
if ($withproject) print '<input type="hidden" name="withproject" value="'.$withproject.'">';
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
|
@ -326,20 +337,22 @@ if ($id > 0 || ! empty($ref))
|
|||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$events=array();
|
||||
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
|
||||
|
||||
$thirdpartyofproject=$projectstatic->getListContactId('thirdparty');
|
||||
$selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$projectstatic->societe->id;
|
||||
$selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany',$thirdpartyofproject);
|
||||
$selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', $thirdpartyofproject, 0, $events, '&withproject='.$withproject);
|
||||
print '</td>';
|
||||
|
||||
print '<td colspan="1">';
|
||||
$contactofproject=$projectstatic->getListContactId('external');
|
||||
$nbofcontacts=$form->select_contacts($selectedCompany,'','contactid',0,'',$contactofproject);
|
||||
if ($nbofcontacts == 0) print $langs->trans("NoContactDefined");
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($object, '', 'type','external','rowid');
|
||||
print '</td>';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"';
|
||||
print '<td align="right" colspan="3" ><input type="submit" class="button" id="add-customer-contact" value="'.$langs->trans("Add").'"';
|
||||
if (! $nbofcontacts) print ' disabled="disabled"';
|
||||
print '></td>';
|
||||
print '</tr>';
|
||||
|
|
@ -442,6 +455,7 @@ if ($id > 0 || ! empty($ref))
|
|||
}
|
||||
}
|
||||
print "</table>";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user