From d79ba9695adbdffe7720579817ec2893d1310bba Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 4 Nov 2013 21:41:36 +0100 Subject: [PATCH 01/14] Task 157 : Add a skype button --- htdocs/adherents/class/adherent.class.php | 9 +- htdocs/adherents/fiche.php | 17 +++ htdocs/admin/ldap_contacts.php | 9 ++ htdocs/admin/ldap_members.php | 9 ++ htdocs/admin/ldap_users.php | 10 ++ htdocs/comm/fiche.php | 7 + htdocs/contact/class/contact.class.php | 11 +- htdocs/contact/fiche.php | 29 +++- htdocs/contact/list.php | 20 ++- htdocs/core/class/commonobject.class.php | 5 +- htdocs/core/class/ldap.class.php | 5 +- htdocs/core/lib/company.lib.php | 13 +- htdocs/core/lib/functions.lib.php | 43 ++++++ htdocs/core/modules/modSkype.class.php | 136 ++++++++++++++++++ .../install/mysql/migration/3.4.0-3.5.0.sql | 6 + htdocs/install/mysql/tables/llx_adherent.sql | 1 + htdocs/install/mysql/tables/llx_societe.sql | 1 + htdocs/install/mysql/tables/llx_socpeople.sql | 1 + htdocs/install/mysql/tables/llx_user.sql | 1 + htdocs/langs/en_US/companies.lang | 2 + htdocs/societe/class/societe.class.php | 10 +- htdocs/societe/soc.php | 40 +++++- htdocs/theme/amarok/img/object_skype.png | Bin 0 -> 3451 bytes htdocs/theme/auguria/img/object_skype.png | Bin 0 -> 3451 bytes htdocs/theme/bureau2crea/img/object_skype.png | Bin 0 -> 3451 bytes htdocs/theme/cameleo/img/object_skype.png | Bin 0 -> 3451 bytes htdocs/theme/eldy/img/object_skype.png | Bin 0 -> 3451 bytes 27 files changed, 362 insertions(+), 23 deletions(-) create mode 100644 htdocs/core/modules/modSkype.class.php create mode 100644 htdocs/theme/amarok/img/object_skype.png create mode 100644 htdocs/theme/auguria/img/object_skype.png create mode 100644 htdocs/theme/bureau2crea/img/object_skype.png create mode 100644 htdocs/theme/cameleo/img/object_skype.png create mode 100644 htdocs/theme/eldy/img/object_skype.png diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 255eb1533d9..f12a1b47fee 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -65,6 +65,7 @@ class Adherent extends CommonObject var $country; var $email; + var $skype; var $phone; var $phone_perso; var $phone_mobile; @@ -430,6 +431,7 @@ class Adherent extends CommonObject $sql.= ", country=".($this->country_id>0?"'".$this->country_id."'":"null"); $sql.= ", state_id=".($this->state_id>0?"'".$this->state_id."'":"null"); $sql.= ", email='".$this->email."'"; + $sql.= ", skype='".$this->skype."'"; $sql.= ", phone=" .($this->phone?"'".$this->db->escape($this->phone)."'":"null"); $sql.= ", phone_perso=" .($this->phone_perso?"'".$this->db->escape($this->phone_perso)."'":"null"); $sql.= ", phone_mobile=" .($this->phone_mobile?"'".$this->db->escape($this->phone_mobile)."'":"null"); @@ -526,6 +528,7 @@ class Adherent extends CommonObject $luser->societe_id=$this->societe; $luser->email=$this->email; + $luser->skype=$this->skype; $luser->office_phone=$this->phone; $luser->user_mobile=$this->phone_mobile; @@ -564,6 +567,7 @@ class Adherent extends CommonObject $lthirdparty->zip=$this->zip; $lthirdparty->town=$this->town; $lthirdparty->email=$this->email; + $lthirdparty->skype=$this->skype; $lthirdparty->phone=$this->phone; $lthirdparty->state_id=$this->state_id; $lthirdparty->country_id=$this->country_id; @@ -1047,7 +1051,7 @@ class Adherent extends CommonObject global $langs; $sql = "SELECT d.rowid, d.ref_ext, d.civilite, d.firstname, d.lastname, d.societe as company, d.fk_soc, d.statut, d.public, d.address, d.zip, d.town, d.note,"; - $sql.= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass,"; + $sql.= " d.email, d.skype, d.phone, d.phone_perso, d.phone_mobile, d.login, d.pass,"; $sql.= " d.photo, d.fk_adherent_type, d.morphy, d.entity,"; $sql.= " d.datec as datec,"; $sql.= " d.tms as datem,"; @@ -1115,6 +1119,7 @@ class Adherent extends CommonObject $this->phone_perso = $obj->phone_perso; $this->phone_mobile = $obj->phone_mobile; $this->email = $obj->email; + $this->skype = $obj->skype; $this->photo = $obj->photo; $this->statut = $obj->statut; @@ -1782,6 +1787,7 @@ class Adherent extends CommonObject $this->country = 'France'; $this->morphy = 1; $this->email = 'specimen@specimen.com'; + $this->skype = 'tom.hanson'; $this->phone = '0999999999'; $this->phone_perso = '0999999998'; $this->phone_mobile = '0999999997'; @@ -1853,6 +1859,7 @@ class Adherent extends CommonObject if ($this->town && ! empty($conf->global->LDAP_MEMBER_FIELD_TOWN)) $info[$conf->global->LDAP_MEMBER_FIELD_TOWN] = $this->town; if ($this->country_code && ! empty($conf->global->LDAP_MEMBER_FIELD_COUNTRY)) $info[$conf->global->LDAP_MEMBER_FIELD_COUNTRY] = $this->country_code; if ($this->email && ! empty($conf->global->LDAP_MEMBER_FIELD_MAIL)) $info[$conf->global->LDAP_MEMBER_FIELD_MAIL] = $this->email; + if ($this->skype && ! empty($conf->global->LDAP_MEMBER_FIELD_SKYPE)) $info[$conf->global->LDAP_MEMBER_FIELD_SKYPE] = $this->skype; if ($this->phone && ! empty($conf->global->LDAP_MEMBER_FIELD_PHONE)) $info[$conf->global->LDAP_MEMBER_FIELD_PHONE] = $this->phone; if ($this->phone_perso && ! empty($conf->global->LDAP_MEMBER_FIELD_PHONE_PERSO)) $info[$conf->global->LDAP_MEMBER_FIELD_PHONE_PERSO] = $this->phone_perso; if ($this->phone_mobile && ! empty($conf->global->LDAP_MEMBER_FIELD_MOBILE)) $info[$conf->global->LDAP_MEMBER_FIELD_MOBILE] = $this->phone_mobile; diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index 251eb062b15..d019e4004d8 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -285,6 +285,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer) $object->phone_perso = trim($_POST["phone_perso"]); $object->phone_mobile= trim($_POST["phone_mobile"]); $object->email = trim($_POST["email"]); + $object->skype = trim($_POST["skype"]); $object->birth = $birthdate; $object->typeid = $_POST["typeid"]; @@ -413,6 +414,7 @@ if ($action == 'add' && $user->rights->adherent->creer) $phone=$_POST["phone"]; $phone_perso=$_POST["phone_perso"]; $phone_mobile=$_POST["phone_mobile"]; + $skype=$_POST["member_skype"]; $email=$_POST["member_email"]; $login=$_POST["member_login"]; $pass=$_POST["password"]; @@ -437,6 +439,7 @@ if ($action == 'add' && $user->rights->adherent->creer) $object->phone = $phone; $object->phone_perso = $phone_perso; $object->phone_mobile= $phone_mobile; + $object->skype = $skype; $object->email = $email; $object->login = $login; $object->pass = $pass; @@ -844,6 +847,12 @@ else // Tel mobile print ''.$langs->trans("PhoneMobile").''; + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans("Skype").''; + } + // Birthday print "".$langs->trans("Birthday")."\n"; $form->select_date(($object->naiss ? $object->naiss : -1),'naiss','','',1,'formsoc'); @@ -1080,6 +1089,11 @@ else // Tel mobile print ''.$langs->trans("PhoneMobile").'phone_mobile).'">'; + // Skype + if (! empty($conf->skype->enabled)) { + print ''.$langs->trans("Skype").'skype).'">'; + } + // Birthday print "".$langs->trans("Birthday")."\n"; $form->select_date(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc'); @@ -1398,6 +1412,9 @@ else // Tel mobile print ''.$langs->trans("PhoneMobile").''.dol_print_phone($object->phone_mobile,$object->country_code,0,$object->fk_soc,1).''; + // Skype + print ''.$langs->trans("Skype").''.dol_print_skype($object->skype,0,$object->fk_soc,1).''; + // Birthday print ''.$langs->trans("Birthday").''.dol_print_date($object->birth,'day').''; diff --git a/htdocs/admin/ldap_contacts.php b/htdocs/admin/ldap_contacts.php index 8406bef31a9..a25fe2c13c7 100644 --- a/htdocs/admin/ldap_contacts.php +++ b/htdocs/admin/ldap_contacts.php @@ -61,6 +61,7 @@ if ($action == 'setvalue' && $user->admin) if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_HOMEPHONE',GETPOST("fieldhomephone"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++; + if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_ADDRESS',GETPOST("fieldaddress"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_CONTACT_FIELD_ZIP',GETPOST("fieldzip"),'chaine',0,'',$conf->entity)) $error++; @@ -214,6 +215,14 @@ print ''.$langs->trans("LDAPFieldMobileExample").''; print 'global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS==$conf->global->LDAP_CONTACT_FIELD_MOBILE?' checked="checked"':'').">"; print ''; +// Skype +$var=!$var; +print ''.$langs->trans("LDAPFieldSkype").''; +print ''; +print ''.$langs->trans("LDAPFieldSkypeExample").''; +print 'global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS==$conf->global->LDAP_CONTACT_FIELD_SKYPE?' checked="checked"':'').">"; +print ''; + // Fax $var=!$var; print ''.$langs->trans("LDAPFieldFax").''; diff --git a/htdocs/admin/ldap_members.php b/htdocs/admin/ldap_members.php index 39847fc3025..f437163b22f 100644 --- a/htdocs/admin/ldap_members.php +++ b/htdocs/admin/ldap_members.php @@ -65,6 +65,7 @@ if ($action == 'setvalue' && $user->admin) if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_PHONE_PERSO',GETPOST("fieldphoneperso"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++; + if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_ADDRESS',GETPOST("fieldaddress"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_ZIP',GETPOST("fieldzip"),'chaine',0,'',$conf->entity)) $error++; @@ -255,6 +256,14 @@ print ''.$langs->trans("LDAPFieldMobileExample").''; print ' '; print ''; +// Skype +$var=!$var; +print ''.$langs->trans("LDAPFieldSkype").''; +print ''; +print ''.$langs->trans("LDAPFieldSkypeExample").''; +print ' '; +print ''; + // Fax $var=!$var; print ''.$langs->trans("LDAPFieldFax").''; diff --git a/htdocs/admin/ldap_users.php b/htdocs/admin/ldap_users.php index a9d530cd8d9..647cccf7ab8 100644 --- a/htdocs/admin/ldap_users.php +++ b/htdocs/admin/ldap_users.php @@ -63,6 +63,7 @@ if ($action == 'setvalue' && $user->admin) if (! dolibarr_set_const($db, 'LDAP_FIELD_MAIL',GETPOST("fieldmail"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++; + if (! dolibarr_set_const($db, 'LDAP_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_DESCRIPTION',GETPOST("fielddescription"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_SID',GETPOST("fieldsid"),'chaine',0,'',$conf->entity)) $error++; @@ -240,6 +241,14 @@ print ''.$langs->trans("LDAPFieldMobileExample").''; print 'global->LDAP_KEY_USERS && $conf->global->LDAP_KEY_USERS==$conf->global->LDAP_FIELD_MOBILE)?' checked="checked"':'').">"; print ''; +// Skype +$var=!$var; +print ''.$langs->trans("LDAPFieldSkype").''; +print ''; +print ''.$langs->trans("LDAPFieldSkypeExample").''; +print 'global->LDAP_KEY_USERS && $conf->global->LDAP_KEY_USERS==$conf->global->LDAP_FIELD_SKYPE)?' checked="checked"':'').">"; +print ''; + // Fax $var=!$var; print ''.$langs->trans("LDAPFieldFax").''; @@ -383,6 +392,7 @@ if (function_exists("ldap_connect")) $conf->global->LDAP_FIELD_PASSWORD_CRYPTED, $conf->global->LDAP_FIELD_PHONE, $conf->global->LDAP_FIELD_FAX, + $conf->global->LDAP_FIELD_SKYPE, $conf->global->LDAP_FIELD_MOBILE, $conf->global->LDAP_FIELD_MAIL, $conf->global->LDAP_FIELD_TITLE, diff --git a/htdocs/comm/fiche.php b/htdocs/comm/fiche.php index 8574e6eb5ad..b54e3f955d2 100644 --- a/htdocs/comm/fiche.php +++ b/htdocs/comm/fiche.php @@ -6,6 +6,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2008 Raphael Bertrand (Resultic) * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -267,6 +268,12 @@ if ($id > 0) // Fax print ''.$langs->trans('Fax').''.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').''; + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans('Skype').''.dol_print_skype($object->skype,0,$object->id,'AC_SKYPE').''; + } + // Assujeti a TVA ou pas print ''; print ''.$langs->trans('VATIsUsed').''; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 1a1049c8bcc..232b679399f 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -5,7 +5,8 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * Copyright (C) 2008 Raphael Bertrand (Resultic) - * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -62,6 +63,7 @@ class Contact extends CommonObject var $code; var $email; + var $skype; var $phone_pro; var $phone_perso; var $phone_mobile; @@ -226,6 +228,7 @@ class Contact extends CommonObject $this->phone_perso=trim($this->phone_perso); $this->phone_mobile=trim($this->phone_mobile); $this->jabberid=trim($this->jabberid); + $this->skype=trim($this->skype); $this->fax=trim($this->fax); $this->zip=(empty($this->zip)?'':$this->zip); $this->town=(empty($this->town)?'':$this->town); @@ -249,6 +252,7 @@ class Contact extends CommonObject $sql .= ", poste='".$this->db->escape($this->poste)."'"; $sql .= ", fax='".$this->db->escape($this->fax)."'"; $sql .= ", email='".$this->db->escape($this->email)."'"; + $sql .= ", skype='".$this->db->escape($this->skype)."'"; $sql .= ", note_private = ".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null"); $sql .= ", note_public = ".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null"); $sql .= ", phone = ".(isset($this->phone_pro)?"'".$this->db->escape($this->phone_pro)."'":"null"); @@ -379,6 +383,7 @@ class Contact extends CommonObject if ($this->phone_perso && ! empty($conf->global->LDAP_CONTACT_FIELD_HOMEPHONE)) $info[$conf->global->LDAP_CONTACT_FIELD_HOMEPHONE] = $this->phone_perso; if ($this->phone_mobile && ! empty($conf->global->LDAP_CONTACT_FIELD_MOBILE)) $info[$conf->global->LDAP_CONTACT_FIELD_MOBILE] = $this->phone_mobile; if ($this->fax && ! empty($conf->global->LDAP_CONTACT_FIELD_FAX)) $info[$conf->global->LDAP_CONTACT_FIELD_FAX] = $this->fax; + if ($this->skype && ! empty($conf->global->LDAP_CONTACT_FIELD_SKYPE)) $info[$conf->global->LDAP_CONTACT_FIELD_SKYPE] = $this->skype; if ($this->note_private && ! empty($conf->global->LDAP_CONTACT_FIELD_DESCRIPTION)) $info[$conf->global->LDAP_CONTACT_FIELD_DESCRIPTION] = $this->note_private; if ($this->email && ! empty($conf->global->LDAP_CONTACT_FIELD_MAIL)) $info[$conf->global->LDAP_CONTACT_FIELD_MAIL] = $this->email; @@ -494,7 +499,7 @@ class Contact extends CommonObject $sql.= " c.fk_pays as country_id,"; $sql.= " c.fk_departement,"; $sql.= " c.birthday,"; - $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,"; + $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.skype,"; $sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.no_email, c.canvas,"; $sql.= " c.import_key,"; $sql.= " p.libelle as country, p.code as country_code,"; @@ -549,6 +554,7 @@ class Contact extends CommonObject $this->email = $obj->email; $this->jabberid = $obj->jabberid; + $this->skype = $obj->skype; $this->priv = $obj->priv; $this->mail = $obj->email; @@ -1025,6 +1031,7 @@ class Contact extends CommonObject $this->country_code = 'FR'; $this->country = 'France'; $this->email = 'specimen@specimen.com'; + $this->skype = 'tom.hanson'; $this->phone_pro = '0909090901'; $this->phone_perso = '0909090902'; diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index fb30b32a67d..3334a12b069 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -168,13 +169,14 @@ if (empty($reshook)) $object->town = $_POST["town"]; $object->country_id = $_POST["country_id"]; $object->state_id = $_POST["state_id"]; + $object->skype = $_POST["skype"]; $object->email = $_POST["email"]; $object->phone_pro = $_POST["phone_pro"]; $object->phone_perso = $_POST["phone_perso"]; $object->phone_mobile = $_POST["phone_mobile"]; $object->fax = $_POST["fax"]; $object->jabberid = $_POST["jabberid"]; - $object->no_email = $_POST["no_email"]; + $object->no_email = $_POST["no_email"]; $object->priv = $_POST["priv"]; $object->note_public = GETPOST("note_public"); $object->note_private = GETPOST("note_private"); @@ -268,6 +270,7 @@ if (empty($reshook)) $object->country_id = $_POST["country_id"]; $object->email = $_POST["email"]; + $object->skype = $_POST["skype"]; $object->phone_pro = $_POST["phone_pro"]; $object->phone_perso = $_POST["phone_perso"]; $object->phone_mobile = $_POST["phone_mobile"]; @@ -514,7 +517,7 @@ else print ''.$langs->trans("No_Email").''.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).''; } else - { + { print ' '; } print ''; @@ -522,6 +525,12 @@ else // Instant message and no email print ''.$langs->trans("IM").'jabberid).'">'; + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans("Skype").'skype).'">'; + } + // Visibility print ''.$langs->trans("ContactVisibility").''; $selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate")); @@ -712,7 +721,7 @@ else print ''; // Jabberid - print 'Jabberidjabberid).'">'; + print ''.$langs->trans("Jabberid").'jabberid).'">'; if (! empty($conf->mailing->enabled)) { print ''.$langs->trans("No_Email").''.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).''; @@ -722,7 +731,13 @@ else print ' '; } print ''; - + + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans("Skype").'skype).'">'; + } + // Visibility print ''.$langs->trans("ContactVisibility").''; $selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate")); @@ -935,6 +950,12 @@ else print ' '; } print ''; + + // Skype + if (!empty($conf->skype->enabled)) + { + print ''.$langs->trans("Skype").''.dol_print_skype($object->skype,0,$object->fk_soc,1).''; + } print ''.$langs->trans("ContactVisibility").''; print $object->LibPubPriv($object->priv); diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 529b9cb69b9..dcaf4aaac4b 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2013 Raphaël Doursenaud * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -48,6 +49,7 @@ $search_phonepro=GETPOST("search_phonepro"); $search_phonemob=GETPOST("search_phonemob"); $search_fax=GETPOST("search_fax"); $search_email=GETPOST("search_email"); +$search_skype=GETPOST("search_skype"); $search_priv=GETPOST("search_priv"); $search_categ = GETPOST("search_categ",'int'); $search_statut=GETPOST("search_statut"); @@ -99,6 +101,7 @@ if (GETPOST('button_removefilter')) $search_phonemob=""; $search_fax=""; $search_email=""; + $search_skype=""; $search_priv=""; $sall=""; } @@ -117,7 +120,7 @@ $form=new Form($db); $formother=new FormOther($db); $sql = "SELECT s.rowid as socid, s.nom as name,"; -$sql.= " p.rowid as cidp, p.lastname as lastname, p.statut, p.firstname, p.poste, p.email,"; +$sql.= " p.rowid as cidp, p.lastname as lastname, p.statut, p.firstname, p.poste, p.email, p.skype,"; $sql.= " p.phone, p.phone_mobile, p.fax, p.fk_pays, p.priv, p.tms,"; $sql.= " cp.code as country_code"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as p"; @@ -185,6 +188,10 @@ if (strlen($search_email)) // filtre sur l'email { $sql .= " AND p.email LIKE '%".$db->escape($search_email)."%'"; } +if (strlen($search_skype)) // filtre sur skype +{ + $sql .= " AND p.skype LIKE '%".$db->escape($search_skype)."%'"; +} if ($type == "o") // filtre sur type { $sql .= " AND p.fk_soc IS NULL"; @@ -281,6 +288,7 @@ if ($result) print_liste_field_titre($langs->trans("PhoneMobile"),$_SERVER["PHP_SELF"],"p.phone_mob", $begin, $param, '', $sortfield,$sortorder); print_liste_field_titre($langs->trans("Fax"),$_SERVER["PHP_SELF"],"p.fax", $begin, $param, '', $sortfield,$sortorder); print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"p.email", $begin, $param, '', $sortfield,$sortorder); + if (! empty($conf->skype->enabled)) { print_liste_field_titre($langs->trans("Skype"),$_SERVER["PHP_SELF"],"p.skype", $begin, $param, '', $sortfield,$sortorder); } print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"p.tms", $begin, $param, 'align="center"', $sortfield,$sortorder); print_liste_field_titre($langs->trans("ContactVisibility"),$_SERVER["PHP_SELF"],"p.priv", $begin, $param, 'align="center"', $sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.statut", $begin, $param, 'align="center"', $sortfield,$sortorder); @@ -316,6 +324,12 @@ if ($result) print ''; print ''; print ''; + if (! empty($conf->skype->enabled)) + { + print ''; + print ''; + print ''; + } print ' '; print ''; $selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate")); @@ -376,7 +390,9 @@ if ($result) print ''.dol_print_phone($obj->fax,$obj->country_code,$obj->cidp,$obj->socid,'AC_TEL').''; // EMail print ''.dol_print_email($obj->email,$obj->cidp,$obj->socid,'AC_EMAIL',18).''; - + // Skype + if (! empty($conf->skype->enabled)) { print ''.dol_print_skype($obj->skype,$obj->cidp,$obj->socid,'AC_SKYPE',18).''; } + // Date print ''.dol_print_date($db->jdate($obj->tms),"day").''; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 86f4904be68..089f79f4549 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1,14 +1,11 @@ * Copyright (C) 2005-2013 Regis Houssin -<<<<<<< HEAD * Copyright (C) 2010-2013 Juanjo Menent * Copyright (C) 2012 Christophe Battarel -======= * Copyright (C) 2010-2011 Juanjo Menent * Copyright (C) 2012-2013 Christophe Battarel ->>>>>>> refs/remotes/origin/3.4 - * Copyright (C) 2011-2012 Philippe Grand + * Copyright (C) 2011-2012 Philippe Grand * Copyright (C) 2012 Marcos García * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 9f18a477bed..2a3eb3647ae 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -78,7 +78,8 @@ class Ldap var $name; var $firstname; var $login; - var $phone; + var $phone; + var $skype; var $fax; var $mail; var $mobile; @@ -127,6 +128,7 @@ class Ldap $this->attr_firstname = $conf->global->LDAP_FIELD_FIRSTNAME; $this->attr_mail = $conf->global->LDAP_FIELD_MAIL; $this->attr_phone = $conf->global->LDAP_FIELD_PHONE; + $this->attr_skype = $conf->global->LDAP_FIELD_SKYPE; $this->attr_fax = $conf->global->LDAP_FIELD_FAX; $this->attr_mobile = $conf->global->LDAP_FIELD_MOBILE; } @@ -1172,6 +1174,7 @@ class Ldap $this->firstname = $this->convToOutputCharset($result[0][$this->attr_firstname][0],$this->ldapcharset); $this->login = $this->convToOutputCharset($result[0][$this->attr_login][0],$this->ldapcharset); $this->phone = $this->convToOutputCharset($result[0][$this->attr_phone][0],$this->ldapcharset); + $this->skype = $this->convToOutputCharset($result[0][$this->attr_skype][0],$this->ldapcharset); $this->fax = $this->convToOutputCharset($result[0][$this->attr_fax][0],$this->ldapcharset); $this->mail = $this->convToOutputCharset($result[0][$this->attr_mail][0],$this->ldapcharset); $this->mobile = $this->convToOutputCharset($result[0][$this->attr_mobile][0],$this->ldapcharset); diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 53dafec66dd..582922cd60e 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -555,6 +555,11 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ''.$langs->trans("PhoneMobile").''; print ''.$langs->trans("Fax").''; print ''.$langs->trans("EMail").''; + if (! empty($conf->skype->enabled)) + { + $colspan++; + print ''.$langs->trans("Skype").''; + } print ''.$langs->trans("Status").''; print " "; if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) @@ -570,7 +575,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ""; - $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.statut "; + $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.skype, p.statut "; $sql .= ", p.civilite, p.address, p.zip, p.town"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p"; $sql .= " WHERE p.fk_soc = ".$object->id; @@ -614,6 +619,12 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ''; print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL'); print ''; + if (! empty($conf->skype->enabled)) + { + print ''; + print dol_print_skype($obj->skype,$obj->rowid,$object->id,'AC_SKYPE'); + print ''; + } if ($obj->statut==0) print ''.$langs->trans('Disabled').' '.img_picto($langs->trans('StatusContactDraftShort'),'statut0').''; elseif ($obj->statut==1) print ''.$langs->trans('Enabled').' '.img_picto($langs->trans('StatusContactValidatedShort'),'statut1').''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index de2e9e39692..9e67318d693 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -9,6 +9,7 @@ * Copyright (C) 2008 Raphael Bertrand (Resultic) * Copyright (C) 2010-2011 Juanjo Menent * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -1185,6 +1186,48 @@ function dol_print_email($email,$cid=0,$socid=0,$addlink=0,$max=64,$showinvalid= return $newemail; } +/** + * Show Skype link + * + * @param string $skype Skype to show (only skype, without 'Name of recipient' before) + * @param int $cid Id of contact if known + * @param int $socid Id of third party if known + * @param int $addlink 0=no link to create action + * @param int $max Max number of characters to show + * @return string HTML Link + */ +function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) +{ + global $conf,$user,$langs; + + $newskype=$skype; + + if (empty($skype)) return ' '; + + if (! empty($addlink)) + { + $newskype=''; + $newskype.=' '; + $newskype.=dol_trunc($skype,$max); + $newskype.=''; + + if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) + { + $type='AC_SKYPE'; $link=''; + if (! empty($conf->global->AGENDA_ADDACTIONFORSKYPE)) $link=''.img_object($langs->trans("AddAction"),"calendar").''; + $newskype='
'.$newskype.'  '.$link.'
'; + } + } + else + { + $langs->load("errors"); + $newskype.=img_warning($langs->trans("ErrorBadSkype",$skype)); + } + return $newskype; +} + /** * Format phone numbers according to country * diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php new file mode 100644 index 00000000000..ef2a5f47446 --- /dev/null +++ b/htdocs/core/modules/modSkype.class.php @@ -0,0 +1,136 @@ + + * + * 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 3 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 . + */ + +/** + * \defgroup Skype Module Skype + * \brief Add a skype button. + * \file htdocs/core/modules/modSkype.class.php + * \ingroup Skype + * \brief Description and activation file for module Skype + */ +include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + +/** + * Class to describe a Cron module + */ +class modSkype extends DolibarrModules +{ + + /** + * Constructor. Define names, constants, directories, boxes, permissions + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + global $langs,$conf; + + $this->db = $db; + $this->numero = 3100; + + // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' + // It is used to group modules in module setup page + $this->family = "crm"; + // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) + $this->name = preg_replace('/^mod/i','',get_class($this)); + $this->description = "Enable Skype button into contact"; + $this->version = 'experimental'; // 'experimental' or 'dolibarr' or version + // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + // Where to store the module in setup page (0=common,1=interface,2=others,3=very specific) + $this->special = 2; + // Name of image file used for this module. + $this->picto='skype'; + + // Data directories to create when module is enabled + $this->dirs = array(); + + // Config pages + //------------- + $this->config_page_url = array(); + + // Dependancies + //------------- + $this->hidden = ! empty($conf->global->SKYPE_MODULE_DISABLED); // A condition to disable module + $this->depends = array(modSociete); // List of modules id that must be enabled if this module is enabled + $this->requiredby = array(); // List of modules id to disable if this one is disabled + $this->conflictwith = array(); // List of modules id this module is in conflict with + $this->langfiles = array(); + + // Constantes + //----------- + + + // New pages on tabs + // ----------------- + $this->tabs = array(); + + // Boxes + //------ + $this->boxes = array(); + + // Permissions + //------------ + $this->rights = array(); // Permission array used by this module + $this->rights_class = 'skype'; + $r=0; + + $this->rights[$r][0] = 3101; + $this->rights[$r][1] = 'View skype link'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'view'; + $r++; + + // Main menu entries + //------------------ + $this->menu = array(); + } + + + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function init($options='') + { + // Prevent pb of modules not correctly disabled + //$this->remove($options); + + return $this->_init($sql,$options); + } + + /** + * Function called when module is disabled. + * Remove from database constants, boxes and permissions from Dolibarr database. + * Data directories are not deleted + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function remove($options='') + { + $sql = array(); + + return $this->_remove($sql,$options); + } + +} +?> diff --git a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql index e417a408d50..a053d517b69 100755 --- a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql +++ b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql @@ -329,3 +329,9 @@ create table llx_actioncomm_resources ) ENGINE=innodb; ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX idx_actioncomm_resources_idx1 (fk_actioncomm, element_type, fk_element); ALTER TABLE llx_actioncomm_resources ADD INDEX idx_actioncomm_resources_fk_element (fk_element); + +-- Task 157 +ALTER TABLE llx_user ADD skype VARCHAR(255) AFTER job; +ALTER TABLE llx_socpeople ADD skype VARCHAR(255) AFTER jabberid; +ALTER TABLE llx_societe ADD skype VARCHAR(255) AFTER email; +ALTER TABLE llx_adherent ADD skype VARCHAR(255) AFTER email; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_adherent.sql b/htdocs/install/mysql/tables/llx_adherent.sql index af15f5da198..6d5a4723462 100644 --- a/htdocs/install/mysql/tables/llx_adherent.sql +++ b/htdocs/install/mysql/tables/llx_adherent.sql @@ -45,6 +45,7 @@ create table llx_adherent state_id integer, country integer, email varchar(255), + skype varchar(255), phone varchar(30), phone_perso varchar(30), phone_mobile varchar(30), diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql index e0588f04794..f4e1614cd7d 100644 --- a/htdocs/install/mysql/tables/llx_societe.sql +++ b/htdocs/install/mysql/tables/llx_societe.sql @@ -49,6 +49,7 @@ create table llx_societe fax varchar(20), -- fax number url varchar(255), -- email varchar(128), -- + skype varchar(255), -- fk_effectif integer DEFAULT 0, -- fk_typent integer DEFAULT 0, -- fk_forme_juridique integer DEFAULT 0, -- juridical status diff --git a/htdocs/install/mysql/tables/llx_socpeople.sql b/htdocs/install/mysql/tables/llx_socpeople.sql index 00e6f50f61b..04635061e59 100644 --- a/htdocs/install/mysql/tables/llx_socpeople.sql +++ b/htdocs/install/mysql/tables/llx_socpeople.sql @@ -42,6 +42,7 @@ create table llx_socpeople fax varchar(30), email varchar(255), jabberid varchar(255), + skype varchar(255), no_email smallint NOT NULL DEFAULT 0, priv smallint NOT NULL DEFAULT 0, fk_user_creat integer DEFAULT 0, -- user qui a creel'enregistrement diff --git a/htdocs/install/mysql/tables/llx_user.sql b/htdocs/install/mysql/tables/llx_user.sql index 9fd1db59c91..2bd8523b278 100644 --- a/htdocs/install/mysql/tables/llx_user.sql +++ b/htdocs/install/mysql/tables/llx_user.sql @@ -41,6 +41,7 @@ create table llx_user fk_state integer DEFAULT 0, -- fk_country integer DEFAULT 0, -- job varchar(128), + skype varchar(255), office_phone varchar(20), office_fax varchar(20), user_mobile varchar(20), diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index 2f9e4ed285d..94e6cb840c5 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -66,6 +66,8 @@ Country=Country CountryCode=Country code CountryId=Country id Phone=Phone +Skype=Skype +Call=Call PhonePro=Prof. phone PhonePerso=Pers. phone PhoneMobile=Mobile diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 162550a162b..617a673d100 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -8,6 +8,7 @@ * Copyright (C) 2008 Patrick Raguin * Copyright (C) 2010-2011 Juanjo Menent * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Alexandre Spangaro * * 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 @@ -68,6 +69,7 @@ class Societe extends CommonObject var $phone; var $fax; var $email; + var $skype; var $url; //! barcode @@ -410,6 +412,7 @@ class Societe extends CommonObject $this->fax = preg_replace("/\s/","",$this->fax); $this->fax = preg_replace("/\./","",$this->fax); $this->email = trim($this->email); + $this->skype = trim($this->skype); $this->url = $this->url?clean_url($this->url,0):''; $this->idprof1 = trim($this->idprof1); $this->idprof2 = trim($this->idprof2); @@ -508,6 +511,7 @@ class Societe extends CommonObject $sql .= ",phone = ".(! empty($this->phone)?"'".$this->db->escape($this->phone)."'":"null"); $sql .= ",fax = ".(! empty($this->fax)?"'".$this->db->escape($this->fax)."'":"null"); $sql .= ",email = ".(! empty($this->email)?"'".$this->db->escape($this->email)."'":"null"); + $sql .= ",skype = ".(! empty($this->skype)?"'".$this->db->escape($this->skype)."'":"null"); $sql .= ",url = ".(! empty($this->url)?"'".$this->db->escape($this->url)."'":"null"); $sql .= ",siren = '". $this->db->escape($this->idprof1) ."'"; @@ -590,6 +594,7 @@ class Societe extends CommonObject //$lmember->lastname=$this->lastname?$this->lastname:$lmember->lastname; // We keep firstname and lastname of member unchanged $lmember->address=$this->address; $lmember->email=$this->email; + $lmember->skype=$this->skype; $lmember->phone=$this->phone; $result=$lmember->update($user,0,1,1,1); // Use nosync to 1 to avoid cyclic updates @@ -699,7 +704,7 @@ class Societe extends CommonObject $sql .= ', s.status'; $sql .= ', s.price_level'; $sql .= ', s.tms as date_update'; - $sql .= ', s.phone, s.fax, s.email, s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur'; + $sql .= ', s.phone, s.fax, s.email, s.skype, s.url, s.zip, s.town, s.note_private, s.note_public, s.client, s.fournisseur'; $sql .= ', s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6'; $sql .= ', s.capital, s.tva_intra'; $sql .= ', s.fk_typent as typent_id'; @@ -777,6 +782,7 @@ class Societe extends CommonObject $this->statut_commercial = $libelle; // libelle statut commercial $this->email = $obj->email; + $this->skype = $obj->skype; $this->url = $obj->url; $this->phone = $obj->phone; $this->fax = $obj->fax; @@ -2409,6 +2415,7 @@ class Societe extends CommonObject $this->country_id=$member->country_id; $this->phone=$member->phone; // Prof phone $this->email=$member->email; + $this->skype=$member->skype; $this->client = 1; // A member is a customer by default $this->code_client = -1; @@ -2548,6 +2555,7 @@ class Societe extends CommonObject $this->country_id=1; $this->country_code='FR'; $this->email='specimen@specimen.com'; + $this->skype='tom.hanson'; $this->url='http://www.specimen.com'; $this->phone='0909090901'; diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index fb273b79ab3..e8c8378eee0 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -4,8 +4,10 @@ * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2005 Eric Seigne * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2008 Patrick Raguin + * Copyright (C) 2008 Patrick Raguin * Copyright (C) 2010-2013 Juanjo Menent + * Copyright (C) 2011-2013 Alexandre Spangaro + * * * 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 @@ -130,6 +132,7 @@ if (empty($reshook)) $object->town = GETPOST('town'); $object->country_id = GETPOST('country_id'); $object->state_id = GETPOST('state_id'); + $object->skype = GETPOST('skype'); $object->phone = GETPOST('phone'); $object->fax = GETPOST('fax'); $object->email = GETPOST('email'); @@ -254,7 +257,7 @@ if (empty($reshook)) dol_syslog("This thirdparty is a personal people",LOG_DEBUG); $contact=new Contact($db); - $contact->civilite_id = $object->civilite_id; + $contact->civilite_id = $object->civilite_id; $contact->name = $object->name_bis; $contact->firstname = $object->firstname; $contact->address = $object->address; @@ -265,8 +268,9 @@ if (empty($reshook)) $contact->socid = $object->id; // fk_soc $contact->status = 1; $contact->email = $object->email; - $contact->phone_pro = $object->phone; - $contact->fax = $object->fax; + $contact->skype = $object->skype; + $contact->phone_pro = $object->phone; + $contact->fax = $object->fax; $contact->priv = 0; $result=$contact->create($user); @@ -598,6 +602,7 @@ else $object->zip = GETPOST('zipcode'); $object->town = GETPOST('town'); $object->state_id = GETPOST('state_id'); + $object->skype = GETPOST('skype'); $object->phone = GETPOST('phone'); $object->fax = GETPOST('fax'); $object->email = GETPOST('email'); @@ -845,6 +850,12 @@ else print ''.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').''; print ''.$langs->trans('Web').''; + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans('Skype').''; + } + // Phone / Fax print ''.$langs->trans('Phone').''; print ''.$langs->trans('Fax').''; @@ -1079,6 +1090,7 @@ else $object->town = GETPOST('town'); $object->country_id = GETPOST('country_id')?GETPOST('country_id'):$mysoc->country_id; $object->state_id = GETPOST('state_id'); + $object->skype = GETPOST('skype'); $object->phone = GETPOST('phone'); $object->fax = GETPOST('fax'); $object->email = GETPOST('email'); @@ -1088,8 +1100,8 @@ else $object->idprof2 = GETPOST('idprof2'); $object->idprof3 = GETPOST('idprof3'); $object->idprof4 = GETPOST('idprof4'); - $object->idprof5 = GETPOST('idprof5'); - $object->idprof6 = GETPOST('idprof6'); + $object->idprof5 = GETPOST('idprof5'); + $object->idprof6 = GETPOST('idprof6'); $object->typent_id = GETPOST('typent_id'); $object->effectif_id = GETPOST('effectif_id'); $object->barcode = GETPOST('barcode'); @@ -1261,7 +1273,13 @@ else // EMail / Web print ''.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').''; print ''.$langs->trans('Web').''; - + + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans('Skype').''; + } + // Phone / Fax print ''.$langs->trans('Phone').''; print ''.$langs->trans('Fax').''; @@ -1569,6 +1587,14 @@ else print ''.$langs->trans('Web').''; print dol_print_url($object->url); print ''; + + // Skype + if (! empty($conf->skype->enabled)) + { + print ''.$langs->trans('Skype').''; + print dol_print_skype($object->skype,0,$object->id,'AC_SKYPE'); + print ''; + } // Phone / Fax print ''.$langs->trans('Phone').''.dol_print_phone($object->phone,$object->country_code,0,$object->id,'AC_TEL').''; diff --git a/htdocs/theme/amarok/img/object_skype.png b/htdocs/theme/amarok/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..97121565bb08b2eac9ba51c91368e7171370c923 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/auguria/img/object_skype.png b/htdocs/theme/auguria/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..97121565bb08b2eac9ba51c91368e7171370c923 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/bureau2crea/img/object_skype.png b/htdocs/theme/bureau2crea/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..97121565bb08b2eac9ba51c91368e7171370c923 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/cameleo/img/object_skype.png b/htdocs/theme/cameleo/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..97121565bb08b2eac9ba51c91368e7171370c923 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/object_skype.png b/htdocs/theme/eldy/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..97121565bb08b2eac9ba51c91368e7171370c923 GIT binary patch literal 3451 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 literal 0 HcmV?d00001 From 2f47b0fcfd0021b15e7e55fe0530254b02734ba6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 Nov 2013 23:56:15 +0100 Subject: [PATCH 02/14] Fix: picto for status8 is a flash red icon to report a critical error that need a task to fix. This is not the case for a close thirdparty (a close thirdparty is a regular status). However to have a bigger contrast with thirdparty active, i set picto to statut5.png --- htdocs/comm/mailing/cibles.php | 2 +- .../compta/prelevement/class/ligneprelevement.class.php | 4 +--- htdocs/societe/class/societe.class.php | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 538d4c04fc4..5b3ec5bfc1d 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -507,7 +507,7 @@ if ($object->fetch($id) >= 0) if ($obj->statut==-1) print $langs->trans("MailingStatusError").' '.img_error(); if ($obj->statut==1) print $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut4'); if ($obj->statut==2) print $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); - if ($obj->statut==3) print $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); + if ($obj->statut==3) print $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut5'); print ''; } print ''; diff --git a/htdocs/compta/prelevement/class/ligneprelevement.class.php b/htdocs/compta/prelevement/class/ligneprelevement.class.php index d040de378f2..a8c5b5f019c 100644 --- a/htdocs/compta/prelevement/class/ligneprelevement.class.php +++ b/htdocs/compta/prelevement/class/ligneprelevement.class.php @@ -26,10 +26,8 @@ /** - * \class LignePrelevement - * \brief Classe permettant la gestion des prelevements + * Class to manage withdrawals */ - class LignePrelevement { var $id; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 96863a078d8..fb256da693b 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1518,22 +1518,22 @@ class Societe extends CommonObject } if ($mode == 2) { - if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8').' '.$langs->trans("ActivityCeased"); + if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut5').' '.$langs->trans("ActivityCeased"); if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4').' '.$langs->trans("InActivity"); } if ($mode == 3) { - if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8'); + if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut5'); if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4'); } if ($mode == 4) { - if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8').' '.$langs->trans("ActivityCeased"); + if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut5').' '.$langs->trans("ActivityCeased"); if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4').' '.$langs->trans("InActivity"); } if ($mode == 5) { - if ($statut==0) return $langs->trans("ActivityCeased").' '.img_picto($langs->trans("ActivityCeased"),'statut8'); + if ($statut==0) return $langs->trans("ActivityCeased").' '.img_picto($langs->trans("ActivityCeased"),'statut5'); if ($statut==1) return $langs->trans("InActivity").' '.img_picto($langs->trans("InActivity"),'statut4'); } } From 36ec7509ac640a34dfc5f45088b5bb0a386bb522 Mon Sep 17 00:00:00 2001 From: Florian Henry Date: Tue, 5 Nov 2013 09:54:49 +0100 Subject: [PATCH 03/14] Set same icon status rule as for thirdparty --- htdocs/contact/class/contact.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 1a1049c8bcc..7bc48edca11 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -947,24 +947,24 @@ class Contact extends CommonObject } elseif ($mode == 2) { - if ($statut==0) return img_picto($langs->trans('Disabled'),'statut1').' '.$langs->trans('Disabled'); + if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); } elseif ($mode == 3) { - if ($statut==0) return img_picto($langs->trans('Disabled'),'statut1'); + if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5'); elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4'); } elseif ($mode == 4) { - if ($statut==0) return img_picto($langs->trans('Disabled'),'statut1').' '.$langs->trans('StatusContactDraft'); + if ($statut==0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('StatusContactDraft'); elseif ($statut==1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); } elseif ($mode == 5) { - if ($statut==0) return ''.$langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut1'); + if ($statut==0) return ''.$langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5'); elseif ($statut==1) return ''.$langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4'); } From 0587ad5af86b78d162edd504107bc0d95510e65d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 10:44:58 +0100 Subject: [PATCH 04/14] Fix: duplicate button --- htdocs/comm/propal.php | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index c56688b3e44..15536909bf9 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -100,7 +100,7 @@ $hookmanager->initHooks(array('propalcard')); /* * Actions -*/ + */ $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks @@ -131,7 +131,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes') } } -// Suppression de la propale +// Delete proposal else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->propal->supprimer) { $result=$object->delete($user); @@ -436,9 +436,7 @@ else if ($action == 'setstatut' && $user->rights->propal->cloturer && ! GETPOST( } } -/* - * Add file in email form -*/ +// Add file in email form if (GETPOST('addfile')) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -451,9 +449,7 @@ if (GETPOST('addfile')) $action='presend'; } -/* - * Remove file in email form -*/ +// Remove file in email form if (GETPOST('removedfile')) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -469,7 +465,7 @@ if (GETPOST('removedfile')) /* * Send mail -*/ + */ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! GETPOST('cancel')) { $langs->load('mails'); @@ -637,7 +633,7 @@ else if ($action == "setabsolutediscount" && $user->rights->propal->creer) } } -//Ajout d'une ligne produit dans la propale +// Add line else if ($action == "addline" && $user->rights->propal->creer) { $idprod=GETPOST('idprod', 'int'); @@ -1254,7 +1250,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal-> /* * View -*/ + */ llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); @@ -1422,7 +1418,7 @@ if ($action == 'create') /* * Combobox pour la fonction de copie - */ + */ if (empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE)) { @@ -1521,7 +1517,7 @@ else { /* * Show object in view mode - */ + */ $soc = new Societe($db); $soc->fetch($object->socid); @@ -1615,13 +1611,12 @@ else print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print ''; - // Ref client + // Ref customer print ''; print ''; - print ''; - print ''; if ($action != 'refclient' && ! empty($object->brouillon)) print ''; + print ''; print '
'; print $langs->trans('RefCustomer').''.img_edit($langs->transnoentitiesnoconv('RefCustomer')).''.img_edit($langs->trans('Modify')).'
'; print ''; if ($user->rights->propal->creer && $action == 'refclient') @@ -1639,6 +1634,7 @@ else } print ''; print ''; + // Company print ''.$langs->trans('Company').''.$soc->getNomUrl(1).''; print ''; @@ -2024,7 +2020,7 @@ else /* * Lines - */ + */ if (! empty($conf->use_javascript_ajax) && $object->statut == 0) { @@ -2077,7 +2073,7 @@ else { /* * Formulaire cloture (signe ou non) - */ + */ $form_close = '
'; $form_close.= ''; $form_close.= ''; @@ -2105,7 +2101,7 @@ else /* * Boutons Actions - */ + */ if ($action != 'presend') { print '
'; @@ -2216,7 +2212,7 @@ else /* * Documents generes - */ + */ $filename=dol_sanitizeFileName($object->ref); $filedir=$conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); $urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id; From 922929fffbb48ee17bcdcaddb840883b0d252b08 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 11:17:54 +0100 Subject: [PATCH 05/14] Fix: Missing column Fix: Line was not added correctly Fix: Missing message --- htdocs/core/lib/project.lib.php | 49 ++++++++++++++++++--------------- htdocs/projet/activity/list.php | 44 +++++++++++++++++------------ 2 files changed, 53 insertions(+), 40 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 1f8f380e494..5e096760fce 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -1,28 +1,28 @@ +/* Copyright (C) 2006-2013 Laurent Destailleur * Copyright (C) 2010 Regis Houssin -* Copyright (C) 2011 Juanjo Menent -* -* 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 3 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 . -* or see http://www.gnu.org/ -*/ + * Copyright (C) 2011 Juanjo Menent + * + * 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 3 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 . + * or see http://www.gnu.org/ + */ /** * \file htdocs/core/lib/project.lib.php * \brief Functions used by project module * \ingroup project -*/ + */ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; @@ -473,19 +473,24 @@ function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksr print ''; // Planned Workload - print '
'; - // Progress + // Progress declared % print ''; // Time spent print '\n"; diff --git a/htdocs/projet/activity/list.php b/htdocs/projet/activity/list.php index 5d5eacfcbda..e9cb8568b65 100644 --- a/htdocs/projet/activity/list.php +++ b/htdocs/projet/activity/list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2012 Laurent Destailleur + * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010 François Legastelois * @@ -56,35 +56,42 @@ if ($action == 'addtime' && $user->rights->projet->creer) { $task = new Task($db); - $timespent_duration=0; + $timespent_duration=array(); foreach($_POST as $key => $time) { - if(intval($time)>0) + if (intval($time) > 0) { // Hours or minutes - if(preg_match("/([0-9]+)(hour|min)/",$key,$matches)) + if (preg_match("/([0-9]+)(hour|min)/",$key,$matches)) { $id = $matches[1]; - - // We store HOURS in seconds - if($matches[2]=='hour') $timespent_duration += $time*60*60; - - // We store MINUTES in seconds - if($matches[2]=='min') $timespent_duration += $time*60; + if ($id > 0) + { + // We store HOURS in seconds + if($matches[2]=='hour') $timespent_duration[$id] += $time*60*60; + + // We store MINUTES in seconds + if($matches[2]=='min') $timespent_duration[$id] += $time*60; + } } } } - if ($timespent_duration > 0) + if (count($timespent_duration) > 0) { - $task->fetch($id); - $task->timespent_duration = $timespent_duration; - $task->timespent_fk_user = $user->id; - $task->timespent_date = dol_mktime(12,0,0,$_POST["{$id}month"],$_POST["{$id}day"],$_POST["{$id}year"]); - $task->addTimeSpent($user); - - // header to avoid submit twice on back + foreach($timespent_duration as $key => $val) + { + $task->fetch($key); + $task->timespent_duration = $val; + $task->timespent_fk_user = $user->id; + $task->timespent_date = dol_mktime(12,0,0,$_POST["{$key}month"],$_POST["{$key}day"],$_POST["{$key}year"]); + $task->addTimeSpent($user); + } + + setEventMessage($langs->trans("RecordSaved")); + + // Redirect to avoid submit twice on back header('Location: '.$_SERVER["PHP_SELF"].'?id='.$projectid.($mode?'&mode='.$mode:'')); exit; } @@ -144,6 +151,7 @@ print ''; print ''; print ''; print ''; +print ''; print ''; print ''; print ''; From 0d2a019c3f1cf3decd6878066dcb85bd66a34880 Mon Sep 17 00:00:00 2001 From: Florian Henry Date: Tue, 5 Nov 2013 11:26:13 +0100 Subject: [PATCH 06/14] Extrafield : better filter on select from table management for extrafields table --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index c651603451d..c00d0401e5c 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -703,7 +703,7 @@ class ExtraFields $keyList.= ', '.$parentField; } if (count($InfoFieldList)>=4 && !empty($InfoFieldList[4])) { - if (strpos($InfoFieldList[4], 'extra')!==false) { + if (strpos($InfoFieldList[4], 'extra.')!==false) { $keyList='main.'.$InfoFieldList[2].' as rowid'; }else { $keyList=$InfoFieldList[2].' as rowid'; From e5daee86b8ff0928248a55d2aebf665405ab0e33 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 11:26:30 +0100 Subject: [PATCH 07/14] Fix: Missing translation --- htdocs/langs/en_US/admin.lang | 2 ++ htdocs/langs/fr_FR/admin.lang | 2 ++ 2 files changed, 4 insertions(+) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8e73c2fe560..46e2fbd3f77 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -972,6 +972,8 @@ ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerOrders=Complementary attributes (orders) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) ExtraFieldsSupplierOrders=Complementary attributes (orders) ExtraFieldsSupplierInvoices=Complementary attributes (invoices) ExtraFieldsProject=Complementary attributes (projects) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 58df5bf983b..c841e290d46 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -972,6 +972,8 @@ ExtraFieldsThirdParties=Attributs supplémentaires (tiers) ExtraFieldsContacts=Attributs supplémentaires (contacts/adresses) ExtraFieldsMember=Attributs supplémentaires (adhérents) ExtraFieldsMemberType=Attributs supplémentaires (type d'adhérents) +ExtraFieldsCustomerOrders=Attributs supplémentaires (commandes) +ExtraFieldsCustomerInvoices=Attributs supplémentaires (factures) ExtraFieldsSupplierOrders=Attributs supplémentaires (commandes) ExtraFieldsSupplierInvoices=Attributs supplémentaires (factures) ExtraFieldsProject=Attributs supplémentaires (projets) From 685ada72a63c35aa3a07efbd3e16f31c7fda5c81 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Tue, 5 Nov 2013 11:39:29 +0100 Subject: [PATCH 08/14] missing trad --- htdocs/langs/fr_FR/admin.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 58df5bf983b..6e35776adbe 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -973,6 +973,7 @@ ExtraFieldsContacts=Attributs supplémentaires (contacts/adresses) ExtraFieldsMember=Attributs supplémentaires (adhérents) ExtraFieldsMemberType=Attributs supplémentaires (type d'adhérents) ExtraFieldsSupplierOrders=Attributs supplémentaires (commandes) +ExtraFieldsCustomerInvoices=Attributs supplémentaires (factures clients) ExtraFieldsSupplierInvoices=Attributs supplémentaires (factures) ExtraFieldsProject=Attributs supplémentaires (projets) ExtraFieldsProjectTask=Attributs supplémentaires (tâches) From 190dabc3f759b1aefb06fcab86043614deaa487a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 13:11:36 +0100 Subject: [PATCH 09/14] Fix: Tons of bugs with extrafields feature. --- htdocs/comm/propal.php | 63 +-- htdocs/commande/fiche.php | 65 +-- htdocs/compta/facture.php | 64 +-- .../admin/facture_cust_extrafields.php | 4 +- htdocs/core/class/commonobject.class.php | 6 +- htdocs/core/class/extrafields.class.php | 64 +-- htdocs/core/class/html.form.class.php | 4 +- htdocs/fichinter/fiche.php | 407 ++++++++---------- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/en_US/members.lang | 1 - htdocs/langs/fr_FR/admin.lang | 1 + htdocs/langs/fr_FR/members.lang | 1 - 12 files changed, 288 insertions(+), 393 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 15536909bf9..8c2871426a4 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1159,14 +1159,11 @@ else if ($action == 'update_extras') { // Fill array 'array_options' with data from update form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); + if($ret < 0) $error++; - if($ret < 0) { - $error++; - $action = 'edit_extras'; - } - - if(!$error) { + if (! $error) + { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('propaldao')); @@ -1174,17 +1171,16 @@ else if ($action == 'update_extras') $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $result=$object->insertExtraFields(); + if ($result < 0) { - $result=$object->insertExtraFields(); - if ($result < 0) - { - $error++; - } + $error++; } } else if ($reshook < 0) $error++; } + + if ($error) $action = 'edit_extras'; } if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->creer) @@ -1893,20 +1889,12 @@ else print ''; } - // Other attributes + // Other attributes (TODO Move this into an include) $res=$object->fetch_optionals($object->id,$extralabels); $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if (empty($reshook) && ! empty($extrafields->attribute_label)) { - if ($action == 'edit_extras') - { - print ''; - print ''; - print ''; - print ''; - } - foreach($extrafields->attribute_label as $key=>$label) { if ($action == 'edit_extras') { @@ -1929,35 +1917,28 @@ else $value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]); } - if ($action == 'edit_extras' && $user->rights->propal->creer) + if ($action == 'edit_extras' && $user->rights->propal->creer && GETPOST('attribute') == $key) { + print ''; + print ''; + print ''; + print ''; + print ''; + print $extrafields->showInputField($key,$value); + + print ''; + + print ''; } else { print $extrafields->showOutputField($key,$value); + if ($object->statut == 0 && $user->rights->propal->creer) print ''.img_picto('','edit').' '.$langs->trans('Modify').''; } print ''."\n"; } } - - if(count($extrafields->attribute_label) > 0) { - - if ($action == 'edit_extras' && $user->rights->propal->creer) - { - print ''; - - } - else { - if ($object->statut == 0 && $user->rights->propal->creer) - { - print ''; - } - } - } } // Amount HT diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index 737e31cca7f..697d47c78bf 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -1179,12 +1179,11 @@ else if ($action == 'update_extras') { // Fill array 'array_options' with data from update form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); + if($ret < 0) $error++; - if($ret < 0) - $error++; - - if(!$error) { + if (! $error) + { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('orderdao')); @@ -1192,22 +1191,16 @@ else if ($action == 'update_extras') $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $result=$object->insertExtraFields(); + if ($result < 0) { - $result=$object->insertExtraFields(); - if ($result < 0) - { - $error++; - } + $error++; } } else if ($reshook < 0) $error++; } - else - { - $action = 'edit_extras'; - } - + + if ($error) $action = 'edit_extras'; } /* @@ -2208,20 +2201,12 @@ else print ''; } - // Other attributes + // Other attributes (TODO Move this into an include) $res=$object->fetch_optionals($object->id,$extralabels); $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if (empty($reshook) && ! empty($extrafields->attribute_label)) { - if ($action == 'edit_extras') - { - print ''; - print ''; - print ''; - print ''; - } - foreach($extrafields->attribute_label as $key=>$label) { if ($action == 'edit_extras') { @@ -2244,35 +2229,27 @@ else $value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]); } - if ($action == 'edit_extras' && $user->rights->commande->creer) + if ($action == 'edit_extras' && $user->rights->commande->creer && GETPOST('attribute') == $key) { + print ''; + print ''; + print ''; + print ''; + print ''; + print $extrafields->showInputField($key,$value); + + print ''; + print ''; } else { print $extrafields->showOutputField($key,$value); + if ($object->statut == 0 && $user->rights->commande->creer) print ''.img_picto('','edit').' '.$langs->trans('Modify').''; } print ''."\n"; } } - - if(count($extrafields->attribute_label) > 0) { - - if ($action == 'edit_extras' && $user->rights->commande->creer) - { - print ''; - - } - else { - if ($object->statut == 0 && $user->rights->commande->creer) - { - print ''; - } - } - } } $rowspan=4; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index a2c9dc80594..191d48c4fdf 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1926,11 +1926,11 @@ if ($action == 'update_extras') { // Fill array 'array_options' with data from add form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - if($ret < 0) - $error++; + $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); + if ($ret < 0) $error++; - if(!$error) { + if (! $error) + { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('invoicedao')); @@ -1938,22 +1938,16 @@ if ($action == 'update_extras') $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + $result=$object->insertExtraFields(); + if ($result < 0) { - $result=$object->insertExtraFields(); - if ($result < 0) - { - $error++; - } + $error++; } } else if ($reshook < 0) $error++; } - else - { - $action = 'edit_extras'; - } - + + if ($error) $action = 'edit_extras'; } @@ -3413,21 +3407,13 @@ else if ($id > 0 || ! empty($ref)) print ''; } - // Other attributes + // Other attributes (TODO Move this into an include) $res=$object->fetch_optionals($object->id,$extralabels); $parameters=array('colspan' => ' colspan="2"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if (empty($reshook) && ! empty($extrafields->attribute_label)) { - if ($action == 'edit_extras') - { - print ''; - print ''; - print ''; - print ''; - } - foreach($extrafields->attribute_label as $key=>$label) { if ($action == 'edit_extras') { @@ -3450,35 +3436,27 @@ else if ($id > 0 || ! empty($ref)) $value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]); } - if ($action == 'edit_extras' && $user->rights->facture->creer) + if ($action == 'edit_extras' && $user->rights->facture->creer && GETPOST('attribute') == $key) { + print ''; + print ''; + print ''; + print ''; + print ''; + print $extrafields->showInputField($key,$value); + + print ''; + print ''; } else { print $extrafields->showOutputField($key,$value); + if ($object->statut == 0 && $user->rights->facture->creer) print ''.img_picto('','edit').' '.$langs->trans('Modify').''; } print ''."\n"; } } - - if(count($extrafields->attribute_label) > 0) { - - if ($action == 'edit_extras' && $user->rights->facture->creer) - { - print ''; - - } - else { - if ($object->statut == 0 && $user->rights->facture->creer) - { - print ''; - } - } - } } print '
'; - if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'all'); + print ''; + if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'allhourmin'); else print '--:--'; print ''; print $lines[$i]->progress.' %'; print ''; - if ($lines[$i]->duration) print convertSecondToTime($lines[$i]->duration,'all'); + if ($lines[$i]->duration) + { + print ''; + print convertSecondToTime($lines[$i]->duration,'allhourmin'); + print ''; + } else print '--:--'; print "'.$langs->trans("RefTask").''.$langs->trans("LabelTask").''.$langs->trans("DateStart").''.$langs->trans("DateEnd").''.$langs->trans("PlannedWorkload").''.$langs->trans("Progress").''.$langs->trans("TimeSpent").''.$langs->trans("AddDuration").'
'; - print ''; - print ''; - print '
'.img_picto('','edit').' '.$langs->trans('Modify').'
'; - print ''; - print ''; - print '
'.img_picto('','edit').' '.$langs->trans('Modify').'
'; - print ''; - print ''; - print '
'.img_picto('','edit').' '.$langs->trans('Modify').'

