Social network module

This commit is contained in:
Laurent Destailleur 2018-10-12 11:02:03 +02:00
parent b8eaeb7c62
commit ded5c4c3dd
14 changed files with 204 additions and 68 deletions

View File

@ -980,7 +980,7 @@ else
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOST('phone_mobile','alpha')?GETPOST('phone_mobile','alpha'):$object->phone_mobile).'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOST('phone_mobile','alpha')?GETPOST('phone_mobile','alpha'):$object->phone_mobile).'"></td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled)) if (! empty($conf->socialnetworks->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="member_skype" size="40" value="'.(GETPOST('member_skype','alpha')?GETPOST('member_skype','alpha'):$object->skype).'"></td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="member_skype" size="40" value="'.(GETPOST('member_skype','alpha')?GETPOST('member_skype','alpha'):$object->skype).'"></td></tr>';
} }
@ -1218,12 +1218,24 @@ else
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?GETPOST("phone_mobile"):$object->phone_mobile).'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?GETPOST("phone_mobile"):$object->phone_mobile).'"></td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled)) if (! empty($conf->socialnetworks->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="skype" class="minwidth100" value="'.(isset($_POST["skype"])?GETPOST("skype"):$object->skype).'"></td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="skype" class="minwidth100" value="'.(isset($_POST["skype"])?GETPOST("skype"):$object->skype).'"></td></tr>';
} }
// Birthday // Twitter
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Twitter").'</td><td><input type="text" name="twitter" class="minwidth100" value="'.(isset($_POST["twitter"])?GETPOST("twitter"):$object->twitter).'"></td></tr>';
}
// Facebook
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Facebook").'</td><td><input type="text" name="facebook" class="minwidth100" value="'.(isset($_POST["facebook"])?GETPOST("facebook"):$object->facebook).'"></td></tr>';
}
// Birthday
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n"; print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
print $form->selectDate(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc'); print $form->selectDate(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc');
print "</td></tr>\n"; print "</td></tr>\n";

View File

