From 392403e7d05c254ee2aa516d720ab786d148a86e Mon Sep 17 00:00:00 2001 From: simnandez Date: Mon, 26 Dec 2011 09:47:07 +0100 Subject: [PATCH 01/13] Trad: Fix missing translation of FACTURE_CHANGE_THIRDPARTY option --- htdocs/langs/ca_ES/main.lang | 4 ++++ htdocs/langs/en_US/main.lang | 1 + htdocs/langs/es_ES/main.lang | 4 ++++ htdocs/langs/fr_FR/main.lang | 1 + 4 files changed, 10 insertions(+) diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index 65e2182be34..2dbaffd682c 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -248,10 +248,12 @@ Bytes=Bytes KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes +TeraBytes=Terabytes b=b. Kb=Kb Mb=Mb Gb=Gb +Tb=Tb Cut=Tallar Copy=Copiar Paste=Pegar @@ -599,6 +601,8 @@ IM=Missatgeria instantània NewAttribute=Nou atribut AttributeCode=Codi atribut OptionalFieldsSetup=Configuració dels atributs opcionals +URLPhoto=Url de la foto/logo +SetLinkToThirdParty=Vincular a un altre tercer CreateDraft=Crea esborrany ClickToEdit=Clic per a editar diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 4ae7c7e8fad..a15bc01fb35 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -602,6 +602,7 @@ NewAttribute=New attribute AttributeCode=Attribute code OptionalFieldsSetup=Extra attributes setup URLPhoto=Url of photo/logo +SetLinkToThirdParty=Link Link to another third party CreateDraft=Create draft ClickToEdit=Click to edit diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index a9301630afa..7dd0d46b5f6 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -248,10 +248,12 @@ Bytes=Bytes KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes +TeraBytes=Terabytes b=b. Kb=Kb Mb=Mb Gb=Gb +Tb=Tb Cut=Cortar Copy=Copiar Paste=Pegar @@ -599,6 +601,8 @@ IM=Mensajería instantánea NewAttribute=Nuevo atributo AttributeCode=Código atributo OptionalFieldsSetup=Configuración de los atributos opcionales +URLPhoto=Url de la foto/logo +SetLinkToThirdParty=Vincular a otro tercero CreateDraft=Crear borrador ClickToEdit=Clic para editar diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index d5a42c3a6e0..b9884aaf3ad 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -602,6 +602,7 @@ NewAttribute=Nouvel attribut AttributeCode=Code de l'attribut OptionalFieldsSetup=Configuration des attributs complémentaires URLPhoto=Url vers photo/logo +SetLinkToThirdParty=Lier vers un autre tiers CreateDraft=Créer brouillon ClickToEdit=Cliquer ici pour éditer From 9d84cdf71779c8de21fffb162259f3f6296d1859 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 26 Dec 2011 10:26:21 +0100 Subject: [PATCH 02/13] Update htdocs/langs/en_US/main.lang --- htdocs/langs/en_US/main.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a15bc01fb35..73c0b56a8c8 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -602,7 +602,7 @@ NewAttribute=New attribute AttributeCode=Attribute code OptionalFieldsSetup=Extra attributes setup URLPhoto=Url of photo/logo -SetLinkToThirdParty=Link Link to another third party +SetLinkToThirdParty=Link to another third party CreateDraft=Create draft ClickToEdit=Click to edit From e359cbcf3ae486cf31b50267874dcf59f1e3051d Mon Sep 17 00:00:00 2001 From: simnandez Date: Mon, 26 Dec 2011 16:36:12 +0100 Subject: [PATCH 03/13] Add Venezuela data --- .../install/mysql/data/llx_10_c_regions.sql | 12 ++++- .../mysql/data/llx_20_c_departements.sql | 27 ++++++++++++ .../install/mysql/data/llx_c_currencies.sql | 2 +- htdocs/install/mysql/data/llx_c_tva.sql | 4 ++ .../install/mysql/migration/3.1.0-3.2.0.sql | 44 +++++++++++++++++++ 5 files changed, 87 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index a30e33bb69c..cdac742c2d5 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -200,6 +200,16 @@ INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, act -- Regions Mexique (id country=154) insert into llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) values (15401, 154, 15401, '', 0, 'Mexique', 1); - -- Regions Barbados (id country=46) INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (4601, 46, 4601, '', 0, 'Barbados', 1); + +-- Regions Venezuela (id country=232) +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23201, 232, 23201, '', 0, 'Los Andes', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23202, 232, 23202, '', 0, 'Capital', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23203, 232, 23203, '', 0, 'Central', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23204, 232, 23204, '', 0, 'Cento Occidental', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23205, 232, 23205, '', 0, 'Guayana', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23206, 232, 23206, '', 0, 'Insular', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23207, 232, 23207, '', 0, 'Los Llanos', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23208, 232, 23208, '', 0, 'Nor-Oriental', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23209, 232, 23209, '', 0, 'Zuliana', 1); \ No newline at end of file diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql index b23a995f59a..bb8691a0a21 100644 --- a/htdocs/install/mysql/data/llx_20_c_departements.sql +++ b/htdocs/install/mysql/data/llx_20_c_departements.sql @@ -644,3 +644,30 @@ INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, nc INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('SP', 4601, 'Speightstown', 0, 'SP', 'Saint Peter', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('SC', 4601, 'Crane', 0, 'SC', 'Saint Philip', 1); INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('ST', 4601, 'Hillaby', 0, 'ST', 'Saint Thomas', 1); + +-- Provinces Venezuela (id country=232) +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-L', 23201, '', 0, 'VE-L', 'Mérida', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-T', 23201, '', 0, 'VE-T', 'Trujillo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-E', 23201, '', 0, 'VE-E', 'Barinas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-M', 23202, '', 0, 'VE-M', 'Miranda', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-W', 23202, '', 0, 'VE-W', 'Vargas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-A', 23202, '', 0, 'VE-A', 'Distrito Capital', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-D', 23203, '', 0, 'VE-D', 'Aragua', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-G', 23203, '', 0, 'VE-G', 'Carabobo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-I', 23204, '', 0, 'VE-I', 'Falcón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-K', 23204, '', 0, 'VE-K', 'Lara', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-U', 23204, '', 0, 'VE-U', 'Yaracuy', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-F', 23205, '', 0, 'VE-F', 'Bolívar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-X', 23205, '', 0, 'VE-X', 'Amazonas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-Y', 23205, '', 0, 'VE-Y', 'Delta Amacuro', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-O', 23206, '', 0, 'VE-O', 'Nueva Esparta', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-Z', 23206, '', 0, 'VE-Z', 'Dependencias Federales', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-C', 23207, '', 0, 'VE-C', 'Apure', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-J', 23207, '', 0, 'VE-J', 'Guárico', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-H', 23207, '', 0, 'VE-H', 'Cojedes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-P', 23207, '', 0, 'VE-P', 'Portuguesa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-B', 23208, '', 0, 'VE-B', 'Anzoátegui', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-N', 23208, '', 0, 'VE-N', 'Monagas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-R', 23208, '', 0, 'VE-R', 'Sucre', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-V', 23209, '', 0, 'VE-V', 'Zulia', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-S', 23209, '', 0, 'VE-S', 'Táchira', 1); diff --git a/htdocs/install/mysql/data/llx_c_currencies.sql b/htdocs/install/mysql/data/llx_c_currencies.sql index 4131b172d35..6e67bcb6086 100644 --- a/htdocs/install/mysql/data/llx_c_currencies.sql +++ b/htdocs/install/mysql/data/llx_c_currencies.sql @@ -88,4 +88,4 @@ insert into llx_c_currencies ( code, code_iso, active, label ) values ( 'LK', 'L insert into llx_c_currencies ( code, code_iso, active, label ) values ( 'MU', 'MUR', 1, 'Roupies mauritiennes'); insert into llx_c_currencies ( code, code_iso, active, label ) values ( 'SR', 'SAR', 1, 'Saudi riyal'); insert into llx_c_currencies ( code, code_iso, active, label ) VALUES ( 'MX', 'MXP', 1, 'Pesos Mexicans'); - +insert into llx_c_currencies ( code, code_iso, active, label ) VALUES ( 'VE', 'VEF', 1, 'Venezuelan Bolívar'); diff --git a/htdocs/install/mysql/data/llx_c_tva.sql b/htdocs/install/mysql/data/llx_c_tva.sql index 097986925a9..aa907c95cc8 100644 --- a/htdocs/install/mysql/data/llx_c_tva.sql +++ b/htdocs/install/mysql/data/llx_c_tva.sql @@ -243,3 +243,7 @@ INSERT INTO llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) VALUES (46 INSERT INTO llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) VALUES (462,46, '15','0','VAT 15%',1); INSERT INTO llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) VALUES (463,46, '7.5','0','VAT 7.5%',1); +-- VENEZUELA (id country=232) +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2321,232, '0','0','No VAT',1); +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2322,232, '12','0','VAT 12%',1); +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2323,232, '8','0','VAT 8%',1); diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql index 16a0d819e33..071bd3afb4d 100755 --- a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql +++ b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql @@ -119,3 +119,47 @@ ALTER TABLE llx_societe ADD COLUMN fk_barcode_type integer DEFAULT 0; UPDATE llx_menu SET leftmenu = NULL where leftmenu in ('', '0', '1'); +-- Regions Venezuela (id country=232) +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23201, 232, 23201, '', 0, 'Los Andes', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23202, 232, 23202, '', 0, 'Capital', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23203, 232, 23203, '', 0, 'Central', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23204, 232, 23204, '', 0, 'Cento Occidental', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23205, 232, 23205, '', 0, 'Guayana', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23206, 232, 23206, '', 0, 'Insular', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23207, 232, 23207, '', 0, 'Los Llanos', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23208, 232, 23208, '', 0, 'Nor-Oriental', 1); +INSERT INTO llx_c_regions (rowid, fk_pays, code_region, cheflieu, tncc, nom, active) VALUES (23209, 232, 23209, '', 0, 'Zuliana', 1); + +-- Provinces Venezuela (id country=232) +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-L', 23201, '', 0, 'VE-L', 'Mérida', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-T', 23201, '', 0, 'VE-T', 'Trujillo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-E', 23201, '', 0, 'VE-E', 'Barinas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-M', 23202, '', 0, 'VE-M', 'Miranda', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-W', 23202, '', 0, 'VE-W', 'Vargas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-A', 23202, '', 0, 'VE-A', 'Distrito Capital', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-D', 23203, '', 0, 'VE-D', 'Aragua', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-G', 23203, '', 0, 'VE-G', 'Carabobo', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-I', 23204, '', 0, 'VE-I', 'Falcón', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-K', 23204, '', 0, 'VE-K', 'Lara', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-U', 23204, '', 0, 'VE-U', 'Yaracuy', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-F', 23205, '', 0, 'VE-F', 'Bolívar', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-X', 23205, '', 0, 'VE-X', 'Amazonas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-Y', 23205, '', 0, 'VE-Y', 'Delta Amacuro', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-O', 23206, '', 0, 'VE-O', 'Nueva Esparta', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-Z', 23206, '', 0, 'VE-Z', 'Dependencias Federales', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-C', 23207, '', 0, 'VE-C', 'Apure', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-J', 23207, '', 0, 'VE-J', 'Guárico', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-H', 23207, '', 0, 'VE-H', 'Cojedes', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-P', 23207, '', 0, 'VE-P', 'Portuguesa', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-B', 23208, '', 0, 'VE-B', 'Anzoátegui', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-N', 23208, '', 0, 'VE-N', 'Monagas', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-R', 23208, '', 0, 'VE-R', 'Sucre', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-V', 23209, '', 0, 'VE-V', 'Zulia', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('VE-S', 23209, '', 0, 'VE-S', 'Táchira', 1); +-- Currency Venezuela +insert into llx_c_currencies ( code, code_iso, active, label ) VALUES ( 'VE', 'VEF', 1, 'Venezuelan Bolívar'); + +-- VENEZUELA (id country=232) +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2321,232, '0','0','No VAT',1); +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2322,232, '12','0','VAT 12%',1); +insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (2323,232, '8','0','VAT 8%',1); \ No newline at end of file From f3d4cca46a1517fc2c0a7d19017e133cbc5167fd Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 27 Dec 2011 00:07:42 +0100 Subject: [PATCH 04/13] Fix: add function getStaticMember() for compatibility with PHP 5.2 --- htdocs/core/lib/functions.lib.php | 25 +++++++++++++++++++++++++ htdocs/install/fileconf.php | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5f1c193719e..bdaabfa0c2d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -145,6 +145,31 @@ if (! function_exists('json_decode')) } } +/** + * Enter description here ... + * + * @param string $class + * @param string $member + * @return void + */ +function getStaticMember($class, $member) +{ + if (is_object($class)) $class = get_class($class); + $classObj = new ReflectionClass($class); + $result = null; + + foreach($classObj->getStaticProperties() as $prop => $value) + { + if($prop == $member) + { + $result = $value; + break; + } + } + + return $result; +} + /** * Return a DoliDB instance (database handler). diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 9ac1f1eac7f..05f9a556d43 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -284,8 +284,8 @@ if (! empty($force_install_message)) include_once($dir."/".$file); // Version min of database - $versionbasemin=$class::$versionmin; - $note='('.$class::$label.' >= '.versiontostring($versionbasemin).')'; + $versionbasemin=getStaticMember($class, 'versionmin'); + $note='('.getStaticMember($class, 'label').' >= '.versiontostring($versionbasemin).')'; // Switch to mysql if mysqli is not present if ($defaultype=='mysqli' && !function_exists('mysqli_connect')) $defaultype = 'mysql'; From d06ae60a4a383f9433cc5f6ba7045c8b55eb76aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 28 Dec 2011 01:03:10 +0100 Subject: [PATCH 05/13] New: Tuffy font is now useless. --- htdocs/filefunc.inc.php | 2 +- htdocs/includes/fonts/Tuffy.ttf | Bin 19300 -> 0 bytes htdocs/includes/fonts/TuffyBold.ttf | Bin 16440 -> 0 bytes htdocs/includes/fonts/TuffyBoldItalic.ttf | Bin 18068 -> 0 bytes htdocs/includes/fonts/TuffyItalic.ttf | Bin 18904 -> 0 bytes 5 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 htdocs/includes/fonts/Tuffy.ttf delete mode 100644 htdocs/includes/fonts/TuffyBold.ttf delete mode 100644 htdocs/includes/fonts/TuffyBoldItalic.ttf delete mode 100644 htdocs/includes/fonts/TuffyItalic.ttf diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index a6282d7e4c6..46a0162d6f1 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -192,7 +192,7 @@ if (! defined('ODTPHP_PATHTOPCLZIP')) { define('ODTPHP_PATHTOPCLZIP', (!isset( if (! defined('ARTICHOW_PATH')) { define('ARTICHOW_PATH', (!isset($dolibarr_lib_ARTICHOW))?DOL_DOCUMENT_ROOT.'/includes/artichow/':(empty($dolibarr_lib_ARTICHOW)?'':$dolibarr_lib_ARTICHOW.'/')); } // Other required path if (! defined('ARTICHOW_FONT')) { define('ARTICHOW_FONT', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD))?DOL_DOCUMENT_ROOT.'/includes/fonts':dirname($dolibarr_font_DOL_DEFAULT_TTF_BOLD)); } -if (! defined('ARTICHOW_FONT_NAMES')) { define('ARTICHOW_FONT_NAMES', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD))?'Tuffy,TuffyBold,TuffyBoldItalic,TuffyItalic':'DejaVuSans,DejaVuSans-Bold,DejaVuSans-BoldOblique,DejaVuSans-Oblique'); } +if (! defined('ARTICHOW_FONT_NAMES')) { define('ARTICHOW_FONT_NAMES', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD))?'Aerial,AerialBd,AerialBdIt,AerialIt':'DejaVuSans,DejaVuSans-Bold,DejaVuSans-BoldOblique,DejaVuSans-Oblique'); } if (! defined('DOL_DEFAULT_TTF')) { define('DOL_DEFAULT_TTF', (!isset($dolibarr_font_DOL_DEFAULT_TTF))?DOL_DOCUMENT_ROOT.'/includes/fonts/Aerial.ttf':(empty($dolibarr_font_DOL_DEFAULT_TTF)?'':$dolibarr_font_DOL_DEFAULT_TTF)); } if (! defined('DOL_DEFAULT_TTF_BOLD')) { define('DOL_DEFAULT_TTF_BOLD', (!isset($dolibarr_font_DOL_DEFAULT_TTF_BOLD))?DOL_DOCUMENT_ROOT.'/includes/fonts/AerialBd.ttf':(empty($dolibarr_font_DOL_DEFAULT_TTF_BOLD)?'':$dolibarr_font_DOL_DEFAULT_TTF_BOLD)); } // Old path to root deprecated (no more used). diff --git a/htdocs/includes/fonts/Tuffy.ttf b/htdocs/includes/fonts/Tuffy.ttf deleted file mode 100644 index 8151817be0cd6ef44548420de0f34450bbd78fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19300 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 diff --git a/htdocs/includes/fonts/TuffyBoldItalic.ttf b/htdocs/includes/fonts/TuffyBoldItalic.ttf deleted file mode 100644 index 554faf20211288e69e37514ccb8ca844875c0628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18068 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 diff --git a/htdocs/includes/fonts/TuffyItalic.ttf b/htdocs/includes/fonts/TuffyItalic.ttf deleted file mode 100644 index 5f972ec086f38a46c661439c0cb7889b1adad372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18904 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 Z>_#B7C6b&bB>Aj^WVTAOxCC-X{x{8C&Y}PS From 1aaa1a51c54ff716b3be36669d0ab6529e6f6a37 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 28 Dec 2011 01:19:52 +0100 Subject: [PATCH 06/13] Doxygen --- htdocs/core/lib/functions.lib.php | 78 ++++++++++++++++--------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index bdaabfa0c2d..5a89586e7c9 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -146,11 +146,13 @@ if (! function_exists('json_decode')) } /** - * Enter description here ... + * Function to return value of a static property when class + * name is dynamically defined (not hard coded). + * This is because $myclass::$myvar works from PHP 5.3.0+ only * - * @param string $class - * @param string $member - * @return void + * @param string $class Class name + * @param string $member Name of property + * @return string Return value of static property. */ function getStaticMember($class, $member) { @@ -3547,10 +3549,10 @@ function picto_required() /** * Clean a string from all HTML tags and entities * - * @param StringHtml String to clean - * @param removelinefeed Replace also all lines feeds by a space - * @param pagecodeto Encoding of input string - * @return string String cleaned + * @param string $StringHtml String to clean + * @param string $removelinefeed Replace also all lines feeds by a space + * @param string $pagecodeto Encoding of input string + * @return string String cleaned */ function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8') { @@ -3574,10 +3576,10 @@ function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8') /** * Replace CRLF in string with a HTML BR tag * - * @param stringtoencode String to encode - * @param nl2brmode 0=Adding br before \n, 1=Replacing \n by br - * @param forxml false=Use
, true=Use
- * @return string String encoded + * @param string $stringtoencode String to encode + * @param string $nl2brmode 0=Adding br before \n, 1=Replacing \n by br + * @param string $forxml false=Use
, true=Use
+ * @return string String encoded */ function dol_nl2br($stringtoencode,$nl2brmode=0,$forxml=false) { @@ -3633,8 +3635,9 @@ function dol_htmlentitiesbr($stringtoencode,$nl2brmode=0,$pagecodefrom='UTF-8') /** * This function is called to decode a HTML string (it decodes entities and br tags) * - * @param stringtodecode String to decode - * @param pagecodeto Page code for result + * @param string $stringtodecode String to decode + * @param string $pagecodeto Page code for result + * @param string String decoded */ function dol_htmlentitiesbr_decode($stringtodecode,$pagecodeto='UTF-8') { @@ -3649,7 +3652,8 @@ function dol_htmlentitiesbr_decode($stringtodecode,$pagecodeto='UTF-8') /** * This function remove all ending \n and br at end * - * @param stringtodecode String to decode + * @param string $stringtodecode String to decode + * @return string String decoded */ function dol_htmlcleanlastbr($stringtodecode) { @@ -3660,9 +3664,9 @@ function dol_htmlcleanlastbr($stringtodecode) /** * This function is called to decode a string with HTML entities (it decodes entities tags) * - * @param stringhtml stringhtml - * @param pagecodeto Encoding of input string - * @return string decodestring + * @param string $stringhtml stringhtml + * @param string $pagecodeto Encoding of input string + * @return string decodestring */ function dol_entity_decode($stringhtml,$pagecodeto='UTF-8') { @@ -3673,9 +3677,9 @@ function dol_entity_decode($stringhtml,$pagecodeto='UTF-8') /** * Replace html_entity_decode functions to manage errors * - * @param a - * @param b - * @param c + * @param string $a Operand a + * @param string $b Operand b + * @param string $c Operand c * @return string String decoded */ function dol_html_entity_decode($a,$b,$c) @@ -3688,10 +3692,10 @@ function dol_html_entity_decode($a,$b,$c) /** * Replace htmlentities functions to manage errors * - * @param a - * @param b - * @param c - * @return string String encoded + * @param string $a Operand a + * @param string $b Operand b + * @param string $c Operand c + * @return string String encoded */ function dol_htmlentities($a,$b,$c) { @@ -3706,8 +3710,8 @@ function dol_htmlentities($a,$b,$c) * If not, it will we considered not HTML encoded even if it is by FPDF. * Example, if string contains euro symbol that has ascii code 128 * - * @param s String to check - * @return int 0 if bad iso, 1 if good iso + * @param string $s String to check + * @return int 0 if bad iso, 1 if good iso */ function dol_string_is_good_iso($s) { @@ -3940,8 +3944,8 @@ function get_date_range($date_start,$date_end,$format = '',$outputlangs='') * @param int $keepembedded Set to 1 in error message must be kept embedded into its html place (this disable jnotify) * @return string Return html output * - * @see dol_print_error - * @see dol_htmloutput_errors + * @see dol_print_error + * @see dol_htmloutput_errors */ function get_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepembedded=0) { @@ -4022,8 +4026,8 @@ function get_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepemb * @param int $keepembedded Set to 1 in error message must be kept embedded into its html place (this disable jnotify) * @return string Return html output * - * @see dol_print_error - * @see dol_htmloutput_mesg + * @see dol_print_error + * @see dol_htmloutput_mesg */ function get_htmloutput_errors($mesgstring='', $mesgarray='', $keepembedded=0) { @@ -4039,8 +4043,8 @@ function get_htmloutput_errors($mesgstring='', $mesgarray='', $keepembedded=0) * @param int $keepembedded Set to 1 if message must be kept embedded into its html place (this disable jnotify) * @return void * - * @see dol_print_error - * @see dol_htmloutput_errors + * @see dol_print_error + * @see dol_htmloutput_errors */ function dol_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepembedded=0) { @@ -4089,8 +4093,8 @@ function dol_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepemb * @param int $keepembedded Set to 1 in error message must be kept embedded into its html place (this disable jnotify) * @return void * - * @see dol_print_error - * @see dol_htmloutput_mesg + * @see dol_print_error + * @see dol_htmloutput_mesg */ function dol_htmloutput_errors($mesgstring='', $mesgarray='', $keepembedded=0) { @@ -4254,8 +4258,8 @@ function verifCond($strRights) * Replace eval function to add more security. * This function is called by verifCond() * - * @param string $s - * @return void + * @param string $s String to evaluate + * @return mixed Result of eval */ function dol_eval($s) { From d8856bac5fd84a8c570fbf76d79137d9214da874 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 28 Dec 2011 01:28:16 +0100 Subject: [PATCH 07/13] Fix: Work with PHP < 5.3 --- htdocs/admin/tools/dolibarr_export.php | 21 ++++++++++++--------- htdocs/admin/tools/dolibarr_import.php | 15 ++++++++------- htdocs/admin/tools/export.php | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 1742fd1ff64..8d87ce0a0b1 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -83,6 +83,9 @@ if ($_GET["msg"]) print "\n"; } + +$label=getStaticMember($db, 'label'); + ?> @@ -99,7 +102,7 @@ if ($_GET["msg"])
trans("ExportMethod"); ?>
@@ -112,7 +115,7 @@ if ($_GET["msg"])
@@ -122,7 +125,7 @@ if ($_GET["msg"]) } else { - print 'No method available with database '.$db::$label; + print 'No method available with database '.$label; } ?>
@@ -134,7 +137,7 @@ if ($_GET["msg"])
trans("MySqlExportParameters"); ?> @@ -217,7 +220,7 @@ if ($_GET["msg"])
trans("PostgreSqlExportParameters"); ?> @@ -281,8 +284,8 @@ if ($_GET["msg"]) id="filename_template" value="" />
@@ -296,7 +299,7 @@ $compression=array( // 'zip' => array('function' => 'zip_open', 'id' => 'radio_compression_zip', 'label' => $langs->trans("Zip")), Not open source 'gz' => array('function' => 'gzopen', 'id' => 'radio_compression_gzip', 'label' => $langs->trans("Gzip")), ); -if ($db::$label == 'MySQL') +if ($label == 'MySQL') { $compression['bz']=array('function' => 'bzopen', 'id' => 'radio_compression_bzip', 'label' => $langs->trans("Bzip2")); } @@ -339,10 +342,10 @@ print "\n"; show_documents('systemtools','backup',$conf->admin->dir_output.'/backup',$_SERVER['PHP_SELF'],0,1,'',1,0,0,54,0,'',$langs->trans("PreviousDumpFiles")); //if ($result) print '

'; llxFooter(); $db->close(); +?> \ No newline at end of file diff --git a/htdocs/admin/tools/dolibarr_import.php b/htdocs/admin/tools/dolibarr_import.php index 28c39d2c8b2..9ab484aa75f 100644 --- a/htdocs/admin/tools/dolibarr_import.php +++ b/htdocs/admin/tools/dolibarr_import.php @@ -58,6 +58,8 @@ print $langs->trans("RestoreDesc",DOL_DATA_ROOT).'

'; print $langs->trans("RestoreDesc2",DOL_DATA_ROOT).'

'; print $langs->trans("RestoreDesc3",DOL_DATA_ROOT).'

'; +$label=getStaticMember($db, 'label'); + ?>
@@ -69,7 +71,7 @@ print $langs->trans("RestoreDesc3",DOL_DATA_ROOT).'

';
trans("ImportMethod"); ?>
@@ -78,7 +80,7 @@ print $langs->trans("RestoreDesc3",DOL_DATA_ROOT).'

';
@@ -89,7 +91,7 @@ print $langs->trans("RestoreDesc3",DOL_DATA_ROOT).'

'; } else { - print 'No method available with database '.$db::$label; + print 'No method available with database '.$label; } ?>
@@ -101,7 +103,7 @@ print $langs->trans("RestoreDesc3",DOL_DATA_ROOT).'

';
@@ -135,7 +137,7 @@ if ($db::$label == 'MySQL')
@@ -180,8 +182,7 @@ else if ($db::$label == 'PostgreSQL')
close(); - -llxFooter(); ?> \ No newline at end of file diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 7667793ced8..d262b66b359 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -394,7 +394,7 @@ function backup_tables($outputfile, $tables='*') // Print headers and global mysql config vars $sqlhead = ''; - $sqlhead .= "-- ".$db::$label." dump via php + $sqlhead .= "-- ".getStaticMember($db, 'label')." dump via php -- -- Host: ".$db->db->host_info." Database: ".$db->database_name." -- ------------------------------------------------------ From ceb0505b5b938fc4d89d0f731194f51c27249c55 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 28 Dec 2011 01:51:46 +0100 Subject: [PATCH 08/13] New: Tuffy font is no more required. --- htdocs/includes/artichow/Artichow.cfg.php | 8 ++++---- htdocs/includes/artichow/php5/AntiSpam.class.php | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/htdocs/includes/artichow/Artichow.cfg.php b/htdocs/includes/artichow/Artichow.cfg.php index 7894a943303..ea4b91c9b2f 100644 --- a/htdocs/includes/artichow/Artichow.cfg.php +++ b/htdocs/includes/artichow/Artichow.cfg.php @@ -73,10 +73,10 @@ define('ARTICHOW_DEPRECATED', TRUE); // DOL_CHANGE LDR if (defined('ARTICHOW_FONT_NAMES')) $fonts=explode(',',constant('ARTICHOW_FONT_NAMES')); else $fonts = array( - 'Tuffy', - 'TuffyBold', - 'TuffyBoldItalic', - 'TuffyItalic' + 'Aerial', + 'AerialBd', + 'AerialBdIt', + 'AerialIt' ); global $artichow_defaultfont; $artichow_defaultfont=$fonts[0]; diff --git a/htdocs/includes/artichow/php5/AntiSpam.class.php b/htdocs/includes/artichow/php5/AntiSpam.class.php index 0d06b2c2b3b..b0dd33de64c 100644 --- a/htdocs/includes/artichow/php5/AntiSpam.class.php +++ b/htdocs/includes/artichow/php5/AntiSpam.class.php @@ -122,11 +122,12 @@ class awAntiSpam extends awImage { */ public function draw() { + // We redefine $fonts here because we need a full path to font $fonts = array( - ARTICHOW_FONT.DIRECTORY_SEPARATOR.'Tuffy.ttf', - ARTICHOW_FONT.DIRECTORY_SEPARATOR.'TuffyBold.ttf', - ARTICHOW_FONT.DIRECTORY_SEPARATOR.'TuffyItalic.ttf', - ARTICHOW_FONT.DIRECTORY_SEPARATOR.'TuffyBoldItalic.ttf' + ARTICHOW_FONT.DIRECTORY_SEPARATOR.'Aerial.ttf', + ARTICHOW_FONT.DIRECTORY_SEPARATOR.'AerialBd.ttf', + ARTICHOW_FONT.DIRECTORY_SEPARATOR.'AerialBdIt.ttf', + ARTICHOW_FONT.DIRECTORY_SEPARATOR.'AerialIt.ttf' ); $sizes = array(12, 12.5, 13, 13.5, 14, 15, 16, 17, 18, 19); From e17a9f7835798131b31db1d8bf9e85098ea34c6b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 28 Dec 2011 01:57:47 +0100 Subject: [PATCH 09/13] Fix: Missing trans --- htdocs/user/passwordforgotten.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index 7c4f6e1323b..1c8c80d8114 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -33,6 +33,7 @@ $langs->load("errors"); $langs->load("users"); $langs->load("companies"); $langs->load("ldap"); +$langs->load("other"); // Security check if ($conf->global->MAIN_SECURITY_DISABLEFORGETPASSLINK) From 216aaf5662ae900ade8e3490a3bc39abba8cfcd1 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 28 Dec 2011 08:32:30 +0100 Subject: [PATCH 10/13] Fix: doxygen --- htdocs/core/lib/functions.lib.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5a89586e7c9..9bae445901f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3610,6 +3610,7 @@ function dol_nl2br($stringtoencode,$nl2brmode=0,$forxml=false) * @param string $stringtoencode String to encode * @param int $nl2brmode 0=Adding br before \n, 1=Replacing \n by br (for use with FPDF writeHTMLCell function for example) * @param string $pagecodefrom Pagecode stringtoencode is encoded + * @return string String encoded */ function dol_htmlentitiesbr($stringtoencode,$nl2brmode=0,$pagecodefrom='UTF-8') { @@ -3637,7 +3638,7 @@ function dol_htmlentitiesbr($stringtoencode,$nl2brmode=0,$pagecodefrom='UTF-8') * * @param string $stringtodecode String to decode * @param string $pagecodeto Page code for result - * @param string String decoded + * @return string String decoded */ function dol_htmlentitiesbr_decode($stringtodecode,$pagecodeto='UTF-8') { @@ -3680,7 +3681,7 @@ function dol_entity_decode($stringhtml,$pagecodeto='UTF-8') * @param string $a Operand a * @param string $b Operand b * @param string $c Operand c - * @return string String decoded + * @return string String decoded */ function dol_html_entity_decode($a,$b,$c) { From f2bfaa729afb51b748751380d09e8c342501c32d Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 28 Dec 2011 09:26:36 +0100 Subject: [PATCH 11/13] Fix: more explicit and uniform code --- htdocs/langs/en_US/admin.lang | 2 + htdocs/langs/fr_FR/admin.lang | 4 +- htdocs/product/admin/produit.php | 101 +++++++++++++++---------------- 3 files changed, 54 insertions(+), 53 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index da08841c8bc..fabd141e3c8 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1105,6 +1105,8 @@ LDAPDescValues=Example values are designed for OpenLDAP with following lo ForANonAnonymousAccess=For an authenticated acces (for a write access for example) ##### Products ##### ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms ModifyProductDescAbility=Personalization of product descriptions in forms diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 851b8d2ad70..953623535d2 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1111,8 +1111,10 @@ LDAPDescGroups= Cette page permet de définir le nom des attributs de l'arbre LD LDAPDescMembers= Cette page permet de définir le nom des attributs de l'arbre LDAP pour chaque information des membres du module adhérents Dolibarr. LDAPDescValues= Les valeurs exemples sont adaptées à OpenLDAP avec les schémas suivant chargés: core.schema, cosine.schema, inetorgperson.schema). Si vous utilisez les valeurs suggérées et OpenLDAP, modifiez votre fichier de configuration LDAP slapd.conf pour avoir tous ces schémas actifs. ForANonAnonymousAccess= Pour un accès authentifié (pour accès en écriture par exemple) -##### Products ##### +##### Products/Services ##### ProductSetup= Configuration du module Produits +ServiceSetup= Configuration du module Services +ProductServiceSetup= Configuration des modules Produits et Services NumberOfProductShowInSelect= Nombre de produits max dans les listes déroulantes (0=aucune limite) ConfirmDeleteProductLineAbility= Confirmation de suppression d'une ligne produit dans les formulaires ModifyProductDescAbility= Personnalisation des descriptions produits dans les formulaires diff --git a/htdocs/product/admin/produit.php b/htdocs/product/admin/produit.php index a158bc5a4b7..dd911ae0bc0 100644 --- a/htdocs/product/admin/produit.php +++ b/htdocs/product/admin/produit.php @@ -1,9 +1,9 @@ +/* Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2006 Andre Cianfarani * Copyright (C) 2006-2007 Rodolphe Quiedeville * Copyright (C) 2007 Auguria SARL - * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2005-2011 Regis Houssin * Copyright (C) 2011 Juanjo Menent * * This program is free software; you can redistribute it and/or modify @@ -31,6 +31,7 @@ require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formbarcode.class.php"); $langs->load("admin"); +$langs->load("products"); // Security check if (! $user->admin) accessforbidden(); @@ -91,11 +92,11 @@ if($action) if (! $error) { - $mesg = "".$langs->trans("SetupSaved").""; + $mesg = ''.$langs->trans("SetupSaved").''; } else { - $mesg = "".$langs->trans("Error").""; + $mesg = ''.$langs->trans("Error").''; } } @@ -105,15 +106,28 @@ if($action) $formbarcode=new FormBarCode($db); -llxHeader('',$langs->trans("ProductSetup")); +$title = $langs->trans('ProductServiceSetup'); +$tab = $langs->trans("ProductsAndServices"); +if (empty($conf->produit->enabled)) +{ + $title = $langs->trans('ServiceSetup'); + $tab = $langs->trans('Services'); +} +else if (empty($conf->service->enabled)) +{ + $title = $langs->trans('ProductSetup'); + $tab = $langs->trans('Products'); +} + +llxHeader('',$title); $linkback=''.$langs->trans("BackToModuleList").''; -print_fiche_titre($langs->trans("ProductSetup"),$linkback,'setup'); +print_fiche_titre($title,$linkback,'setup'); $h = 0; $head[$h][0] = DOL_URL_ROOT."/product/admin/produit.php"; -$head[$h][1] = $langs->trans("Products"); +$head[$h][1] = $tab; $hselected=$h; $h++; @@ -123,9 +137,9 @@ $form=new Form($db); $var=true; print ''; print ''; -print " \n"; -print " \n"; -print " \n"; +print ''."\n"; +print ''."\n"; +print ''."\n"; /* * Formulaire parametres divers @@ -133,16 +147,16 @@ print " \n"; // multiprix activation/desactivation $var=!$var; -print ""; +print ''; print ''; -print ""; -print ""; +print ''; +print ''; print ''; print '"; +print ''; print ''; print ''; @@ -151,12 +165,12 @@ print ''; if($conf->global->PRODUIT_MULTIPRICES) { $var=!$var; - print ""; + print ''; print ''; - print ""; - print ""; + print ''; + print ''; print ''; - print ""; + print ''; print ''; print ''; print ''; @@ -164,31 +178,31 @@ if($conf->global->PRODUIT_MULTIPRICES) // sousproduits activation/desactivation $var=!$var; -print ""; +print ''; print ''; -print ""; -print ""; +print ''; +print ''; print ''; print '"; +print ''; print ''; print ''; // utilisation formulaire Ajax sur choix produit $var=!$var; -print ""; +print ''; print ''; -print ""; -print ""; +print ''; +print ''; print ''; if (! $conf->use_javascript_ajax) { print '"; + print ''; } else { @@ -201,7 +215,7 @@ else print $form->selectarray("activate_usesearchtoselectproduct",$arrval,$conf->global->PRODUIT_USE_SEARCH_TO_SELECT); print '"; + print ''; } print ''; print ''; @@ -209,12 +223,12 @@ print ''; if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) { $var=!$var; - print ""; + print ''; print ''; - print ""; - print ""; + print ''; + print ''; print ''; - print ""; + print ''; print ''; print ''; print ''; @@ -222,36 +236,19 @@ if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) // Visualiser description produit dans les formulaires activation/desactivation $var=!$var; -print ""; +print ''; print ''; -print ""; -print ""; +print ''; +print ''; print ''; print '"; +print ''; print ''; print ''; -// Confirmation de suppression d'un ligne produit dans les formulaires activation/desactivation -/* - $var=!$var; - print ""; - print ''; - print ""; - print ""; - print ''; - print '"; - print ''; - print ''; - */ - if ($conf->global->PRODUCT_CANVAS_ABILITY) { // Add canvas feature From dce5a3e708955533926dc1efe7a090cf0a1681ad Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 28 Dec 2011 09:57:48 +0100 Subject: [PATCH 12/13] Fix: avoid warning --- htdocs/admin/pdf.php | 106 ++++++++++++++++++++------ htdocs/core/class/html.form.class.php | 17 +++-- 2 files changed, 92 insertions(+), 31 deletions(-) diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index abbc1e038c5..044b57689d8 100755 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -37,14 +37,15 @@ $langs->load("companies"); $langs->load("products"); $langs->load("members"); -if (!$user->admin) - accessforbidden(); +if (! $user->admin) accessforbidden(); + +$action = GETPOST('action','alpha'); /* * Actions */ -if (isset($_POST["action"]) && $_POST["action"] == 'update') +if ($action == 'update') { dolibarr_set_const($db, "MAIN_PDF_FORMAT", $_POST["MAIN_PDF_FORMAT"],'chaine',0,'',$conf->entity); @@ -75,8 +76,9 @@ print_fiche_titre($langs->trans("PDF"),'','setup'); print $langs->trans("PDFDesc")."
\n"; print "
\n"; +$noCountryCode = (empty($mysoc->country_code) ? true : false); -if (isset($_GET["action"]) && $_GET["action"] == 'edit') // Edit +if ($action == 'edit') // Edit { print '
'; print ''; @@ -113,34 +115,62 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit') // Edit // Show prof id 1 in address into pdf $var=!$var; - $pid1=$langs->transcountry("ProfId1",$mysoc->pays_code); - if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); + if (! $noCountryCode) + { + $pid1=$langs->transcountry("ProfId1",$mysoc->country_code); + if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); + } + else + { + $pid1 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print '
'; // Show prof id 2 in address into pdf $var=!$var; - $pid2=$langs->transcountry("ProfId2",$mysoc->pays_code); - if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); + if (! $noCountryCode) + { + $pid2=$langs->transcountry("ProfId2",$mysoc->country_code); + if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); + } + else + { + $pid2 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''; // Show prof id 3 in address into pdf $var=!$var; - $pid3=$langs->transcountry("ProfId3",$mysoc->pays_code); - if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); + if (! $noCountryCode) + { + $pid3=$langs->transcountry("ProfId3",$mysoc->country_code); + if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); + } + else + { + $pid3 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''; // Show prof id 4 in address into pdf $var=!$var; - $pid4=$langs->transcountry("ProfId4",$mysoc->pays_code); - if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); + if (! $noCountryCode) + { + $pid4=$langs->transcountry("ProfId4",$mysoc->country_code); + if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); + } + else + { + $pid4 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''; print '
".$langs->trans("Parameters")."".$langs->trans("Value")." 
'.$langs->trans("Parameters").''.$langs->trans("Value").' 
 
'.$langs->trans("MultiPricesAbility").''; print $form->selectyesno("activate_multiprix",$conf->global->PRODUIT_MULTIPRICES,1); print ''; print ''; -print "
'.$langs->trans("MultiPricesNumPrices").'global->PRODUIT_MULTIPRICES_LIMIT."\">
'.$langs->trans("AssociatedProductsAbility").''; print $form->selectyesno("activate_sousproduits",$conf->global->PRODUIT_SOUSPRODUITS,1); print ''; print ''; -print "
'.$langs->trans("UseSearchToSelectProduct").''; print $langs->trans("NotAvailableWhenAjaxDisabled"); - print "'; print ''; - print "
'.$langs->trans("NumberOfProductShowInSelect").'global->PRODUIT_LIMIT_SIZE."\">
'.$langs->trans("ViewProductDescInFormAbility").''; print $form->selectyesno("activate_viewProdDescInForm",$conf->global->PRODUIT_DESC_IN_FORM,1); print ''; print ''; -print "
'.$langs->trans("ConfirmDeleteProductLineAbility").''; - print $form->selectyesno("activate_confirmDeleteProdLineInForm",$conf->global->PRODUIT_CONFIRM_DELETE_LINE,1); - print ''; - print ''; - print "
'.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; - print $form->selectyesno('MAIN_PROFID1_IN_ADDRESS',isset($conf->global->MAIN_PROFID1_IN_ADDRESS)?$conf->global->MAIN_PROFID1_IN_ADDRESS:0,1); + print $form->selectyesno('MAIN_PROFID1_IN_ADDRESS',isset($conf->global->MAIN_PROFID1_IN_ADDRESS)?$conf->global->MAIN_PROFID1_IN_ADDRESS:0,1,$noCountryCode); print '
'.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; - print $form->selectyesno('MAIN_PROFID2_IN_ADDRESS',isset($conf->global->MAIN_PROFID2_IN_ADDRESS)?$conf->global->MAIN_PROFID2_IN_ADDRESS:0,1); + print $form->selectyesno('MAIN_PROFID2_IN_ADDRESS',isset($conf->global->MAIN_PROFID2_IN_ADDRESS)?$conf->global->MAIN_PROFID2_IN_ADDRESS:0,1,$noCountryCode); print '
'.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; - print $form->selectyesno('MAIN_PROFID3_IN_ADDRESS',isset($conf->global->MAIN_PROFID3_IN_ADDRESS)?$conf->global->MAIN_PROFID3_IN_ADDRESS:0,1); + print $form->selectyesno('MAIN_PROFID3_IN_ADDRESS',isset($conf->global->MAIN_PROFID3_IN_ADDRESS)?$conf->global->MAIN_PROFID3_IN_ADDRESS:0,1,$noCountryCode); print '
'.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; - print $form->selectyesno('MAIN_PROFID4_IN_ADDRESS',isset($conf->global->MAIN_PROFID4_IN_ADDRESS)?$conf->global->MAIN_PROFID4_IN_ADDRESS:0,1); + print $form->selectyesno('MAIN_PROFID4_IN_ADDRESS',isset($conf->global->MAIN_PROFID4_IN_ADDRESS)?$conf->global->MAIN_PROFID4_IN_ADDRESS:0,1,$noCountryCode); print '
'; @@ -207,32 +237,60 @@ else // Show // Show prof id 1 in address into pdf $var=!$var; - $pid1=$langs->transcountry("ProfId1",$mysoc->pays_code); - if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); + if (! $noCountryCode) + { + $pid1=$langs->transcountry("ProfId1",$mysoc->country_code); + if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); + } + else + { + $pid1 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; print yn($conf->global->MAIN_PROFID1_IN_ADDRESS,1); print ''; // Show prof id 2 in address into pdf $var=!$var; - $pid2=$langs->transcountry("ProfId2",$mysoc->pays_code); - if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); + if (! $noCountryCode) + { + $pid2=$langs->transcountry("ProfId2",$mysoc->country_code); + if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); + } + else + { + $pid2 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; print yn($conf->global->MAIN_PROFID2_IN_ADDRESS,1); print ''; // Show prof id 3 in address into pdf $var=!$var; - $pid3=$langs->transcountry("ProfId3",$mysoc->pays_code); - if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); + if (! $noCountryCode) + { + $pid3=$langs->transcountry("ProfId3",$mysoc->country_code); + if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); + } + else + { + $pid3 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; print yn($conf->global->MAIN_PROFID3_IN_ADDRESS,1); print ''; // Show prof id 4 in address into pdf $var=!$var; - $pid4=$langs->transcountry("ProfId4",$mysoc->pays_code); - if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); + if (! $noCountryCode) + { + $pid4=$langs->transcountry("ProfId4",$mysoc->country_code); + if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); + } + else + { + $pid4 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; print yn($conf->global->MAIN_PROFID4_IN_ADDRESS,1); print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index ba5e55398bc..70c61bc5891 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3528,14 +3528,15 @@ class Form /** - * Return an html string with a select combo box to choose yes or no + * Return an html string with a select combo box to choose yes or no * - * @param name Name of html select field - * @param value Pre-selected value - * @param option 0 return yes/no, 1 return 1/0 - * @return int or string See option + * @param string $name Name of html select field + * @param string $value Pre-selected value + * @param int $option 0 return yes/no, 1 return 1/0 + * @param bool $disabled true or false + * @return mixed See option */ - function selectyesno($htmlname,$value='',$option=0) + function selectyesno($htmlname,$value='',$option=0,$disabled=false) { global $langs; @@ -3546,8 +3547,10 @@ class Form $yes="1"; $no="0"; } + + $disabled = ($disabled ? ' disabled="disabled"' : ''); - $resultyesno = ''."\n"; if (("$value" == 'yes') || ($value == 1)) { $resultyesno .= ''."\n"; From 3df2810f29acf783af965106affdbd446734acc7 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 28 Dec 2011 10:17:33 +0100 Subject: [PATCH 13/13] Fix: avoid warning for country with < 4 profid --- htdocs/admin/pdf.php | 172 +++++++++++++++++++------- htdocs/core/class/html.form.class.php | 17 +-- 2 files changed, 137 insertions(+), 52 deletions(-) diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index abbc1e038c5..8c7e6937a47 100755 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur - * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2005-2011 Regis Houssin * * 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 @@ -37,14 +37,15 @@ $langs->load("companies"); $langs->load("products"); $langs->load("members"); -if (!$user->admin) - accessforbidden(); +if (! $user->admin) accessforbidden(); + +$action = GETPOST('action','alpha'); /* * Actions */ -if (isset($_POST["action"]) && $_POST["action"] == 'update') +if ($action == 'update') { dolibarr_set_const($db, "MAIN_PDF_FORMAT", $_POST["MAIN_PDF_FORMAT"],'chaine',0,'',$conf->entity); @@ -75,8 +76,9 @@ print_fiche_titre($langs->trans("PDF"),'','setup'); print $langs->trans("PDFDesc")."
\n"; print "
\n"; +$noCountryCode = (empty($mysoc->country_code) ? true : false); -if (isset($_GET["action"]) && $_GET["action"] == 'edit') // Edit +if ($action == 'edit') // Edit { print ''; print ''; @@ -113,35 +115,75 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit') // Edit // Show prof id 1 in address into pdf $var=!$var; - $pid1=$langs->transcountry("ProfId1",$mysoc->pays_code); - if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; - print $form->selectyesno('MAIN_PROFID1_IN_ADDRESS',isset($conf->global->MAIN_PROFID1_IN_ADDRESS)?$conf->global->MAIN_PROFID1_IN_ADDRESS:0,1); - print ''; + if (! $noCountryCode) + { + $pid1=$langs->transcountry("ProfId1",$mysoc->country_code); + if ($pid1 == '-') $pid1=false; + } + else + { + $pid1 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid1) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; + print $form->selectyesno('MAIN_PROFID1_IN_ADDRESS',isset($conf->global->MAIN_PROFID1_IN_ADDRESS)?$conf->global->MAIN_PROFID1_IN_ADDRESS:0,1,$noCountryCode); + print ''; + } // Show prof id 2 in address into pdf $var=!$var; - $pid2=$langs->transcountry("ProfId2",$mysoc->pays_code); - if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; - print $form->selectyesno('MAIN_PROFID2_IN_ADDRESS',isset($conf->global->MAIN_PROFID2_IN_ADDRESS)?$conf->global->MAIN_PROFID2_IN_ADDRESS:0,1); - print ''; + if (! $noCountryCode) + { + $pid2=$langs->transcountry("ProfId2",$mysoc->country_code); + if ($pid2 == '-') $pid2=false; + } + else + { + $pid2 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid2) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; + print $form->selectyesno('MAIN_PROFID2_IN_ADDRESS',isset($conf->global->MAIN_PROFID2_IN_ADDRESS)?$conf->global->MAIN_PROFID2_IN_ADDRESS:0,1,$noCountryCode); + print ''; + } // Show prof id 3 in address into pdf $var=!$var; - $pid3=$langs->transcountry("ProfId3",$mysoc->pays_code); - if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; - print $form->selectyesno('MAIN_PROFID3_IN_ADDRESS',isset($conf->global->MAIN_PROFID3_IN_ADDRESS)?$conf->global->MAIN_PROFID3_IN_ADDRESS:0,1); - print ''; + if (! $noCountryCode) + { + $pid3=$langs->transcountry("ProfId3",$mysoc->country_code); + if ($pid3 == '-') $pid3=false; + } + else + { + $pid3 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid3) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; + print $form->selectyesno('MAIN_PROFID3_IN_ADDRESS',isset($conf->global->MAIN_PROFID3_IN_ADDRESS)?$conf->global->MAIN_PROFID3_IN_ADDRESS:0,1,$noCountryCode); + print ''; + } // Show prof id 4 in address into pdf $var=!$var; - $pid4=$langs->transcountry("ProfId4",$mysoc->pays_code); - if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; - print $form->selectyesno('MAIN_PROFID4_IN_ADDRESS',isset($conf->global->MAIN_PROFID4_IN_ADDRESS)?$conf->global->MAIN_PROFID4_IN_ADDRESS:0,1); - print ''; + if (! $noCountryCode) + { + $pid4=$langs->transcountry("ProfId4",$mysoc->country_code); + if ($pid4 == '-') $pid4=false; + } + else + { + $pid4 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid4) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; + print $form->selectyesno('MAIN_PROFID4_IN_ADDRESS',isset($conf->global->MAIN_PROFID4_IN_ADDRESS)?$conf->global->MAIN_PROFID4_IN_ADDRESS:0,1,$noCountryCode); + print ''; + } print ''; @@ -207,35 +249,75 @@ else // Show // Show prof id 1 in address into pdf $var=!$var; - $pid1=$langs->transcountry("ProfId1",$mysoc->pays_code); - if ($pid1 == '-') $pid1=$langs->transcountry("ProfId1"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; - print yn($conf->global->MAIN_PROFID1_IN_ADDRESS,1); - print ''; + if (! $noCountryCode) + { + $pid1=$langs->transcountry("ProfId1",$mysoc->country_code); + if ($pid1 == '-') $pid1=false; + } + else + { + $pid1 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid1) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid1.''; + print yn($conf->global->MAIN_PROFID1_IN_ADDRESS,1); + print ''; + } // Show prof id 2 in address into pdf $var=!$var; - $pid2=$langs->transcountry("ProfId2",$mysoc->pays_code); - if ($pid2 == '-') $pid2=$langs->transcountry("ProfId2"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; - print yn($conf->global->MAIN_PROFID2_IN_ADDRESS,1); - print ''; + if (! $noCountryCode) + { + $pid2=$langs->transcountry("ProfId2",$mysoc->country_code); + if ($pid2 == '-') $pid2=false; + } + else + { + $pid2 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid2) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid2.''; + print yn($conf->global->MAIN_PROFID2_IN_ADDRESS,1); + print ''; + } // Show prof id 3 in address into pdf $var=!$var; - $pid3=$langs->transcountry("ProfId3",$mysoc->pays_code); - if ($pid3 == '-') $pid3=$langs->transcountry("ProfId3"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; - print yn($conf->global->MAIN_PROFID3_IN_ADDRESS,1); - print ''; + if (! $noCountryCode) + { + $pid3=$langs->transcountry("ProfId3",$mysoc->country_code); + if ($pid3 == '-') $pid3=false; + } + else + { + $pid3 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid3) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid3.''; + print yn($conf->global->MAIN_PROFID3_IN_ADDRESS,1); + print ''; + } // Show prof id 4 in address into pdf $var=!$var; - $pid4=$langs->transcountry("ProfId4",$mysoc->pays_code); - if ($pid4 == '-') $pid4=$langs->transcountry("ProfId4"); - print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; - print yn($conf->global->MAIN_PROFID4_IN_ADDRESS,1); - print ''; + if (! $noCountryCode) + { + $pid4=$langs->transcountry("ProfId4",$mysoc->country_code); + if ($pid4 == '-') $pid4=false; + } + else + { + $pid4 = img_warning().' '.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("CompanyCountry")).''; + } + if ($pid4) + { + print ''.$langs->trans("ShowProfIdInAddress").' - '.$pid4.''; + print yn($conf->global->MAIN_PROFID4_IN_ADDRESS,1); + print ''; + } print ''."\n"; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index ba5e55398bc..70c61bc5891 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3528,14 +3528,15 @@ class Form /** - * Return an html string with a select combo box to choose yes or no + * Return an html string with a select combo box to choose yes or no * - * @param name Name of html select field - * @param value Pre-selected value - * @param option 0 return yes/no, 1 return 1/0 - * @return int or string See option + * @param string $name Name of html select field + * @param string $value Pre-selected value + * @param int $option 0 return yes/no, 1 return 1/0 + * @param bool $disabled true or false + * @return mixed See option */ - function selectyesno($htmlname,$value='',$option=0) + function selectyesno($htmlname,$value='',$option=0,$disabled=false) { global $langs; @@ -3546,8 +3547,10 @@ class Form $yes="1"; $no="0"; } + + $disabled = ($disabled ? ' disabled="disabled"' : ''); - $resultyesno = ''."\n"; if (("$value" == 'yes') || ($value == 1)) { $resultyesno .= ''."\n";