'; diff --git a/htdocs/compta/facture/admin/facture_cust_extrafields.php b/htdocs/compta/facture/admin/facture_cust_extrafields.php index a44d67d87a9..0efcb94d079 100644 --- a/htdocs/compta/facture/admin/facture_cust_extrafields.php +++ b/htdocs/compta/facture/admin/facture_cust_extrafields.php @@ -146,7 +146,9 @@ if ($action == 'create') /* ************************************************************************** */ if ($action == 'edit' && ! empty($attrname)) { - print "
"; + $langs->load("members"); + + print "
"; print_titre($langs->trans("FieldEdition", $attrname)); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php'; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index b3e5f8f47d8..b17bc624a3c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2142,10 +2142,12 @@ abstract class CommonObject */ function insertExtraFields() { - global $langs; + global $conf,$langs; $error=0; + if (! empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; // For avoid conflicts if trigger used + if (! empty($this->array_options)) { // Check parameters @@ -2249,7 +2251,7 @@ abstract class CommonObject $out = ''; - if(count($extrafields->attribute_label) > 0) + if (count($extrafields->attribute_label) > 0) { $out .= "\n"; $out .= ' '; diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index c651603451d..e9d02fe4fd0 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -688,54 +688,52 @@ class ExtraFields { $param_list=array_keys($param['options']); $InfoFieldList = explode(":", $param_list[0]); + // 0 : tableName + // 1 : label field name + // 2 : key fields name (if differ of rowid) + // 3 : key field parent (for dependent lists) + // 4 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value + $keyList=(empty($InfoFieldList[2])?'rowid':$InfoFieldList[2].' as rowid'); - // 0 1 : tableName - // 1 2 : label field name Nom du champ contenant le libelle - // 2 3 : key fields name (if differ of rowid) - // 3 4 : key field parent (for dependent lists) - // 4 5 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value - - - $keyList='rowid'; - - if (count($InfoFieldList)>=3) { + if (count($InfoFieldList) > 3 && ! empty($InfoFieldList[3])) + { list($parentName, $parentField) = explode('|', $InfoFieldList[3]); $keyList.= ', '.$parentField; } - if (count($InfoFieldList)>=4 && !empty($InfoFieldList[4])) { + if (count($InfoFieldList) > 4 && ! empty($InfoFieldList[4])) + { if (strpos($InfoFieldList[4], 'extra')!==false) { $keyList='main.'.$InfoFieldList[2].' as rowid'; - }else { + } else { $keyList=$InfoFieldList[2].' as rowid'; } } - $fields_label = explode('|',$InfoFieldList[1]); - if(is_array($fields_label)) { - $keyList .=', '; - $keyList .= implode(', ', $fields_label); - } - - $fields_label = explode('|',$InfoFieldList[1]); - if(is_array($fields_label)) { + if (is_array($fields_label)) + { $keyList .=', '; $keyList .= implode(', ', $fields_label); } + $sqlwhere=''; $sql = 'SELECT '.$keyList; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; - if (!empty($InfoFieldList[4])) { - + if (!empty($InfoFieldList[4])) + { //We have to join on extrafield table - if (strpos($InfoFieldList[4], 'extra')!==false) { + if (strpos($InfoFieldList[4], 'extra')!==false) + { $sql.= ' as main, '.MAIN_DB_PREFIX .$InfoFieldList[0].'_extrafields as extra'; - $sql.= ' WHERE extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; - }else { - $sql.= ' WHERE '.$InfoFieldList[4]; + $sqlwhere.= ' AND extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; + } + else + { + $sqlwhere.= ' AND '.$InfoFieldList[4]; } } - //$sql.= ' WHERE entity = '.$conf->entity; + if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. + $sql.=preg_replace('/^ AND /','',$sqlwhere); //print $sql; dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql); @@ -807,6 +805,9 @@ class ExtraFields } $this->db->free($resql); } + else { + print 'Error in request '.$sql.' '.$this->db->lasterror().'. Check setup of extra parameters.
'; + } } $out.=''; } @@ -1005,13 +1006,14 @@ class ExtraFields } /** - * Fill array_options array for object by extrafields value (using for data send by forms) + * Fill array_options property of object by extrafields value (using for data sent by forms) * * @param array $extralabels $array of extrafields - * @param object &$object object + * @param object &$object Object + * @param string $onlykey Only following key is filled * @return int 1 if array_options set / 0 if no value */ - function setOptionalsFromPost($extralabels,&$object) + function setOptionalsFromPost($extralabels,&$object,$onlykey='') { global $_POST, $langs; $nofillrequired='';// For error when required field left blank @@ -1022,6 +1024,8 @@ class ExtraFields // Get extra fields foreach ($extralabels as $key => $value) { + if (! empty($onlykey) && $key != $onlykey) continue; + $key_type = $this->attribute_type[$key]; if($this->attribute_required[$key] && !GETPOST("options_$key",2)) { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index dc8ca8a30be..3ba7fee84c4 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3664,7 +3664,7 @@ class Form * @param string $typehour if 'select' then input hour and input min is a combo, if 'text' input hour is in text and input min is a combo * @return void */ - function select_duration($prefix,$iSecond='',$disabled=0,$typehour='select') + function select_duration($prefix, $iSecond='', $disabled=0, $typehour='select') { global $langs; @@ -3680,7 +3680,7 @@ class Form if ($typehour=='select') { print ''; - print ''; - print ''; - } - foreach($extrafields->attribute_label as $key=>$label) { if ($action == 'edit_extras') { @@ -1319,35 +1278,27 @@ else if ($id > 0 || ! empty($ref)) { $value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$db->jdate($object->array_options['options_'.$key]); } - if ($action == 'edit_extras' && $user->rights->ficheinter->creer) + if ($action == 'edit_extras' && $user->rights->ficheinter->creer && GETPOST('attribute') == $key) { + print '
'; + print ''; + print ''; + print ''; + print ''; + print $extrafields->showInputField($key,$value); + + print ''; + print '
'; } else { print $extrafields->showOutputField($key,$value); + if ($object->statut == 0 && $user->rights->ficheinter->creer) print ''.img_picto('','edit').' '.$langs->trans('Modify').''; } print ''."\n"; } } - - if(count($extrafields->attribute_label) > 0) { - - if ($action == 'edit_extras' && $user->rights->ficheinter->creer) - { - print ''; - print ''; - print ''; - print ''; - - } - else { - if ($object->statut == 0 && $user->rights->ficheinter->creer) - { - print ''.img_picto('','edit').' '.$langs->trans('Modify').''; - } - } - } } print "
"; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 46e2fbd3f77..b9b5de0abb3 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1005,6 +1005,7 @@ BrowserIsKO=You are using the web browser %s. This browser is known to be a bad XDebugInstalled=XDebug est chargé. XCacheInstalled=XCache is loaded. AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink +FieldEdition=Edition of field %s ##### Module password generation PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index ec925209b2c..e7c056ef5ee 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -118,7 +118,6 @@ LastMembers=Last %s members LastMembersModified=Last %s modified members LastSubscriptionsModified=Last %s modified subscriptions AttributeName=Attribute name -FieldEdition=Edition of field %s String=String Text=Text Int=Int diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index c841e290d46..dde859dcf2b 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1017,6 +1017,7 @@ EncryptedPasswordInDatabase=Permettre le chiffrement des mots de passe dans la b DisableForgetPasswordLinkOnLogonPage=Ne pas afficher le lien "Mot de passe oublié" sur la page de connexion UsersSetup=Configuration du module utilisateurs UserMailRequired=Email requis pour créer un nouvel utilisateur +FieldEdition=Édition du champ %s ##### Company setup ##### CompanySetup=Configuration du module Tiers CompanyCodeChecker=Modèle de génération et contrôle des codes tiers (clients/fournisseurs) diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 4b1c8b8d28b..9f508ff3fcd 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -118,7 +118,6 @@ LastMembers=Les %s derniers adhérents LastMembersModified=Les %s derniers adhérents modifiés LastSubscriptionsModified=Les %s dernières adhésions modifiées AttributeName=Nom de l'attribut -FieldEdition=Édition du champ %s String=Chaîne Text=Texte long Int=Numérique From 223e50276c95503e6af17b4668132fe64c596290 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 14:24:37 +0100 Subject: [PATCH 10/14] Fix: Info tab was wrong with interventions --- htdocs/core/lib/functions2.lib.php | 36 ++++++++++++++-------- htdocs/fichinter/class/fichinter.class.php | 15 +++++---- htdocs/fichinter/info.php | 26 +++++++++------- 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index dfe83f28fa2..6f55b8d130b 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -205,13 +205,15 @@ function dol_print_object_info($object) print $langs->trans("CreatedBy").': '; if (is_object($object->user_creation)) { - print $object->user_creation->getNomUrl(1); + if ($object->user_creation->id) print $object->user_creation->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_creation); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } @@ -230,13 +232,15 @@ function dol_print_object_info($object) print $langs->trans("ModifiedBy").': '; if (is_object($object->user_modification)) { - print $object->user_modification->getNomUrl(1); + if ($object->user_modification->id) print $object->user_modification->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_modification); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } @@ -255,13 +259,15 @@ function dol_print_object_info($object) print $langs->trans("ValidatedBy").': '; if (is_object($object->user_validation)) { - print $object->user_validation->getNomUrl(1); + if ($object->user_validation->id) print $object->user_validation->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_validation); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } @@ -280,13 +286,15 @@ function dol_print_object_info($object) print $langs->trans("ApprovedBy").': '; if (is_object($object->user_approve)) { - print $object->user_approve->getNomUrl(1); + if ($object->user_approve->id) print $object->user_approve->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_approve); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } @@ -305,13 +313,15 @@ function dol_print_object_info($object) print $langs->trans("ClosedBy").': '; if (is_object($object->user_cloture)) { - print $object->user_cloture->getNomUrl(1); + if ($object->user_cloture->id) print $object->user_cloture->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_cloture); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } @@ -330,13 +340,15 @@ function dol_print_object_info($object) print $langs->trans("ConciliatedBy").': '; if (is_object($object->user_rappro)) { - print $object->user_rappro->getNomUrl(1); + if ($object->user_rappro->id) print $object->user_rappro->getNomUrl(1); + else print $langs->trans("Unknown"); } else { $userstatic=new User($db); $userstatic->fetch($object->user_rappro); - print $userstatic->getNomUrl(1); + if ($userstatic->id) print $userstatic->getNomUrl(1); + else print $langs->trans("Unknown"); } print '
'; } diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 2683bea68b8..13a26e857d2 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -607,9 +607,9 @@ class Fichinter extends CommonObject } /** - * Information sur l'objet fiche intervention + * Load information on object * - * @param int $id Id de la fiche d'intervention + * @param int $id Id of object * @return void */ function info($id) @@ -625,13 +625,12 @@ class Fichinter extends CommonObject $sql.= " WHERE f.rowid = ".$id; $sql.= " AND f.entity = ".$conf->entity; - $result = $this->db->query($sql); - - if ($result) + $resql = $this->db->query($sql); + if ($resql) { - if ($this->db->num_rows($result)) + if ($this->db->num_rows($resql)) { - $obj = $this->db->fetch_object($result); + $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; @@ -649,7 +648,7 @@ class Fichinter extends CommonObject $this->user_validation = $vuser; } } - $this->db->free($result); + $this->db->free($resql); } else { diff --git a/htdocs/fichinter/info.php b/htdocs/fichinter/info.php index 957f4b315ce..b3bc8295d2c 100644 --- a/htdocs/fichinter/info.php +++ b/htdocs/fichinter/info.php @@ -1,6 +1,6 @@ - * Copyright (C) 2009-2010 Laurent Destailleur + * Copyright (C) 2009-2013 Laurent Destailleur * Copyright (C) 2011 Juanjo Menent * * This program is free software; you can redistribute it and/or modify @@ -31,32 +31,36 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/fichinter.lib.php'; $langs->load('companies'); $langs->load("interventions"); -$fichinterid = GETPOST('id','int'); +$id = GETPOST('id','int'); // Security check if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'ficheinter', $fichinterid, 'fichinter'); +$object = new Fichinter($db); + +if ($id > 0) +{ + $object->fetch($id); +} + /* -* View -*/ + * View + */ llxHeader(); -$fichinter = new Fichinter($db); -$fichinter->fetch($fichinterid); - $societe = new Societe($db); -$societe->fetch($fichinter->socid); +$societe->fetch($object->socid); -$head = fichinter_prepare_head($fichinter); +$head = fichinter_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans('InterventionCard'), 0, 'intervention'); -$fichinter->info($fichinter->id); +$object->info($object->id); print '
'; -dol_print_object_info($fichinter); +dol_print_object_info($object); print '
'; print ''; From a9a2bd9eec121cee160278396446e2ed276374b5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 14:39:25 +0100 Subject: [PATCH 11/14] Fix error reported by travis. --- htdocs/core/modules/modSkype.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php index ef2a5f47446..3102ba97777 100644 --- a/htdocs/core/modules/modSkype.class.php +++ b/htdocs/core/modules/modSkype.class.php @@ -65,10 +65,10 @@ class modSkype extends DolibarrModules // Dependancies //------------- - $this->hidden = ! empty($conf->global->SKYPE_MODULE_DISABLED); // A condition to disable module - $this->depends = array(modSociete); // List of modules id that must be enabled if this module is enabled + $this->hidden = ! empty($conf->global->SKYPE_MODULE_DISABLED); // A condition to disable module + $this->depends = array('modSociete'); // List of modules id that must be enabled if this module is enabled $this->requiredby = array(); // List of modules id to disable if this one is disabled - $this->conflictwith = array(); // List of modules id this module is in conflict with + $this->conflictwith = array(); // List of modules id this module is in conflict with $this->langfiles = array(); // Constantes From 628fbc7b7d4bfe59ffc8a4eca22e0a6b72db087c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 15:14:23 +0100 Subject: [PATCH 12/14] Fix: bad picto --- htdocs/admin/fichinter.php | 3 +-- htdocs/fichinter/admin/fichinter_extrafields.php | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index a80c41cd60b..fd2ea1dc966 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -220,11 +220,10 @@ $form=new Form($db); $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans("InterventionsSetup"),$linkback,'setup'); -print "
"; $head=fichinter_admin_prepare_head(); -dol_fiche_head($head, 'ficheinter', $langs->trans("ModuleSetup")); +dol_fiche_head($head, 'ficheinter', $langs->trans("Interventions"), 0, 'intervention'); // Interventions numbering model diff --git a/htdocs/fichinter/admin/fichinter_extrafields.php b/htdocs/fichinter/admin/fichinter_extrafields.php index f503e9a184e..06fefb32fbe 100644 --- a/htdocs/fichinter/admin/fichinter_extrafields.php +++ b/htdocs/fichinter/admin/fichinter_extrafields.php @@ -71,7 +71,7 @@ print_fiche_titre($langs->trans("InterventionsSetup"),$linkback,'setup'); $head=fichinter_admin_prepare_head(); -dol_fiche_head($head, 'attributes', $langs->trans("Ficheinter"), 0, 'fichinter'); +dol_fiche_head($head, 'attributes', $langs->trans("Interventions"), 0, 'intervention'); print $langs->trans("DefineHereComplementaryAttributes",$textobject).'
'."\n"; From a14de0c035bb59024a41c58c8c82e71a47fae1b3 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Tue, 5 Nov 2013 15:29:33 +0100 Subject: [PATCH 13/14] fix : language --- README-FR | 2 +- htdocs/adherents/admin/adherent.php | 2 +- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/commande/document.php | 2 +- htdocs/core/lib/xcal.lib.php | 4 ++-- htdocs/core/modules/modProjet.class.php | 12 ++++++------ htdocs/cron/card.php | 8 ++++---- htdocs/cron/list.php | 2 +- htdocs/expedition/class/expedition.class.php | 2 +- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- htdocs/fourn/commande/document.php | 2 +- htdocs/fourn/facture/document.php | 2 +- htdocs/langs/fr_FR/admin.lang | 4 ++-- htdocs/langs/fr_FR/cron.lang | 2 +- 15 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README-FR b/README-FR index 8b3900ff78c..c89314be22a 100644 --- a/README-FR +++ b/README-FR @@ -123,6 +123,6 @@ Voici un liste de fonctionnalites pas encore gérées par Dolibarr: - Dolibarr ne gère qu'une seule monnaie à la fois (mono-devise). - Dolibarr ne gère en standard qu'une société/institution/association mère (mono-société). Pour en gérer plusieurs (comme vos filiales), il faut, soit faire plusieurs installations de Dolibarr, soit installer le module MultiCompany qui permet de gérer n société/institutions/associations dans une seule instance par une isolation logique des données. - Dolibarr ne contient pas de module de Gestion de la paie. -- Les taches du module de gestion de projets n'ont pas de dépendance entre elle. +- Les tâches du module de gestion de projets n'ont pas de dépendance entre elle. - Dolibarr ne contient pas de Webmail. - Dolibarr ne fait pas le café (pas encore). diff --git a/htdocs/adherents/admin/adherent.php b/htdocs/adherents/admin/adherent.php index 275e9323223..d6e97de921e 100644 --- a/htdocs/adherents/admin/adherent.php +++ b/htdocs/adherents/admin/adherent.php @@ -263,7 +263,7 @@ print '
'; /* - * Edition des variables globales non rattache a un theme specifique + * Edition des variables globales non rattachées à un theme specifique */ $constantes=array( 'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT', diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 5d7f493f2cf..b03d67f1701 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1710,7 +1710,7 @@ class Propal extends CommonObject { if ($statut == 2) { - // Classe la societe rattachee comme client + // Classe la société rattachée comme client $soc=new Societe($this->db); $soc->id = $this->socid; $result=$soc->set_as_client(); diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php index 61ad0aac194..0f2925cf455 100644 --- a/htdocs/commande/document.php +++ b/htdocs/commande/document.php @@ -21,7 +21,7 @@ /** * \file htdocs/commande/document.php * \ingroup order - * \brief Page de gestion des documents attachees a une commande + * \brief Documents setup page attached to an order */ require '../main.inc.php'; diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index f8f8524743a..9badeae5290 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -116,7 +116,7 @@ function build_calfile($format,$title,$desc,$events_array,$outputfile) LOCATION: SEQUENCE:0 STATUS:CONFIRMED - SUMMARY:Tache 1 heure + SUMMARY:Tâche 1 heure TRANSP:OPAQUE END:VEVENT @@ -132,7 +132,7 @@ function build_calfile($format,$title,$desc,$events_array,$outputfile) LOCATION: SEQUENCE:0 STATUS:CONFIRMED - SUMMARY:Tache 1 jour + SUMMARY:Tâche 1 jour TRANSP:TRANSPARENT END:VEVENT */ diff --git a/htdocs/core/modules/modProjet.class.php b/htdocs/core/modules/modProjet.class.php index 584a8e3494f..a384a1a9739 100644 --- a/htdocs/core/modules/modProjet.class.php +++ b/htdocs/core/modules/modProjet.class.php @@ -125,28 +125,28 @@ class modProjet extends DolibarrModules $r++; $this->rights[$r][0] = 41; // id de la permission - $this->rights[$r][1] = "Lire les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission + $this->rights[$r][1] = "Lire les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'lire'; $r++; $this->rights[$r][0] = 42; // id de la permission - $this->rights[$r][1] = "Creer/modifier les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission + $this->rights[$r][1] = "Creer/modifier les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'creer'; $r++; $this->rights[$r][0] = 44; // id de la permission - $this->rights[$r][1] = "Supprimer les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission + $this->rights[$r][1] = "Supprimer les projets et tâches (partagés ou dont je suis contact)"; // libelle de la permission $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'supprimer'; $r++; $this->rights[$r][0] = 141; // id de la permission - $this->rights[$r][1] = "Lire tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission + $this->rights[$r][1] = "Lire tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'all'; @@ -154,7 +154,7 @@ class modProjet extends DolibarrModules $r++; $this->rights[$r][0] = 142; // id de la permission - $this->rights[$r][1] = "Creer/modifier tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission + $this->rights[$r][1] = "Creer/modifier tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'all'; @@ -162,7 +162,7 @@ class modProjet extends DolibarrModules $r++; $this->rights[$r][0] = 144; // id de la permission - $this->rights[$r][1] = "Supprimer tous les projets et taches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission + $this->rights[$r][1] = "Supprimer tous les projets et tâches (y compris prives qui ne me sont pas affectes)"; // libelle de la permission $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'all'; diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 81e0ba99f26..c7110654781 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -120,7 +120,7 @@ if ($action=='add') $object->unitfrequency=GETPOST('unitfrequency','int'); $object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int'); - //Ajout de la tache cron + //Add cron task $result = $object->create($user); // test du Resultat de la requete @@ -154,7 +154,7 @@ if ($action=='update') $object->unitfrequency=GETPOST('unitfrequency','int'); $object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int'); - //Ajout de la tache cron + //Add cron task $result = $object->update($user); // test du Resultat de la requete @@ -172,7 +172,7 @@ if ($action=='activate') { $object->status=1; - //Ajout de la tache cron + //Add cron task $result = $object->update($user); // test du Resultat de la requete @@ -189,7 +189,7 @@ if ($action=='activate') if ($action=='inactive') { $object->status=0; - //Ajout de la tache cron + //Add cron task $result = $object->update($user); // test du Resultat de la requete diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 7c391558cb9..8d27450eaf8 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -79,7 +79,7 @@ if (!empty($search_label)) // Delete jobs if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->cron->delete){ - //Delete de la tache cron + //Delete cron task $object = new Cronjob($db); $object->id=$id; $result = $object->delete($user); diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 20425b07310..136063d4552 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -569,7 +569,7 @@ class Expedition extends CommonObject if (preg_match('/^[\(]?PROV/i', $this->ref)) { // On renomme repertoire ($this->ref = ancienne ref, $numfa = nouvelle ref) - // afin de ne pas perdre les fichiers attaches + // in order not to lose the attached files $oldref = dol_sanitizeFileName($this->ref); $newref = dol_sanitizeFileName($numref); $dirsource = $conf->expedition->dir_output.'/sending/'.$oldref; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 6f6f9e91867..467a59adba1 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -355,7 +355,7 @@ class CommandeFournisseur extends CommonOrder if (preg_match('/^[\(]?PROV/i', $this->ref)) { // On renomme repertoire ($this->ref = ancienne ref, $num = nouvelle ref) - // afin de ne pas perdre les fichiers attaches + // in order not to lose the attached files $oldref = dol_sanitizeFileName($this->ref); $newref = dol_sanitizeFileName($num); $dirsource = $conf->fournisseur->dir_output.'/commande/'.$oldref; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 2e8269055ea..a237ef49a5f 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -897,7 +897,7 @@ class FactureFournisseur extends CommonInvoice if (preg_match('/^[\(]?PROV/i', $this->ref)) { // On renomme repertoire facture ($this->ref = ancienne ref, $num = nouvelle ref) - // afin de ne pas perdre les fichiers attaches + // in order not to lose the attached files $facref = dol_sanitizeFileName($this->ref); $snumfa = dol_sanitizeFileName($num); diff --git a/htdocs/fourn/commande/document.php b/htdocs/fourn/commande/document.php index da72a325574..63c5a43f912 100644 --- a/htdocs/fourn/commande/document.php +++ b/htdocs/fourn/commande/document.php @@ -22,7 +22,7 @@ /** * \file htdocs/fourn/commande/document.php * \ingroup supplier - * \brief Page de gestion des documents attachees a une commande fournisseur + * \brief Page de gestion des documents attaches a une commande fournisseur */ require '../../main.inc.php'; diff --git a/htdocs/fourn/facture/document.php b/htdocs/fourn/facture/document.php index 12daf37060c..d75b81f402a 100644 --- a/htdocs/fourn/facture/document.php +++ b/htdocs/fourn/facture/document.php @@ -21,7 +21,7 @@ /** * \file htdocs/fourn/facture/document.php * \ingroup facture, fournisseur - * \brief Page de gestion des documents attachees a une facture fournisseur + * \brief Page de gestion des documents attaches a une facture fournisseur */ require '../../main.inc.php'; diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 5c6c340d1ad..8d73250d652 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1471,8 +1471,8 @@ TestGeoIPResult=Test de conversion IP -> Pays ProjectsNumberingModules=Modèles de numérotation des références projets ProjectsSetup=Configuration du module Projets ProjectsModelModule=Modèles de document de rapport projets -TasksNumberingModules=Modèles de numérotation des références taches -TaskModelModule=Modèles de document de rapport taches +TasksNumberingModules=Modèles de numérotation des références tâches +TaskModelModule=Modèles de document de rapport tâches ##### ECM (GED) ##### ECMSetup = Configuration du module GED ECMAutoTree = L'arborescence automatique est disponible diff --git a/htdocs/langs/fr_FR/cron.lang b/htdocs/langs/fr_FR/cron.lang index 32546eac28c..d4e10c80fca 100644 --- a/htdocs/langs/fr_FR/cron.lang +++ b/htdocs/langs/fr_FR/cron.lang @@ -68,7 +68,7 @@ CronPriority=Priorité CronLabel=Description CronNbRun=Nb. exec. CronEach=Tous les -JobFinished=Tache lancée et terminée +JobFinished=Tâche lancée et terminée # #Page card From 2d7181553bbd6f03f4f8aac249cb02db7311544e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Nov 2013 15:29:58 +0100 Subject: [PATCH 14/14] Fix: translation --- htdocs/comm/fiche.php | 9 ++------- htdocs/fourn/fiche.php | 7 +------ htdocs/langs/en_US/members.lang | 1 + htdocs/langs/fr_FR/members.lang | 1 + htdocs/societe/canvas/actions_card_common.class.php | 2 +- htdocs/societe/soc.php | 2 +- 6 files changed, 7 insertions(+), 15 deletions(-) diff --git a/htdocs/comm/fiche.php b/htdocs/comm/fiche.php index b54e3f955d2..c648a7d312b 100644 --- a/htdocs/comm/fiche.php +++ b/htdocs/comm/fiche.php @@ -197,9 +197,8 @@ if ($id > 0) print '
'; - //print ''; - //print '
'; + print ''; print ''; print "\n"; @@ -469,8 +468,6 @@ if ($id > 0) print '
'; - //print "\n"; - //print '
"; - //print "
'.$langs->trans("ThirdPartyName").''; @@ -459,7 +458,7 @@ if ($id > 0) } else { - print $langs->trans("UserNotLinkedToMember"); + print $langs->trans("ThirdpartyNotLinkedToMember"); } print '
'; // Nbre max d'elements des petites listes @@ -807,8 +804,6 @@ if ($id > 0) print ''; print '
'; - //print "
"; dol_fiche_end(); diff --git a/htdocs/fourn/fiche.php b/htdocs/fourn/fiche.php index 27beceeb979..9f3b32166dc 100644 --- a/htdocs/fourn/fiche.php +++ b/htdocs/fourn/fiche.php @@ -99,8 +99,6 @@ if ($object->fetch($id)) print '
'; - //print ''; - //print ''; print "\n";
'; print ''; print ''; print "\n"; @@ -273,7 +271,6 @@ if ($object->fetch($id)) print '
'; - //print '
'; - //print '
'.$langs->trans("ThirdPartyName").''; @@ -263,7 +261,7 @@ if ($object->fetch($id)) } else { - print $langs->trans("UserNotLinkedToMember"); + print $langs->trans("ThirdpartyNotLinkedToMember"); } print '
'; $var=true; @@ -428,8 +425,6 @@ if ($object->fetch($id)) print ''; print '
'; - //print '
' . "\n"; dol_fiche_end(); diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index e7c056ef5ee..5c12d9c3aa3 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -8,6 +8,7 @@ Members=Members MemberAccount=Member login ShowMember=Show member card UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third-party not linked to a member MembersTickets=Members Tickets FundationMembers=Foundation members Attributs=Attributes diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 9f508ff3fcd..92a06886712 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -8,6 +8,7 @@ Members=Adhérents MemberAccount=Login adhérent ShowMember=Afficher fiche adhérent UserNotLinkedToMember=Utilisateur non lié à un adhérent +ThirdpartyNotLinkedToMember=Tiers non lié à un adhérent MembersTickets=Étiquettes d'adhérents FundationMembers=Membres de l'association Attributs=Attributs diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 89776835e2a..7bc1ac8fef1 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -618,7 +618,7 @@ abstract class ActionsCardCommon } else { - $this->tpl['linked_member'] = $langs->trans("UserNotLinkedToMember"); + $this->tpl['linked_member'] = $langs->trans("ThirdpartyNotLinkedToMember"); } } diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index e8c8378eee0..9001894c149 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -1793,7 +1793,7 @@ else } else { - print $langs->trans("UserNotLinkedToMember"); + print $langs->trans("ThirdpartyNotLinkedToMember"); } print '