@ -68,6 +68,8 @@ $search_phone_mobile=GETPOST("search_phone_mobile",'alpha');
$search_fax=GETPOST("search_fax",'alpha'); $search_fax=GETPOST("search_fax",'alpha');
$search_email=GETPOST("search_email",'alpha'); $search_email=GETPOST("search_email",'alpha');
$search_skype=GETPOST("search_skype",'alpha'); $search_skype=GETPOST("search_skype",'alpha');
$search_twitter=GETPOST("search_twitter",'alpha');
$search_facebook=GETPOST("search_facebook",'alpha');
$search_priv=GETPOST("search_priv",'alpha'); $search_priv=GETPOST("search_priv",'alpha');
$search_categ=GETPOST("search_categ",'int'); $search_categ=GETPOST("search_categ",'int');
$search_categ_thirdparty=GETPOST("search_categ_thirdparty",'int'); $search_categ_thirdparty=GETPOST("search_categ_thirdparty",'int');
@ -156,7 +158,9 @@ $arrayfields=array(
'p.phone_mobile'=>array('label'=>"PhoneMobile", 'checked'=>1), 'p.phone_mobile'=>array('label'=>"PhoneMobile", 'checked'=>1),
'p.fax'=>array('label'=>"Fax", 'checked'=>0), 'p.fax'=>array('label'=>"Fax", 'checked'=>0),
'p.email'=>array('label'=>"EMail", 'checked'=>1), 'p.email'=>array('label'=>"EMail", 'checked'=>1),
'p.skype'=>array('label'=>"Skype", 'checked'=>1, 'enabled'=>(! empty($conf->skype->enabled))), 'p.skype'=>array('label'=>"Skype", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))),
'p.twitter'=>array('label'=>"Twitter", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))),
'p.facebook'=>array('label'=>"Facebook", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))),
'p.thirdparty'=>array('label'=>"ThirdParty", 'checked'=>1, 'enabled'=>empty($conf->global->SOCIETE_DISABLE_CONTACTS)), 'p.thirdparty'=>array('label'=>"ThirdParty", 'checked'=>1, 'enabled'=>empty($conf->global->SOCIETE_DISABLE_CONTACTS)),
'p.priv'=>array('label'=>"ContactVisibility", 'checked'=>1, 'position'=>200), 'p.priv'=>array('label'=>"ContactVisibility", 'checked'=>1, 'position'=>200),
'p.datec'=>array('label'=>"DateCreationShort", 'checked'=>0, 'position'=>500), 'p.datec'=>array('label'=>"DateCreationShort", 'checked'=>0, 'position'=>500),
@ -217,6 +221,8 @@ if (empty($reshook))
$search_fax=""; $search_fax="";
$search_email=""; $search_email="";
$search_skype=""; $search_skype="";
$search_twitter="";
$search_facebook="";
$search_priv=""; $search_priv="";
$search_status=-1; $search_status=-1;
$search_categ=''; $search_categ='';
@ -311,6 +317,8 @@ if (strlen($search_phone_pro)) $sql.= natural_search('p.phone', $search_pho
if (strlen($search_phone_mobile)) $sql.= natural_search('p.phone_mobile', $search_phone_mobile); if (strlen($search_phone_mobile)) $sql.= natural_search('p.phone_mobile', $search_phone_mobile);
if (strlen($search_fax)) $sql.= natural_search('p.fax', $search_fax); if (strlen($search_fax)) $sql.= natural_search('p.fax', $search_fax);
if (strlen($search_skype)) $sql.= natural_search('p.skype', $search_skype); if (strlen($search_skype)) $sql.= natural_search('p.skype', $search_skype);
if (strlen($search_twitter)) $sql.= natural_search('p.twitter', $search_twitter);
if (strlen($search_facebook)) $sql.= natural_search('p.facebook', $search_facebook);
if (strlen($search_email)) $sql.= natural_search('p.email', $search_email); if (strlen($search_email)) $sql.= natural_search('p.email', $search_email);
if (strlen($search_zip)) $sql.= natural_search("p.zip",$search_zip); if (strlen($search_zip)) $sql.= natural_search("p.zip",$search_zip);
if ($search_status != '' && $search_status >= 0) $sql.= " AND p.statut = ".$db->escape($search_status); if ($search_status != '' && $search_status >= 0) $sql.= " AND p.statut = ".$db->escape($search_status);
@ -601,6 +609,18 @@ if (! empty($arrayfields['p.skype']['checked']))
print '<input class="flat" type="text" name="search_skype" size="6" value="'.dol_escape_htmltag($search_skype).'">'; print '<input class="flat" type="text" name="search_skype" size="6" value="'.dol_escape_htmltag($search_skype).'">';
print '</td>'; print '</td>';
} }
if (! empty($arrayfields['p.twitter']['checked']))
{
print '<td class="liste_titre">';
print '<input class="flat" type="text" name="search_twitter" size="6" value="'.dol_escape_htmltag($search_twitter).'">';
print '</td>';
}
if (! empty($arrayfields['p.facebook']['checked']))
{
print '<td class="liste_titre">';
print '<input class="flat" type="text" name="search_facebook" size="6" value="'.dol_escape_htmltag($search_facebook).'">';
print '</td>';
}
if (! empty($arrayfields['p.thirdparty']['checked'])) if (! empty($arrayfields['p.thirdparty']['checked']))
{ {
print '<td class="liste_titre">'; print '<td class="liste_titre">';
@ -671,6 +691,8 @@ if (! empty($arrayfields['p.phone_mobile']['checked'])) print_liste_field
if (! empty($arrayfields['p.fax']['checked'])) print_liste_field_titre($arrayfields['p.fax']['label'],$_SERVER["PHP_SELF"],"p.fax", $begin, $param, '', $sortfield,$sortorder); if (! empty($arrayfields['p.fax']['checked'])) print_liste_field_titre($arrayfields['p.fax']['label'],$_SERVER["PHP_SELF"],"p.fax", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.email']['checked'])) print_liste_field_titre($arrayfields['p.email']['label'],$_SERVER["PHP_SELF"],"p.email", $begin, $param, '', $sortfield,$sortorder); if (! empty($arrayfields['p.email']['checked'])) print_liste_field_titre($arrayfields['p.email']['label'],$_SERVER["PHP_SELF"],"p.email", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.skype']['checked'])) print_liste_field_titre($arrayfields['p.skype']['label'],$_SERVER["PHP_SELF"],"p.skype", $begin, $param, '', $sortfield,$sortorder); if (! empty($arrayfields['p.skype']['checked'])) print_liste_field_titre($arrayfields['p.skype']['label'],$_SERVER["PHP_SELF"],"p.skype", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.twitter']['checked'])) print_liste_field_titre($arrayfields['p.twitter']['label'],$_SERVER["PHP_SELF"],"p.twitter", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.facebook']['checked'])) print_liste_field_titre($arrayfields['p.facebook']['label'],$_SERVER["PHP_SELF"],"p.facebook", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.thirdparty']['checked'])) print_liste_field_titre($arrayfields['p.thirdparty']['label'],$_SERVER["PHP_SELF"],"s.nom", $begin, $param, '', $sortfield,$sortorder); if (! empty($arrayfields['p.thirdparty']['checked'])) print_liste_field_titre($arrayfields['p.thirdparty']['label'],$_SERVER["PHP_SELF"],"s.nom", $begin, $param, '', $sortfield,$sortorder);
if (! empty($arrayfields['p.priv']['checked'])) print_liste_field_titre($arrayfields['p.priv']['label'],$_SERVER["PHP_SELF"],"p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder); if (! empty($arrayfields['p.priv']['checked'])) print_liste_field_titre($arrayfields['p.priv']['label'],$_SERVER["PHP_SELF"],"p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder);
// Extra fields // Extra fields
@ -801,7 +823,19 @@ while ($i < min($num,$limit))
// Skype // Skype
if (! empty($arrayfields['p.skype']['checked'])) if (! empty($arrayfields['p.skype']['checked']))
{ {
if (! empty($conf->skype->enabled)) { print '<td>'.dol_print_skype($obj->skype,$obj->rowid,$obj->socid,'AC_SKYPE',18).'</td>'; } if (! empty($conf->socialnetworks->enabled)) { print '<td>'.dol_print_socialnetworks($obj->skype,$obj->rowid,$obj->socid,'skype').'</td>'; }
if (! $i) $totalarray['nbfield']++;
}
// Twitter
if (! empty($arrayfields['p.twitter']['checked']))
{
if (! empty($conf->socialnetworks->enabled)) { print '<td>'.dol_print_socialnetworks($obj->twitter,$obj->rowid,$obj->socid,'twitter').'</td>'; }
if (! $i) $totalarray['nbfield']++;
}
// Facebook
if (! empty($arrayfields['p.facebook']['checked']))
{
if (! empty($conf->socialnetworks->enabled)) { print '<td>'.dol_print_socialnetworks($obj->facebook,$obj->rowid,$obj->socid,'facebook').'</td>'; }
if (! $i) $totalarray['nbfield']++; if (! $i) $totalarray['nbfield']++;
} }
// Company // Company

View File

@ -425,7 +425,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
if (empty($actiontypecode)) $actiontypecode='AC_OTH_AUTO'; // Event insert into agenda automatically if (empty($actiontypecode)) $actiontypecode='AC_OTH_AUTO'; // Event insert into agenda automatically
$object->socid = $sendtosocid; // To link to a company $object->socid = $sendtosocid; // To link to a company
$object->sendtoid = $sendtoid; // To link to contacts/addresses. This is an array. $object->sendtoid = $sendtoid; // To link to contact addresses. This is an array.
$object->actiontypecode = $actiontypecode; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...) $object->actiontypecode = $actiontypecode; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
$object->actionmsg = $actionmsg; // Long text $object->actionmsg = $actionmsg; // Long text
$object->actionmsg2 = $actionmsg2; // Short text $object->actionmsg2 = $actionmsg2; // Short text

