From b075e3c808b15d24df80c88d965db90e5cb27986 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 11 Nov 2013 10:10:47 +0100 Subject: [PATCH 1/4] Problem in my software --- htdocs/langs/sk_SK/link.lang | 36 ++++++++++++++++---------------- htdocs/langs/sk_SK/printipp.lang | 36 ++++++++++++++++---------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/htdocs/langs/sk_SK/link.lang b/htdocs/langs/sk_SK/link.lang index 910d15af974..abfa69d7e2a 100644 --- a/htdocs/langs/sk_SK/link.lang +++ b/htdocs/langs/sk_SK/link.lang @@ -1,18 +1,18 @@ -/* - * Language code: sk_SK - * Automatic generated via autotranslator.php tool - * Generation date 2013-11-08 23:25:26 - */ - - -// START - Lines generated via autotranslator.php tool (2013-11-08 23:25:26). -// Reference language: en_US -> sk_SK -LinkANewFile=Prepojenie nový súbor / dokument -LinkedFiles=Prepojené súbory a dokumenty -NoLinkFound=Žiadny registrovaný odkazy -LinkComplete=Súbor bol úspešne pripojil -ErrorFileNotLinked=Súbor nemohol byť spojená -LinkRemoved=Odkaz %s bol odstránený -ErrorFailedToDeleteLink=Nepodarilo sa odstrániť odkaz "%s" -ErrorFailedToUpdateLink=Nepodarilo sa aktualizovať odkaz "%s" -// STOP - Lines generated via autotranslator.php tool (2013-11-08 23:35:10). +/* + * Language code: sk_SK + * Automatic generated via autotranslator.php tool + * Generation date 2013-11-08 23:25:26 + */ + + +// START - Lines generated via autotranslator.php tool (2013-11-08 23:25:26). +// Reference language: en_US -> sk_SK +LinkANewFile=Prepojenie nový súbor / dokument +LinkedFiles=Prepojené súbory a dokumenty +NoLinkFound=Žiadny registrovaný odkazy +LinkComplete=Súbor bol úspešne pripojil +ErrorFileNotLinked=Súbor nemohol byť spojená +LinkRemoved=Odkaz %s bol odstránený +ErrorFailedToDeleteLink=Nepodarilo sa odstrániť odkaz "%s" +ErrorFailedToUpdateLink=Nepodarilo sa aktualizovať odkaz "%s" +// STOP - Lines generated via autotranslator.php tool (2013-11-08 23:35:10). diff --git a/htdocs/langs/sk_SK/printipp.lang b/htdocs/langs/sk_SK/printipp.lang index 824e51a686b..1b051dae6cb 100644 --- a/htdocs/langs/sk_SK/printipp.lang +++ b/htdocs/langs/sk_SK/printipp.lang @@ -1,18 +1,18 @@ -/* - * Language code: sk_SK - * Automatic generated via autotranslator.php tool - * Generation date 2013-11-08 23:25:26 - */ - - -// START - Lines generated via autotranslator.php tool (2013-11-08 23:25:26). -// Reference language: en_US -> sk_SK -PrintIPPSetup=Nastavenie modulu Priama tlač -PrintIPPDesc=Ce modul Permet d'un ajouter Bouton d'dojem priame des dokumenty vers votre imprimante. Il requiert un systeme Linux Equipe de poháre. -PRINTIPP_ENABLED=Zobraziť Piktogram "Priama tlač" do zoznamu dokumentov -PRINTIPP_HOST=Tlačový server -PRINTIPP_PORT=Prístav -PRINTIPP_USER=Prihlásenie -PRINTIPP_PASSWORD=Heslo -NoPrinterFound=Žiadne tlačiarne nájdené (skontrolujte poháre Nasta) -// STOP - Lines generated via autotranslator.php tool (2013-11-08 23:48:51). +/* + * Language code: sk_SK + * Automatic generated via autotranslator.php tool + * Generation date 2013-11-08 23:25:26 + */ + + +// START - Lines generated via autotranslator.php tool (2013-11-08 23:25:26). +// Reference language: en_US -> sk_SK +PrintIPPSetup=Nastavenie modulu Priama tlač +PrintIPPDesc=Ce modul Permet d'un ajouter Bouton d'dojem priame des dokumenty vers votre imprimante. Il requiert un systeme Linux Equipe de poháre. +PRINTIPP_ENABLED=Zobraziť Piktogram "Priama tlač" do zoznamu dokumentov +PRINTIPP_HOST=Tlačový server +PRINTIPP_PORT=Prístav +PRINTIPP_USER=Prihlásenie +PRINTIPP_PASSWORD=Heslo +NoPrinterFound=Žiadne tlačiarne nájdené (skontrolujte poháre Nasta) +// STOP - Lines generated via autotranslator.php tool (2013-11-08 23:48:51). From 1f7e6a42c2f6ea58680488bde806252a28935a84 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sun, 24 Nov 2013 11:33:36 +0100 Subject: [PATCH 2/4] add a Social contributions type and fix some language stuff --- htdocs/install/mysql/migration/2.1.0-2.2.0.sql | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/migration/2.1.0-2.2.0.sql b/htdocs/install/mysql/migration/2.1.0-2.2.0.sql index 070682d3c50..cc3988f8a42 100644 --- a/htdocs/install/mysql/migration/2.1.0-2.2.0.sql +++ b/htdocs/install/mysql/migration/2.1.0-2.2.0.sql @@ -71,12 +71,13 @@ update llx_bank set dateo = datec where datev = '1970-01-01 00:00:00' and rappro alter table llx_c_chargesociales add column actioncompta varchar(12) NOT NULL; insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 1, 'Allocations familiales', 1,1,'TAXFAM'); -insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 2, 'GSG Deductible', 1,1,'TAXCSGD'); -insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 3, 'GSG/CRDS NON Deductible',0,1,'TAXCSGND'); -insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (10, 'Taxe apprenttissage', 0,1,'TAXAPP'); +insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 2, 'GSG Déductible', 1,1,'TAXCSGD'); +insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 3, 'GSG/CRDS NON Déductible',0,1,'TAXCSGND'); +insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (10, 'Taxe apprentissage', 0,1,'TAXAPP'); insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (11, 'Taxe professionnelle', 0,1,'TAXPRO'); +insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (12, 'Contribution à la formation professionnelle', 1,1,'TAXOPCA'); insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (20, 'Impots locaux/fonciers', 0,1,'TAXFON'); -insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (30, 'Assurance Sante (SECU-URSSAF)', 0,1,'TAXSECU'); +insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (30, 'Assurance Santé (SECU-URSSAF)', 0,1,'TAXSECU'); insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (40, 'Mutuelle', 0,1,'TAXMUT'); insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (50, 'Assurance vieillesse (CNAV)', 0,1,'TAXRET'); insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (60, 'Assurance Chomage (ASSEDIC)', 0,1,'TAXCHOM'); From 8cd0647d7e74df8b00200dc63f64dace6daf909a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 Nov 2013 13:40:33 +0100 Subject: [PATCH 3/4] Fix: business rule to protect button and action was not synchronized --- htdocs/user/param_ihm.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 54a9093bd34..44686e9277e 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2013 Laurent Destailleur * Copyright (C) 2010-2012 Regis Houssin * Copyright (C) 2013 Florian Henry * @@ -78,7 +78,7 @@ $formadmin=new FormAdmin($db); /* * Actions */ -if ($action == 'update' && ($caneditfield || $user->admin)) +if ($action == 'update' && ($caneditfield || ! empty($user->admin))) { if (! $_POST["cancel"]) { @@ -258,7 +258,7 @@ else } else { - if ($user->id == $fuser->id || ! empty($user->admin)) // Si utilisateur edite = utilisateur courant (pas besoin de droits particulier car il s'agit d'une page de modif d'output et non de données) ou si admin + if ($caneditfield || ! empty($user->admin)) // Si utilisateur edite = utilisateur courant (pas besoin de droits particulier car il s'agit d'une page de modif d'output et non de données) ou si admin { print 'id.'">'.$langs->trans("Modify").''; } From e1b4d012353d54d98014a69d7c67d219a4a1ef89 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 24 Nov 2013 21:28:15 +0100 Subject: [PATCH 4/4] Improvement of the Skype button Perm & add a button"Chat" --- htdocs/adherents/fiche.php | 12 ++++++++---- htdocs/comm/fiche.php | 2 +- htdocs/contact/fiche.php | 6 +++--- htdocs/contact/list.php | 6 +++--- htdocs/core/lib/company.lib.php | 21 +++++++++++---------- htdocs/core/lib/functions.lib.php | 13 ++++++++----- htdocs/langs/en_US/companies.lang | 1 + htdocs/societe/soc.php | 18 +++++++++--------- htdocs/theme/common/skype_callbutton.png | Bin 0 -> 3768 bytes htdocs/theme/common/skype_chatbutton.png | Bin 0 -> 3731 bytes 10 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 htdocs/theme/common/skype_callbutton.png create mode 100644 htdocs/theme/common/skype_chatbutton.png diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index 399cc712297..0e04b77bb90 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -862,7 +862,7 @@ else print ''.$langs->trans("PhoneMobile").''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans("Skype").''; } @@ -1104,7 +1104,8 @@ else print ''.$langs->trans("PhoneMobile").'phone_mobile).'">'; // Skype - if (! empty($conf->skype->enabled)) { + if (! empty($conf->skype->enabled) && $user->rights->skype->view) + { print ''.$langs->trans("Skype").'skype).'">'; } @@ -1427,8 +1428,11 @@ else 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).''; - + if (! empty($conf->skype->enabled) && $user->rights->skype->view) + { + 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/comm/fiche.php b/htdocs/comm/fiche.php index 29ee792c738..5dfbdb9f254 100644 --- a/htdocs/comm/fiche.php +++ b/htdocs/comm/fiche.php @@ -268,7 +268,7 @@ if ($id > 0) print ''.$langs->trans('Fax').''.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans('Skype').''.dol_print_skype($object->skype,0,$object->id,'AC_SKYPE').''; } diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 3334a12b069..dfdcfc79949 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -526,7 +526,7 @@ else print ''.$langs->trans("IM").'jabberid).'">'; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans("Skype").'skype).'">'; } @@ -733,7 +733,7 @@ else print ''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans("Skype").'skype).'">'; } @@ -952,7 +952,7 @@ else print ''; // Skype - if (!empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans("Skype").''.dol_print_skype($object->skype,0,$object->fk_soc,1).''; } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 2b1c5e982df..6827e2c4f84 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -292,7 +292,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); } + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { 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); @@ -328,7 +328,7 @@ if ($result) print ''; print ''; print ''; - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''; print ''; @@ -397,7 +397,7 @@ if ($result) // 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).''; } + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { 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/lib/company.lib.php b/htdocs/core/lib/company.lib.php index c08be97cac4..83da19cb5db 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1,12 +1,13 @@ - * Copyright (C) 2006 Rodolphe Quiedeville - * Copyright (C) 2007 Patrick Raguin - * Copyright (C) 2010-2012 Regis Houssin - * Copyright (C) 2013 Florian Henry - * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2006 Rodolphe Quiedeville + * Copyright (C) 2007 Patrick Raguin + * Copyright (C) 2010-2012 Regis Houssin + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Juanjo Menent * Copyright (C) 2013 Christophe Battarel - * * + * 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 * the Free Software Foundation; either version 3 of the License, or @@ -576,7 +577,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print_liste_field_titre($langs->trans("PhoneMobile"),$_SERVER["PHP_SELF"],"p.phone_mobile","",$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Fax"),$_SERVER["PHP_SELF"],"p.fax","",$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"p.email","",$param,'',$sortfield,$sortorder); - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { $colspan++; print ''.$langs->trans("Skype").''; @@ -608,8 +609,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print ' '; - print ' '; - if (! empty($conf->skype->enabled)) + print ' '; + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { $colspan++; print ' '; @@ -681,7 +682,7 @@ 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)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''; print dol_print_skype($obj->skype,$obj->rowid,$object->id,'AC_SKYPE'); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8da52e301e6..b91a19a9820 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1190,11 +1190,11 @@ function dol_print_email($email,$cid=0,$socid=0,$addlink=0,$max=64,$showinvalid= * 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 $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 + * @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) { @@ -1208,9 +1208,12 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) { $newskype=''; - $newskype.=' '; + $newskype.='?call" alt="'.$langs->trans("Call").' '.$skype.'" title="'.$langs->trans("Call").' '.$skype.'">'; + $newskype.=' '; + $newskype.=' '; + $newskype.=' '; $newskype.=''; if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index cdf9c3e5770..227ce4442fb 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -68,6 +68,7 @@ CountryId=Country id Phone=Phone Skype=Skype Call=Call +Chat=Chat PhonePro=Prof. phone PhonePerso=Pers. phone PhoneMobile=Mobile diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 9d5a707aac1..cc4d2c6754f 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -876,7 +876,7 @@ else print ''.$langs->trans('Web').''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans('Skype').''; } @@ -1300,7 +1300,7 @@ else print ''.$langs->trans('Web').''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans('Skype').''; } @@ -1592,12 +1592,12 @@ else // Country print ''.$langs->trans("Country").''; - if ($object->country_code) - { - $img=picto_from_langcode($object->country_code); - if ($object->isInEEC()) print $form->textwithpicto(($img?$img.' ':'').$object->country,$langs->trans("CountryIsInEEC"),1,0); - else print ($img?$img.' ':'').$object->country; - } + if ($object->country_code) + { + $img=picto_from_langcode($object->country_code); + if ($object->isInEEC()) print $form->textwithpicto(($img?$img.' ':'').$object->country,$langs->trans("CountryIsInEEC"),1,0); + else print ($img?$img.' ':'').$object->country; + } print ''; // State @@ -1614,7 +1614,7 @@ else print ''; // Skype - if (! empty($conf->skype->enabled)) + if (! empty($conf->skype->enabled) && $user->rights->skype->view) { print ''.$langs->trans('Skype').''; print dol_print_skype($object->skype,0,$object->id,'AC_SKYPE'); diff --git a/htdocs/theme/common/skype_callbutton.png b/htdocs/theme/common/skype_callbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..79ee7963fc4e1624244419e2b3806807ec7d32dd GIT binary patch literal 3768 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