View File

@ -609,12 +609,23 @@ abstract class CommonObject
$out.=dol_print_url($this->url,'_goout',0,1); $out.=dol_print_url($this->url,'_goout',0,1);
$outdone++; $outdone++;
} }
if (! empty($conf->skype->enabled)) $out.='<div style="clear: both;">';
if (! empty($conf->socialnetworks->enabled))
{ {
$out.='<div style="clear: both;"></div>'; if ($this->skype) $out.=dol_print_socialnetworks($this->skype,$this->id,$object->id,'skype');
if ($this->skype) $out.=dol_print_skype($this->skype,$this->id,$object->id,'AC_SKYPE');
$outdone++; $outdone++;
} }
if (! empty($conf->socialnetworks->enabled))
{
if ($this->twitter) $out.=dol_print_socialnetworks($this->twitter,$this->id,$object->id,'twitter');
$outdone++;
}
if (! empty($conf->socialnetworks->enabled))
{
if ($this->facebook) $out.=dol_print_socialnetworks($this->facebook,$this->id,$object->id,'facebook');
$outdone++;
}
$out.='</div>';
$out.='<!-- END Part to show address block -->'; $out.='<!-- END Part to show address block -->';

View File

@ -2189,50 +2189,52 @@ function dol_print_email($email,$cid=0,$socid=0,$addlink=0,$max=64,$showinvalid=
} }
/** /**
* Show Skype link * Show social network link
* *
* @param string $skype Skype to show (only skype, without 'Name of recipient' before) * @param string $value Skype to show (only skype, without 'Name of recipient' before)
* @param int $cid Id of contact if known * @param int $cid Id of contact if known
* @param int $socid Id of third party if known * @param int $socid Id of third party if known
* @param int $addlink 0=no link to create action * @param string $type 'skype','facebook',...
* @param int $max Max number of characters to show
* @return string HTML Link * @return string HTML Link
*/ */
function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) function dol_print_socialnetworks($value,$cid,$socid,$type)
{ {
global $conf,$user,$langs; global $conf,$user,$langs;
$newskype=$skype; $newskype=$value;
if (empty($skype)) return '&nbsp;'; if (empty($value)) return '&nbsp;';
if (! empty($addlink)) if (! empty($type))
{ {
$newskype =img_picto($langs->trans("Skype"), 'object_skype.png'); $newskype ='<div class="divsocialnetwork inline-block valignmiddle">';
$newskype.= '&nbsp;'; $newskype.=img_picto($langs->trans(strtoupper($type)), $type.'.png', '', false, 0, 0, '', 'paddingright');
$newskype.=dol_trunc($skype,$max); $newskype.=$value;
$newskype.= '&nbsp;'; if ($type == 'skype')
$newskype.='<a href="skype:';
$newskype.=dol_trunc($skype,$max);
$newskype.='?call" alt="'.$langs->trans("Call").'&nbsp;'.$skype.'" title="'.$langs->trans("Call").'&nbsp;'.$skype.'">';
$newskype.='<img src="'.DOL_URL_ROOT.'/theme/common/skype_callbutton.png" border="0">';
$newskype.='</a>&nbsp;&nbsp;&nbsp;<a href="skype:';
$newskype.=dol_trunc($skype,$max);
$newskype.='?chat" alt="'.$langs->trans("Chat").'&nbsp;'.$skype.'" title="'.$langs->trans("Chat").'&nbsp;'.$skype.'">';
$newskype.='<img src="'.DOL_URL_ROOT.'/theme/common/skype_chatbutton.png" border="0">';
$newskype.='</a>';
if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
{ {
$type='AC_SKYPE'; $link=''; $newskype.= '&nbsp;';
if (! empty($conf->global->AGENDA_ADDACTIONFORSKYPE)) $link='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&amp;backtopage=1&amp;actioncode='.$type.'&amp;contactid='.$cid.'&amp;socid='.$socid.'">'.img_object($langs->trans("AddAction"),"calendar").'</a>'; $newskype.='<a href="skype:';
$newskype='<div class="divskype nowrap">'.$newskype.($link?' '.$link:'').'</div>'; $newskype.=$value;
$newskype.='?call" alt="'.$langs->trans("Call").'&nbsp;'.$value.'" title="'.$langs->trans("Call").'&nbsp;'.$value.'">';
$newskype.='<img src="'.DOL_URL_ROOT.'/theme/common/skype_callbutton.png" border="0">';
$newskype.='</a><a href="skype:';
$newskype.=$value;
$newskype.='?chat" alt="'.$langs->trans("Chat").'&nbsp;'.$value.'" title="'.$langs->trans("Chat").'&nbsp;'.$value.'">';
$newskype.='<img class="paddingleft" src="'.DOL_URL_ROOT.'/theme/common/skype_chatbutton.png" border="0">';
$newskype.='</a>';
} }
if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create && $type=='skype')
{
$addlink='AC_SKYPE'; $link='';
if (! empty($conf->global->AGENDA_ADDACTIONFORSKYPE)) $link='<a href="'.DOL_URL_ROOT.'/comm/action/card.php?action=create&amp;backtopage=1&amp;actioncode='.$addlink.'&amp;contactid='.$cid.'&amp;socid='.$socid.'">'.img_object($langs->trans("AddAction"),"calendar").'</a>';
$newskype.=($link?' '.$link:'');
}
$newskype.='</div>';
} }
else else
{ {
$langs->load("errors"); $langs->load("errors");
$newskype.=img_warning($langs->trans("ErrorBadSkype",$skype)); $newskype.=img_warning($langs->trans("ErrorBadSocialNetworkValue",$value));
} }
return $newskype; return $newskype;
} }
@ -3151,11 +3153,13 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
//if (in_array($picto, array('switch_off', 'switch_on', 'off', 'on'))) //if (in_array($picto, array('switch_off', 'switch_on', 'off', 'on')))
if (empty($srconly) && in_array($pictowithoutext, array( if (empty($srconly) && in_array($pictowithoutext, array(
'bank', 'close_title', 'delete', 'edit', 'ellipsis-h', 'filter', 'grip', 'grip_title', 'list', 'listlight', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', 'bank', 'close_title', 'delete', 'edit', 'ellipsis-h', 'filter', 'grip', 'grip_title', 'list', 'listlight', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize',
'note','switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow') 'note','switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow',
)) { 'skype','twitter','facebook'
)
)) {
$fakey = $pictowithoutext; $fakey = $pictowithoutext;
$facolor = ''; $fasize = ''; $facolor = ''; $fasize = '';
$marginleftonlyshort = 0; $marginleftonlyshort = 2;
if ($pictowithoutext == 'switch_off') { if ($pictowithoutext == 'switch_off') {
$fakey = 'fa-toggle-off'; $fakey = 'fa-toggle-off';
$facolor = '#999'; $facolor = '#999';
@ -3237,12 +3241,13 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
else { else {
$fakey = 'fa-'.$pictowithoutext; $fakey = 'fa-'.$pictowithoutext;
$facolor = '#444'; $facolor = '#444';
$marginleftonlyshort=0;
} }
if (preg_match('/class="([^"]+)"/', $moreatt, $reg)) { if (preg_match('/class="([^"]+)"/', $moreatt, $reg)) {
$morecss.= ($morecss?' ':'').$reg[1]; $morecss.= ($morecss?' ':'').$reg[1];
} }
$enabledisablehtml = '<span class="fa '.$fakey.' '.($marginleftonlyshort?'marginleftonlyshort':'marginleftonly').' valignmiddle'.($morecss?' '.$morecss:'').'" style="'.($fasize?('font-size: '.$fasize.';'):'').($facolor?(' color: '.$facolor.';'):'').'" alt="'.dol_escape_htmltag($titlealt).'"'.(($notitle || empty($title))?'':' title="'.dol_escape_htmltag($title).'"').($moreatt?' '.$moreatt:'').'>'; $enabledisablehtml = '<span class="fa '.$fakey.' '.($marginleftonlyshort?($marginleftonlyshort==1?'marginleftonlyshort':'marginleftonly'):'').' valignmiddle'.($morecss?' '.$morecss:'').'" style="'.($fasize?('font-size: '.$fasize.';'):'').($facolor?(' color: '.$facolor.';'):'').'" alt="'.dol_escape_htmltag($titlealt).'"'.(($notitle || empty($title))?'':' title="'.dol_escape_htmltag($title).'"').($moreatt?' '.$moreatt:'').'>';
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
$enabledisablehtml.= $titlealt; $enabledisablehtml.= $titlealt;
} }

View File

@ -898,7 +898,7 @@ DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of tax stamps DictionaryRevenueStamp=Amount of tax stamps
DictionaryPaymentConditions=Payment terms DictionaryPaymentConditions=Payment terms
DictionaryPaymentModes=Payment modes DictionaryPaymentModes=Payment modes
DictionaryTypeContact=Contact/Address types DictionaryTypeContact=Contact address types
DictionaryTypeOfContainer=Type of website pages/containers DictionaryTypeOfContainer=Type of website pages/containers
DictionaryEcotaxe=Ecotax (WEEE) DictionaryEcotaxe=Ecotax (WEEE)
DictionaryPaperFormat=Paper formats DictionaryPaperFormat=Paper formats
@ -1137,7 +1137,7 @@ ExtraFieldsLinesRec=Complementary attributes (templates invoices lines)
ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines)
ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines)
ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsThirdParties=Complementary attributes (thirdparty)
ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsContacts=Complementary attributes (contact address)
ExtraFieldsMember=Complementary attributes (member) ExtraFieldsMember=Complementary attributes (member)
ExtraFieldsMemberType=Complementary attributes (member type) ExtraFieldsMemberType=Complementary attributes (member type)
ExtraFieldsCustomerInvoices=Complementary attributes (invoices) ExtraFieldsCustomerInvoices=Complementary attributes (invoices)
@ -1695,7 +1695,7 @@ ListOfNotificationsPerUser=List of notifications per user*
ListOfNotificationsPerUserOrContact=List of notifications per user* or per contact** ListOfNotificationsPerUserOrContact=List of notifications per user* or per contact**
ListOfFixedNotifications=List of fixed notifications ListOfFixedNotifications=List of fixed notifications
GoOntoUserCardToAddMore=Go on the tab "Notifications" of a user to add or remove notifications for users GoOntoUserCardToAddMore=Go on the tab "Notifications" of a user to add or remove notifications for users
GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contacts/addresses GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contact addresses
Threshold=Threshold Threshold=Threshold
BackupDumpWizard=Wizard to build database backup dump file BackupDumpWizard=Wizard to build database backup dump file
SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason:

View File

@ -15,7 +15,7 @@ BoxLastSuppliers=Latest modified suppliers
BoxLastCustomerOrders=Latest customer orders BoxLastCustomerOrders=Latest customer orders
BoxLastActions=Latest actions BoxLastActions=Latest actions
BoxLastContracts=Latest contracts BoxLastContracts=Latest contracts
BoxLastContacts=Latest contacts/addresses BoxLastContacts=Latest contact addresses
BoxLastMembers=Latest members BoxLastMembers=Latest members
BoxFicheInter=Latest interventions BoxFicheInter=Latest interventions
BoxCurrentAccounts=Open accounts balance BoxCurrentAccounts=Open accounts balance
@ -34,7 +34,7 @@ BoxTitleLastFicheInter=Latest %s modified interventions
BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid
BoxTitleOldestUnpaidSupplierBills=Supplier Invoices: oldest %s unpaid BoxTitleOldestUnpaidSupplierBills=Supplier Invoices: oldest %s unpaid
BoxTitleCurrentAccounts=Open Accounts: balances BoxTitleCurrentAccounts=Open Accounts: balances
BoxTitleLastModifiedContacts=Contacts/Addresses: latest %s modified BoxTitleLastModifiedContacts=Contact addresses: latest %s modified
BoxMyLastBookmarks=Bookmarks: latest %s modified BoxMyLastBookmarks=Bookmarks: latest %s modified
BoxOldestExpiredServices=Oldest active expired services BoxOldestExpiredServices=Oldest active expired services
BoxLastExpiredServices=Latest %s oldest contacts with active expired services BoxLastExpiredServices=Latest %s oldest contacts with active expired services

View File

@ -3,7 +3,7 @@ ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one
ErrorSetACountryFirst=Set the country first ErrorSetACountryFirst=Set the country first
SelectThirdParty=Select a third party SelectThirdParty=Select a third party
ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information? ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information?
DeleteContact=Delete a contact/address DeleteContact=Delete a contact address
ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information? ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information?
MenuNewThirdParty=New Third Party MenuNewThirdParty=New Third Party
MenuNewCustomer=New Customer MenuNewCustomer=New Customer
@ -19,9 +19,9 @@ ProspectionArea=Prospection area
IdThirdParty=Id third party IdThirdParty=Id third party
IdCompany=Company Id IdCompany=Company Id
IdContact=Contact Id IdContact=Contact Id
Contacts=Contacts/Addresses Contacts=Contact addresses
ThirdPartyContacts=Third party contacts ThirdPartyContacts=Third party contact addresses
ThirdPartyContact=Third party contact/address ThirdPartyContact=Third party contact address
Company=Company Company=Company
CompanyName=Company name CompanyName=Company name
AliasNames=Alias name (commercial, trademark, ...) AliasNames=Alias name (commercial, trademark, ...)
@ -40,7 +40,7 @@ ThirdPartyCustomersWithIdProf12=Customers with %s or %s
ThirdPartySuppliers=Vendors ThirdPartySuppliers=Vendors
ThirdPartyType=Type of company ThirdPartyType=Type of company
Individual=Private individual Individual=Private individual
ToCreateContactWithSameName=Will create automatically a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. ToCreateContactWithSameName=Will create automatically a contact address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough.
ParentCompany=Parent company ParentCompany=Parent company
Subsidiaries=Subsidiaries Subsidiaries=Subsidiaries
ReportByMonth=Report by month ReportByMonth=Report by month
@ -289,16 +289,16 @@ SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself)
DiscountNone=None DiscountNone=None
Supplier=Vendor Supplier=Vendor
AddContact=Create contact AddContact=Create contact
AddContactAddress=Create contact/address AddContactAddress=Create contact address
EditContact=Edit contact EditContact=Edit contact
EditContactAddress=Edit contact/address EditContactAddress=Edit contact address
Contact=Contact Contact=Contact
ContactId=Contact id ContactId=Contact id
ContactsAddresses=Contacts/Addresses ContactsAddresses=Contact addresses
FromContactName=Name: FromContactName=Name:
NoContactDefinedForThirdParty=No contact defined for this third party NoContactDefinedForThirdParty=No contact defined for this third party
NoContactDefined=No contact defined NoContactDefined=No contact defined
DefaultContact=Default contact/address DefaultContact=Default contact address
AddThirdParty=Create third party AddThirdParty=Create third party
DeleteACompany=Delete a company DeleteACompany=Delete a company
PersonalInformations=Personal data PersonalInformations=Personal data
@ -315,8 +315,8 @@ ValidityControledByModule=Validity controlled by module
ThisIsModuleRules=This is rules for this module ThisIsModuleRules=This is rules for this module
ProspectToContact=Prospect to contact ProspectToContact=Prospect to contact
CompanyDeleted=Company "%s" deleted from database. CompanyDeleted=Company "%s" deleted from database.
ListOfContacts=List of contacts/addresses ListOfContacts=List of contact addresses
ListOfContactsAddresses=List of contacts/addresses ListOfContactsAddresses=List of contact addresses
ListOfThirdParties=List of Third Parties ListOfThirdParties=List of Third Parties
ShowCompany=Show Third Party ShowCompany=Show Third Party
ShowContact=Show contact ShowContact=Show contact
@ -333,7 +333,7 @@ NoContactForAnyProposal=This contact is not a contact for any commercial proposa
NoContactForAnyContract=This contact is not a contact for any contract NoContactForAnyContract=This contact is not a contact for any contract
NoContactForAnyInvoice=This contact is not a contact for any invoice NoContactForAnyInvoice=This contact is not a contact for any invoice
NewContact=New contact NewContact=New contact
NewContactAddress=New Contact/Address NewContactAddress=New Contact address
MyContacts=My contacts MyContacts=My contacts
Capital=Capital Capital=Capital
CapitalOf=Capital of %s CapitalOf=Capital of %s
@ -390,7 +390,7 @@ NoDolibarrAccess=No Dolibarr access
ExportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties ExportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties
ExportDataset_company_2=Contacts and their properties ExportDataset_company_2=Contacts and their properties
ImportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties ImportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties
ImportDataset_company_2=Contacts/Addresses and attributes ImportDataset_company_2=Contact addresses and attributes
ImportDataset_company_3=Bank accounts of Third Parties ImportDataset_company_3=Bank accounts of Third Parties
ImportDataset_company_4=Third Parties - sales representatives (assign sales representatives/users to companies) ImportDataset_company_4=Third Parties - sales representatives (assign sales representatives/users to companies)
PriceLevel=Price level PriceLevel=Price level
@ -409,7 +409,7 @@ YouMustCreateContactFirst=To be able to add email notifications, you must first
ListSuppliersShort=List of Vendors ListSuppliersShort=List of Vendors
ListProspectsShort=List of Prospects ListProspectsShort=List of Prospects
ListCustomersShort=List of Customers ListCustomersShort=List of Customers
ThirdPartiesArea=Third Parties/Contacts ThirdPartiesArea=Third Parties and Contacts addresses area
LastModifiedThirdParties=Last %s modified Third Parties LastModifiedThirdParties=Last %s modified Third Parties
UniqueThirdParties=Total of Third Parties UniqueThirdParties=Total of Third Parties
InActivity=Open InActivity=Open

View File

@ -99,7 +99,7 @@ MailSelectedRecipients=Selected recipients
MailingArea=EMailings area MailingArea=EMailings area
LastMailings=Latest %s emailings LastMailings=Latest %s emailings
TargetsStatistics=Targets statistics TargetsStatistics=Targets statistics
NbOfCompaniesContacts=Unique contacts/addresses NbOfCompaniesContacts=Unique contact addresses
MailNoChangePossible=Recipients for validated emailing can't be changed MailNoChangePossible=Recipients for validated emailing can't be changed
SearchAMailing=Search mailing SearchAMailing=Search mailing
SendMailing=Send emailing SendMailing=Send emailing
@ -138,7 +138,7 @@ NbOfTargetedContacts=Current number of targeted contact emails
UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong> UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong>
UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong> UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong>
MailAdvTargetRecipients=Recipients (advanced selection) MailAdvTargetRecipients=Recipients (advanced selection)
AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target AdvTgtTitle=Fill input fields to preselect the third parties or contact addresses to target
AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima
AdvTgtSearchIntHelp=Use interval to select int or float value AdvTgtSearchIntHelp=Use interval to select int or float value
AdvTgtMinVal=Minimum value AdvTgtMinVal=Minimum value
@ -159,8 +159,8 @@ AdvTgtDeleteFilter=Delete filter
AdvTgtSaveFilter=Save filter AdvTgtSaveFilter=Save filter
AdvTgtCreateFilter=Create filter AdvTgtCreateFilter=Create filter
AdvTgtOrCreateNewFilter=Name of new filter AdvTgtOrCreateNewFilter=Name of new filter
NoContactWithCategoryFound=No contact/address with a category found NoContactWithCategoryFound=No contact address with a category found
NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact address with a category found
OutGoingEmailSetup=Outgoing email setup OutGoingEmailSetup=Outgoing email setup
InGoingEmailSetup=Incoming email setup InGoingEmailSetup=Incoming email setup
OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing)

View File

@ -434,7 +434,7 @@ LatestLinkedEvents=Latest %s linked events
CompanyFoundation=Company/Organization CompanyFoundation=Company/Organization
Accountant=Accountant Accountant=Accountant
ContactsForCompany=Contacts for this third party ContactsForCompany=Contacts for this third party
ContactsAddressesForCompany=Contacts/addresses for this third party ContactsAddressesForCompany=Contact addresses for this third party
AddressesForCompany=Addresses for this third party AddressesForCompany=Addresses for this third party
ActionsOnCompany=Events about this third party ActionsOnCompany=Events about this third party
ActionsOnMember=Events about this member ActionsOnMember=Events about this member

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Charles-Fr Benke <charles.fr@benke.fr> * Copyright (C) 2014 Charles-Fr Benke <charles.fr@benke.fr>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>

View File

@ -696,6 +696,9 @@ textarea.centpercent {
height: 28px; height: 28px;
vertical-align: middle; vertical-align: middle;
} }
.divsocialnetwork:not(:first-child) {
padding-left: 20px;
}
div.divsearchfield { div.divsearchfield {
float: <?php print $left; ?>; float: <?php print $left; ?>;
margin-<?php print $right; ?>: 12px; margin-<?php print $right; ?>: 12px;

View File

@ -689,6 +689,9 @@ textarea.centpercent {
height: 28px; height: 28px;
vertical-align: middle; vertical-align: middle;
} }
.divsocialnetwork:not(:first-child) {
padding-left: 20px;
}
div.divsearchfield { div.divsearchfield {
float: <?php print $left; ?>; float: <?php print $left; ?>;
margin-<?php print $right; ?>: 12px; margin-<?php print $right; ?>: 12px;

View File

@ -1000,7 +1000,7 @@ if ($action == 'create' || $action == 'adduserldap')
print '</td></tr>'; print '</td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled)) if (! empty($conf->socialnetworks->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td>'; print '<tr><td>'.$langs->trans("Skype").'</td>';
print '<td>'; print '<td>';
@ -1011,7 +1011,41 @@ if ($action == 'create' || $action == 'adduserldap')
} }
else else
{ {
print '<input class="maxwidth200" type="text" name="skype" value="'.GETPOST('skype').'">'; print '<input class="maxwidth200" type="text" name="skype" value="'.GETPOST('skype','alpha').'">';
}
print '</td></tr>';
}
// Twitter
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Twitter").'</td>';
print '<td>';
if (! empty($ldap_twitter))
{
print '<input type="hidden" name="skype" value="'.$ldap_twitter.'">';
print $ldap_twitter;
}
else
{
print '<input class="maxwidth200" type="text" name="twitter" value="'.GETPOST('twitter','alpha').'">';
}
print '</td></tr>';
}
// Facebook
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Facebook").'</td>';
print '<td>';
if (! empty($ldap_facebook))
{
print '<input type="hidden" name="skype" value="'.$ldap_facebook.'">';
print $ldap_facebook;
}
else
{
print '<input class="maxwidth200" type="text" name="facebook" value="'.GETPOST('facebook','alpha').'">';
} }
print '</td></tr>'; print '</td></tr>';
} }
@ -2195,7 +2229,7 @@ else
print '</td></tr>'; print '</td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled)) if (! empty($conf->socialnetworks->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td>'; print '<tr><td>'.$langs->trans("Skype").'</td>';
print '<td>'; print '<td>';
@ -2211,6 +2245,40 @@ else
print '</td></tr>'; print '</td></tr>';
} }
// Twitter
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Twitter").'</td>';
print '<td>';
if ($caneditfield && empty($object->ldap_sid))
{
print '<input size="40" type="text" name="twitter" class="flat" value="'.$object->twitter.'">';
}
else
{
print '<input type="hidden" name="twitter" value="'.$object->twitter.'">';
print $object->twitter;
}
print '</td></tr>';
}
// Skype
if (! empty($conf->socialnetworks->enabled))
{
print '<tr><td>'.$langs->trans("Facebook").'</td>';
print '<td>';
if ($caneditfield && empty($object->ldap_sid))
{
print '<input size="40" type="text" name="facebook" class="flat" value="'.$object->facebook.'">';
}
else
{
print '<input type="hidden" name="facebook" value="'.$object->facebook.'">';
print $object->facebook;
}
print '</td></tr>';
}
// EMail // EMail
print "<tr>".'<td'.(! empty($conf->global->USER_MAIL_REQUIRED)?' class="fieldrequired"':'').'>'.$langs->trans("EMail").'</td>'; print "<tr>".'<td'.(! empty($conf->global->USER_MAIL_REQUIRED)?' class="fieldrequired"':'').'>'.$langs->trans("EMail").'</td>';
print '<td>'; print '<td>';