From 689e6ec415f485b554fc7fd3092deb09e8c017bf Mon Sep 17 00:00:00 2001 From: fmarcet Date: Thu, 2 Mar 2017 18:56:47 +0100 Subject: [PATCH 001/336] Fix: when refs are numbers, it is not the same '0138' than '138' --- htdocs/product/class/product.class.php | 4 ++-- htdocs/projet/class/project.class.php | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index a61406c90d7..266ae301de9 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -12,7 +12,7 @@ * Copyright (C) 2014 Henry Florian * Copyright (C) 2014-2016 Philippe Grand * Copyright (C) 2014 Ion agorria - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -816,7 +816,7 @@ class Product extends CommonObject // End call triggers } - if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref != $this->ref)) + if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref !== $this->ref)) { // We remove directory if ($conf->product->dir_output) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index b242f7d6b06..07727032c39 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -301,7 +302,7 @@ class Project extends CommonObject } } - if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref != $this->ref)) + if (! $error && (is_object($this->oldcopy) && $this->oldcopy->ref !== $this->ref)) { // We remove directory if ($conf->projet->dir_output) From aba6da585057ac8bfe100e064d7fb92d56b32e8c Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Mon, 17 Jul 2017 17:46:11 +0200 Subject: [PATCH 002/336] New: Better extrafields filter on lists --- htdocs/adherents/list.php | 12 +++++++--- htdocs/comm/propal/list.php | 13 +++++++---- htdocs/commande/list.php | 13 +++++++---- htdocs/compta/bank/index.php | 12 +++++++--- htdocs/compta/facture/fiche-rec.php | 12 +++++++--- htdocs/compta/facture/list.php | 13 +++++++---- htdocs/contact/list.php | 12 +++++++--- htdocs/contrat/list.php | 13 +++++++---- htdocs/contrat/services.php | 12 +++++++--- htdocs/expedition/list.php | 13 +++++++---- htdocs/expensereport/list.php | 12 +++++++--- htdocs/fichinter/list.php | 12 +++++++--- htdocs/fourn/commande/list.php | 13 +++++++---- htdocs/fourn/facture/list.php | 13 +++++++---- .../modulebuilder/template/myobject_list.php | 12 +++++++--- htdocs/product/list.php | 23 +++++++++++++++++-- htdocs/product/stock/mouvement.php | 12 +++++++--- htdocs/product/stock/productlot_list.php | 12 +++++++--- htdocs/projet/list.php | 10 ++++++-- htdocs/projet/tasks/list.php | 12 +++++++--- htdocs/resource/list.php | 12 +++++++--- htdocs/societe/list.php | 8 +++---- htdocs/supplier_proposal/list.php | 13 +++++++---- htdocs/user/index.php | 12 +++++++--- 24 files changed, 222 insertions(+), 79 deletions(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index ec6bb85710c..d2f4947e17e 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -4,6 +4,7 @@ * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2013-2015 Raphaël Doursenaud * Copyright (C) 2014-2016 Juanjo Menent + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -530,15 +531,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index a8e3d23565f..1ad71b738ab 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -10,7 +10,7 @@ * Copyright (C) 2012 Christophe Battarel * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -663,15 +663,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index daefc3c4cce..1af02e1fc5d 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -9,7 +9,7 @@ * Copyright (C) 2015 Frederic France * Copyright (C) 2015 Marcos García * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -938,15 +938,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php index 0c24d25e064..f645822ca05 100644 --- a/htdocs/compta/bank/index.php +++ b/htdocs/compta/bank/index.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -347,15 +348,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 221167a485a..8125cf07e31 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -8,6 +8,7 @@ * Copyright (C) 2012 Cedric Salvador * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2016 Meziane Sof + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -1740,15 +1741,20 @@ else $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 2716e3a87b1..ea3779850dd 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -10,7 +10,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2015-2016 Ferran Marcet + * Copyright (C) 2015-2017 Ferran Marcet * Copyright (C) 2017 Josep Lluís Amador * * This program is free software; you can redistribute it and/or modify @@ -903,15 +903,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 1293a258fab..eaf91167c4b 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -7,6 +7,7 @@ * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2013 Alexandre Spangaro * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -597,15 +598,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key])) + if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attribute_computed[$key])) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index a82535bfbb7..8b94774f9b9 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -6,7 +6,7 @@ * Copyright (C) 2014 Juanjo Menent * Copyright (C) 2015 Claudio Aschieri * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -475,15 +475,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index 3d5db42495a..f1a5bea6ed4 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -459,15 +460,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index c4a07580a9a..33e336d979f 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -2,7 +2,7 @@ /* Copyright (C) 2001-2005 Rodolphe Quiedeville * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -384,15 +384,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index bbf2266ab13..a69b0dd2649 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -4,6 +4,7 @@ * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -424,15 +425,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 0404f976328..5cf32906ecc 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2011-2012 Juanjo Menent * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -364,15 +365,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index bafdeeab4db..d04cede7107 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -5,7 +5,7 @@ * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2014 Marcos García * Copyright (C) 2014 Juanjo Menent - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -974,15 +974,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 30d31c0ea02..675594398f8 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -8,7 +8,7 @@ * Copyright (C) 2015 Marcos García * Copyright (C) 2015-2007 Juanjo Menent * Copyright (C) 2015 Abbes Bahfir - * Copyright (C) 2015-2016 Ferran Marcet + * Copyright (C) 2015-2017 Ferran Marcet * Copyright (C) 2017 Josep Lluís Amador * * This program is free software; you can redistribute it and/or modify @@ -814,15 +814,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index ef3cb110224..3a1c8d30a02 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -1,5 +1,6 @@ + * Copyright (C) 2017 Ferran Marcet * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -350,15 +351,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key])) + if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attribute_computed[$key])) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 1512fda7b4f..46806764d1d 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -10,7 +10,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Adolfo segura * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -593,7 +593,26 @@ else { foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; + print ''; + } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } + print ''; + } } } // Fields from hook diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 469c2f292e7..40f00a0772b 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2017 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2015 Juanjo Menent + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -834,15 +835,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php index 61e9438c929..69f11be28b7 100644 --- a/htdocs/product/stock/productlot_list.php +++ b/htdocs/product/stock/productlot_list.php @@ -1,5 +1,6 @@ + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -362,15 +363,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 9c78387f95b..de27484b180 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2015 Claudio Aschieri + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -571,10 +572,15 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 7bff02fa864..82605f86765 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005 Rodolphe Quiedeville * Copyright (C) 2006-2016 Laurent Destailleur * Copyright (C) 2006-2010 Regis Houssin + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -551,15 +552,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key])) + if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attribute_computed[$key])) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 5ec9eabbfb1..1f0ec5d9e25 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -1,5 +1,6 @@ + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -214,15 +215,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 3bde7f09967..45d2656a7e3 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -6,7 +6,7 @@ * Copyright (C) 2013-2015 Raphaël Doursenaud * Copyright (C) 2015 Florian Henry * Copyright (C) 2016 Josep Lluis Amador - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -831,13 +831,13 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')) && empty($extrafields->attribute_computed[$key])) + if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attribute_computed[$key])) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } else diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index e401fdbe710..6c193d8e875 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -9,7 +9,7 @@ * Copyright (C) 2010-2011 Philippe Grand * Copyright (C) 2012 Christophe Battarel * Copyright (C) 2013 Cédric Salvador - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2017 Ferran Marcet * * 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 @@ -665,15 +665,20 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 9c82216d5be..6eb88478f1a 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2016 Marcos García + * Copyright (C) 2017 Ferran Marcet * * 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 @@ -385,15 +386,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $searchclass=''; - if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; - if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + if ('varchar' == $typeofextrafield) $searchclass='searchstring'; + else $searchclass='searchnum'; print ''; } + else + { + // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') + echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); + } print ''; } } From c389a43460238698cef2fa934fbfe1dd40a26d2d Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Thu, 15 Feb 2018 12:14:46 +0100 Subject: [PATCH 003/336] New: Add totals on orders supplier list --- htdocs/fourn/commande/list.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 731c26af038..15bd981f001 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -5,7 +5,7 @@ * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2014 Marcos García * Copyright (C) 2014 Juanjo Menent - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2018 Ferran Marcet * * 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 @@ -1150,6 +1150,26 @@ if ($resql) print "\n"; $i++; } + // Show total line + if (isset($totalarray['totalhtfield'])) + { + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if ($i == 1) + { + if ($num < $limit) print ''.$langs->trans("Total").''; + else print ''.$langs->trans("Totalforthispage").''; + } + elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).''; + elseif ($totalarray['totalvatfield'] == $i) print ''.price($totalarray['totalvat']).''; + elseif ($totalarray['totalttcfield'] == $i) print ''.price($totalarray['totalttc']).''; + else print ''; + } + print ''; + } print "\n"; print ''; print "\n"; From 994a03d90911a36adb7e8d5961bf2fc41816365f Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Thu, 15 Feb 2018 12:18:48 +0100 Subject: [PATCH 004/336] Same as oficial develop --- htdocs/compta/facture/fiche-rec.php | 364 ---------------------------- 1 file changed, 364 deletions(-) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index c87594fcc56..af81e797252 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -9,7 +9,6 @@ * Copyright (C) 2015 Alexandre Spangaro * Copyright (C) 2016 Meziane Sof * Copyright (C) 2017 Frédéric France - * Copyright (C) 2017 Ferran Marcet * * 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 @@ -1745,369 +1744,6 @@ else print ''; } - else - { - /* - * List mode - */ - $sql = "SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre, f.total, f.tva as total_vat, f.total_ttc, f.frequency,"; - $sql.= " f.nb_gen_done, f.nb_gen_max, f.date_last_gen, f.date_when,"; - $sql.= " f.datec, f.tms"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture_rec as f"; - if (! $user->rights->societe->client->voir && ! $socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - } - $sql.= " WHERE f.fk_soc = s.rowid"; - $sql.= " AND f.entity = ".$conf->entity; - if (! $user->rights->societe->client->voir && ! $socid) { - $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; - } - if ($search_ref) $sql .= natural_search('f.titre', $search_ref); - if ($search_societe) $sql .= natural_search('s.nom', $search_societe); - if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1); - if ($search_montant_vat != '') $sql.= natural_search('f.tva', $search_montant_vat, 1); - if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1); - if ($search_frequency > 0) $sql.= natural_search('f.frequency', $search_frequency); - if ($search_frequency == '1') $sql.= ' AND f.frequency > 0'; - if ($search_frequency == '0') $sql.= ' AND (f.frequency IS NULL or f.frequency = 0)'; - - if ($month > 0) - { - if ($year > 0 && empty($day)) - $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'"; - else if ($year > 0 && ! empty($day)) - $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'"; - else - $sql.= " AND date_format(f.date_last_gen, '%m') = '".$month."'"; - } - else if ($year > 0) - { - $sql.= " AND f.date_last_gen BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; - } - if ($month_date_when > 0) - { - if ($year_date_when > 0 && empty($day_date_when)) - $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($year_date_when,$month_date_when,false))."' AND '".$db->idate(dol_get_last_day($year_date_when,$month_date_when,false))."'"; - else if ($year_date_when > 0 && ! empty($day_date_when)) - $sql.= " AND f.date_date_when_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_date_when, $day_date_when, $year_date_when))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_date_when, $day_date_when, $year_date_when))."'"; - else - $sql.= " AND date_format(f.date_when, '%m') = '".$month_date_when."'"; - } - else if ($year_date_when > 0) - { - $sql.= " AND f.date_when BETWEEN '".$db->idate(dol_get_first_day($year_date_when,1,false))."' AND '".$db->idate(dol_get_last_day($year_date_when,12,false))."'"; - } - - $nbtotalofrecords = ''; - if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) - { - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); - } - - $sql.= $db->order($sortfield, $sortorder); - $sql.= $db->plimit($limit+1,$offset); - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - - $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($socid) $param.='&socid='.$socid; - if ($day) $param.='&day='.$day; - if ($month) $param.='&month='.$month; - if ($year) $param.='&year=' .$year; - if ($day_date_when) $param.='&day_date_when='.$day_date_when; - if ($month_date_when) $param.='&month_date_when='.$month_date_when; - if ($year_date_when) $param.='&year_date_when=' .$year_date_when; - if ($search_ref) $param.='&search_ref=' .$search_ref; - if ($search_societe) $param.='&search_societe=' .$search_societe; - if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht; - if ($search_montant_vat != '') $param.='&search_montant_vat='.$search_montant_vat; - if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc; - if ($search_frequency > 0) $param.='&search_frequency=' .$search_frequency; - if ($option) $param.="&option=".$option; - if ($optioncss != '') $param.='&optioncss='.$optioncss; - // Add $param from extra fields - foreach ($search_array_options as $key => $val) - { - $crit=$val; - $tmpkey=preg_replace('/search_options_/','',$key); - if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); - } - - $massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); - - $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; - $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - //$selectedfields.=$form->showCheckAddButtons('checkforselect', 1); - - print '
'."\n"; - if ($optioncss != '') print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print_barre_liste($langs->trans("RepeatableInvoices"),$page,$_SERVER['PHP_SELF'],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_accountancy.png',0,'','',$limit); - - print $langs->trans("ToCreateAPredefinedInvoice", $langs->transnoentitiesnoconv("ChangeIntoRepeatableInvoice")).'

'; - - $i = 0; - - print '
'; - print ''."\n"; - - // Filters lines - print ''; - // Ref - if (! empty($arrayfields['f.titre']['checked'])) - { - print ''; - } - // Thirpdarty - if (! empty($arrayfields['s.nom']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.total']['checked'])) - { - // Amount - print ''; - } - if (! empty($arrayfields['f.tva']['checked'])) - { - // Amount - print ''; - } - if (! empty($arrayfields['f.total_ttc']['checked'])) - { - // Amount - print ''; - } - if (! empty($arrayfields['f.frequency']['checked'])) - { - // Recurring or not - print ''; - } - if (! empty($arrayfields['f.nb_gen_done']['checked'])) - { - // Nb generation - print ''; - } - // Date invoice - if (! empty($arrayfields['f.date_last_gen']['checked'])) - { - print ''; - } - // Date due - if (! empty($arrayfields['f.date_when']['checked'])) - { - print ''; - } - // Extra fields - if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) - { - foreach($extrafields->attribute_label as $key => $val) - { - if (! empty($arrayfields["ef.".$key]['checked'])) - { - $align=$extrafields->getAlignFlag($key); - $typeofextrafield=$extrafields->attribute_type[$key]; - print ''; - } - } - } - // Fields from hook - $parameters=array('arrayfields'=>$arrayfields); - $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - // Date creation - if (! empty($arrayfields['f.datec']['checked'])) - { - print ''; - } - // Date modification - if (! empty($arrayfields['f.tms']['checked'])) - { - print ''; - } - // Action column - print ''; - print "\n"; - - - print ''; - if (! empty($arrayfields['f.titre']['checked'])) print_liste_field_titre($arrayfields['f.titre']['label'],$_SERVER['PHP_SELF'],"f.titre","",$param,"",$sortfield,$sortorder); - if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER['PHP_SELF'],"s.nom","",$param,"",$sortfield,$sortorder); - if (! empty($arrayfields['f.total']['checked'])) print_liste_field_titre($arrayfields['f.total']['label'],$_SERVER['PHP_SELF'],"f.total","",$param,'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['f.tva']['checked'])) print_liste_field_titre($arrayfields['f.tva']['label'],$_SERVER['PHP_SELF'],"f.tva","",$param,'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['f.total_ttc']['checked'])) print_liste_field_titre($arrayfields['f.total_ttc']['label'],$_SERVER['PHP_SELF'],"f.total_ttc","",$param,'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['f.frequency']['checked'])) print_liste_field_titre($arrayfields['f.frequency']['label'],$_SERVER['PHP_SELF'],"f.frequency","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['f.nb_gen_done']['checked'])) print_liste_field_titre($arrayfields['f.nb_gen_done']['label'],$_SERVER['PHP_SELF'],"f.nb_gen_done","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['f.date_last_gen']['checked'])) print_liste_field_titre($arrayfields['f.date_last_gen']['label'],$_SERVER['PHP_SELF'],"f.date_last_gen","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['f.date_when']['checked'])) print_liste_field_titre($arrayfields['f.date_when']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['f.datec']['checked'])) print_liste_field_titre($arrayfields['f.datec']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['f.tms']['checked'])) print_liste_field_titre($arrayfields['f.tms']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n"; - print "\n"; - - - if ($num > 0) - { - $var=true; - while ($i < min($num,$limit)) - { - $objp = $db->fetch_object($resql); - - $companystatic->id=$objp->socid; - $companystatic->name=$objp->name; - - print ''; - - if (! empty($arrayfields['f.titre']['checked'])) - { - print '\n"; - } - if (! empty($arrayfields['s.nom']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.total']['checked'])) - { - print ''."\n"; - } - if (! empty($arrayfields['f.tva']['checked'])) - { - print ''."\n"; - } - if (! empty($arrayfields['f.total_ttc']['checked'])) - { - print ''."\n"; - } - if (! empty($arrayfields['f.frequency']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.nb_gen_done']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.date_last_gen']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.date_when']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.datec']['checked'])) - { - print ''; - } - if (! empty($arrayfields['f.tms']['checked'])) - { - print ''; - } - // Action column - print '"; - print "\n"; - $i++; - } - } - else - { - $colspan=1; - foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } - print ''; - } - - print "
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print $form->selectyesno('search_frequency', $search_frequency, 1, false, 1); - print ''; - print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($year?$year:-1,'year',1, 20, 5); - print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($year_date_when?$year_date_when:-1,'year_date_when',1, 20, 5); - print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'double'))) - { - $crit=$val; - $tmpkey=preg_replace('/search_options_/','',$key); - $searchclass=''; - if ('varchar' == $typeofextrafield) $searchclass='searchstring'; - else $searchclass='searchnum'; - print ''; - } - else - { - // for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid') - echo $extrafields->showInputField($key, $search_array_options['search_options_'.$key], '', '', 'search_'); - } - print ''; - print ''; - print ''; - $searchpicto=$form->showFilterAndCheckAddButtons(0, 'checkforselect', 1); - print $searchpicto; - print '
'.img_object($langs->trans("ShowBill"),"bill").' '.$objp->titre; - print "'.$companystatic->getNomUrl(1,'customer').''.price($objp->total).''.price($objp->total_vat).''.price($objp->total_ttc).''.yn($objp->frequency?1:0).''; - print ($objp->frequency ? $objp->nb_gen_done.($objp->nb_gen_max>0?' / '. $objp->nb_gen_max:'') : ''.$langs->trans('NA').''); - print ''; - print ($objp->frequency ? dol_print_date($db->jdate($objp->date_last_gen),'day') : ''.$langs->trans('NA').''); - print ''; - print ($objp->frequency ? dol_print_date($db->jdate($objp->date_when),'day') : ''.$langs->trans('NA').''); - print ''; - print dol_print_date($db->jdate($objp->datec),'dayhour'); - print ''; - print dol_print_date($db->jdate($objp->tms),'dayhour'); - print ''; - if ($user->rights->facture->creer) - { - if (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today) - { - print ''; - print $langs->trans("CreateBill").''; - } - else - { - print $langs->trans("DateIsNotEnough"); - } - } - else - { - print " "; - } - print "
'.$langs->trans("NoRecordFound").'
"; - print "
"; - print "
"; - - $db->free($resql); - } - else - { - dol_print_error($db); - } - } - } llxFooter(); From d300b943e122df7e4793fdf86c5c73dba3693335 Mon Sep 17 00:00:00 2001 From: atm-ph Date: Fri, 23 Feb 2018 15:10:25 +0100 Subject: [PATCH 005/336] Fix wrong price on supplier order line --- htdocs/fourn/commande/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index d952eb771da..4441d7159af 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1089,7 +1089,7 @@ if (empty($reshook)) $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0, - $productsupplier->product_fourn_price_id, + 0, $productsupplier->ref_supplier, $lines[$i]->remise_percent, 'HT', From ebb4da8417549128c4e358aae38bf94f4908a4c2 Mon Sep 17 00:00:00 2001 From: atm-ph Date: Mon, 5 Mar 2018 16:58:35 +0100 Subject: [PATCH 006/336] Fix keep supplier proposal price in supplier order --- .../class/fournisseur.commande.class.php | 2 +- htdocs/fourn/commande/card.php | 68 +++++++++---------- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 7c7837e75fe..4d492bf2bbe 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1417,7 +1417,7 @@ class CommandeFournisseur extends CommonOrder if ($fk_product > 0) { - if (empty($conf->global->SUPPLIER_ORDER_WITH_NOPRICEDEFINED)) + if (empty($conf->global->SUPPLIER_ORDER_WITH_NOPRICEDEFINED) && $origin !== 'supplier_proposal') { // Check quantity is enough dol_syslog(get_class($this)."::addline we check supplier prices fk_product=".$fk_product." fk_prod_fourn_price=".$fk_prod_fourn_price." qty=".$qty." fourn_ref=".$fourn_ref); diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 4441d7159af..aa833d49b6e 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1044,8 +1044,6 @@ if (empty($reshook)) $fk_parent_line = 0; $num = count($lines); - $productsupplier = new ProductFournisseur($db); - for($i = 0; $i < $num; $i ++) { @@ -1068,45 +1066,41 @@ if (empty($reshook)) $lines[$i]->fetch_optionals($lines[$i]->rowid); $array_option = $lines[$i]->array_options; } + + $tva_tx = $lines[$i]->tva_tx; - $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty, $srcobject->socid); - if ($result>=0) + if ($origin=="commande") { - $tva_tx = $lines[$i]->tva_tx; - - if ($origin=="commande") - { - $soc=new societe($db); - $soc->fetch($socid); - $tva_tx=get_default_tva($soc, $mysoc, $lines[$i]->fk_product, $productsupplier->product_fourn_price_id); - } - - $result = $object->addline( - $desc, - $lines[$i]->subprice, - $lines[$i]->qty, - $tva_tx, - $lines[$i]->localtax1_tx, - $lines[$i]->localtax2_tx, - $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0, - 0, - $productsupplier->ref_supplier, - $lines[$i]->remise_percent, - 'HT', - 0, - $lines[$i]->product_type, - '', - '', - null, - null, - array(), - $lines[$i]->fk_unit, - 0, - $element, - !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid - ); + $soc=new societe($db); + $soc->fetch($socid); + $tva_tx=get_default_tva($soc, $mysoc, $lines[$i]->fk_product, $productsupplier->product_fourn_price_id); } + $result = $object->addline( + $desc, + $lines[$i]->subprice, + $lines[$i]->qty, + $tva_tx, + $lines[$i]->localtax1_tx, + $lines[$i]->localtax2_tx, + $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0, + 0, + $lines[$i]->ref_fourn, + $lines[$i]->remise_percent, + 'HT', + 0, + $lines[$i]->product_type, + '', + '', + null, + null, + array(), + $lines[$i]->fk_unit, + 0, + $element, + !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid + ); + if ($result < 0) { $error++; break; From 5971cd8e59d435c15e5f0b30531a60d87e038a85 Mon Sep 17 00:00:00 2001 From: atm-ph Date: Mon, 5 Mar 2018 17:18:03 +0100 Subject: [PATCH 007/336] Fix label goes in desc and lost fourn ref --- htdocs/fourn/class/fournisseur.commande.class.php | 4 ++-- htdocs/fourn/commande/card.php | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 4d492bf2bbe..eacc27e29c1 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1368,7 +1368,7 @@ class CommandeFournisseur extends CommonOrder * @param int $origin_id Id of origin object * @return int <=0 if KO, >0 if OK */ - public function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0.0, $txlocaltax2=0.0, $fk_product=0, $fk_prod_fourn_price=0, $fourn_ref='', $remise_percent=0.0, $price_base_type='HT', $pu_ttc=0.0, $type=0, $info_bits=0, $notrigger=false, $date_start=null, $date_end=null, $array_options=0, $fk_unit=null, $pu_ht_devise=0, $origin='', $origin_id=0) + public function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0.0, $txlocaltax2=0.0, $fk_product=0, $fk_prod_fourn_price=0, $fourn_ref='', $remise_percent=0.0, $price_base_type='HT', $pu_ttc=0.0, $type=0, $info_bits=0, $notrigger=false, $date_start=null, $date_end=null, $array_options=0, $fk_unit=null, $pu_ht_devise=0, $origin='', $origin_id=0, $label='') { global $langs,$mysoc,$conf; @@ -1401,7 +1401,7 @@ class CommandeFournisseur extends CommonOrder $pu=$pu_ttc; } $desc=trim($desc); - $ref_supplier=''; // Ref of supplier price when we add line + $ref_supplier=$fourn_ref; // Ref of supplier price when we add line // Check parameters if ($qty < 1 && ! $fk_product) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index aa833d49b6e..fe26bcdc672 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1050,8 +1050,8 @@ if (empty($reshook)) if (empty($lines[$i]->subprice) || $lines[$i]->qty <= 0) continue; - $label = (! empty($lines[$i]->label) ? $lines[$i]->label : ''); - $desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle); + $label = (! empty($lines[$i]->label) ? $lines[$i]->label : $lines[$i]->product_label); + $desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->product_desc); $product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0); // Reset fk_parent_line for no child products and special product @@ -1098,7 +1098,8 @@ if (empty($reshook)) $lines[$i]->fk_unit, 0, $element, - !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid + !empty($lines[$i]->id) ? $lines[$i]->id : $lines[$i]->rowid, + $label ); if ($result < 0) { From 53ce297ab343ac6f00d66b9c23850f68de6e1473 Mon Sep 17 00:00:00 2001 From: atm-ph Date: Fri, 9 Mar 2018 09:30:11 +0100 Subject: [PATCH 008/336] Fix travis - missing documentation of new param --- htdocs/fourn/class/fournisseur.commande.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index eacc27e29c1..0aa6acc1ede 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1366,6 +1366,7 @@ class CommandeFournisseur extends CommonOrder * @param string $pu_ht_devise Amount in currency * @param string $origin 'order', ... * @param int $origin_id Id of origin object + * @param string $label Label * @return int <=0 if KO, >0 if OK */ public function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0.0, $txlocaltax2=0.0, $fk_product=0, $fk_prod_fourn_price=0, $fourn_ref='', $remise_percent=0.0, $price_base_type='HT', $pu_ttc=0.0, $type=0, $info_bits=0, $notrigger=false, $date_start=null, $date_end=null, $array_options=0, $fk_unit=null, $pu_ht_devise=0, $origin='', $origin_id=0, $label='') From 34145ed4432416943ee2d00532822a674b9fa7c2 Mon Sep 17 00:00:00 2001 From: TuxGasy Date: Sun, 11 Mar 2018 21:58:32 +0100 Subject: [PATCH 009/336] Do not display multicurrency cols if currency of object is same as main currency --- htdocs/core/class/commonobject.class.php | 4 ++-- htdocs/core/tpl/objectline_create.tpl.php | 6 +++--- htdocs/core/tpl/objectline_edit.tpl.php | 2 +- htdocs/core/tpl/objectline_view.tpl.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 4d44a4b6fec..9c1cd3cb6bd 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3370,7 +3370,7 @@ abstract class CommonObject print ''.$langs->trans('PriceUHT').''; // Multicurrency - if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('PriceUHTCurrency', $this->multicurrency_code).''; + if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf->currency) print ''.$langs->trans('PriceUHTCurrency', $this->multicurrency_code).''; if ($inputalsopricewithtax) print ''.$langs->trans('PriceUTTC').''; @@ -3409,7 +3409,7 @@ abstract class CommonObject print ''.$langs->trans('TotalHTShort').''; // Multicurrency - if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('TotalHTShortCurrency', $this->multicurrency_code).''; + if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf->currency) print ''.$langs->trans('TotalHTShortCurrency', $this->multicurrency_code).''; if ($outputalsopricetotalwithtax) print ''.$langs->trans('TotalTTCShort').''; diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index f14af2b838f..1deef2e2412 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -65,7 +65,7 @@ if ($nolinesbefore) { trans('VAT'); ?> trans('PriceUHT'); ?> - multicurrency->enabled)) { $colspan++;?> + multicurrency->enabled) && $object->multicurrency_code != $conf->currency) { $colspan++;?> trans('PriceUHTCurrency'); ?> @@ -266,7 +266,7 @@ else { "> - multicurrency->enabled)) { $colspan++;?> + multicurrency->enabled) && $object->multicurrency_code != $conf->currency) { $colspan++;?> "> @@ -402,7 +402,7 @@ if ((! empty($conf->service->enabled) || ($object->element == 'contrat')) && $da } } - if (!empty($conf->multicurrency->enabled)) $colspan+=2; + if (!empty($conf->multicurrency->enabled) && $object->multicurrency_code != $conf->currency) $colspan+=2; if (! empty($usemargins)) { diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index d982516bd67..80d8c617c44 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -122,7 +122,7 @@ $coldisplay=-1; // We remove first td if ($this->situation_counter > 1) print ' readonly'; print '>'; - if (!empty($conf->multicurrency->enabled)) { + if (!empty($conf->multicurrency->enabled) && $object->multicurrency_code != $conf->currency) { $colspan++; print ''; } diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 0a20c2679a1..984af537ea9 100755 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -138,7 +138,7 @@ if (empty($usemargins)) $usemargins=0; subprice); ?> - multicurrency->enabled)) { ?> + multicurrency->enabled) && $object->multicurrency_code != $conf->currency) { ?> multicurrency_subprice); ?> @@ -204,7 +204,7 @@ if (empty($usemargins)) $usemargins=0; trans('Option'); ?> total_ht); ?> - multicurrency->enabled)) { ?> + multicurrency->enabled) && $object->multicurrency_code != $conf->currency) { ?> multicurrency_total_ht); ?> From 2a265e9de9b497d33a21ec98c1d8873333f1ac69 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio Date: Wed, 11 Apr 2018 12:32:55 +0200 Subject: [PATCH 010/336] NEW: default add action: new param $backurlforcard to redict to card --- htdocs/core/actions_addupdatedelete.inc.php | 3 ++- htdocs/modulebuilder/template/myobject_card.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index b8ede4d7d14..5234e4c4911 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -26,6 +26,7 @@ // $object must be defined // $permissiontoadd must be defined // $permissiontodelete must be defined +// $backurlforcard must be defined // $backurlforlist must be defined // $backtopage may be defined @@ -66,7 +67,7 @@ if ($action == 'add' && ! empty($permissiontoadd)) if ($result > 0) { // Creation OK - $urltogo=$backtopage?$backtopage:$backurlforlist; + $urltogo=$backtopage?$backtopage:($backurlforcard?str_replace('__ID__', $result, $backurlforcard):$backurlforlist); header("Location: ".$urltogo); exit; } diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 73c1b23f938..e9e7a3136bd 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -118,6 +118,7 @@ if (empty($reshook)) $permissiontoadd = $user->rights->mymodule->write; $permissiontodelete = $user->rights->mymodule->delete; + $backurlforcard = dol_buildpath('/mymodule/myobject_card.php',1).'?id=__ID__'; $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); // Actions cancel, add, update or delete From 7d1292d8386f21f017e9444e07d17f1ad174ed67 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 09:05:17 +0200 Subject: [PATCH 011/336] NEW add "printUserPasswordField" hooks --- htdocs/user/card.php | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index f9a69d37baa..beefbf83a3c 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -818,6 +818,13 @@ if ($action == 'create' || $action == 'adduserldap') $valuetoshow.= ($valuetoshow?', ':'').''; } } + + // Other form for add user to group + $parameters=array('valuetoshow' => $valuetoshow); + $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace + else $valuetoshow.=$hookmanager->resPrint; // to add + print $valuetoshow; print ''; @@ -1363,6 +1370,13 @@ else else $valuetoshow.= ($valuetoshow?(' '.$langs->trans("or").' '):'').$langs->trans("Hidden"); } } + + // Other form for add user to group + $parameters=array('valuetoshow' => $valuetoshow); + $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace + else $valuetoshow.=$hookmanager->resPrint; // to add + print $valuetoshow; print ""; print ''."\n"; @@ -1923,6 +1937,13 @@ else $valuetoshow.=($valuetoshow?(' '.$langs->trans("or").' '):'').preg_replace('/./i','*',$object->pass); } } + + // Other form for add user to group + $parameters=array('valuetoshow' => $valuetoshow); + $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace + else $valuetoshow.=$hookmanager->resPrint; // to add + print $valuetoshow; print "\n"; @@ -2033,7 +2054,7 @@ else else { $type=0; - if ($object->contact_id) $type=$object->contact_id; + if ($object->contactid) $type=$object->contactid; print $form->selectcontacts(0,$type,'contactid',2,'','',1,'',false,1); if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')'; } @@ -2203,12 +2224,12 @@ else print ''; if ($caneditfield) { - print ''; + print ''; } else { - print ''; - print $object->accountancy_code; + print ''; + print $object->accountancy_code; } print ''; print ""; From 7c3f0be83d4c5fa5609c9b787301f948957cc815 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 09:09:26 +0200 Subject: [PATCH 012/336] Fix: missing parameters --- htdocs/user/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index beefbf83a3c..ecfb5de2436 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -820,7 +820,7 @@ if ($action == 'create' || $action == 'adduserldap') } // Other form for add user to group - $parameters=array('valuetoshow' => $valuetoshow); + $parameters=array('valuetoshow' => $valuetoshow, 'password' => $password); $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace else $valuetoshow.=$hookmanager->resPrint; // to add From a317c54b66522267b5362bc447de514ac03991b5 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 09:39:02 +0200 Subject: [PATCH 013/336] Fix: missing right parameter --- htdocs/user/card.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index ecfb5de2436..15c8df0d2b9 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -819,7 +819,7 @@ if ($action == 'create' || $action == 'adduserldap') } } - // Other form for add user to group + // Other form for user password $parameters=array('valuetoshow' => $valuetoshow, 'password' => $password); $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace @@ -828,7 +828,7 @@ if ($action == 'create' || $action == 'adduserldap') print $valuetoshow; print ''; - if(! empty($conf->api->enabled)) + if (! empty($conf->api->enabled)) { // API key $generated_api_key = ''; @@ -1371,7 +1371,7 @@ else } } - // Other form for add user to group + // Other form for user password $parameters=array('valuetoshow' => $valuetoshow); $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace @@ -1938,8 +1938,8 @@ else } } - // Other form for add user to group - $parameters=array('valuetoshow' => $valuetoshow); + // Other form for user password + $parameters=array('valuetoshow' => $valuetoshow, 'caneditpassword' => $caneditpassword); $reshook=$hookmanager->executeHooks('printUserPasswordField',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if ($reshook > 0) $valuetoshow=$hookmanager->resPrint; // to replace else $valuetoshow.=$hookmanager->resPrint; // to add From 58535993c171b40bd4e65a5459c13876c3851bbf Mon Sep 17 00:00:00 2001 From: atm-greg Date: Thu, 12 Apr 2018 16:12:23 +0200 Subject: [PATCH 014/336] use special_code on order_supplier lines --- htdocs/fourn/class/fournisseur.commande.class.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 7c7837e75fe..c9f2ad3f525 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2961,6 +2961,7 @@ class CommandeFournisseurLigne extends CommonOrderLine public $fk_facture; public $label; public $rang = 0; + public $special_code = 0; /** * Unit price without taxes @@ -3000,7 +3001,7 @@ class CommandeFournisseurLigne extends CommonOrderLine */ public function fetch($rowid) { - $sql = 'SELECT cd.rowid, cd.fk_commande, cd.fk_product, cd.product_type, cd.description, cd.qty, cd.tva_tx,'; + $sql = 'SELECT cd.rowid, cd.fk_commande, cd.fk_product, cd.product_type, cd.description, cd.qty, cd.tva_tx, cd.special_code'; $sql.= ' cd.localtax1_tx, cd.localtax2_tx, cd.localtax1_type, cd.localtax2_type, cd.ref,'; $sql.= ' cd.remise, cd.remise_percent, cd.subprice,'; $sql.= ' cd.info_bits, cd.total_ht, cd.total_tva, cd.total_ttc,'; @@ -3039,6 +3040,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->total_localtax2 = $objp->total_localtax2; $this->total_ttc = $objp->total_ttc; $this->product_type = $objp->product_type; + $this->special_code = $objp->special_code; $this->ref = $objp->product_ref; $this->product_ref = $objp->product_ref; @@ -3145,7 +3147,7 @@ class CommandeFournisseurLigne extends CommonOrderLine // Insertion dans base de la ligne $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element; $sql.= " (fk_commande, label, description, date_start, date_end,"; - $sql.= " fk_product, product_type,"; + $sql.= " fk_product, product_type, special_code,"; $sql.= " qty, vat_src_code, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type, remise_percent, subprice, ref,"; $sql.= " total_ht, total_tva, total_localtax1, total_localtax2, total_ttc, fk_unit,"; $sql.= " fk_multicurrency, multicurrency_code, multicurrency_subprice, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc"; @@ -3156,6 +3158,7 @@ class CommandeFournisseurLigne extends CommonOrderLine if ($this->fk_product) { $sql.= $this->fk_product.","; } else { $sql.= "null,"; } $sql.= "'".$this->product_type."',"; + $sql.= "'".$this->special_code."',"; $sql.= "'".$this->qty."', "; $sql.= " ".(empty($this->vat_src_code)?"''":"'".$this->vat_src_code."'").","; @@ -3259,6 +3262,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $sql.= ", total_localtax2='".price2num($this->total_localtax2)."'"; $sql.= ", total_ttc='".price2num($this->total_ttc)."'"; $sql.= ", product_type=".$this->product_type; + $sql.= ", special_code=".(!empty($this->special_code) ? $this->special_code : 0); $sql.= ($this->fk_unit ? ", fk_unit='".$this->db->escape($this->fk_unit)."'":", fk_unit=null"); // Multicurrency From ef2c6a0ed48beab49adc89a79bd569e509557745 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 13 Apr 2018 10:14:57 +0200 Subject: [PATCH 015/336] fix sql error --- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index c9f2ad3f525..e3a674a3e94 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3001,7 +3001,7 @@ class CommandeFournisseurLigne extends CommonOrderLine */ public function fetch($rowid) { - $sql = 'SELECT cd.rowid, cd.fk_commande, cd.fk_product, cd.product_type, cd.description, cd.qty, cd.tva_tx, cd.special_code'; + $sql = 'SELECT cd.rowid, cd.fk_commande, cd.fk_product, cd.product_type, cd.description, cd.qty, cd.tva_tx, cd.special_code,'; $sql.= ' cd.localtax1_tx, cd.localtax2_tx, cd.localtax1_type, cd.localtax2_type, cd.ref,'; $sql.= ' cd.remise, cd.remise_percent, cd.subprice,'; $sql.= ' cd.info_bits, cd.total_ht, cd.total_tva, cd.total_ttc,'; From e6ff852226d67d535ab16c367f45cb2ff458492e Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 11:20:21 +0200 Subject: [PATCH 016/336] Fix: avoid Warning: Creating default object from empty value --- htdocs/core/class/conf.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 0ea6af8d5de..82cc919346b 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -97,7 +97,7 @@ class Conf // First level object // TODO Remove this part. $this->expedition_bon = new stdClass(); - $this->livraison_bon = new stdClass(); + $this->livraison_bon = new stdClass(); $this->fournisseur = new stdClass(); $this->product = new stdClass(); $this->service = new stdClass(); @@ -107,12 +107,13 @@ class Conf $this->propal = new stdClass(); $this->facture = new stdClass(); $this->contrat = new stdClass(); - $this->usergroup = new stdClass(); + $this->usergroup = new stdClass(); $this->adherent = new stdClass(); $this->bank = new stdClass(); $this->notification = new stdClass(); $this->mailing = new stdClass(); - $this->expensereport = new stdClass(); + $this->expensereport = new stdClass(); + $this->productbatch = new stdClass(); } @@ -509,7 +510,7 @@ class Conf // Define list of limited modules (value must be key found for "name" property of module, so for example 'supplierproposal' for Module "Supplier Proposal" if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,societe,propal,commande,facture,categorie,supplierproposal,fournisseur,contact,projet,contrat,ficheinter,expedition,agenda,resource,adherent,blockedlog'; // '' means 'all'. Note that contact is added here as it should be a module later. - // Module part to include an external module into the MAIN_MODULES_FOR_EXTERNAL list + // Module part to include an external module into the MAIN_MODULES_FOR_EXTERNAL list if (! empty($this->modules_parts['moduleforexternal'])) foreach($this->modules_parts['moduleforexternal'] as $key=>$value) $this->global->MAIN_MODULES_FOR_EXTERNAL.=",$key"; From 9ba697ea9854f5a5d411c3122a6795494be9a26a Mon Sep 17 00:00:00 2001 From: fappels Date: Fri, 13 Apr 2018 15:12:36 +0200 Subject: [PATCH 017/336] Enable triggers Add missing fields $src_object_type $src_object_id. --- htdocs/ecm/class/ecmfiles.class.php | 117 ++++++++++++++++++---------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 698960974d5..5581d10fe7a 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -3,6 +3,7 @@ * Copyright (C) 2014-2016 Juanjo Menent * Copyright (C) 2015 Florian Henry * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) 2018 Francis Appels * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -33,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; /** * Class to manage ECM files */ -class EcmFiles //extends CommonObject +class EcmFiles extends CommonObject { /** * @var string Id to identify managed objects @@ -65,6 +66,8 @@ class EcmFiles //extends CommonObject public $fk_user_c; public $fk_user_m; public $acl; + public $src_object_type; + public $src_object_id; /** */ @@ -142,6 +145,9 @@ class EcmFiles //extends CommonObject if (isset($this->acl)) { $this->acl = trim($this->acl); } + if (isset($this->src_object_type)) { + $this->src_object_type = trim($this->src_object_type); + } if (empty($this->date_c)) $this->date_c = dol_now(); if (empty($this->date_m)) $this->date_m = dol_now(); @@ -161,15 +167,27 @@ class EcmFiles //extends CommonObject $obj = $this->db->fetch_object($resql); $maxposition = (int) $obj->maxposition; } - else dol_print_error($this->db); + else + { + $this->errors[] = 'Error ' . $this->db->lasterror(); + return --$error; + } + $maxposition=$maxposition+1; + } + else + { + $maxposition=$this->position; } - $maxposition=$maxposition+1; // Check parameters if (empty($this->filename) || empty($this->filepath)) { $this->errors[] = 'Bad property filename or filepath'; - return -1; + return --$error; + } + if (! isset($this->entity)) + { + $this->entity = $conf->entity; } // Put here code to add control on parameters values @@ -192,12 +210,14 @@ class EcmFiles //extends CommonObject $sql.= 'date_m,'; $sql.= 'fk_user_c,'; $sql.= 'fk_user_m,'; - $sql.= 'acl'; + $sql.= 'acl,'; + $sql.= 'src_object_type,'; + $sql.= 'src_object_id'; $sql .= ') VALUES ('; $sql .= " '".$ref."', "; $sql .= ' '.(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").','; $sql .= ' '.(! isset($this->share)?'NULL':"'".$this->db->escape($this->share)."'").','; - $sql .= ' '.(! isset($this->entity)?$conf->entity:$this->entity).','; + $sql .= ' '.$this->entity.','; $sql .= ' '.(! isset($this->filename)?'NULL':"'".$this->db->escape($this->filename)."'").','; $sql .= ' '.(! isset($this->filepath)?'NULL':"'".$this->db->escape($this->filepath)."'").','; $sql .= ' '.(! isset($this->fullpath_orig)?'NULL':"'".$this->db->escape($this->fullpath_orig)."'").','; @@ -211,7 +231,9 @@ class EcmFiles //extends CommonObject $sql .= ' '.(! isset($this->date_m) || dol_strlen($this->date_m)==0?'NULL':"'".$this->db->idate($this->date_m)."'").','; $sql .= ' '.(! isset($this->fk_user_c)?$user->id:$this->fk_user_c).','; $sql .= ' '.(! isset($this->fk_user_m)?'NULL':$this->fk_user_m).','; - $sql .= ' '.(! isset($this->acl)?'NULL':"'".$this->db->escape($this->acl)."'"); + $sql .= ' '.(! isset($this->acl)?'NULL':"'".$this->db->escape($this->acl)."'").','; + $sql .= ' '.(! isset($this->src_object_type)?'NULL':"'".$this->db->escape($this->src_object_type)."'").','; + $sql .= ' '.(! isset($this->src_object_id)?'NULL':$this->src_object_id); $sql .= ')'; $this->db->begin(); @@ -227,14 +249,13 @@ class EcmFiles //extends CommonObject $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); $this->position = $maxposition; - if (!$notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action to call a trigger. - - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_CREATE',$user); - //if ($result < 0) $error++; - //// End call triggers + // Triggers + if (! $notrigger) + { + // Call triggers + $result=$this->call_trigger(strtoupper(get_class($this)).'_CREATE',$user); + if ($result < 0) { $error++; } + // End call triggers } } @@ -283,7 +304,9 @@ class EcmFiles //extends CommonObject $sql .= " t.date_m,"; $sql .= " t.fk_user_c,"; $sql .= " t.fk_user_m,"; - $sql .= " t.acl"; + $sql .= " t.acl,"; + $sql .= " t.src_object_type,"; + $sql .= " t.src_object_id"; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; $sql.= ' WHERE 1 = 1'; /* Fetching this table depends on filepath+filename, it must not depends on entity @@ -333,12 +356,14 @@ class EcmFiles //extends CommonObject $this->fk_user_c = $obj->fk_user_c; $this->fk_user_m = $obj->fk_user_m; $this->acl = $obj->acl; + $this->src_object_type = $obj->src_object_type; + $this->src_object_id = $obj->src_object_id; } // Retrieve all extrafields for invoice // fetch optionals attributes and labels // $this->fetch_optionals(); - + // $this->fetch_lines(); $this->db->free($resql); @@ -390,7 +415,9 @@ class EcmFiles //extends CommonObject $sql .= " t.date_m,"; $sql .= " t.fk_user_c,"; $sql .= " t.fk_user_m,"; - $sql .= " t.acl"; + $sql .= " t.acl,"; + $sql .= " t.src_object_type,"; + $sql .= " t.src_object_id"; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; // Manage filter @@ -443,6 +470,9 @@ class EcmFiles //extends CommonObject $line->fk_user_c = $obj->fk_user_c; $line->fk_user_m = $obj->fk_user_m; $line->acl = $obj->acl; + $line->src_object_type = $obj->src_object_type; + $line->src_object_id = $obj->src_object_id; + $this->lines[] = $line; } $this->db->free($resql); @@ -465,6 +495,8 @@ class EcmFiles //extends CommonObject */ public function update(User $user, $notrigger = false) { + global $conf; + $error = 0; dol_syslog(__METHOD__, LOG_DEBUG); @@ -507,16 +539,15 @@ class EcmFiles //extends CommonObject if (isset($this->extraparams)) { $this->extraparams = trim($this->extraparams); } - if (isset($this->fk_user_c)) { - $this->fk_user_c = trim($this->fk_user_c); - } if (isset($this->fk_user_m)) { $this->fk_user_m = trim($this->fk_user_m); } if (isset($this->acl)) { $this->acl = trim($this->acl); } - + if (isset($this->src_object_type)) { + $this->src_object_type = trim($this->src_object_type); + } // Check parameters // Put here code to add a control on parameters values @@ -538,9 +569,10 @@ class EcmFiles //extends CommonObject $sql .= ' extraparams = '.(isset($this->extraparams)?"'".$this->db->escape($this->extraparams)."'":"null").','; $sql .= ' date_c = '.(! isset($this->date_c) || dol_strlen($this->date_c) != 0 ? "'".$this->db->idate($this->date_c)."'" : 'null').','; //$sql .= ' date_m = '.(! isset($this->date_m) || dol_strlen($this->date_m) != 0 ? "'".$this->db->idate($this->date_m)."'" : 'null').','; // Field automatically updated - $sql .= ' fk_user_c = '.(isset($this->fk_user_c)?$this->fk_user_c:"null").','; $sql .= ' fk_user_m = '.($this->fk_user_m > 0?$this->fk_user_m:$user->id).','; - $sql .= ' acl = '.(isset($this->acl)?"'".$this->db->escape($this->acl)."'":"null"); + $sql .= ' acl = '.(isset($this->acl)?"'".$this->db->escape($this->acl)."'":"null").','; + $sql .= ' src_object_id = '.($this->src_object_id > 0?$this->src_object_id:"null").','; + $sql .= ' src_object_type = '.(isset($this->src_object_type)?"'".$this->db->escape($this->src_object_type)."'":"null"); $sql .= ' WHERE rowid=' . $this->id; $this->db->begin(); @@ -552,14 +584,13 @@ class EcmFiles //extends CommonObject dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); } - if (!$error && !$notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); - //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} - //// End call triggers + // Triggers + if (! $error && ! $notrigger) + { + // Call triggers + $result=$this->call_trigger(strtoupper(get_class($this)).'_MODIFY',$user); + if ($result < 0) { $error++; } //Do also here what you must do to rollback action if trigger fail + // End call triggers } // Commit or rollback @@ -590,16 +621,13 @@ class EcmFiles //extends CommonObject $this->db->begin(); - if (!$error) { - if (!$notrigger) { - // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. - - //// Call triggers - //$result=$this->call_trigger('MYOBJECT_DELETE',$user); - //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} - //// End call triggers - } + // Triggers + if (! $notrigger) + { + // Call triggers + $result=$this->call_trigger(strtoupper(get_class($this)).'_DELETE',$user); + if ($result < 0) { $error++; } //Do also here what you must do to rollback action if trigger fail + // End call triggers } // If you need to delete child tables to, you can insert them here @@ -781,8 +809,9 @@ class EcmFiles //extends CommonObject $this->fk_user_c = $user->id; $this->fk_user_m = ''; $this->acl = ''; + $this->src_object_type = 'product'; + $this->src_object_id = 1; } - } @@ -804,4 +833,6 @@ class EcmfilesLine public $fk_user_c; public $fk_user_m; public $acl; + public $src_object_type; + public $src_object_id; } From ba5ac4760202467e7acaccd783208c3a27fbbd8b Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Fri, 13 Apr 2018 15:48:58 +0200 Subject: [PATCH 018/336] NEW OnSearchAndListGoOnCustomerOrSupplierCard conf --- htdocs/langs/fr_FR/admin.lang | 1 + htdocs/societe/admin/societe.php | 32 ++++++++++++++++++++++++++ htdocs/societe/class/societe.class.php | 7 ++++++ htdocs/societe/list.php | 11 +++++++++ 4 files changed, 51 insertions(+) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 4d32e4fd948..49a80dabe7a 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1169,6 +1169,7 @@ BrowserIsKO=Vous utilisez le navigateur %s. Ce navigateur est déconseillé pour XDebugInstalled=XDebug est chargé. XCacheInstalled=XCache est chargé. AddRefInList=Afficher les références client/fournisseur dans les listes (listes déroulantes ou à autocomplétion) et les libellés des liens clicables. Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp". +OnSearchAndListGoOnCustomerOrSupplierCard = A la recherche, ou sur une liste, aller directement sur la fiche client ou fournisseur (si le tiers est client ou fournisseur) AskForPreferredShippingMethod=Demander la méthode d'expédition préférée pour les tiers. FieldEdition=Édition du champ %s FillThisOnlyIfRequired=Exemple: +2 (ne remplir que si un décalage d'heure est constaté dans l'export) diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 7866ffbf0be..a32dfb99cce 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -263,6 +263,20 @@ if ($action == 'sethideinactivethirdparty') dol_print_error($db); } } +if($action=='setonsearchandlistgooncustomerorsuppliercard'){ + $setonsearchandlistgooncustomerorsuppliercard = GETPOST('value','int'); + $res = dolibarr_set_const($db, "SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD", $setonsearchandlistgooncustomerorsuppliercard,'yesno',0,'',$conf->entity); + if (! $res > 0) $error++; + if (! $error) + { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } + else + { + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} + /* * View @@ -775,6 +789,24 @@ else print ''; print ''; +print ''; +print ''.$langs->trans("OnSearchAndListGoOnCustomerOrSupplierCard").''; +print ' '; +print ''; +if (!empty($conf->global->SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD)) +{ + print ''; + print img_picto($langs->trans("Activated"),'switch_on'); + +} +else +{ + print ''; + print img_picto($langs->trans("Disabled"),'switch_off'); +} +print ''; +print ''; + /* // COMPANY_USE_SEARCH_TO_SELECT diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index f401f92e84d..1fb99e3c5d2 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1972,6 +1972,13 @@ class Societe extends CommonObject if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; // Force disable tooltips $name=$this->name?$this->name:$this->nom; + + if(!empty($conf->global->SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD)){ + + if(empty($option) && $this->client > 0) $option = 'customer'; + if(empty($option) && $this->fournisseur > 0) $option = 'supplier'; + } + if (! empty($conf->global->SOCIETE_ADD_REF_IN_LIST) && (!empty($withpicto))) { diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 448f526df4a..dd1cb616c4d 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -504,6 +504,17 @@ if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && { $obj = $db->fetch_object($resql); $id = $obj->rowid; + if(!empty($conf->global->SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD)){ + if( $obj->client > 0) { + header("Location: ".DOL_URL_ROOT.'/comm/card.php?socid='.$id); + exit; + } + if( $obj->fournisseur > 0){ + header("Location: ".DOL_URL_ROOT.'/fourn/card.php?socid='.$id); + exit; + } + } + header("Location: ".DOL_URL_ROOT.'/societe/card.php?socid='.$id); exit; } From 8d4126274aac00fbb6b3350751ecce05c49cd58b Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 13 Apr 2018 15:53:49 +0200 Subject: [PATCH 019/336] rang was missing on order_supplier lines --- htdocs/fourn/class/fournisseur.commande.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e3a674a3e94..916f297af78 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1535,7 +1535,7 @@ class CommandeFournisseur extends CommonOrder $this->line->product_type=$product_type; $this->line->remise_percent=$remise_percent; $this->line->subprice=$pu_ht; - $this->line->rang=$this->rang; + $this->line->rang=$rang; $this->line->info_bits=$info_bits; $this->line->vat_src_code=$vat_src_code; @@ -3147,7 +3147,7 @@ class CommandeFournisseurLigne extends CommonOrderLine // Insertion dans base de la ligne $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element; $sql.= " (fk_commande, label, description, date_start, date_end,"; - $sql.= " fk_product, product_type, special_code,"; + $sql.= " fk_product, product_type, special_code, rang,"; $sql.= " qty, vat_src_code, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type, remise_percent, subprice, ref,"; $sql.= " total_ht, total_tva, total_localtax1, total_localtax2, total_ttc, fk_unit,"; $sql.= " fk_multicurrency, multicurrency_code, multicurrency_subprice, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc"; @@ -3159,6 +3159,7 @@ class CommandeFournisseurLigne extends CommonOrderLine else { $sql.= "null,"; } $sql.= "'".$this->product_type."',"; $sql.= "'".$this->special_code."',"; + $sql.= "'".$this->rang."',"; $sql.= "'".$this->qty."', "; $sql.= " ".(empty($this->vat_src_code)?"''":"'".$this->vat_src_code."'").","; From e054d1ae8dbc901d9f34a6ed241582cde4525a03 Mon Sep 17 00:00:00 2001 From: fappels Date: Fri, 13 Apr 2018 16:49:03 +0200 Subject: [PATCH 020/336] Try to fix travis --- htdocs/core/lib/functions.lib.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index af8ae019a9c..6732c358c99 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5966,9 +5966,11 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob { $extrafieldstmp = new ExtraFields($db); $extralabels = $extrafieldstmp->fetch_name_optionals_label($object->table_element, true); - $object->fetch_optionals(); - foreach ($extrafieldstmp->attributes[$object->table_element]['label'] as $key => $label) { - $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = $object->array_options['options_' . $key]; + if ($object->fetch_optionals() > 0) + { + foreach ($extrafieldstmp->attributes[$object->table_element]['label'] as $key => $label) { + $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = $object->array_options['options_' . $key]; + } } } From 4fae1e3236acf2262f29a057df11d9f797eae33f Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 13 Apr 2018 17:01:10 +0200 Subject: [PATCH 021/336] rank of invoice_supplier lines was always -1 --- htdocs/fourn/facture/card.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index f24ed99a9f8..c9f587d84d6 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -983,6 +983,8 @@ if (empty($reshook)) $type = $productsupplier->type; $price_base_type = 'HT'; + $rang = $object->line_max() +1; + // TODO Save the product supplier ref into database (like done for supplier propal and order) into field ref_supplier (must rename field ref into ref_supplier first) $result=$object->addline( $desc, @@ -999,7 +1001,7 @@ if (empty($reshook)) $tva_npr, $price_base_type, $type, - -1, + $rang, 0, $array_options, $productsupplier->fk_unit From 199bf4c044b73535d2f7cf7edd67a8025d41d03b Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 17:10:07 +0200 Subject: [PATCH 022/336] Fix: avoid focus problem when select2 is in a modal dialog window --- htdocs/core/lib/ajax.lib.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 2ddc7125d4a..a558d97569f 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -386,10 +386,11 @@ function ajax_autoselect($htmlname, $addlink='') * @param int $minLengthToAutocomplete Minimum length of input string to start autocomplete * @param int $forcefocus Force focus on field * @param string $widthTypeOfAutocomplete 'resolve' or 'off' + * @param string $modalid ID of modal (for avoid focus problem when select2 is in a modal dialog window) * @return string Return html string to convert a select field into a combo, or '' if feature has been disabled for some reason. * @see selectArrayAjax of html.form.class */ -function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve') +function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve', $modalid='dialog-confirm') { global $conf; @@ -425,7 +426,8 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ }, escapeMarkup: function(markup) { return markup; - } + }, + dropdownParent: $(\'#'.$modalid.'\') })'; if ($forcefocus) $msg.= '.select2(\'focus\')'; $msg.= ';'."\n"; From 6f91b8019f53333450f7050506cc39c7b8210990 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 17:54:27 +0200 Subject: [PATCH 023/336] Remove warnings --- htdocs/compta/facture/class/facture.class.php | 13 +++++++------ htdocs/core/class/html.formfile.class.php | 2 +- htdocs/modulebuilder/template/myobject_list.php | 9 ++++++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 343bbbe6414..a06c1ccfa20 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2730,14 +2730,15 @@ class Facture extends CommonInvoice // Mise a jour informations denormalisees au niveau de la facture meme $result=$this->update_price(1,'auto',0,$mysoc); // The addline method is designed to add line from user input so total calculation with update_price must be done using 'auto' mode. + if ($result > 0) { $this->db->commit(); - return $this->line->rowid; + return $this->line->id; } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); $this->db->rollback(); return -1; } @@ -4482,11 +4483,11 @@ class FactureLigne extends CommonInvoiceLine $resql=$this->db->query($sql); if ($resql) { - $this->rowid=$this->db->last_insert_id(MAIN_DB_PREFIX.'facturedet'); + $this->id=$this->db->last_insert_id(MAIN_DB_PREFIX.'facturedet'); + $this->rowid=$this->id; // For backward compatibility if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { - $this->id=$this->rowid; $result=$this->insertExtraFields(); if ($result < 0) { @@ -4558,12 +4559,12 @@ class FactureLigne extends CommonInvoiceLine } $this->db->commit(); - return $this->rowid; + return $this->id; } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); $this->db->rollback(); return -2; } diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 50386e277a1..e64271b7c0e 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -867,7 +867,7 @@ class FormFile } else { - preg_match('/\/([0-9]+)\/[^\/]+\/'.preg_quote($modulesubdir).'$/', $filedir, $regs); + preg_match('/\/([0-9]+)\/[^\/]+\/'.preg_quote($modulesubdir,'/').'$/', $filedir, $regs); $entity = ((! empty($regs[1]) && $regs[1] > 1) ? $regs[1] : $conf->entity); } diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 1ed34d5681c..5c3e5f2ae96 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -132,7 +132,7 @@ foreach($object->fields as $key => $val) if (! empty($val['visible'])) $arrayfields['t.'.$key]=array('label'=>$val['label'], 'checked'=>(($val['visible']<0)?0:1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); } // Extra fields -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) +if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val) { @@ -439,9 +439,12 @@ print ''."\n"; // Detect if we need a fetch on each output line $needToFetchEachLine=0; -foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) +if (is_array($extrafields->attributes[$object->table_element]['computed']) && count($extrafields->attributes[$object->table_element]['computed']) > 0) { - if (preg_match('/\$object/',$val)) $needToFetchEachLine++; // There is at least one compute field that use $object + foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) + { + if (preg_match('/\$object/',$val)) $needToFetchEachLine++; // There is at least one compute field that use $object + } } From 32ff8ae132fa942b54ea484bf83954e7b61bf844 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 18:02:25 +0200 Subject: [PATCH 024/336] Fix link --- htdocs/admin/system/perf.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/system/perf.php b/htdocs/admin/system/perf.php index 55584df6445..1e757b72f63 100644 --- a/htdocs/admin/system/perf.php +++ b/htdocs/admin/system/perf.php @@ -50,7 +50,7 @@ llxHeader(); print load_fiche_titre($langs->trans("PerfDolibarr"),'','title_setup'); -print $langs->trans("YouMayFindPerfAdviceHere",'http://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').' ('.$langs->trans("Reload").')
'; +print $langs->trans("YouMayFindPerfAdviceHere",'https://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').' ('.$langs->trans("Reload").')
'; // Recupere la version de PHP $phpversion=version_php(); From 556a418132ed8d9d17973c42dd3813d7b9073818 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 13 Apr 2018 19:30:11 +0200 Subject: [PATCH 025/336] Fix: best method --- htdocs/core/lib/ajax.lib.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index a558d97569f..856d7cdfbd1 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -386,11 +386,10 @@ function ajax_autoselect($htmlname, $addlink='') * @param int $minLengthToAutocomplete Minimum length of input string to start autocomplete * @param int $forcefocus Force focus on field * @param string $widthTypeOfAutocomplete 'resolve' or 'off' - * @param string $modalid ID of modal (for avoid focus problem when select2 is in a modal dialog window) * @return string Return html string to convert a select field into a combo, or '' if feature has been disabled for some reason. * @see selectArrayAjax of html.form.class */ -function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve', $modalid='dialog-confirm') +function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve') { global $conf; @@ -427,7 +426,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ escapeMarkup: function(markup) { return markup; }, - dropdownParent: $(\'#'.$modalid.'\') + dropdownCssClass: \'ui-dialog\' })'; if ($forcefocus) $msg.= '.select2(\'focus\')'; $msg.= ';'."\n"; From 374a0723bf708bc5a2881f9e7eab1281c4e97d38 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 22:20:14 +0200 Subject: [PATCH 026/336] Fix VAT report by rate --- htdocs/compta/tva/quadri_detail.php | 27 +++++++++++++++++++-------- htdocs/core/lib/tax.lib.php | 1 - 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index 713cab1dc13..e04f4d83ee8 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -369,7 +369,8 @@ if (! is_array($x_coll) || ! is_array($x_paye)) foreach ($x_both[$rate]['coll']['detail'] as $index => $fields) { // Define type - $type=($fields['dtype']?$fields['dtype']:$fields['ptype']); + // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown. + $type=(isset($fields['dtype'])?$fields['dtype']:$fields['ptype']); // Try to enhance type detection using date_start and date_end for free lines where type // was not saved. if (!empty($fields['ddate_start'])) { @@ -401,10 +402,10 @@ if (! is_array($x_coll) || ! is_array($x_paye)) { $product_static->id=$fields['pid']; $product_static->ref=$fields['pref']; - $product_static->type=$fields['ptype']; + $product_static->type=$fields['dtype']; // We force with the type of line to have type how line is registered print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) { - print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),16); + print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); } } else @@ -423,7 +424,7 @@ if (! is_array($x_coll) || ! is_array($x_paye)) $fields['descr']=$langs->transnoentitiesnoconv($reg[1]); } } - print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),16); + print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); // Show range print_date_range($fields['ddate_start'],$fields['ddate_end']); @@ -550,7 +551,8 @@ if (! is_array($x_coll) || ! is_array($x_paye)) foreach ($x_both[$rate]['paye']['detail'] as $index=>$fields) { // Define type - $type=($fields['dtype']?$fields['dtype']:$fields['ptype']); + // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown. + $type=(isset($fields['dtype'])?$fields['dtype']:$fields['ptype']); // Try to enhance type detection using date_start and date_end for free lines where type // was not saved. if (!empty($fields['ddate_start'])) { @@ -582,10 +584,10 @@ if (! is_array($x_coll) || ! is_array($x_paye)) { $product_static->id=$fields['pid']; $product_static->ref=$fields['pref']; - $product_static->type=$fields['ptype']; + $product_static->type=$fields['dtype']; // We force with the type of line to have type how line is registered print $product_static->getNomUrl(1); if (dol_string_nohtmltag($fields['descr'])) { - print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),16); + print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); } } else @@ -595,7 +597,16 @@ if (! is_array($x_coll) || ! is_array($x_paye)) } else { $text = img_object($langs->trans('Product'),'product'); } - print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),16); + if (preg_match('/^\((.*)\)$/',$fields['descr'],$reg)) { + if ($reg[1]=='DEPOSIT') { + $fields['descr']=$langs->transnoentitiesnoconv('Deposit'); + } elseif ($reg[1]=='CREDIT_NOTE') { + $fields['descr']=$langs->transnoentitiesnoconv('CreditNote'); + } else { + $fields['descr']=$langs->transnoentitiesnoconv($reg[1]); + } + } + print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); // Show range print_date_range($fields['ddate_start'],$fields['ddate_end']); diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index 26c31a4eee0..99737322267 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -323,7 +323,6 @@ function tax_by_date($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; } - //print $sql.'
'; if (! $sql) return -1; if ($sql == 'TODO') return -2; if ($sql != 'TODO') From a933e458e76a26caa8962a3fb975324a86791a4f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 22:57:43 +0200 Subject: [PATCH 027/336] Repair type of product in invoice table from type of product --- htdocs/install/mysql/migration/repair.sql | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 69cd2a3bc79..a641f0c724f 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -429,3 +429,11 @@ drop table tmp_bank_url_expense_user; -- Backport a change of value into the hourly rate. -- update llx_projet_task_time as ptt set ptt.thm = (SELECT thm from llx_user as u where ptt.fk_user = u.rowid) where (ptt.thm is null) + +-- select * from llx_facturedet as fd, llx_product as p where fd.fk_product = p.rowid AND fd.product_type != p.fk_product_type; +update llx_facturedet set product_type = 0 where product_type = 1 AND fk_product > 0 AND fk_product IN (SELECT rowid FROM llx_product WHERE fk_product_type = 0); +update llx_facturedet set product_type = 1 where product_type = 0 AND fk_product > 0 AND fk_product IN (SELECT rowid FROM llx_product WHERE fk_product_type = 1); + +update llx_facture_fourn_det set product_type = 0 where product_type = 1 AND fk_product > 0 AND fk_product IN (SELECT rowid FROM llx_product WHERE fk_product_type = 0); +update llx_facture_fourn_det set product_type = 1 where product_type = 0 AND fk_product > 0 AND fk_product IN (SELECT rowid FROM llx_product WHERE fk_product_type = 1); + From a0e243a29b6f82bcdf77c1a718ff06d1fcb67806 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 23:11:19 +0200 Subject: [PATCH 028/336] Clean code --- htdocs/core/class/html.formmail.class.php | 4 ++-- htdocs/core/lib/functions.lib.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index a73422a8499..a370684b191 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -1262,11 +1262,11 @@ class FormMail extends Form if (!empty($line->fk_product)) { if (! is_object($extrafields)) $extrafields = new ExtraFields($this->db); - $extralabels = $extrafields->fetch_name_optionals_label('product', true); + $extrafields->fetch_name_optionals_label('product', true); $product = new Product($this->db); $product->fetch($line->fk_product, '', '', 1); $product->fetch_optionals(); - if (is_array($extrafieldstmp->attributes[$object->table_element]['label']) && count($extrafieldstmp->attributes[$object->table_element]['label']) > 0) + if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { foreach ($extrafields->attributes[$product->table_element]['label'] as $key => $label) { $substit_line['__PRODUCT_EXTRAFIELD_' . strtoupper($key) . '__'] = $product->array_options['options_' . $key]; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c01aafdce1f..3bc64310b9e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5964,12 +5964,12 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob // Create dynamic tags for __EXTRAFIELD_FIELD__ if ($object->table_element && $object->id > 0) { - if (! is_object($extrafields)) $extrafieldstmp = new ExtraFields($db); - $extralabels = $extrafieldstmp->fetch_name_optionals_label($object->table_element, true); + if (! is_object($extrafields)) $extrafields = new ExtraFields($db); + $extrafields->fetch_name_optionals_label($object->table_element, true); $object->fetch_optionals(); - if (is_array($extrafieldstmp->attributes[$object->table_element]['label']) && count($extrafieldstmp->attributes[$object->table_element]['label']) > 0) + if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { - foreach ($extrafieldstmp->attributes[$object->table_element]['label'] as $key => $label) { + foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) { $substitutionarray['__EXTRAFIELD_' . strtoupper($key) . '__'] = $object->array_options['options_' . $key]; } } From c6f57b8ec4a8bb1e8a6c479b8ac4cf04c6c6cd0b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 23:29:47 +0200 Subject: [PATCH 029/336] Update societe.php --- htdocs/societe/admin/societe.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index a32dfb99cce..ecbefe2cb1d 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -789,7 +789,7 @@ else print ''; print ''; -print ''; +/*print ''; print ''.$langs->trans("OnSearchAndListGoOnCustomerOrSupplierCard").''; print ' '; print ''; @@ -806,7 +806,7 @@ else } print ''; print ''; - +*/ /* // COMPANY_USE_SEARCH_TO_SELECT From d833620285c3f585893f7ab05852451d7e4925d5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Apr 2018 23:49:08 +0200 Subject: [PATCH 030/336] Fix title of break in balance account report --- htdocs/accountancy/bookkeeping/balance.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index fda67985883..da0dfda2510 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -253,8 +253,8 @@ else { print ''; // Permet d'afficher le compte comptable - if ($root_account_description != $displayed_account) { - + if (empty($displayed_account) || $root_account_description != $displayed_account) + { // Affiche un Sous-Total par compte comptable if ($displayed_account != "") { print '' . $langs->trans("SubTotal") . ':' . price($sous_total_debit) . '' . price($sous_total_credit) . '' . price($sous_total_credit - $sous_total_debit) . ''; @@ -262,9 +262,9 @@ else { print ''; } - // Affiche le compte comptable en d�but de ligne + // Affiche le compte comptable en debut de ligne print ""; - print '' . $root_account_description . ''; + print '' . $line->numero_compte . ($root_account_description ? ' - ' . $root_account_description : '') . ''; print ''; $displayed_account = $root_account_description; From fea3182e931a25de4bab8a9fc05204dfd842ee5b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 00:01:54 +0200 Subject: [PATCH 031/336] NEW Can filter on account range in general ledger grouped by account --- .../accountancy/bookkeeping/listbyaccount.php | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 04708fe7726..dbc6ace5350 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -51,6 +51,10 @@ $search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha if ($search_accountancy_code_start == - 1) { $search_accountancy_code_start = ''; } +$search_accountancy_code_end = GETPOST('search_accountancy_code_end', 'alpha'); +if ($search_accountancy_code_end == - 1) { + $search_accountancy_code_end = ''; +} $search_doc_ref = GETPOST('search_doc_ref', 'alpha'); $search_label_operation = GETPOST('search_label_operation', 'alpha'); $search_direction = GETPOST('search_direction', 'alpha'); @@ -116,9 +120,13 @@ if (! empty($search_doc_date)) { if (! GETPOST('button_removefilter_x','alpha') && ! GETPOST('button_removefilter.x','alpha') && ! GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers { if (! empty($search_accountancy_code_start)) { - $filter['t.numero_compte'] = $search_accountancy_code_start; + $filter['t.numero_compte>='] = $search_accountancy_code_start; $options .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start); } + if (! empty($search_accountancy_code_end)) { + $filter['t.numero_compte<='] = $search_accountancy_code_end; + $options .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end); + } if (! empty($search_label_account)) { $filter['t.label_compte'] = $search_label_account; $options .= '&search_label_compte=' . urlencode($search_label_account); @@ -151,7 +159,8 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x', $search_doc_date = ''; $search_accountancy_code = ''; $search_accountancy_code_start = ''; - $search_label_account = ''; + $search_accountancy_code_end = ''; + $search_label_account = ''; $search_doc_ref = ''; $search_label_operation = ''; $search_direction = ''; @@ -260,7 +269,16 @@ else print ''; print ''; -print ''; +print ''; print ''; print ''; } @@ -500,8 +501,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': ffffff) '; + print '   ('.$langs->trans("Default").': ffffff) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -547,8 +549,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -594,8 +597,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -618,9 +622,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default")); } - print '   ('.$langs->trans("Default").': 643c14) '; + print '   ('.$langs->trans("Default").': 643c14) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); - + print ''; print ''; print ''; @@ -645,8 +649,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default")); } - print '   ('.$langs->trans("Default").': f0f0f0) '; // $colorbacktitle1 in CSS + print '   ('.$langs->trans("Default").': f0f0f0) '; // $colorbacktitle1 in CSS print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; print ''; @@ -675,8 +680,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -703,8 +709,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -752,8 +759,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print $langs->trans("Default"); } } - print '   ('.$langs->trans("Default").': 000078) '; + print '   ('.$langs->trans("Default").': 000078) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; } @@ -795,8 +803,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) } else print $langs->trans("None"); } - print '   ('.$langs->trans("Default").': edf4fb) '; + print '   ('.$langs->trans("Default").': edf4fb) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print ''; print ''; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 50ba287c7a2..11ecfca262e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -53,8 +53,8 @@ $colortexttitlenotab='100,60,20'; $colortexttitle='0,0,0'; $colortext='0,0,0'; $colortextlink='0,0,100'; -$fontsize='13'; -$fontsizesmaller='12'; +$fontsize='0.85em'; +$fontsizesmaller='0.75em'; if (defined('THEME_ONLY_CONSTANT')) return; @@ -117,8 +117,8 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) $conf->global->THEME_ELDY_BACKTABCARD1='255,255,255'; // card $conf->global->THEME_ELDY_BACKTABACTIVE='234,234,234'; $conf->global->THEME_ELDY_TEXT='0,0,0'; - $conf->global->THEME_ELDY_FONT_SIZE1='13'; - $conf->global->THEME_ELDY_FONT_SIZE2='12'; + $conf->global->THEME_ELDY_FONT_SIZE1='0.85em'; + $conf->global->THEME_ELDY_FONT_SIZE2='0.75em'; } // Case of option availables only if THEME_ELDY_ENABLE_PERSONALIZED is on @@ -199,6 +199,15 @@ $colortextlink=join(',',colorStringToArray($colortextlink)); $nbtopmenuentries=$menumanager->showmenu('topnb'); + +$minwidthtmenu=66; /* minimum width for one top menu entry */ +$heightmenu=46; /* height of top menu, part with image */ +$heightmenu2=48; /* height of top menu, part with login */ +$disableimages = 0; +$maxwidthloginblock = 130; +if (! empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) { $disableimages = 1; $maxwidthloginblock = 180; $minwidthtmenu=0; } + + print '/*'."\n"; print 'colorbackbody='.$colorbackbody."\n"; print 'colorbackvmenu1='.$colorbackvmenu1."\n"; @@ -239,7 +248,7 @@ body { background: rgb(); color: rgb(); - font-size: px; + font-size: ; line-height: 1.4; font-family: ; margin-top: 0; @@ -873,7 +882,7 @@ select.selectarrowonleft option { .hideobject { display: none; } .minwidth50 { min-width: 50px; } /* rule for not too small screen only */ -@media only screen and (min-width: px) +@media only screen and (min-width: px) { .width25 { width: 25px; } .width50 { width: 50px; } @@ -960,10 +969,10 @@ select.selectarrowonleft option { @media only screen and (max-width: 767px) { body { - font-size: px; + font-size: ; } div.refidno { - font-size: px !important; + font-size: !important; } } @@ -971,10 +980,10 @@ select.selectarrowonleft option { @media only screen and (max-width: 570px) { body { - font-size: px; + font-size: ; } div.refidno { - font-size: px !important; + font-size: !important; } .divmainbodylarge { margin-left: 20px !important; margin-right: 20px !important; } @@ -1006,7 +1015,7 @@ select.selectarrowonleft option { } input, input[type=text], input[type=password], select, textarea { min-width: 20px; - font-size: px; + font-size: ; /* min-height: 1.4em; */ /* line-height: 1.4em; */ /* padding: .4em .1em; */ @@ -1453,15 +1462,6 @@ img.photorefnoborder { /* Menu top et 1ere ligne tableau */ /* ============================================================================== */ -global->THEME_TOPMENU_DISABLE_IMAGE)) { $disableimages = 1; $maxwidthloginblock = 180; $minwidthtmenu=0; } -?> - div#id-top { display:none; @@ -1591,13 +1591,6 @@ div.tmenucenter height: px; width: 100%; - /* - max-width: px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - color: #; - */ } #menu_titre_logo { padding-top: 0; @@ -1625,7 +1618,18 @@ div.mainmenu { min-width: 40px; } -/* Do not load menu img if hidden to save bandwidth */ +/* For mainmenu, we always load the img */ + +div.mainmenu.menu { + background-image: url(); + +} +#mainmenutd_menu a.tmenuimage { + display: unset; +} + +/* Do not load menu img for other if hidden to save bandwidth */ + div.mainmenu.home{ @@ -1681,11 +1685,6 @@ div.mainmenu.members { background-image: url(); } -div.mainmenu.menu { - background-image: url(); - top: 7px; -} - div.mainmenu.products { background-image: url(); } @@ -1895,7 +1894,7 @@ div.login_block { : 0; top: ; font-weight: bold; - max-width: px; + display: none; @@ -1927,7 +1926,7 @@ div.login_block_user { } div.login_block_other { display: inline-block; - clear: both; + clear: ; } div.login_block_other { padding-top: 3px; text-align: right; } .login_block_elem { @@ -1952,7 +1951,7 @@ div.login_block_other { padding-top: 3px; text-align: right; } } .alogin, .alogin:hover { font-weight: normal !important; - font-size: px !important; + font-size: !important; padding-top: 2px; } .alogin:hover, .atoplogin:hover { @@ -2041,17 +2040,17 @@ input.vmenusearchselectcombo[type=text] { .companylogo { } .searchform { padding-top: 10px; } -a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active, span.vmenu { white-space: nowrap; font-size:px; font-family: ; text-align: ; font-weight: bold; } -font.vmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: bold; color: #aaa; margin-left: 4px; } +a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active, span.vmenu { white-space: nowrap; font-family: ; text-align: ; font-weight: bold; } +font.vmenudisabled { font-family: ; text-align: ; font-weight: bold; color: #aaa; margin-left: 4px; } a.vmenu:link, a.vmenu:visited { color: #; } -a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #202020; margin: 1px 1px 1px 6px; } -font.vsmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #aaa; } +a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-family: ; text-align: ; font-weight: normal; color: #202020; margin: 1px 1px 1px 6px; } +font.vsmenudisabled { font-family: ; text-align: ; font-weight: normal; color: #aaa; } a.vsmenu:link, a.vsmenu:visited { color: #; white-space: nowrap; } font.vsmenudisabledmargin { margin: 1px 1px 1px 6px; } li a.vsmenudisabled, li.vsmenudisabled { color: #aaa !important; } -a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #aaa; text-decoration: none; } +a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { font-size:; font-family: ; text-align: ; font-weight: normal; color: #aaa; text-decoration: none; } .vmenu div.blockvmenufirst, .vmenu div.blockvmenulogo, .vmenu div.blockvmenusearchphone, .vmenu div.blockvmenubookmarks { @@ -2685,7 +2684,7 @@ div.refidno { padding-top: 3px; font-weight: normal; color: #444; - font-size: px; + font-size: ; line-height: 21px; } div.refidno form { @@ -3526,7 +3525,7 @@ div#card-errors { .ui-dialog-titlebar { } .ui-dialog-content { - font-size: px !important; + font-size: !important; } @@ -4035,7 +4034,7 @@ A.none, A.none:active, A.none:visited, A.none:hover { } .ui-widget { font-family:; - font-size:px; + font-size:; } /* .ui-button { margin-left: -2px; browser->name)?'padding-top: 1px;':''); ?> } */ .ui-button { margin-left: -2px; } @@ -4872,7 +4871,7 @@ a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-i min-width: .4em; padding-left: 6px; padding-right: 6px; - font-size: px; + font-size: ; /* white-space: normal; */ /* Warning, enable this break the truncate feature */ } .ui-btn-icon-right .ui-btn-inner { @@ -5455,20 +5454,19 @@ div.tabsElem a.tab { } } -/* nboftopmenuentries = , fontsize= */ +/* nboftopmenuentries = , fontsize= */ /* rule to reduce top menu - 1st reduction */ -@media only screen and (max-width: px) /* reduction 1 */ +@media only screen and (max-width: px) /* reduction 1 */ { div.tmenucenter { - width: px; /* size of viewport */ + width: px; /* size of viewport */ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #; } .mainmenuaspan { - /*display: none;*/ - font-size: 10px; + font-size: 0.9em; padding-right: 0; } .topmenuimage { @@ -5491,20 +5489,20 @@ div.tabsElem a.tab { } } /* rule to reduce top menu - 2nd reduction */ -@media only screen and (max-width: px) /* reduction 2 */ +@media only screen and (max-width: px) /* reduction 2 */ { div.mainmenu { height: 23px; } div.tmenucenter { - max-width: px; /* size of viewport */ + max-width: px; /* size of viewport */ text-overflow: clip; } span.mainmenuaspan { margin-left: 1px; } .mainmenuaspan { - font-size: 10px; + font-size: 0.9em; padding-left: 0; padding-right: 0; } @@ -5515,7 +5513,7 @@ div.tabsElem a.tab { } } /* rule to reduce top menu - 3rd reduction */ -@media only screen and (max-width: px) /* reduction 3 */ +@media only screen and (max-width: px) /* reduction 3 */ { .side-nav { z-index: 200; From fdbeb4265a0c4bf79f2272591e0b900f46569126 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 22:22:29 +0200 Subject: [PATCH 043/336] Look and feel v8 --- htdocs/accountancy/customer/index.php | 17 ++++--- htdocs/accountancy/expensereport/index.php | 16 +++---- htdocs/accountancy/supplier/index.php | 15 +++---- htdocs/compta/facture/list.php | 4 +- htdocs/theme/common/dolistore.jpg | Bin 2483 -> 0 bytes htdocs/theme/eldy/img/menus/chart.png | Bin 1321 -> 0 bytes htdocs/theme/eldy/img/menus/money_over.png | Bin 940 -> 908 bytes htdocs/theme/eldy/img/title_accountancy.png | Bin 1019 -> 952 bytes htdocs/theme/eldy/img/title_agenda.png | Bin 750 -> 580 bytes htdocs/theme/eldy/img/title_bank.png | Bin 796 -> 638 bytes htdocs/theme/eldy/img/title_commercial.png | Bin 828 -> 650 bytes htdocs/theme/eldy/img/title_companies.png | Bin 562 -> 426 bytes htdocs/theme/eldy/img/title_generic.png | Bin 789 -> 672 bytes htdocs/theme/eldy/img/title_home.png | Bin 721 -> 474 bytes htdocs/theme/eldy/img/title_products.png | Bin 678 -> 374 bytes htdocs/theme/eldy/img/title_project.png | Bin 604 -> 380 bytes htdocs/theme/eldy/img/title_setup.png | Bin 1105 -> 724 bytes htdocs/theme/eldy/style.css.php | 47 +++++++++----------- htdocs/theme/md/style.css.php | 12 ----- 19 files changed, 47 insertions(+), 64 deletions(-) delete mode 100644 htdocs/theme/common/dolistore.jpg delete mode 100644 htdocs/theme/eldy/img/menus/chart.png diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index aedaeda0e5b..8b88d8f396b 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -32,11 +32,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -129,6 +125,7 @@ llxHeader('', $langs->trans("CustomersVentilation")); $textprevyear = '' . img_previous() . ''; $textnextyear = ' ' . img_next() . ''; + print load_fiche_titre($langs->trans("CustomersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear, '', 'title_accountancy'); // Clean database @@ -160,8 +157,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; - -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
' . $object->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, '') . ''; +print '
'; +print $langs->trans('From').' '; +print $formaccounting->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, 'maxwidth200'); +print '
'; +print '
'; +print $langs->trans('to').' '; +print $formaccounting->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, 'maxwidth200'); +print '
'; +print '
'; print $langs->trans('From') . ': '; From 9a001ed2035fb86da1dfd1ab161b13fd05fb25f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 14 Apr 2018 09:51:11 +0200 Subject: [PATCH 032/336] Translation --- htdocs/langs/en_US/products.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index e5393466c3d..a8f9f815cb6 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -70,6 +70,7 @@ SoldAmount=Sold amount PurchasedAmount=Purchased amount NewPrice=New price MinPrice=Min. selling price +EditSellingPriceLabel=Edit selling price label CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. ContractStatusClosed=Closed ErrorProductAlreadyExists=A product with reference %s already exists. @@ -332,4 +333,4 @@ ConfirmCloneProductCombinations=Would you like to copy all the product variants CloneDestinationReference=Destination product reference ErrorCopyProductCombinations=There was an error while copying the product variants ErrorDestinationProductNotFound=Destination product not found -ErrorProductCombinationNotFound=Product variant not found \ No newline at end of file +ErrorProductCombinationNotFound=Product variant not found From 79c34f4d691673633c151b1af11f4155fec1c531 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 14 Apr 2018 10:03:21 +0200 Subject: [PATCH 033/336] Fix: project category is type 6 not 5 !! --- htdocs/install/mysql/migration/5.0.0-6.0.0.sql | 2 +- htdocs/install/mysql/migration/repair.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/5.0.0-6.0.0.sql b/htdocs/install/mysql/migration/5.0.0-6.0.0.sql index 37f0ca415bd..58e58c63c5c 100644 --- a/htdocs/install/mysql/migration/5.0.0-6.0.0.sql +++ b/htdocs/install/mysql/migration/5.0.0-6.0.0.sql @@ -489,7 +489,7 @@ DELETE FROM llx_categorie_product WHERE fk_categorie NOT IN (SELECT rowid FROM l DELETE FROM llx_categorie_societe WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie WHERE type IN (1, 2)); DELETE FROM llx_categorie_member WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie WHERE type = 3); DELETE FROM llx_categorie_contact WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie WHERE type = 4); -DELETE FROM llx_categorie_project WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie WHERE type = 5); +DELETE FROM llx_categorie_project WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie WHERE type = 6); ALTER TABLE llx_inventory ADD COLUMN ref varchar(48); diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 68671ecd4d7..59f0ae58d97 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -168,7 +168,7 @@ delete from llx_categorie_fournisseur where fk_categorie not in (select rowid fr delete from llx_categorie_societe where fk_categorie not in (select rowid from llx_categorie where type = 2); delete from llx_categorie_member where fk_categorie not in (select rowid from llx_categorie where type = 3); delete from llx_categorie_contact where fk_categorie not in (select rowid from llx_categorie where type = 4); -delete from llx_categorie_project where fk_categorie not in (select rowid from llx_categorie where type = 5); +delete from llx_categorie_project where fk_categorie not in (select rowid from llx_categorie where type = 6); -- Fix: delete orphelin deliveries. Note: deliveries are linked to shipment by llx_element_element only. No other links. From d97c052d085f677bebda6ce57ae730fa7c8c383d Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 14 Apr 2018 10:41:38 +0200 Subject: [PATCH 034/336] Fix: broken $pdf object ! --- htdocs/core/lib/pdf.lib.php | 8 +++++--- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 573a562d467..41e53059fff 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -130,6 +130,10 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') //$format=array($arrayformat['width'],$arrayformat['height']); //$metric=$arrayformat['unit']; + if (class_exists('TCPDI')) $pdf = new TCPDI($pagetype,$metric,$format); + else if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); + else $pdf = new TCPDF($pagetype,$metric,$format); + // Protection and encryption of pdf if (! empty($conf->global->PDF_SECURITY_ENCRYPTION)) { @@ -144,9 +148,7 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') - print-high : Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this is not set, printing is limited to a low-level representation of the appearance, possibly of degraded quality. - owner : (inverted logic - only for public-key) when set permits change of encryption and enables all other permissions. */ - if (class_exists('TCPDI')) $pdf = new TCPDI($pagetype,$metric,$format); - else if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); - else $pdf = new TCPDF($pagetype,$metric,$format); + // For TCPDF, we specify permission we want to block $pdfrights = array('modify','copy'); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 17b652ed2db..b5ee2fba63b 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -108,7 +108,7 @@ class pdf_crabe extends ModelePDFFactures function __construct($db) { global $conf,$langs,$mysoc; - + // Translations $langs->loadLangs(array("main", "bills")); @@ -204,7 +204,7 @@ class pdf_crabe extends ModelePDFFactures if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - + // Translations $outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies")); @@ -1543,7 +1543,7 @@ class pdf_crabe extends ModelePDFFactures function _pagehead(&$pdf, $object, $showaddress, $outputlangs) { global $conf, $langs; - + // Translations $outputlangs->loadLangs(array("main", "bills", "propal", "companies")); From bfed1b9db1e9f7202f650e5f8cae3a0ea0b315c9 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Apr 2018 12:45:40 +0200 Subject: [PATCH 035/336] FIX: some localtaxes errors --- .gitignore | 0 htdocs/core/lib/functions.lib.php | 58 ++++++++----------------------- 2 files changed, 14 insertions(+), 44 deletions(-) mode change 100755 => 100644 .gitignore diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 2c89bb6598b..6efd4595a33 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1,13 +1,13 @@ * Copyright (C) 2003 Jean-Louis Bergamo - * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2004-2018 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004 Christophe Combelles * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2008 Raphael Bertrand (Resultic) - * Copyright (C) 2010-2016 Juanjo Menent + * Copyright (C) 2010-2018 Juanjo Menent * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2013-2017 Alexandre Spangaro * Copyright (C) 2014 Cédric GROSS @@ -3768,10 +3768,14 @@ function get_localtax($vatrate, $local, $thirdparty_buyer="", $thirdparty_seller } else // i am the seller { - if (!isOnlyOneLocalTax($local)) // This is for spain only, we don't return value found into datbase even if there is only one locatax vat. - { - return $conf->global->MAIN_INFO_VALUE_LOCALTAX2; - } + if (in_array($mysoc->country_code, array('ES'))) + { + return $thirdparty_buyer->localtax2_value; + } + else + { + return $conf->global->MAIN_INFO_VALUE_LOCALTAX2; + } } } } @@ -3926,50 +3930,16 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller, $firstparamisi $obj = $db->fetch_object($resql); if ($local == 1) { - if (! isOnlyOneLocalTax(1)) - { - return array($obj->localtax1_type, get_localtax($vatrate, $local, $buyer, $seller), $obj->accountancy_code_sell, $obj->accountancy_code_buy); - } - else - { - return array($obj->localtax1_type, $obj->localtax1,$obj->accountancy_code_sell, $obj->accountancy_code_buy); - } + return array($obj->localtax1_type, get_localtax($vatrate, $local, $buyer, $seller), $obj->accountancy_code_sell, $obj->accountancy_code_buy); } elseif ($local == 2) { - if (! isOnlyOneLocalTax(2)) - { - return array($obj->localtax2_type, get_localtax($vatrate, $local, $buyer, $seller),$obj->accountancy_code_sell, $obj->accountancy_code_buy); - } - else - { - return array($obj->localtax2_type, $obj->localtax2,$obj->accountancy_code_sell, $obj->accountancy_code_buy); - } + return array($obj->localtax2_type, get_localtax($vatrate, $local, $buyer, $seller),$obj->accountancy_code_sell, $obj->accountancy_code_buy); } else { - if(! isOnlyOneLocalTax(1)) - { - if(! isOnlyOneLocalTax(2)) - { - return array($obj->localtax1_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, get_localtax($vatrate, 2, $buyer, $seller), $obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - else - { - return array($obj->localtax1_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, $obj->localtax2, $obj->accountancy_code_sell, $obj->accountancy_code_buy); - } - } - else - { - if(! isOnlyOneLocalTax(2)) - { - return array($obj->localtax1_type, $obj->localtax1, $obj->localtax2_type, get_localtax($vatrate, 2, $buyer, $seller), $obj->accountancy_code_sell, $obj->accountancy_code_buy); - } - else - { - return array($obj->localtax1_type, $obj->localtax1, $obj->localtax2_type, $obj->localtax2, $obj->accountancy_code_sell, $obj->accountancy_code_buy); - } - } + return array($obj->localtax1_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, get_localtax($vatrate, 2, $buyer, $seller), $obj->accountancy_code_sell,$obj->accountancy_code_buy); + } } From 25a87507b9548646cebac902b7fdc24396102e35 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 14 Apr 2018 15:12:51 +0200 Subject: [PATCH 036/336] NEW add new parameters for tcpf encryption --- htdocs/core/lib/pdf.lib.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 41e53059fff..9de6dcd5c1c 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -150,11 +150,18 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') */ // For TCPDF, we specify permission we want to block - $pdfrights = array('modify','copy'); + $pdfrights = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS)?$conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS:array('modify','copy')); + + // For encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit + $encstrength = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH)?$conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH:0); + + // Array of recipients containing public-key certificates ('c') and permissions ('p'). + // For example: array(array('c' => 'file://../examples/data/cert/tcpdf.crt', 'p' => array('print'))) + $pubkeys = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS)?$conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS:null); $pdfuserpass = ''; // Password for the end user $pdfownerpass = NULL; // Password of the owner, created randomly if not defined - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); + $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass,$encstrength,$pubkeys); } return $pdf; From 732f019fb2194e12a05e9ddadad5c1ee394262d4 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 14 Apr 2018 15:17:51 +0200 Subject: [PATCH 037/336] Fix: json format in llx_const --- htdocs/core/lib/pdf.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 9de6dcd5c1c..8244622a545 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -150,14 +150,14 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') */ // For TCPDF, we specify permission we want to block - $pdfrights = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS)?$conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS:array('modify','copy')); + $pdfrights = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS)?json_decode($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS, true):array('modify','copy')); // Json format in llx_const // For encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit $encstrength = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH)?$conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH:0); // Array of recipients containing public-key certificates ('c') and permissions ('p'). // For example: array(array('c' => 'file://../examples/data/cert/tcpdf.crt', 'p' => array('print'))) - $pubkeys = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS)?$conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS:null); + $pubkeys = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS)?json_decode($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS, true):null); // Json format in llx_const $pdfuserpass = ''; // Password for the end user $pdfownerpass = NULL; // Password of the owner, created randomly if not defined From fb4765c4723fa7336b3e7c7ed5d54b8adfff7d4d Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 14 Apr 2018 15:24:52 +0200 Subject: [PATCH 038/336] Fix clean code --- htdocs/core/lib/pdf.lib.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 8244622a545..1b11c3fd803 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -152,6 +152,12 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') // For TCPDF, we specify permission we want to block $pdfrights = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS)?json_decode($conf->global->PDF_SECURITY_ENCRYPTION_RIGHTS, true):array('modify','copy')); // Json format in llx_const + // Password for the end user + $pdfuserpass = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_USERPASS)?$conf->global->PDF_SECURITY_ENCRYPTION_USERPASS:''); + + // Password of the owner, created randomly if not defined + $pdfownerpass = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_OWNERPASS)?$conf->global->PDF_SECURITY_ENCRYPTION_OWNERPASS:null); + // For encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit $encstrength = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH)?$conf->global->PDF_SECURITY_ENCRYPTION_STRENGTH:0); @@ -159,8 +165,6 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') // For example: array(array('c' => 'file://../examples/data/cert/tcpdf.crt', 'p' => array('print'))) $pubkeys = (! empty($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS)?json_decode($conf->global->PDF_SECURITY_ENCRYPTION_PUBKEYS, true):null); // Json format in llx_const - $pdfuserpass = ''; // Password for the end user - $pdfownerpass = NULL; // Password of the owner, created randomly if not defined $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass,$encstrength,$pubkeys); } From 96ef9802df6667dee4013749310eee5c57dd00c2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 15:44:57 +0200 Subject: [PATCH 039/336] css --- htdocs/theme/eldy/style.css.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b69d9b88048..f4a7183ad9e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -44,8 +44,8 @@ $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; $colorbacklineimpair1='255,255,255'; // line impair $colorbacklineimpair2='255,255,255'; // line impair -$colorbacklinepair1='248,248,248'; // line pair -$colorbacklinepair2='248,248,248'; // line pair +$colorbacklinepair1='244,244,244'; // line pair +$colorbacklinepair2='244,244,244'; // line pair $colorbacklinepairhover='238,246,252'; // line pair $colorbacklinebreak='214,218,220'; // line break $colorbackbody='255,255,255'; From 2f0780a51f5cf056f8ae147b9de63ad29fd8ebdb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 15:53:58 +0200 Subject: [PATCH 040/336] csss --- htdocs/theme/eldy/style.css.php | 4 ++-- htdocs/theme/md/style.css.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index f4a7183ad9e..50ba287c7a2 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -44,8 +44,8 @@ $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; $colorbacklineimpair1='255,255,255'; // line impair $colorbacklineimpair2='255,255,255'; // line impair -$colorbacklinepair1='244,244,244'; // line pair -$colorbacklinepair2='244,244,244'; // line pair +$colorbacklinepair1='246,246,246'; // line pair +$colorbacklinepair2='246,246,246'; // line pair $colorbacklinepairhover='238,246,252'; // line pair $colorbacklinebreak='214,218,220'; // line break $colorbackbody='255,255,255'; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 929f95c1d0f..e97e4a3bee1 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -45,8 +45,8 @@ $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; $colorbacklineimpair1='255,255,255'; // line impair $colorbacklineimpair2='255,255,255'; // line impair -$colorbacklinepair1='250,250,250'; // line pair -$colorbacklinepair2='248,248,248'; // line pair +$colorbacklinepair1='248,248,248'; // line pair +$colorbacklinepair2='246,246,246'; // line pair $colorbacklinepairhover='244,244,244'; // line pair $colorbacklinebreak='214,218,220'; $colorbackbody='248,248,248'; From ad403c704501411e729b5ec7f7f136bd33e61236 Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Sat, 14 Apr 2018 17:04:38 +0200 Subject: [PATCH 041/336] fix syntax and uniformize code --- htdocs/comm/propal/class/propal.class.php | 4 +- .../class/fournisseur.commande.class.php | 206 ++++++++++-------- .../fourn/class/fournisseur.facture.class.php | 2 + 3 files changed, 121 insertions(+), 91 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 68abd9f9a3f..12ce42a8d03 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1653,7 +1653,7 @@ class Propal extends CommonObject $this->db->free($result); - return 1; + return $num; } else { @@ -3814,6 +3814,8 @@ class PropaleLigne extends CommonObjectLine $this->multicurrency_total_tva = $objp->multicurrency_total_tva; $this->multicurrency_total_ttc = $objp->multicurrency_total_ttc; + $this->fetch_optionals(); + $this->db->free($result); return 1; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index c086932d96f..df4a189b885 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -318,98 +318,15 @@ class CommandeFournisseur extends CommonOrder if ($this->statut == 0) $this->brouillon = 1; - //$result=$this->fetch_lines(); - $this->lines=array(); - - $sql = "SELECT l.rowid, l.ref as ref_supplier, l.fk_product, l.product_type, l.label, l.description, l.qty,"; - $sql.= " l.vat_src_code, l.tva_tx, l.remise_percent, l.subprice,"; - $sql.= " l.localtax1_tx, l. localtax2_tx, l.localtax1_type, l. localtax2_type, l.total_localtax1, l.total_localtax2,"; - $sql.= " l.total_ht, l.total_tva, l.total_ttc, l.special_code, l.fk_parent_line, l.rang,"; - $sql.= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.description as product_desc,"; - $sql.= " l.fk_unit,"; - $sql.= " l.date_start, l.date_end,"; - $sql.= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc'; - $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l"; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; - $sql.= " WHERE l.fk_commande = ".$this->id; - $sql.= " ORDER BY l.rang, l.rowid"; - //print $sql; - - dol_syslog(get_class($this)."::fetch get lines", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) + /* + * Lines + */ + $result=$this->fetch_lines(); + if ($result < 0) { - $num = $this->db->num_rows($result); - $i = 0; - - while ($i < $num) - { - $objp = $this->db->fetch_object($result); - - $line = new CommandeFournisseurLigne($this->db); - - $line->id = $objp->rowid; - $line->desc = $objp->description; - $line->description = $objp->description; - $line->qty = $objp->qty; - $line->tva_tx = $objp->tva_tx; - $line->localtax1_tx = $objp->localtax1_tx; - $line->localtax2_tx = $objp->localtax2_tx; - $line->localtax1_type = $objp->localtax1_type; - $line->localtax2_type = $objp->localtax2_type; - $line->subprice = $objp->subprice; - $line->pu_ht = $objp->subprice; - $line->remise_percent = $objp->remise_percent; - - $line->vat_src_code = $objp->vat_src_code; - $line->total_ht = $objp->total_ht; - $line->total_tva = $objp->total_tva; - $line->total_localtax1 = $objp->total_localtax1; - $line->total_localtax2 = $objp->total_localtax2; - $line->total_ttc = $objp->total_ttc; - $line->product_type = $objp->product_type; - - $line->fk_product = $objp->fk_product; - - $line->libelle = $objp->product_label; - $line->product_label = $objp->product_label; - $line->product_desc = $objp->product_desc; - - $line->ref = $objp->product_ref; // Ref of product - $line->product_ref = $objp->product_ref; // Ref of product - $line->ref_fourn = $objp->ref_supplier; // The supplier ref of price when product was added. May have change since - $line->ref_supplier = $objp->ref_supplier; // The supplier ref of price when product was added. May have change since - - $line->date_start = $this->db->jdate($objp->date_start); - $line->date_end = $this->db->jdate($objp->date_end); - $line->fk_unit = $objp->fk_unit; - - // Multicurrency - $line->fk_multicurrency = $objp->fk_multicurrency; - $line->multicurrency_code = $objp->multicurrency_code; - $line->multicurrency_subprice = $objp->multicurrency_subprice; - $line->multicurrency_total_ht = $objp->multicurrency_total_ht; - $line->multicurrency_total_tva = $objp->multicurrency_total_tva; - $line->multicurrency_total_ttc = $objp->multicurrency_total_ttc; - - $line->special_code = $objp->special_code; - $line->fk_parent_line = $objp->fk_parent_line; - - $line->rang = $objp->rang; - - $this->lines[$i] = $line; - - $i++; - } - $this->db->free($result); - - return 1; - } - else - { - $this->error=$this->db->error()." sql=".$sql; - return -1; + return -3; } + } else { @@ -418,6 +335,113 @@ class CommandeFournisseur extends CommonOrder } } + /** + * Load array lines + * + * @param int $only_product Return only physical products + * @return int <0 if KO, >0 if OK + */ + function fetch_lines($only_product=0) + { + //$result=$this->fetch_lines(); + $this->lines=array(); + + $sql = "SELECT l.rowid, l.ref as ref_supplier, l.fk_product, l.product_type, l.label, l.description, l.qty,"; + $sql.= " l.vat_src_code, l.tva_tx, l.remise_percent, l.subprice,"; + $sql.= " l.localtax1_tx, l. localtax2_tx, l.localtax1_type, l. localtax2_type, l.total_localtax1, l.total_localtax2,"; + $sql.= " l.total_ht, l.total_tva, l.total_ttc, l.special_code, l.fk_parent_line, l.rang,"; + $sql.= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.description as product_desc,"; + $sql.= " l.fk_unit,"; + $sql.= " l.date_start, l.date_end,"; + $sql.= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc'; + $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l"; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; + $sql.= " WHERE l.fk_commande = ".$this->id; + if ($only_product) $sql .= ' AND p.fk_product_type = 0'; + $sql.= " ORDER BY l.rang, l.rowid"; + //print $sql; + + dol_syslog(get_class($this)."::fetch get lines", LOG_DEBUG); + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows($result); + $i = 0; + + while ($i < $num) + { + $objp = $this->db->fetch_object($result); + + $line = new CommandeFournisseurLigne($this->db); + + $line->id = $objp->rowid; + $line->desc = $objp->description; + $line->description = $objp->description; + $line->qty = $objp->qty; + $line->tva_tx = $objp->tva_tx; + $line->localtax1_tx = $objp->localtax1_tx; + $line->localtax2_tx = $objp->localtax2_tx; + $line->localtax1_type = $objp->localtax1_type; + $line->localtax2_type = $objp->localtax2_type; + $line->subprice = $objp->subprice; + $line->pu_ht = $objp->subprice; + $line->remise_percent = $objp->remise_percent; + + $line->vat_src_code = $objp->vat_src_code; + $line->total_ht = $objp->total_ht; + $line->total_tva = $objp->total_tva; + $line->total_localtax1 = $objp->total_localtax1; + $line->total_localtax2 = $objp->total_localtax2; + $line->total_ttc = $objp->total_ttc; + $line->product_type = $objp->product_type; + + $line->fk_product = $objp->fk_product; + + $line->libelle = $objp->product_label; + $line->product_label = $objp->product_label; + $line->product_desc = $objp->product_desc; + + $line->ref = $objp->product_ref; // Ref of product + $line->product_ref = $objp->product_ref; // Ref of product + $line->ref_fourn = $objp->ref_supplier; // The supplier ref of price when product was added. May have change since + $line->ref_supplier = $objp->ref_supplier; // The supplier ref of price when product was added. May have change since + + $line->date_start = $this->db->jdate($objp->date_start); + $line->date_end = $this->db->jdate($objp->date_end); + $line->fk_unit = $objp->fk_unit; + + // Multicurrency + $line->fk_multicurrency = $objp->fk_multicurrency; + $line->multicurrency_code = $objp->multicurrency_code; + $line->multicurrency_subprice = $objp->multicurrency_subprice; + $line->multicurrency_total_ht = $objp->multicurrency_total_ht; + $line->multicurrency_total_tva = $objp->multicurrency_total_tva; + $line->multicurrency_total_ttc = $objp->multicurrency_total_ttc; + + $line->special_code = $objp->special_code; + $line->fk_parent_line = $objp->fk_parent_line; + + $line->rang = $objp->rang; + + // Retreive all extrafield + // fetch optionals attributes and labels + $line->fetch_optionals(); + + $this->lines[$i] = $line; + + $i++; + } + $this->db->free($result); + + return $num; + } + else + { + $this->error=$this->db->error()." sql=".$sql; + return -1; + } + } + /** * Validate an order * @@ -3161,6 +3185,8 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->multicurrency_total_tva = $objp->multicurrency_total_tva; $this->multicurrency_total_ttc = $objp->multicurrency_total_ttc; + $this->fetch_optionals(); + $this->db->free($result); return 1; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index aeb8c4b2d45..139792f3044 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2695,6 +2695,8 @@ class SupplierInvoiceLine extends CommonObjectLine $this->multicurrency_total_tva = $obj->multicurrency_total_tva; $this->multicurrency_total_ttc = $obj->multicurrency_total_ttc; + $this->fetch_optionals(); + return 1; } From 77b686500c4271197824ecafcbfb880da8334b28 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 21:07:20 +0200 Subject: [PATCH 042/336] css --- htdocs/admin/ihm.php | 3 + htdocs/core/lib/usergroups.lib.php | 31 ++++++--- htdocs/theme/eldy/style.css.php | 106 ++++++++++++++--------------- 3 files changed, 75 insertions(+), 65 deletions(-) diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 23cc0600705..3959f760b6b 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -543,6 +543,8 @@ else // Show print '
'; // Login page + print '
'; + print ''; print ''; @@ -573,6 +575,7 @@ else // Show print ''; print '
'.$langs->trans("LoginPage").'
'."\n"; + print '
'; print '
'; print ''.$langs->trans("Modify").''; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index b8833e42543..a29fec993c8 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -455,8 +455,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE); } - print '   ('.$langs->trans("Default").': '.$default.') '; + print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; print '
'; @@ -236,7 +233,8 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; print '
'; @@ -315,7 +313,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index cec7fbdced4..989024fa853 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -30,11 +30,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -158,7 +154,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
'; @@ -227,7 +224,9 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); + +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; @@ -302,7 +301,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index e9935fc8d78..1bba9a941e0 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -30,11 +30,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -158,7 +154,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
'; @@ -228,7 +225,8 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; print '
'; @@ -301,7 +299,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 8845d0bc8d7..aefd80a4412 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -535,8 +535,8 @@ if ($resql) } $param='&socid='.$socid; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); if ($sall) $param.='&sall='.urlencode($sall); if ($search_day) $param.='&search_day='.urlencode($search_day); if ($search_month) $param.='&search_month='.urlencode($search_month); diff --git a/htdocs/theme/common/dolistore.jpg b/htdocs/theme/common/dolistore.jpg deleted file mode 100644 index 65a2d6ffae11011a2e0b4cf5d050eb651a60b150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2483 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 delta 918 zcmV;H18Mw>2doE>B!2;OQb$4nuFf3k00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-V7E2AO zCii>+;CxK|`+xL&WXQ*mFZ-_Z1%S6B=)DB+Vc*6_0KWk|1n^@^oo4_%fIEMqRJJ1G z`0QEw;+papxzF=lDI#IlrP3m)p8&oC_{fS;sx@!yZveCkb`^kUJU>Kyhpw$WewOZqujuo!^ZD|u`P!E2H+FDx>S9+=ew)RdZDP8(K8aq0NyFa{tDnT z^{r#2q zVAC>m3x>7GKCQ;A;h9KiEC`>jBQ5pS{Pa8@hQQ{9DtA#qX4=E9 zJ}Z-rDs87~ekfxX24g=R0-HooRSz^m*5~MYycCfc&nJD(fMA>H>e3lRM5BG*Hf9a7!~ znEFj8)qQ;xc){~crmxEO#E!epq;ID7mO~RZk3zjc<5X_YHV-MgW#84|WP{&f)9rA< s5wp^^saTBNs8YT0joIPHg?-5%mldyP*bj)@*Z=?k07*qoM6N<$f=9x@B>(^b diff --git a/htdocs/theme/eldy/img/title_accountancy.png b/htdocs/theme/eldy/img/title_accountancy.png index 6e7c2a412c60a614c7ebd91e0e06df4ebfb46191..fba1c91e05b51765ed8c8c0352840b3db978f614 100644 GIT binary patch literal 952 zcmV;p14sOcP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Ko>RFCX9l00THlL_t(o!|hqIj?+L8eS@fINJD*==)rsd($XS|P*Gfgkr3^rMil80 zlJ5`v3FZ%c5(OPbqCejs_zGx;=B;jSZ<5%-$>~rmjpW$722r z0R8~}0R8~}0RI05e}8NT5y=6}06|2RS3O8{T?3Z5hX2fzyeKexw@(h z_7{L3B613#RMo=JDmd+1RqZ3~M5F@n7QpF1#|~buZAbnXKx-urz=E?dbJ_>qx2Dzr zc)r5?mb|}iCL6ZP#_D{_wM(&u=6CFuS)J$aW@^V?#rf9oH|HqS1kf87ZFqf|)JY$~ z@6xe7@Sl?DD>hEw)l4*dCCYqt!T+Xc(nA?;O590Z=iYP8CDI$0D8aCCa3L zy=d7kC%@Y$l@m~A)X0A}Q(s!j5L_^kCq-Eru*baqVFKX2r(WJ?;BNr$czy!lTtqq% zsrgZ2!Oumc7Lkq%x)b($4d4;a9{_kp=bhHESJ0*)Z59J4W2s~NS=xkMIJO7=yWxGF zn9-cF7^AS}#q(I`OJ4hC^g444?pipeRcucIG(to1qRnGlk+& zqe<2|R*#nej*P>ua_m0IwJPT|#~#A@hHoFaTCI`HmiMDfdJa38V{Zaqn31WhTyB`^ zJejTFmG8*3 zE!=(44Wn6%*!HXWkfF=wA+lSn+d7n?|HGQy;f&EmX|tm|Vz)V%nX|In58Zv1!=K2v abo>SV&pCCPmUy{D6rKpubJ1QHe?Hx<5P;Q#;wh)G02R9M69*4v9!Wf%tV-^$$nGtvH$|B$9FV0&>tR>enK0{+*9 zSy+#|uo~ZE7xq->ZQyp?mV`Z)%K0`u1MbCrak?yW)hkS&#twXfZ5S>A%)`rgHMPGo zh8Bd8cKi{id+|Ab59ot<3(sLqSQ@`TGM93;;b**t?InK$FNT5biR{NTog%v)78c+! ztV>dEz(AfAQ;@wS`Sg6L*MVrdHqo@FG{#wBu9M3UuP3Bu{TT;=$-tYFWp^IKDdV`}L+I zeJW=rW21k}fvrizJq51Bvv>td0;KE%Z503$nTXr5C7{oSsom)ZcSn{*mAfUtTBP2R zWPbviN(P=zWM9Tuty0h9mCquT@o=W*n_+D|ev9#g$(yc#F3WHNS7B*_+>dw4X}AuD z@IVfo%)l8-^c~rAV{j;r`jRJmlLspTel&N_SDJrQR}!{?kK%V*YoZ&7_M6j$j^)yL zG(8*ozQB8_h=H)xmu@$heKa=fnJx9$JB*L<0d9y~-xWE$Dr31P)RZ)iRNugO~&z0>DRTOY ze-7@*-d8eEB3zE^WAI#}9jnyu{1_dJrk~}UJYO9)THM$jdQLt=f|(>(?z!!>BQZVN+D>*QfBhH?wBe b($(jd$KC^Yb00000NkvXXu0mjfln~g> diff --git a/htdocs/theme/eldy/img/title_agenda.png b/htdocs/theme/eldy/img/title_agenda.png index eb4c8d2bea24113f1edcecffeaeec78d3f0b8b87..93c5a814bc33dff0feb644e45ffaf31c19ebde17 100644 GIT binary patch delta 491 zcmVTZNe}RhQGh+d)c7bfOLXpgE9i$ zfDK@Sc7vuHWQ25rrW-IqnBe+iq$mPv2PZU=Pl|+MVt-uDzW)xH8FRHeW^4&Q!QUEQ zQgPy5J{QmLBsG$9Nrj|6uo?^geuO!fz;}xIsXQ-f2V^IP3V%0t$r_+FvpQ(aSQ%DQ zjEN3FVP?%7!{z~4&pGDvIm5RJ{zjH1ZIj>={K)WTCNmT81iS)Yqtlz&Xctg8-C_Y( z?K}Tq&r8ZA?IhKb_L5rnxs0q88)@6lz&3(qf^JOo$Q_Vv~dN+a^O0Z3(?kv&vfvT7Qp6;bsi-hb$U6q=L=UT zTw})*sEHLizVI=6FGa6rovZ-&g)iNv?%Out&9$-NeRD>6X3uPUw-!^vH^9rKHzVn< zw#A{>n7XVNjg5k9@kebfzWW>tg}qUt0npJeaFYdT5V0B-}qf1E($Liel% zDl^-MY_bq-QwPdhb5Qvxk~@+xn;bkCzVjn?4(y^j1hO%UoxzP(r*~E^b7s9$rSff- hUSmrC!zTD}`vt0x<@-cDya@mR002ovPDHLkV1gPN>qr0q delta 663 zcmV;I0%-lj1nvcpV}CB@q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd-FgZ~$CP4{e5|AJY zMhkxhB?tk|7$?wgsnb22l^YF(7rI`AF%qTwY?CR`gYi+}PjBrQrBmozD96}Z96@eeJN4wmgK{1a6zzQrW%K3x2)K@ZXDo4?M*gEHnIWnbRidC|{8BVear|cFXOwBfuzd6F66v zw5bnb1y})INq;&EJOGCGRoX}z0B!(hfB~QatO4JE1v6VPvk$;iNsoZ*g{O_A3UC*g zN^p<5c1cndm@%`@X7*B22u%2d?`jde7kJ_n--)zkGkXXuN3IP5&m>)S=`;hpiQSjf z+5-2(Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXAJaWQiM00I6!AMY|_yYV@l!P0AL_>qZ z0g#dt;G6(Mk7RC;Kt;7Q<7l;V91|yT41UrUYme=x-M4RM*J6yJs@S2zsL9vlYw{Js zZq`i^X#+ut{6b?)xDnaqXnqffL}UmwfnL?zrUjh+{O% z7ce>71PGkxLrw8XzpdBuzO$djZ9)vb3S8@g4sAyQB5jF7HLY4@ zv<EEoX&~e z2adI@NH8o@^KPwuw;)$1fZ#5n0JeS5fkhy66(*-7;P~&$P;L z8{dh)ToC`6@{LJZ3)Xk~_rO<1{E1VUdPR0)g~=ymtOWFsqWy2+NNXHBk)4;Fq>>VO zmVm71y*a)f<$U*AlhiC(xx~{7vz&=(WD*ylh delta 787 zcmV+u1MK|%1e^vliBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@kyh%hsR9M69)=!94Wf%tV-`trrGm*fUVic?vlI;?~oN8(| zEd&=4Si6Ksa2Iaeh>I4ri=cghVYCVQgP0IO(547lga|@GB&b+1PLB7_+&gZbE1!pR zug#x3Zv5bI&Uemt-uL~U_j#Z9)28esG&O0 zsp)#X!1;em@$NZ1S?sc}gx}#`{FHTX)@*2KJFY`u4EqYBGx#HQzdKcM3Fq(v9>V!N zw`%mDwOkIs*6eyArT1~zzBvb$D?wulug2+g)-Nr$8xB&!nGo-Env~T4D>#+^&IOS- ziq5*C^T41!&~Hqe!tPFX*~$0G7@uEhHyjjo*$G!?bFjRO4RO3Dr|BI@OLJ7+Pyzk6 z7;50@+?OJ?R)fG=9X?llBx|ih0JR8oQ_mYm9Kd3^$+4Qww;rQ+mt))djayv*Er{CL RckloJ002ovPDHLkV1i4CgO~sS diff --git a/htdocs/theme/eldy/img/title_commercial.png b/htdocs/theme/eldy/img/title_commercial.png index 46394177698fb286ee15fd47544bf6d0de642807..6671810c5deaa7447b9e6fe41a32f6b57066791c 100644 GIT binary patch literal 650 zcmV;50(Jd~P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXu?qO`OC00Ih0L_t(o!_`^Aje{@{oIT|qO5iHMCD6f90wquaC8UIuKnbCO^L60s zfK;&e*+?A1hQNXWX&(`Gc0Afyk1;Vb&iZ`d#Lub0U$*#DA}Rso08#)Q01Ln}bEBGw znbiV-0pI|zCmeu6EuSLrG5~rQ_rrh}#`(>-t<6gst&)f=fNVj@(yF{`!4r`I@I5iC z1@Mq~Jsp5_jfge6O%izbBU*3(3JKGjml4q?GrK6=rq>QfMG2txynjWtH1|cJ)jA?d zrLVtOZ2-8LT1aB=u$7cV*DH~^A~sPsDFMq1qh6XA@B*? zoF3&cl7>V%var>n)dXMr4jmIBPNE7{#8-JB^09*s$L-wJJZOm+-EOHqW z>ib2MvXNt8Hp8^F+U#qTO(^lR=Uqaj^R;Bt+8Vrl!}=Dxf+wOpAk-oFDbJtp&HNNw zuGbhIhhlyPTSK;g17oiu{_Vkwz_Pi_&n%sEFXks%8u^%H*Z${TmkX`(L48;7iN`9$ zzg!S-&D?XUjJKLLLBrSN^7YrdfC=E8j7ekqc_ZH4dH@c8H?lh?Q7;!fZPW0dCgj%@yM{6#xJL07*qoM6N<$f{ThDTmS$7 delta 819 zcmV-31I+x21-u3`iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@k+(|@1R9M5cm(6PvK^Vq=+h|Q|)!Glg1wSyN0Tn9>UWNVv zdQwEegMWiZPePA+(W3`Xf+rO{RK$Z&Jt+!`h}xu)Sc}ypZL-=xX44YxSKjL=S=_~fDIAxFbK>7Pj&hfP!iDh?KWN)6Tm3o>!haf zPrx<61I`0ifQ_0ztYB><0U!^&Q4ppDW)_$MZUUEpK*mBE7J*a1ToM3W;D#bR4HSSX z@C4YaPcf=(O^Sa4fRn&=8BYNjU_^XJHBX*M48R<43m8}M2J%9yRt6T51TZhfI}}sx z^1#P-lTsaOK>;{t1e_ny17JnEkxLrD0! zj+cRF8gKRkKn6IV09+5;2Oemznm)bhxSMrK!4Pm2*rtEA_kc&hXMxGcD_P*NC`r@< z`+*Y*vZ@RMOaezV7SeK|A0D^}j2WEoQG(hhp{nZCzNmPm=R`cP3pfs}%D5+ki_!?! z3dTX;bdnTI%b;0+c+!SnI=T7I0S+rRdRD?A@x5w|2f#Pc@>BDgMy;_!o}2I015@JC zF2PFrtpR^UivkzeA^<&8kd^d$M)!g5dLIgqJ*TF0o$iH#?FuM2Vr^c}RmH(UD^WSd z`dYUDc50(~#Ji#)xqoED7M~H7Xr*oej2mvY3)TWP*c&{q=PiUSmO(-f) xl-Hubp|j?Q{}ixEnQ&AmUNP>Cfkj!%_8-2={+KcxPS*ec002ovPDHLkV1gMHW&{8L diff --git a/htdocs/theme/eldy/img/title_companies.png b/htdocs/theme/eldy/img/title_companies.png index b2539dba849a6f4a1ff231d2004df2b39607f582..ca172c460ace873c61891c80fec10981c428c47f 100644 GIT binary patch literal 426 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 Dud;Cb diff --git a/htdocs/theme/eldy/img/title_home.png b/htdocs/theme/eldy/img/title_home.png index e9273e727f59a5eefc3516fac772d8326f64804a..505d18ab403a14820316e0e9e51ba20c6cec9784 100644 GIT binary patch literal 474 zcmV<00VV#4P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KoLpAR>bR00CM_L_t(o!|j>dZG$irhQCwwy^N3z!Ukc4jKBu%2+anJkWt76bOX8p z8=Srvi69aV#9XZUNWX+EUp~;e*jQARQ0SeAeKJOMS`t7Qk8OG+o z7jSeAobo9QcXKZV@A^K2e)$Ew!viT$8lk(&HiHKe z;5q}kRRg4}!@EFiUI1@Z0m<6%K2=(I_E@A&B2t80VLwIW>@Ckbm#J288*>0#pc7YB zbpzGU0vJPeY&HTP4d6%6hna= zJNRRCn+PA_Bm5%pRj}}?+8FlZzOD3`=g;n!NU{)Y4P4r1>phjkOXQ904^L8r#{ED; Q#Q*>R07*qoM6N<$f*aez@c;k- delta 705 zcmV;y0zUoP1JMODiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKpubJ1QHe~B`)5Wp#T5^UP(kjR9M5km%oeDKorM6liOWSSMd;k zfryriR(3Xma^QjfGm45Rs0h|#D~Oe~joNsfh>ciSXd{R=R;Qe+hnHlNvH1puC7H}@ zq63dGo40S?e81oKCIkJCr5I=9dAA2R3ly3sz;loP1ULsA2i|`HPk~vNot#vFEm_v! zcLaD0dfl>&# z;@bgiFF@xAxDJ1O0KSCQ>=|Gc$OV5_I{+L8)}7L>rC>L3O+1f#Zc-!QnJdhB1lCm3 z6E&WqXUl+NO5|;YfB_DvrdJo_ICf;fZQ#{FFh2l}s&@a!*a@5l-V9U;2Zh8)qD%k5 zq6x69b>0InfmxjhF94T%PQn16fLm(a-acTQex9@hE}ehf`FxBz=P;xZRcg(FP0x{P zfE88JceU<1*jMz->wKCLsNla3d~Rr1L*Smod!vT364(damFV)&!>Cj+BP0s9bIl!A zsnf2rhH}fafnWq?POvhdp3{I6HPO??AV34J?g%N_%+WwF1(_%aNg(t1S@|ppSsPOY z7TB+O(vW|A5r}|UqzZE2yhjH{|KASKfQg}?P|&tdYFA)B3R1_{#x|m^cMI!OR1^YP z#HAt$&;T(Ss9@`Kt7$+WD1jexj-kM|AYfxC*wi&^9MA`yg0IMq7e>Ppslf-XlO nFl|WI=pz^1toop}-|-h!tN54ya*A&N0000Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zuQ z;~{U815aywFY^x0zJk0%Tz(8W2RM2Tu)SjId%%(R;m_ietw&<^$T6O&KFR8I>7Kjh z(xVd}}!@Z;ra>sqxe8_%!lYXGq?-l!hhBmKW ze6@b|(kU;lI(Np&I=uZLyzk>uC3%^`&fM2db(=0NQ_h^vy5Ka6rSG3RA delta 668 zcmV;N0%QI50;UBsiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@kMoC0LR9M5smpyM3F%X8I&G|qf;;W=Ui6Yt{@ljBL6bdB% z1EQedPaukj|A1&{(xj%RprQ>GqDYH`_((#e+G{PD`g~0w|n;Zo%bEj zcq{U31*j;q4)Dt+@Z?NLZ*M`nx4EWdmr1eitN_O91c- z=AVgy8L$Ct3z!{R0iyMG2nmIk;?^O#spwh66OLRcWw@VFTf|@R?v)6HU;*9Z)0@Bz8w#-tae-t z+(7sHp+39;ZcD#+ijgiux(~pvJU<0q1f{vlkZH#No4~P@+gi2YOERg8NV2XryDxW! zV>yET25SkKC%~qW#F_znz-Re$4R{XRiPZa*;C&4o0&jl=1QOUwDc?SlA59Oy3ZmXt zCGt7}zy__^0T+X7S$~9mgn`BgWj5Hzs*%HhTL9KBsh|^}HL7ghl!j9Qmn8@0O4Ag8 z{(iUx{FUD~6pOJuIt9?mX}B9SlYfc2po>x?@1Cfn^GX6z3^WOyQuV_I49pXNqd^#j z)R!(+)HYy+?Yj5jbrO~`uqX+;LIAA>&=mp*bHEMoaSEUwK%ZT}fFHtu6%Zwhy8yrm zaD9jm0~|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?e`cFYZEQcYl=lAsy0H=syu!C z&4k(uXEt1kNIa-magaOi!~4#Zb*&y@44YQk7@ywHXV>uls#%lxo(HV@KW_3JQ~mF$ zs=u0RCgTkj?|}L(pHz}4+zSe9HoyCBa`Mtb$@{s+)e;O@3}&Wmv+gWr z4B#t~^R+#;QaJ1b$m)9Oe>1mRmZ@nft@HbSgXf*?tZ&cv^j5`zCDkAEl`{8Tc*?or RCNLZrJYD@<);T3K0RSj%n5_T+ delta 587 zcmV-R0<``70^9^MiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKpubJ1QHb>A0kb4LI3~(=}AOER9M69m%nNoK@f*O>F#7H|6~%3 z!32Vu1RN5a$H*J_1zg4t;kQU*`~n6)gk1zuq)DofCWV{CRcxK^bhmDPg3WTXz9X^J zXuu$|quFnMvonKWZEIVx^*Z{W0Iz_m;p`#s0XXjxFzpEN4tReHI3t;-T@~mGa05(% zdBfRbLz({yFavS}V6Y5;A_9;B^?d{6krJfKP@q&9R;GaS{;acm1vpl#Ib~a`{Sqng z{a*)BuR|6YFc!pBhx^=JlkgCDqO-mcs0MbVMh$$G3Rc-_#X4$Jf|m;X1GrG8q0M#S zSf4*@4un<#uQh)?v$nfnPr)vMpAk9V0J{P>jrctSCIbG{1h5SZgI05rECYT4f4qgW zrSsD3`=Mf81HUDC20Rb^2Ejd-DexY6Vf64o*?rOf6JTGnAhZPd2ApYPZUP4yT%q*^ z`Y{DYz#{`-BX}pNd^4k^M_yU`T2P4rkORHcoA0&p+N*!y@#TgBi&*~apUU3?zz3*| zS6l@^(>nlM0AQ7%09>kI)0PTU@-2)vP&UA}R-g?)E#IQ00(k^rw)j#hC)c6`m3&KM zQ#L7381v_^63h$*(hdNLH$!{{ikJdD4VNUcJZ`)TGvGmFVa=7b^V-lw_R017hsoM* Z0pZ81u!#>L;5z^S002ovPDHLkV1khX`{)1w diff --git a/htdocs/theme/eldy/img/title_setup.png b/htdocs/theme/eldy/img/title_setup.png index d7548d28709860acebe173ed2ca4954678f950f6..fa4ff3aded1b49e54483faa198e9291117327a40 100644 GIT binary patch literal 724 zcmV;_0xSKAP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KWQw!>Jzt00LA=L_t(o!|hq&ah)&>{+!GIutC@$-k@&;M(_q@1V(rply1NX?gn%N zx&fU){SoDkI2KsO?j?8lPWKLDi%&-SB=igs;j4}ZeBp6{zrbJMFYuobyfLOV#yDe) z{S4quYLYU>+yQ*wO#KFMBck z#&BPb7)^O#jBx;d1k>-{0H1WXxo=sX_x4pi`OV43PP9wdcZ=*@0o-%n!rsGL1^7W> z{3y7REdm~ZW2H`*SD$>KXDMNTqa?Rl=30x-k%CPCL+0=&c&F&UM>8)hj<-@x(F z=7Jv-;1~AeE)o2!&^<9DslYeNhfpj=5`*e5VQ{!GJg5 zl5y^UiRNVHI$PNVAXknDHSnUf%?V=~0r*(@S&v1&XkN?Ufq}OGo`NMmiO3cIlq&2t zG4Y#qOHTFpKLa)vyv>FR*HQ+Y_3b0BAB0R@#DIrPA8)wwd`?(y0lWlrPXPScE<|qM z#zz22>!fksfDCsTHFZ9-&ze~N+G;+p06r-LJ1Z76z;B7b=U6vDFu-&D<2LuE8sLXq z;5!C1v5)(zY$J@nM@=Md_1*dMSFm=e$u|BB@Ce9n0n_yS`=<)qlxP@53O64lyP;Z! zW#9BHQ%oCm-KoUhWKzy8)KJpKU{$dvALyAYND0000y{D6rKpubJ1QHPr6DReUnE(I--bqA3R9M61m|cifRTRg6|6!&a`_MA{ zh$fSyf+Fr?2#HWu^hLc{28}rNkYr&mNi{D*1zGeE6;wF%Ry_zY6gD`Nm6Z=Ql7ul? zP9KWQM}w2my_5ZWSy#@S&N=s<>r5DJSlrFpYpwI&Yp=b||6G6B=1d%IoT1~t2~5&u zlDZ{T{&i%wGX;1Na6*QFg?aV~zY4G>q|(SfH%`F=?n(j61P3ex9tA$kus1LX^fj}o zq^RgtO6mr7q}2O?HMS?irV^W|k4nh$BEOc8GLex1;E$Bt*@WNf4BunG_GYrzmdMVf zIoPLxT1u{NV#9xXY_E-DtowBW4*~}yUE45Yz&c%V-z$0fzsiVnHt<58Lwo#ohB3faNn2xH&G6|jgGkc(z>=I; zmrHsC_#F7f_RpvMY$ItCu&K#s9Rc{D(YKPIw%9(D&}GGYt`58m?Rg5A$VvY}U`W!9k@58Uvnf!-2_$WH z*xohcR+hN>D}Zgl{Dk^&fL@%j2Jn*Y!JK&YKK7RFFJ`QjrPh*`1HA#@ci{1u_hx{4 z)%HiN&@r7Z=a)1ecs`nRa(rU@^;YAyw+N;y`cr==uqbLZ+1Wp{-FG@0Zf^n9CBVa} z3?*;iceeY&?g8Mn*j#ARaz(c^ig4fk6G2a4Q5IpQ<+ehZ)D@oEk;J)yw<;eb^ z(>=gBp=$$rBrThDU;(N-!9w!nB(M~?Fr^o8zoezJow0l4qodkDz6buwSp&F7(vn#z zeo23~1gKgA({F7582oE0h~PiM0qZ3Z40f;W(bB~)=?37cCN}s(lGRGO2)G+KtASq) z*lByLX<$*Tw>1H30_eA0OZhJf|0KAhz;Mj3i?tEk17(hKaSk0$j$eTf(x8H=j7#bd zPSz3Xfx4}vlfbIDETwAf&j!GzfnBzz3z&cCgru+Ib8j@YfvKYSMYr-;LBBcy3>JY( z0jL2BBrQnjSA>4DRK{$NNjeO4Wn^lv?c+_hnxoPEJAl=a#)E})M&BE0>6H{O?5+f; zZ%cqme!{Iv)Y>T)YkO!;Xio`n9Z~3Y&NgOye9rjT|L(8OzX9cS=SQ<;sVV>f000O{ KMNUMnLSTZ`O$*cj diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 11ecfca262e..e1bb49ae46e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1571,7 +1571,6 @@ div.tmenuleft margin-top: 0px; dol_optimize_smallscreen)) { ?> width: 5px; - /* background: url() 0 -6px no-repeat; */ height: 26px; @@ -1633,76 +1632,76 @@ div.mainmenu.menu { div.mainmenu.home{ - background-image: url(); + background-image: url(); background-position-x: center; } div.mainmenu.billing { - background-image: url(); + background-image: url(); } div.mainmenu.accountancy { - background-image: url(); + background-image: url(); } div.mainmenu.agenda { - background-image: url(); + background-image: url(); } div.mainmenu.bank { - background-image: url(); + background-image: url(); } div.mainmenu.cashdesk { - background-image: url(); + background-image: url(); } div.mainmenu.companies { - background-image: url(); + background-image: url(); } div.mainmenu.commercial { - background-image: url(); + background-image: url(); } div.mainmenu.ecm { - background-image: url(); + background-image: url(); } div.mainmenu.externalsite { - background-image: url(); + background-image: url(); } div.mainmenu.ftp { - background-image: url(); + background-image: url(); } div.mainmenu.hrm { - background-image: url(); + background-image: url(); } div.mainmenu.members { - background-image: url(); + background-image: url(); } div.mainmenu.products { - background-image: url(); + background-image: url(); } div.mainmenu.project { - background-image: url(); + background-image: url(); } div.mainmenu.ticketsup { - background-image: url(); + background-image: url(); } div.mainmenu.tools { - background-image: url(); + background-image: url(); } div.mainmenu.website { - background-image: url(); + background-image: url(); } file->dol_document_root as $dirroot) { - if (file_exists($dirroot."/".$val."/img/".$val.".png")) + if (file_exists($dirroot."/".$val."/img/".$val."_over.png")) { - $url=dol_buildpath('/'.$val.'/img/'.$val.'.png', 1); + $url=dol_buildpath('/'.$val.'/img/'.$val.'_over.png', 1); $found=1; break; } @@ -1749,7 +1748,7 @@ foreach($mainmenuusedarray as $val) // Img file not found if (! $found) { - $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic.".png",1); + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic."_over.png",1); $found=1; if ($generic < 4) $generic++; print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; @@ -2678,7 +2677,7 @@ div.refidpadding { div.refid { font-weight: bold; color: #625; - font-size: 160%; + font-size: 1.2em; } div.refidno { padding-top: 3px; @@ -3525,7 +3524,6 @@ div#card-errors { .ui-dialog-titlebar { } .ui-dialog-content { - font-size: !important; } @@ -4034,7 +4032,6 @@ A.none, A.none:active, A.none:visited, A.none:hover { } .ui-widget { font-family:; - font-size:; } /* .ui-button { margin-left: -2px; browser->name)?'padding-top: 1px;':''); ?> } */ .ui-button { margin-left: -2px; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index e97e4a3bee1..86646fe2c78 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1580,17 +1580,6 @@ li.tmenu, li.tmenusel { margin: 0px 0px 0px 0px; font-weight: normal; } -li.tmenusel, li.tmenu:hover { -/* - background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background: rgb(); -*/ - /* background: url() 50% 0 repeat-x !important; Nicer but problem when menu wrap on 2 lines */ -} li.tmenusel, li.tmenu:hover { opacity: .50; /* show only a slight shadow */ } @@ -1606,7 +1595,6 @@ div.tmenuleft height: px; - /* background: url() 0 -6px no-repeat; */ } div.tmenucenter From 187cc35786ea34003d170f242fa67fbaa2fbae24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 22:22:29 +0200 Subject: [PATCH 044/336] Look and feel v8 --- htdocs/accountancy/customer/index.php | 17 +++---- htdocs/accountancy/expensereport/index.php | 16 +++--- htdocs/accountancy/supplier/index.php | 15 +++--- htdocs/compta/facture/list.php | 4 +- htdocs/theme/common/dolistore.jpg | Bin 2483 -> 0 bytes htdocs/theme/eldy/img/menus/chart.png | Bin 1321 -> 0 bytes htdocs/theme/eldy/img/menus/holiday_over.png | Bin 0 -> 1086 bytes htdocs/theme/eldy/img/menus/money_over.png | Bin 940 -> 908 bytes .../eldy/img/menus_black/ticketsup_over.png | Bin 0 -> 1044 bytes htdocs/theme/eldy/img/title_accountancy.png | Bin 1019 -> 952 bytes htdocs/theme/eldy/img/title_agenda.png | Bin 750 -> 580 bytes htdocs/theme/eldy/img/title_bank.png | Bin 796 -> 638 bytes htdocs/theme/eldy/img/title_commercial.png | Bin 828 -> 650 bytes htdocs/theme/eldy/img/title_companies.png | Bin 562 -> 426 bytes htdocs/theme/eldy/img/title_generic.png | Bin 789 -> 672 bytes htdocs/theme/eldy/img/title_home.png | Bin 721 -> 474 bytes htdocs/theme/eldy/img/title_products.png | Bin 678 -> 374 bytes htdocs/theme/eldy/img/title_project.png | Bin 604 -> 380 bytes htdocs/theme/eldy/img/title_setup.png | Bin 1105 -> 724 bytes htdocs/theme/eldy/style.css.php | 47 ++++++++---------- htdocs/theme/md/style.css.php | 12 ----- 21 files changed, 47 insertions(+), 64 deletions(-) delete mode 100644 htdocs/theme/common/dolistore.jpg delete mode 100644 htdocs/theme/eldy/img/menus/chart.png create mode 100644 htdocs/theme/eldy/img/menus/holiday_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/ticketsup_over.png diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index aedaeda0e5b..8b88d8f396b 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -32,11 +32,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -129,6 +125,7 @@ llxHeader('', $langs->trans("CustomersVentilation")); $textprevyear = '' . img_previous() . ''; $textnextyear = ' ' . img_next() . ''; + print load_fiche_titre($langs->trans("CustomersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear, '', 'title_accountancy'); // Clean database @@ -160,8 +157,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; - -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
'; @@ -236,7 +233,8 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; print '
'; @@ -315,7 +313,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index cec7fbdced4..989024fa853 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -30,11 +30,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -158,7 +154,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
'; @@ -227,7 +224,9 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); + +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; @@ -302,7 +301,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index e9935fc8d78..1bba9a941e0 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -30,11 +30,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php'; // Langs -$langs->load("compta"); -$langs->load("bills"); -$langs->load("other"); -$langs->load("main"); -$langs->load("accountancy"); +$langs->loadLangs(array("compta","bills","other","main","accountancy")); // Security check if (empty($conf->accounting->enabled)) { @@ -158,7 +154,8 @@ $y = $year_current; $buttonbind = '' . $langs->trans("ValidateHistory") . ''; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); print '
'; print '
'; @@ -228,7 +225,8 @@ print ''; print '
'; -print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); +print_barre_liste($langs->trans("OverviewOfAmountOfLinesBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); +//print_fiche_titre($langs->trans("OverviewOfAmountOfLinesBound"), '', ''); print '
'; print '
'; @@ -301,7 +299,8 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '
'; print '
'; - print_fiche_titre($langs->trans("OtherInfo"), '', ''); + print_barre_liste($langs->trans("OtherInfo"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1); + //print_fiche_titre($langs->trans("OtherInfo"), '', ''); print '
'; print '
'; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 8845d0bc8d7..aefd80a4412 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -535,8 +535,8 @@ if ($resql) } $param='&socid='.$socid; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); if ($sall) $param.='&sall='.urlencode($sall); if ($search_day) $param.='&search_day='.urlencode($search_day); if ($search_month) $param.='&search_month='.urlencode($search_month); diff --git a/htdocs/theme/common/dolistore.jpg b/htdocs/theme/common/dolistore.jpg deleted file mode 100644 index 65a2d6ffae11011a2e0b4cf5d050eb651a60b150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2483 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 Ef)z6M7XSbN literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus/money_over.png b/htdocs/theme/eldy/img/menus/money_over.png index 9a501e762d0d460c396ba28c1631f9ae38b12165..82b864a83d74d0ced592517c0de07659a2242d68 100644 GIT binary patch delta 859 zcmV-h1El<{2aE@hBo78+OGiWi{{a60|De66laW9kf8qoV6D%l@;~%F000S9GL_t(o z!|j;Aj?+L8#=kjH(cp$Uk?6rZ0K&A0B2*MtU?fC)sS!n}5t8o-2ybAX08>(7B>MBc zfvo(;Nww^m*@Wgcmm+(o;tq)$N=2Cj)ZLmB9P2f`gSF8qkfsj zfppy%-1e{Q+c86>~UJ%mwNB> zqz%R&mDnWTb(SyRHPEe8<^JsH(TOcjrjccC^sFLTxa%eoulJR>;E2-4_>iQDCQ)<} ze>f(!`lX8RI+V&0LS~TXKe(kYe8|YS%(b+Wl!Y_)RL|dxV0as=UMCUze*<`>>oWis z3XKxLLi7x6p;c(zNHQ+El-2zrlGJOG zi=o8Us>O(1l6=;CW7etLeWePC>>xD;vC~+!iG@uIpaQTovrN?{0}y`y+nA|UX4a5g z0az-0pm9OpToo!Le4_RMz@HLS-ePX`S>_e=sx0K9U??ai45q30U z?=n7jo>_Z}_BikHtCdCc6%i_XVs~loLow@hR;e;q0GPQC>X4ZJODEL*6u=!ly9BT> zv$~^i-RaY8NW!3R=KAJ?&qd|6LB7X+CCPliwz*H)&9{As*no+I)8V;Vplj>BJV0NJ l*tPWC+|%btCYfYE`3q->JX94v_n!a&002ovPDHLkV1i6Ex%B`5 delta 918 zcmV;H18Mw>2doE>B!2;OQb$4nuFf3k00006VoOIv00000008+zyMF)x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru-V7E2AO zCii>+;CxK|`+xL&WXQ*mFZ-_Z1%S6B=)DB+Vc*6_0KWk|1n^@^oo4_%fIEMqRJJ1G z`0QEw;+papxzF=lDI#IlrP3m)p8&oC_{fS;sx@!yZveCkb`^kUJU>Kyhpw$WewOZqujuo!^ZD|u`P!E2H+FDx>S9+=ew)RdZDP8(K8aq0NyFa{tDnT z^{r#2q zVAC>m3x>7GKCQ;A;h9KiEC`>jBQ5pS{Pa8@hQQ{9DtA#qX4=E9 zJ}Z-rDs87~ekfxX24g=R0-HooRSz^m*5~MYycCfc&nJD(fMA>H>e3lRM5BG*Hf9a7!~ znEFj8)qQ;xc){~crmxEO#E!epq;ID7mO~RZk3zjc<5X_YHV-MgW#84|WP{&f)9rA< s5wp^^saTBNs8YT0joIPHg?-5%mldyP*bj)@*Z=?k07*qoM6N<$f=9x@B>(^b diff --git a/htdocs/theme/eldy/img/menus_black/ticketsup_over.png b/htdocs/theme/eldy/img/menus_black/ticketsup_over.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec332075e66b1160122713117fa0d8087f659c5 GIT binary patch literal 1044 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 b($(jd$KC^Yb00000NkvXXu0mjfln~g> diff --git a/htdocs/theme/eldy/img/title_agenda.png b/htdocs/theme/eldy/img/title_agenda.png index eb4c8d2bea24113f1edcecffeaeec78d3f0b8b87..93c5a814bc33dff0feb644e45ffaf31c19ebde17 100644 GIT binary patch delta 491 zcmVTZNe}RhQGh+d)c7bfOLXpgE9i$ zfDK@Sc7vuHWQ25rrW-IqnBe+iq$mPv2PZU=Pl|+MVt-uDzW)xH8FRHeW^4&Q!QUEQ zQgPy5J{QmLBsG$9Nrj|6uo?^geuO!fz;}xIsXQ-f2V^IP3V%0t$r_+FvpQ(aSQ%DQ zjEN3FVP?%7!{z~4&pGDvIm5RJ{zjH1ZIj>={K)WTCNmT81iS)Yqtlz&Xctg8-C_Y( z?K}Tq&r8ZA?IhKb_L5rnxs0q88)@6lz&3(qf^JOo$Q_Vv~dN+a^O0Z3(?kv&vfvT7Qp6;bsi-hb$U6q=L=UT zTw})*sEHLizVI=6FGa6rovZ-&g)iNv?%Out&9$-NeRD>6X3uPUw-!^vH^9rKHzVn< zw#A{>n7XVNjg5k9@kebfzWW>tg}qUt0npJeaFYdT5V0B-}qf1E($Liel% zDl^-MY_bq-QwPdhb5Qvxk~@+xn;bkCzVjn?4(y^j1hO%UoxzP(r*~E^b7s9$rSff- hUSmrC!zTD}`vt0x<@-cDya@mR002ovPDHLkV1gPN>qr0q delta 663 zcmV;I0%-lj1nvcpV}CB@q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd-FgZ~$CP4{e5|AJY zMhkxhB?tk|7$?wgsnb22l^YF(7rI`AF%qTwY?CR`gYi+}PjBrQrBmozD96}Z96@eeJN4wmgK{1a6zzQrW%K3x2)K@ZXDo4?M*gEHnIWnbRidC|{8BVear|cFXOwBfuzd6F66v zw5bnb1y})INq;&EJOGCGRoX}z0B!(hfB~QatO4JE1v6VPvk$;iNsoZ*g{O_A3UC*g zN^p<5c1cndm@%`@X7*B22u%2d?`jde7kJ_n--)zkGkXXuN3IP5&m>)S=`;hpiQSjf z+5-2(Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXAJaWQiM00I6!AMY|_yYV@l!P0AL_>qZ z0g#dt;G6(Mk7RC;Kt;7Q<7l;V91|yT41UrUYme=x-M4RM*J6yJs@S2zsL9vlYw{Js zZq`i^X#+ut{6b?)xDnaqXnqffL}UmwfnL?zrUjh+{O% z7ce>71PGkxLrw8XzpdBuzO$djZ9)vb3S8@g4sAyQB5jF7HLY4@ zv<EEoX&~e z2adI@NH8o@^KPwuw;)$1fZ#5n0JeS5fkhy66(*-7;P~&$P;L z8{dh)ToC`6@{LJZ3)Xk~_rO<1{E1VUdPR0)g~=ymtOWFsqWy2+NNXHBk)4;Fq>>VO zmVm71y*a)f<$U*AlhiC(xx~{7vz&=(WD*ylh delta 787 zcmV+u1MK|%1e^vliBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@kyh%hsR9M69)=!94Wf%tV-`trrGm*fUVic?vlI;?~oN8(| zEd&=4Si6Ksa2Iaeh>I4ri=cghVYCVQgP0IO(547lga|@GB&b+1PLB7_+&gZbE1!pR zug#x3Zv5bI&Uemt-uL~U_j#Z9)28esG&O0 zsp)#X!1;em@$NZ1S?sc}gx}#`{FHTX)@*2KJFY`u4EqYBGx#HQzdKcM3Fq(v9>V!N zw`%mDwOkIs*6eyArT1~zzBvb$D?wulug2+g)-Nr$8xB&!nGo-Env~T4D>#+^&IOS- ziq5*C^T41!&~Hqe!tPFX*~$0G7@uEhHyjjo*$G!?bFjRO4RO3Dr|BI@OLJ7+Pyzk6 z7;50@+?OJ?R)fG=9X?llBx|ih0JR8oQ_mYm9Kd3^$+4Qww;rQ+mt))djayv*Er{CL RckloJ002ovPDHLkV1i4CgO~sS diff --git a/htdocs/theme/eldy/img/title_commercial.png b/htdocs/theme/eldy/img/title_commercial.png index 46394177698fb286ee15fd47544bf6d0de642807..6671810c5deaa7447b9e6fe41a32f6b57066791c 100644 GIT binary patch literal 650 zcmV;50(Jd~P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXu?qO`OC00Ih0L_t(o!_`^Aje{@{oIT|qO5iHMCD6f90wquaC8UIuKnbCO^L60s zfK;&e*+?A1hQNXWX&(`Gc0Afyk1;Vb&iZ`d#Lub0U$*#DA}Rso08#)Q01Ln}bEBGw znbiV-0pI|zCmeu6EuSLrG5~rQ_rrh}#`(>-t<6gst&)f=fNVj@(yF{`!4r`I@I5iC z1@Mq~Jsp5_jfge6O%izbBU*3(3JKGjml4q?GrK6=rq>QfMG2txynjWtH1|cJ)jA?d zrLVtOZ2-8LT1aB=u$7cV*DH~^A~sPsDFMq1qh6XA@B*? zoF3&cl7>V%var>n)dXMr4jmIBPNE7{#8-JB^09*s$L-wJJZOm+-EOHqW z>ib2MvXNt8Hp8^F+U#qTO(^lR=Uqaj^R;Bt+8Vrl!}=Dxf+wOpAk-oFDbJtp&HNNw zuGbhIhhlyPTSK;g17oiu{_Vkwz_Pi_&n%sEFXks%8u^%H*Z${TmkX`(L48;7iN`9$ zzg!S-&D?XUjJKLLLBrSN^7YrdfC=E8j7ekqc_ZH4dH@c8H?lh?Q7;!fZPW0dCgj%@yM{6#xJL07*qoM6N<$f{ThDTmS$7 delta 819 zcmV-31I+x21-u3`iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@k+(|@1R9M5cm(6PvK^Vq=+h|Q|)!Glg1wSyN0Tn9>UWNVv zdQwEegMWiZPePA+(W3`Xf+rO{RK$Z&Jt+!`h}xu)Sc}ypZL-=xX44YxSKjL=S=_~fDIAxFbK>7Pj&hfP!iDh?KWN)6Tm3o>!haf zPrx<61I`0ifQ_0ztYB><0U!^&Q4ppDW)_$MZUUEpK*mBE7J*a1ToM3W;D#bR4HSSX z@C4YaPcf=(O^Sa4fRn&=8BYNjU_^XJHBX*M48R<43m8}M2J%9yRt6T51TZhfI}}sx z^1#P-lTsaOK>;{t1e_ny17JnEkxLrD0! zj+cRF8gKRkKn6IV09+5;2Oemznm)bhxSMrK!4Pm2*rtEA_kc&hXMxGcD_P*NC`r@< z`+*Y*vZ@RMOaezV7SeK|A0D^}j2WEoQG(hhp{nZCzNmPm=R`cP3pfs}%D5+ki_!?! z3dTX;bdnTI%b;0+c+!SnI=T7I0S+rRdRD?A@x5w|2f#Pc@>BDgMy;_!o}2I015@JC zF2PFrtpR^UivkzeA^<&8kd^d$M)!g5dLIgqJ*TF0o$iH#?FuM2Vr^c}RmH(UD^WSd z`dYUDc50(~#Ji#)xqoED7M~H7Xr*oej2mvY3)TWP*c&{q=PiUSmO(-f) xl-Hubp|j?Q{}ixEnQ&AmUNP>Cfkj!%_8-2={+KcxPS*ec002ovPDHLkV1gMHW&{8L diff --git a/htdocs/theme/eldy/img/title_companies.png b/htdocs/theme/eldy/img/title_companies.png index b2539dba849a6f4a1ff231d2004df2b39607f582..ca172c460ace873c61891c80fec10981c428c47f 100644 GIT binary patch literal 426 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 Dud;Cb diff --git a/htdocs/theme/eldy/img/title_home.png b/htdocs/theme/eldy/img/title_home.png index e9273e727f59a5eefc3516fac772d8326f64804a..505d18ab403a14820316e0e9e51ba20c6cec9784 100644 GIT binary patch literal 474 zcmV<00VV#4P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KoLpAR>bR00CM_L_t(o!|j>dZG$irhQCwwy^N3z!Ukc4jKBu%2+anJkWt76bOX8p z8=Srvi69aV#9XZUNWX+EUp~;e*jQARQ0SeAeKJOMS`t7Qk8OG+o z7jSeAobo9QcXKZV@A^K2e)$Ew!viT$8lk(&HiHKe z;5q}kRRg4}!@EFiUI1@Z0m<6%K2=(I_E@A&B2t80VLwIW>@Ckbm#J288*>0#pc7YB zbpzGU0vJPeY&HTP4d6%6hna= zJNRRCn+PA_Bm5%pRj}}?+8FlZzOD3`=g;n!NU{)Y4P4r1>phjkOXQ904^L8r#{ED; Q#Q*>R07*qoM6N<$f*aez@c;k- delta 705 zcmV;y0zUoP1JMODiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKpubJ1QHe~B`)5Wp#T5^UP(kjR9M5km%oeDKorM6liOWSSMd;k zfryriR(3Xma^QjfGm45Rs0h|#D~Oe~joNsfh>ciSXd{R=R;Qe+hnHlNvH1puC7H}@ zq63dGo40S?e81oKCIkJCr5I=9dAA2R3ly3sz;loP1ULsA2i|`HPk~vNot#vFEm_v! zcLaD0dfl>&# z;@bgiFF@xAxDJ1O0KSCQ>=|Gc$OV5_I{+L8)}7L>rC>L3O+1f#Zc-!QnJdhB1lCm3 z6E&WqXUl+NO5|;YfB_DvrdJo_ICf;fZQ#{FFh2l}s&@a!*a@5l-V9U;2Zh8)qD%k5 zq6x69b>0InfmxjhF94T%PQn16fLm(a-acTQex9@hE}ehf`FxBz=P;xZRcg(FP0x{P zfE88JceU<1*jMz->wKCLsNla3d~Rr1L*Smod!vT364(damFV)&!>Cj+BP0s9bIl!A zsnf2rhH}fafnWq?POvhdp3{I6HPO??AV34J?g%N_%+WwF1(_%aNg(t1S@|ppSsPOY z7TB+O(vW|A5r}|UqzZE2yhjH{|KASKfQg}?P|&tdYFA)B3R1_{#x|m^cMI!OR1^YP z#HAt$&;T(Ss9@`Kt7$+WD1jexj-kM|AYfxC*wi&^9MA`yg0IMq7e>Ppslf-XlO nFl|WI=pz^1toop}-|-h!tN54ya*A&N0000Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zuQ z;~{U815aywFY^x0zJk0%Tz(8W2RM2Tu)SjId%%(R;m_ietw&<^$T6O&KFR8I>7Kjh z(xVd}}!@Z;ra>sqxe8_%!lYXGq?-l!hhBmKW ze6@b|(kU;lI(Np&I=uZLyzk>uC3%^`&fM2db(=0NQ_h^vy5Ka6rSG3RA delta 668 zcmV;N0%QI50;UBsiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKo@@kMoC0LR9M5smpyM3F%X8I&G|qf;;W=Ui6Yt{@ljBL6bdB% z1EQedPaukj|A1&{(xj%RprQ>GqDYH`_((#e+G{PD`g~0w|n;Zo%bEj zcq{U31*j;q4)Dt+@Z?NLZ*M`nx4EWdmr1eitN_O91c- z=AVgy8L$Ct3z!{R0iyMG2nmIk;?^O#spwh66OLRcWw@VFTf|@R?v)6HU;*9Z)0@Bz8w#-tae-t z+(7sHp+39;ZcD#+ijgiux(~pvJU<0q1f{vlkZH#No4~P@+gi2YOERg8NV2XryDxW! zV>yET25SkKC%~qW#F_znz-Re$4R{XRiPZa*;C&4o0&jl=1QOUwDc?SlA59Oy3ZmXt zCGt7}zy__^0T+X7S$~9mgn`BgWj5Hzs*%HhTL9KBsh|^}HL7ghl!j9Qmn8@0O4Ag8 z{(iUx{FUD~6pOJuIt9?mX}B9SlYfc2po>x?@1Cfn^GX6z3^WOyQuV_I49pXNqd^#j z)R!(+)HYy+?Yj5jbrO~`uqX+;LIAA>&=mp*bHEMoaSEUwK%ZT}fFHtu6%Zwhy8yrm zaD9jm0~|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?e`cFYZEQcYl=lAsy0H=syu!C z&4k(uXEt1kNIa-magaOi!~4#Zb*&y@44YQk7@ywHXV>uls#%lxo(HV@KW_3JQ~mF$ zs=u0RCgTkj?|}L(pHz}4+zSe9HoyCBa`Mtb$@{s+)e;O@3}&Wmv+gWr z4B#t~^R+#;QaJ1b$m)9Oe>1mRmZ@nft@HbSgXf*?tZ&cv^j5`zCDkAEl`{8Tc*?or RCNLZrJYD@<);T3K0RSj%n5_T+ delta 587 zcmV-R0<``70^9^MiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=24YJ` zL;(K){{a7>y{D6rKpubJ1QHb>A0kb4LI3~(=}AOER9M69m%nNoK@f*O>F#7H|6~%3 z!32Vu1RN5a$H*J_1zg4t;kQU*`~n6)gk1zuq)DofCWV{CRcxK^bhmDPg3WTXz9X^J zXuu$|quFnMvonKWZEIVx^*Z{W0Iz_m;p`#s0XXjxFzpEN4tReHI3t;-T@~mGa05(% zdBfRbLz({yFavS}V6Y5;A_9;B^?d{6krJfKP@q&9R;GaS{;acm1vpl#Ib~a`{Sqng z{a*)BuR|6YFc!pBhx^=JlkgCDqO-mcs0MbVMh$$G3Rc-_#X4$Jf|m;X1GrG8q0M#S zSf4*@4un<#uQh)?v$nfnPr)vMpAk9V0J{P>jrctSCIbG{1h5SZgI05rECYT4f4qgW zrSsD3`=Mf81HUDC20Rb^2Ejd-DexY6Vf64o*?rOf6JTGnAhZPd2ApYPZUP4yT%q*^ z`Y{DYz#{`-BX}pNd^4k^M_yU`T2P4rkORHcoA0&p+N*!y@#TgBi&*~apUU3?zz3*| zS6l@^(>nlM0AQ7%09>kI)0PTU@-2)vP&UA}R-g?)E#IQ00(k^rw)j#hC)c6`m3&KM zQ#L7381v_^63h$*(hdNLH$!{{ikJdD4VNUcJZ`)TGvGmFVa=7b^V-lw_R017hsoM* Z0pZ81u!#>L;5z^S002ovPDHLkV1khX`{)1w diff --git a/htdocs/theme/eldy/img/title_setup.png b/htdocs/theme/eldy/img/title_setup.png index d7548d28709860acebe173ed2ca4954678f950f6..fa4ff3aded1b49e54483faa198e9291117327a40 100644 GIT binary patch literal 724 zcmV;_0xSKAP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KWQw!>Jzt00LA=L_t(o!|hq&ah)&>{+!GIutC@$-k@&;M(_q@1V(rply1NX?gn%N zx&fU){SoDkI2KsO?j?8lPWKLDi%&-SB=igs;j4}ZeBp6{zrbJMFYuobyfLOV#yDe) z{S4quYLYU>+yQ*wO#KFMBck z#&BPb7)^O#jBx;d1k>-{0H1WXxo=sX_x4pi`OV43PP9wdcZ=*@0o-%n!rsGL1^7W> z{3y7REdm~ZW2H`*SD$>KXDMNTqa?Rl=30x-k%CPCL+0=&c&F&UM>8)hj<-@x(F z=7Jv-;1~AeE)o2!&^<9DslYeNhfpj=5`*e5VQ{!GJg5 zl5y^UiRNVHI$PNVAXknDHSnUf%?V=~0r*(@S&v1&XkN?Ufq}OGo`NMmiO3cIlq&2t zG4Y#qOHTFpKLa)vyv>FR*HQ+Y_3b0BAB0R@#DIrPA8)wwd`?(y0lWlrPXPScE<|qM z#zz22>!fksfDCsTHFZ9-&ze~N+G;+p06r-LJ1Z76z;B7b=U6vDFu-&D<2LuE8sLXq z;5!C1v5)(zY$J@nM@=Md_1*dMSFm=e$u|BB@Ce9n0n_yS`=<)qlxP@53O64lyP;Z! zW#9BHQ%oCm-KoUhWKzy8)KJpKU{$dvALyAYND0000y{D6rKpubJ1QHPr6DReUnE(I--bqA3R9M61m|cifRTRg6|6!&a`_MA{ zh$fSyf+Fr?2#HWu^hLc{28}rNkYr&mNi{D*1zGeE6;wF%Ry_zY6gD`Nm6Z=Ql7ul? zP9KWQM}w2my_5ZWSy#@S&N=s<>r5DJSlrFpYpwI&Yp=b||6G6B=1d%IoT1~t2~5&u zlDZ{T{&i%wGX;1Na6*QFg?aV~zY4G>q|(SfH%`F=?n(j61P3ex9tA$kus1LX^fj}o zq^RgtO6mr7q}2O?HMS?irV^W|k4nh$BEOc8GLex1;E$Bt*@WNf4BunG_GYrzmdMVf zIoPLxT1u{NV#9xXY_E-DtowBW4*~}yUE45Yz&c%V-z$0fzsiVnHt<58Lwo#ohB3faNn2xH&G6|jgGkc(z>=I; zmrHsC_#F7f_RpvMY$ItCu&K#s9Rc{D(YKPIw%9(D&}GGYt`58m?Rg5A$VvY}U`W!9k@58Uvnf!-2_$WH z*xohcR+hN>D}Zgl{Dk^&fL@%j2Jn*Y!JK&YKK7RFFJ`QjrPh*`1HA#@ci{1u_hx{4 z)%HiN&@r7Z=a)1ecs`nRa(rU@^;YAyw+N;y`cr==uqbLZ+1Wp{-FG@0Zf^n9CBVa} z3?*;iceeY&?g8Mn*j#ARaz(c^ig4fk6G2a4Q5IpQ<+ehZ)D@oEk;J)yw<;eb^ z(>=gBp=$$rBrThDU;(N-!9w!nB(M~?Fr^o8zoezJow0l4qodkDz6buwSp&F7(vn#z zeo23~1gKgA({F7582oE0h~PiM0qZ3Z40f;W(bB~)=?37cCN}s(lGRGO2)G+KtASq) z*lByLX<$*Tw>1H30_eA0OZhJf|0KAhz;Mj3i?tEk17(hKaSk0$j$eTf(x8H=j7#bd zPSz3Xfx4}vlfbIDETwAf&j!GzfnBzz3z&cCgru+Ib8j@YfvKYSMYr-;LBBcy3>JY( z0jL2BBrQnjSA>4DRK{$NNjeO4Wn^lv?c+_hnxoPEJAl=a#)E})M&BE0>6H{O?5+f; zZ%cqme!{Iv)Y>T)YkO!;Xio`n9Z~3Y&NgOye9rjT|L(8OzX9cS=SQ<;sVV>f000O{ KMNUMnLSTZ`O$*cj diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 11ecfca262e..e1bb49ae46e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1571,7 +1571,6 @@ div.tmenuleft margin-top: 0px; dol_optimize_smallscreen)) { ?> width: 5px; - /* background: url() 0 -6px no-repeat; */ height: 26px; @@ -1633,76 +1632,76 @@ div.mainmenu.menu { div.mainmenu.home{ - background-image: url(); + background-image: url(); background-position-x: center; } div.mainmenu.billing { - background-image: url(); + background-image: url(); } div.mainmenu.accountancy { - background-image: url(); + background-image: url(); } div.mainmenu.agenda { - background-image: url(); + background-image: url(); } div.mainmenu.bank { - background-image: url(); + background-image: url(); } div.mainmenu.cashdesk { - background-image: url(); + background-image: url(); } div.mainmenu.companies { - background-image: url(); + background-image: url(); } div.mainmenu.commercial { - background-image: url(); + background-image: url(); } div.mainmenu.ecm { - background-image: url(); + background-image: url(); } div.mainmenu.externalsite { - background-image: url(); + background-image: url(); } div.mainmenu.ftp { - background-image: url(); + background-image: url(); } div.mainmenu.hrm { - background-image: url(); + background-image: url(); } div.mainmenu.members { - background-image: url(); + background-image: url(); } div.mainmenu.products { - background-image: url(); + background-image: url(); } div.mainmenu.project { - background-image: url(); + background-image: url(); } div.mainmenu.ticketsup { - background-image: url(); + background-image: url(); } div.mainmenu.tools { - background-image: url(); + background-image: url(); } div.mainmenu.website { - background-image: url(); + background-image: url(); } file->dol_document_root as $dirroot) { - if (file_exists($dirroot."/".$val."/img/".$val.".png")) + if (file_exists($dirroot."/".$val."/img/".$val."_over.png")) { - $url=dol_buildpath('/'.$val.'/img/'.$val.'.png', 1); + $url=dol_buildpath('/'.$val.'/img/'.$val.'_over.png', 1); $found=1; break; } @@ -1749,7 +1748,7 @@ foreach($mainmenuusedarray as $val) // Img file not found if (! $found) { - $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic.".png",1); + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic."_over.png",1); $found=1; if ($generic < 4) $generic++; print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; @@ -2678,7 +2677,7 @@ div.refidpadding { div.refid { font-weight: bold; color: #625; - font-size: 160%; + font-size: 1.2em; } div.refidno { padding-top: 3px; @@ -3525,7 +3524,6 @@ div#card-errors { .ui-dialog-titlebar { } .ui-dialog-content { - font-size: !important; } @@ -4034,7 +4032,6 @@ A.none, A.none:active, A.none:visited, A.none:hover { } .ui-widget { font-family:; - font-size:; } /* .ui-button { margin-left: -2px; browser->name)?'padding-top: 1px;':''); ?> } */ .ui-button { margin-left: -2px; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index e97e4a3bee1..86646fe2c78 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1580,17 +1580,6 @@ li.tmenu, li.tmenusel { margin: 0px 0px 0px 0px; font-weight: normal; } -li.tmenusel, li.tmenu:hover { -/* - background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.5) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0) 100%) !important; - background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; - background: rgb(); -*/ - /* background: url() 50% 0 repeat-x !important; Nicer but problem when menu wrap on 2 lines */ -} li.tmenusel, li.tmenu:hover { opacity: .50; /* show only a slight shadow */ } @@ -1606,7 +1595,6 @@ div.tmenuleft height: px; - /* background: url() 0 -6px no-repeat; */ } div.tmenucenter From ffffd848a9ca30aede773f45b406f48e6ee494df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 22:34:46 +0200 Subject: [PATCH 045/336] Look and feel v8 --- htdocs/core/lib/functions.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b66e1661be0..9a5033b76c9 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4097,7 +4097,7 @@ function load_fiche_titre($titre, $morehtmlright='', $picto='title_generic.png', $return.= "\n"; $return.= '
'; - if ($picto) $return.= ''; + if ($picto) $return.= ''; $return.= ''; @@ -4163,7 +4163,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so // Left //if ($picto && $titre) print ''; print ''; From db385d64b6f6e4f6486619057201f0406cbf804f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Apr 2018 23:24:01 +0200 Subject: [PATCH 046/336] Fix br --- htdocs/core/tpl/objectline_view.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index bc191ce9d80..f48b0b917a1 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -152,7 +152,7 @@ $domData .= ' data-product_type="'.$line->product_type.'"'; if ($line->date_start_fill || $line->date_end_fill) echo ''; } else { - echo '
'.get_date_range($line->date_start, $line->date_end, $format).'
'; + if ($line->date_start || $line->date_end) echo '
'.get_date_range($line->date_start, $line->date_end, $format).'
'; //echo get_date_range($line->date_start, $line->date_end, $format); } From 899ef6d2a634b15a854856bcd910cb89cb1e30bc Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 15 Apr 2018 06:55:18 +0200 Subject: [PATCH 047/336] Accountancy - list by account - Add some fix & functions --- .../accountancy/bookkeeping/listbyaccount.php | 214 +++++++++--------- 1 file changed, 111 insertions(+), 103 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index dbc6ace5350..b02bb26122a 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -1,8 +1,8 @@ - * Copyright (C) 2013-2016 Olivier Geffroy - * Copyright (C) 2013-2016 Florian Henry - * Copyright (C) 2013-2017 Alexandre Spangaro +/* Copyright (C) 2016 Neil Orley + * Copyright (C) 2013-2016 Olivier Geffroy + * Copyright (C) 2013-2016 Florian Henry + * Copyright (C) 2013-2018 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 @@ -26,9 +26,9 @@ require '../../main.inc.php'; -// Class require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/bookkeeping.class.php'; +require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; @@ -44,8 +44,6 @@ $search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int' $search_date_end = dol_mktime(0, 0, 0, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int')); $search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int')); - - $search_accountancy_code = GETPOST("search_accountancy_code"); $search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha'); if ($search_accountancy_code_start == - 1) { @@ -59,6 +57,8 @@ $search_doc_ref = GETPOST('search_doc_ref', 'alpha'); $search_label_operation = GETPOST('search_label_operation', 'alpha'); $search_direction = GETPOST('search_direction', 'alpha'); $search_ledger_code = GETPOST('search_ledger_code', 'alpha'); +$search_debit = GETPOST('search_debit', 'alpha'); +$search_credit = GETPOST('search_credit', 'alpha'); // Load variable for pagination $limit = GETPOST('limit','int')?GETPOST('limit', 'int'):(empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION)?$conf->liste_limit:$conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION); @@ -100,60 +100,9 @@ if (empty($search_date_start) && empty($search_date_end)) { $object = new BookKeeping($db); - -$options = ''; -$filter = array (); - -if (! empty($search_date_start)) { - $filter['t.doc_date>='] = $search_date_start; - $options .= '&search_date_startmonth=' . GETPOST('search_date_startmonth', 'int') . '&search_date_startday=' . GETPOST('search_date_startday', 'int') . '&search_date_startyear=' . GETPOST('search_date_startyear', 'int'); -} -if (! empty($search_date_end)) { - $filter['t.doc_date<='] = $search_date_end; - $options .= '&search_date_endmonth=' . GETPOST('search_date_endmonth', 'int') . '&search_date_endday=' . GETPOST('search_date_endday', 'int') . '&search_date_endyear=' . GETPOST('search_date_endyear', 'int'); -} -if (! empty($search_doc_date)) { - $filter['t.doc_date'] = $search_doc_date; - $options .= '&doc_datemonth=' . GETPOST('doc_datemonth', 'int') . '&doc_dateday=' . GETPOST('doc_dateday', 'int') . '&doc_dateyear=' . GETPOST('doc_dateyear', 'int'); -} - -if (! GETPOST('button_removefilter_x','alpha') && ! GETPOST('button_removefilter.x','alpha') && ! GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers -{ - if (! empty($search_accountancy_code_start)) { - $filter['t.numero_compte>='] = $search_accountancy_code_start; - $options .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start); - } - if (! empty($search_accountancy_code_end)) { - $filter['t.numero_compte<='] = $search_accountancy_code_end; - $options .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end); - } - if (! empty($search_label_account)) { - $filter['t.label_compte'] = $search_label_account; - $options .= '&search_label_compte=' . urlencode($search_label_account); - } - if (! empty($search_doc_ref)) { - $filter['t.doc_ref'] = $search_doc_ref; - $options .= '&search_doc_ref=' . urlencode($search_doc_ref); - } - if (! empty($search_label_operation)) { - $filter['t.label_operation'] = $search_label_operation; - $options .= '&search_label_operation=' . urlencode($search_label_operation); - } - if (! empty($search_direction)) { - $filter['t.sens'] = $search_direction; - $options .= '&search_direction=' . urlencode($search_direction); - } - if (! empty($search_ledger_code)) { - $filter['t.code_journal'] = $search_ledger_code; - $options .= '&search_ledger_code=' . urlencode($search_ledger_code); - } -} - - /* * Action */ - if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers { $search_doc_date = ''; @@ -161,7 +110,7 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x', $search_accountancy_code_start = ''; $search_accountancy_code_end = ''; $search_label_account = ''; - $search_doc_ref = ''; + $search_doc_ref = ''; $search_label_operation = ''; $search_direction = ''; $search_ledger_code = ''; @@ -173,8 +122,64 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x', $search_date_endyear=''; $search_date_endmonth=''; $search_date_endday=''; + $search_debit = ''; + $search_credit = ''; } +// Must be after the remove filter action, before the export. +$param = ''; +$filter = array (); + +if (! empty($search_date_start)) { + $filter['t.doc_date>='] = $search_date_start; + $param .= '&search_date_startmonth=' . GETPOST('search_date_startmonth', 'int') . '&search_date_startday=' . GETPOST('search_date_startday', 'int') . '&search_date_startyear=' . GETPOST('search_date_startyear', 'int'); +} +if (! empty($search_date_end)) { + $filter['t.doc_date<='] = $search_date_end; + $param .= '&search_date_endmonth=' . GETPOST('search_date_endmonth', 'int') . '&search_date_endday=' . GETPOST('search_date_endday', 'int') . '&search_date_endyear=' . GETPOST('search_date_endyear', 'int'); +} +if (! empty($search_doc_date)) { + $filter['t.doc_date'] = $search_doc_date; + $param .= '&doc_datemonth=' . GETPOST('doc_datemonth', 'int') . '&doc_dateday=' . GETPOST('doc_dateday', 'int') . '&doc_dateyear=' . GETPOST('doc_dateyear', 'int'); +} +if (! empty($search_accountancy_code_start)) { + $filter['t.numero_compte>='] = $search_accountancy_code_start; + $param .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start); +} +if (! empty($search_accountancy_code_end)) { + $filter['t.numero_compte<='] = $search_accountancy_code_end; + $param .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end); +} +if (! empty($search_label_account)) { + $filter['t.label_compte'] = $search_label_account; + $param .= '&search_label_compte=' . urlencode($search_label_account); +} +if (! empty($search_doc_ref)) { + $filter['t.doc_ref'] = $search_doc_ref; + $param .= '&search_doc_ref=' . urlencode($search_doc_ref); +} +if (! empty($search_label_operation)) { + $filter['t.label_operation'] = $search_label_operation; + $param .= '&search_label_operation=' . urlencode($search_label_operation); +} +if (! empty($search_direction)) { + $filter['t.sens'] = $search_direction; + $param .= '&search_direction=' . urlencode($search_direction); +} +if (! empty($search_ledger_code)) { + $filter['t.code_journal'] = $search_ledger_code; + $param .= '&search_ledger_code=' . urlencode($search_ledger_code); +} +if (! empty($search_debit)) { + $filter['t.debit'] = $search_debit; + $param .= '&search_debit=' . urlencode($search_debit); +} +if (! empty($search_credit)) { + $filter['t.credit'] = $search_credit; + $param .= '&search_credit=' . urlencode($search_credit); +} + + if ($action == 'delmouvconfirm') { $mvt_num = GETPOST('mvt_num', 'int'); @@ -198,7 +203,7 @@ $formaccounting = new FormAccounting($db); $formother = new FormOther($db); $form = new Form($db); -$title_page = $langs->trans("Bookkeeping") . ' ' . strtolower($langs->trans("By")) . ' ' . $langs->trans("AccountAccounting"); +$title_page = $langs->trans("Bookkeeping") . ' ' . strtolower($langs->trans("By")) . ' ' . strtolower($langs->trans("AccountAccounting")); llxHeader('', $title_page); @@ -248,8 +253,6 @@ if ($action == 'delbookkeepingyear') { } -$param=$options; - print '
'; $viewflat = ' ' . $langs->trans("ViewFlatList") . ''; @@ -262,9 +265,9 @@ print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, // Reverse sort order if ( preg_match('/^asc/i', $sortorder) ) - $sortorder = "asc"; + $sortorder = "asc"; else - $sortorder = "desc"; + $sortorder = "desc"; print '
'.img_picto('',$picto, 'class="valignmiddle widthpictotitle" id="pictotitle"', $pictoisfullpath).''.img_picto('',$picto, 'class="valignmiddle widthpictotitle" id="pictotitle"', $pictoisfullpath).''; $return.= '
'.$titre.'
'; $return.= '
'.img_picto('', $picto, 'id="pictotitle"', $pictoisfullpath).''; - if ($picto && $titre) print img_picto('', $picto, 'class="hideonsmartphone valignmiddle" id="pictotitle"', $pictoisfullpath); + if ($picto && $titre) print img_picto('', $picto, 'class="hideonsmartphone valignmiddle opacityhigh widthpictotitle" id="pictotitle"', $pictoisfullpath); print '
'.$titre; if (!empty($titre) && $savtotalnboflines >= 0 && (string) $savtotalnboflines != '') print ' ('.$totalnboflines.')'; print '
'; @@ -289,8 +292,8 @@ print $form->select_date($search_date_end, 'search_date_end', 0, 0, 1); print ''; print ''; print ''; -print ''; -print ''; +print ''; +print ''; print ''; print ''; print ''; print_liste_field_titre("AccountAccountingShort", $_SERVER['PHP_SELF']); -print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $options, 'align="right"', $sortfield, $sortorder); -print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $options, 'align="center"', $sortfield, $sortorder); -print_liste_field_titre("Piece", $_SERVER['PHP_SELF'], "t.doc_ref", "", $options, "", $sortfield, $sortorder); +print_liste_field_titre("TransactionNumShort", $_SERVER['PHP_SELF'], "t.piece_num", "", $param, 'align="right"', $sortfield, $sortorder); +print_liste_field_titre("Docdate", $_SERVER['PHP_SELF'], "t.doc_date", "", $param, 'align="center"', $sortfield, $sortorder); +print_liste_field_titre("Piece", $_SERVER['PHP_SELF'], "t.doc_ref", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("Label"); -print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $options, 'align="right"', $sortfield, $sortorder); -print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $options, 'align="right"', $sortfield, $sortorder); -print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $options, 'align="center"', $sortfield, $sortorder); -print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder); +print_liste_field_titre("Debit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'align="right"', $sortfield, $sortorder); +print_liste_field_titre("Credit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'align="right"', $sortfield, $sortorder); +print_liste_field_titre("Codejournal", $_SERVER['PHP_SELF'], "t.code_journal", "", $param, 'align="center"', $sortfield, $sortorder); +print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder); print "\n"; print ''; @@ -326,34 +329,34 @@ while ($i < min($num, $limit)) $total_debit += $line->debit; $total_credit += $line->credit; - $accountg = length_accountg($line->numero_compte); + $accountg = length_accountg($line->numero_compte); //if (empty($accountg)) $accountg = '-'; // Is it a break ? - if ($accountg != $displayed_account_number || ! isset($displayed_account_number)) { + if ($accountg != $displayed_account_number || ! isset($displayed_account_number)) { - // Affiche un Sous-Total par compte comptable - if (isset($displayed_account_number)) { - print ''; - print "\n"; - print "\n"; - print ''; - } + // Affiche un Sous-Total par compte comptable + if (isset($displayed_account_number)) { + print ''; + print "\n"; + print "\n"; + print ''; + } - // Show the break account - $colspan = 9; - print ""; - print ''; - print ''; + // Show the break account + $colspan = 9; + print ""; + print ''; + print ''; - $displayed_account_number = $accountg; - //if (empty($displayed_account_number)) $displayed_account_number='-'; - $sous_total_debit = 0; - $sous_total_credit = 0; - } + $displayed_account_number = $accountg; + //if (empty($displayed_account_number)) $displayed_account_number='-'; + $sous_total_debit = 0; + $sous_total_credit = 0; + } print ''; print ''; @@ -362,22 +365,27 @@ while ($i < min($num, $limit)) // TODO Add a link according to doc_type and fk_doc print ''; + print ''; - // Affiche un lien vers la facture client/fournisseur - $doc_ref = preg_replace('/\(.*\)/', '', $line->doc_ref); - print strlen(length_accounta($line->subledger_account)) == 0 ? '' : ''; + // Affiche un lien vers la facture client/fournisseur + $doc_ref = preg_replace('/\(.*\)/', '', $line->doc_ref); + print strlen(length_accounta($line->subledger_account)) == 0 ? '' : ''; print ''; print ''; - print ''; + + $accountingjournal = new AccountingJournal($db); + $result = $accountingjournal->fetch('',$line->code_journal); + $journaltoshow = (($result > 0)?$accountingjournal->getNomUrl(0,0,0,'',0) : $line->code_journal); + print ''; + print ''; print "\n"; From 7943a19402a4c7a19b28e1f67444037289665419 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sun, 15 Apr 2018 07:07:04 +0200 Subject: [PATCH 048/336] fix typo --- htdocs/core/class/commonobject.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index d662fa98820..4719602e1df 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5022,7 +5022,7 @@ abstract class CommonObject * @param array $val Array of properties for field to show * @param string $key Key of attribute * @param string $value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value) - * @param string $moreparam To add more parametes on html input tag + * @param string $moreparam To add more parameters on html input tag * @param string $keysuffix Prefix string to add into name and id of field (can be used to avoid duplicate names) * @param string $keyprefix Suffix string to add into name and id of field (can be used to avoid duplicate names) * @param string|int $showsize Value for css to define size. May also be a numeric. @@ -5076,7 +5076,7 @@ abstract class CommonObject else return ''; } - // Use in priorit showsize from parameters, then $val['css'] then autodefine + // Use in priority showsize from parameters, then $val['css'] then autodefine if (empty($showsize) && ! empty($val['css'])) { $showsize = $val['css']; From 0a6bcb2a39caf7b413f4cc9894eb84ed5bd47b4c Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sun, 15 Apr 2018 07:37:23 +0200 Subject: [PATCH 049/336] fix typo and translation --- htdocs/core/class/commonobject.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 4719602e1df..addb7a98b80 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5,7 +5,7 @@ * Copyright (C) 2012 Christophe Battarel * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2012-2013 Christophe Battarel - * Copyright (C) 2011-2014 Philippe Grand + * Copyright (C) 2011-2018 Philippe Grand * Copyright (C) 2012-2015 Marcos García * Copyright (C) 2012-2015 Raphaël Doursenaud * Copyright (C) 2012 Cedric Salvador @@ -13,7 +13,7 @@ * Copyright (C) 2016 Bahfir abbes * Copyright (C) 2017 ATM Consulting * Copyright (C) 2017 Nicolas ZABOURI - * Copyright (C) 2017 Rui Strecht + * Copyright (C) 2017 Rui Strecht * Copyright (C) 2018 Frederic France * * This program is free software; you can redistribute it and/or modify @@ -448,7 +448,7 @@ abstract class CommonObject * * @param int $withcountry 1=Add country into address string * @param string $sep Separator to use to build string - * @param int $withregion 1=Add region into address string + * @param int $withregion 1=Add region into address string * @return string Full address string */ function getFullAddress($withcountry=0,$sep="\n",$withregion=0) @@ -717,7 +717,7 @@ abstract class CommonObject } else { - // On recherche id type_contact + // We look for id type_contact $sql = "SELECT tc.rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; $sql.= " WHERE tc.element='".$this->db->escape($this->element)."'"; @@ -741,7 +741,7 @@ abstract class CommonObject $datecreate = dol_now(); - // Socpeople must have already been added by some a trigger, then we have to check it to avoid DB_ERROR_RECORD_ALREADY_EXISTS error + // Socpeople must have already been added by some trigger, then we have to check it to avoid DB_ERROR_RECORD_ALREADY_EXISTS error $TListeContacts=$this->liste_contact(-1, $source); $already_added=false; if(!empty($TListeContacts)) { @@ -757,7 +757,7 @@ abstract class CommonObject $this->db->begin(); - // Insertion dans la base + // Insert into database $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_contact"; $sql.= " (element_id, fk_socpeople, datecreate, statut, fk_c_type_contact) "; $sql.= " VALUES (".$this->id.", ".$fk_socpeople." , " ; @@ -832,7 +832,7 @@ abstract class CommonObject */ function update_contact($rowid, $statut, $type_contact_id=0, $fk_socpeople=0) { - // Insertion dans la base + // Insert into database $sql = "UPDATE ".MAIN_DB_PREFIX."element_contact set"; $sql.= " statut = ".$statut; if ($type_contact_id) $sql.= ", fk_c_type_contact = '".$type_contact_id ."'"; From 910d83d6e3a3569d9c67f8c17d891d39441e01ba Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 15 Apr 2018 07:49:54 +0200 Subject: [PATCH 050/336] Fix export balance --- htdocs/accountancy/bookkeeping/balance.php | 7 +++---- htdocs/accountancy/tpl/export_journal.tpl.php | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index da0dfda2510..b62b092e3da 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -1,7 +1,7 @@ - * Copyright (C) 2016 Florian Henry - * Copyright (C) 2016-2017 Alexandre Spangaro +/* Copyright (C) 2016 Olivier Geffroy + * Copyright (C) 2016 Florian Henry + * Copyright (C) 2016-2018 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 @@ -152,7 +152,6 @@ if ($action == 'export_csv') { print $object->get_compte_desc($line->numero_compte) . $sep; print price($line->debit) . $sep; print price($line->credit) . $sep; - print price($line->debit) . $sep; print price($line->credit - $line->debit) . $sep; print "\n"; } diff --git a/htdocs/accountancy/tpl/export_journal.tpl.php b/htdocs/accountancy/tpl/export_journal.tpl.php index 95ac52f2884..773f7a7ff68 100644 --- a/htdocs/accountancy/tpl/export_journal.tpl.php +++ b/htdocs/accountancy/tpl/export_journal.tpl.php @@ -28,7 +28,7 @@ $prefix = $conf->global->ACCOUNTING_EXPORT_PREFIX_SPEC; $format = $conf->global->ACCOUNTING_EXPORT_FORMAT; $nodateexport = $conf->global->ACCOUNTING_EXPORT_NO_DATE_IN_FILENAME; -$date_export = "_" . dol_print_date($now, '%Y%m%d%H%M%S'); +$date_export = "_" . dol_print_date(dol_now(), '%Y%m%d%H%M%S'); header('Content-Type: text/csv'); From f9382ce3954311fb724a9a069aca10a75e1790fd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 11:27:12 +0200 Subject: [PATCH 051/336] Upgrade octicons --- htdocs/install/check.php | 2 +- htdocs/install/fileconf.php | 6 +- htdocs/install/step1.php | 2 +- htdocs/install/step2.php | 2 +- htdocs/install/step4.php | 2 +- htdocs/install/upgrade.php | 2 +- htdocs/install/upgrade2.php | 2 +- htdocs/theme/common/octicons/.gitignore | 4 - htdocs/theme/common/octicons/.npmignore | 5 - htdocs/theme/common/octicons/.travis.yml | 3 - htdocs/theme/common/octicons/CHANGELOG.md | 363 ----- htdocs/theme/common/octicons/Gruntfile.js | 137 -- htdocs/theme/common/octicons/LICENSE | 2 +- htdocs/theme/common/octicons/README.md | 82 +- .../{lib/octicons.css => build/build.css} | 0 htdocs/theme/common/octicons/build/data.json | 1 + .../theme/common/octicons/build/svg/alert.svg | 1 + .../common/octicons/build/svg/arrow-down.svg | 1 + .../common/octicons/build/svg/arrow-left.svg | 1 + .../common/octicons/build/svg/arrow-right.svg | 1 + .../octicons/build/svg/arrow-small-down.svg | 1 + .../octicons/build/svg/arrow-small-left.svg | 1 + .../octicons/build/svg/arrow-small-right.svg | 1 + .../octicons/build/svg/arrow-small-up.svg | 1 + .../common/octicons/build/svg/arrow-up.svg | 1 + .../common/octicons/build/svg/beaker.svg | 1 + .../theme/common/octicons/build/svg/bell.svg | 1 + .../theme/common/octicons/build/svg/bold.svg | 1 + .../theme/common/octicons/build/svg/book.svg | 1 + .../common/octicons/build/svg/bookmark.svg | 1 + .../common/octicons/build/svg/briefcase.svg | 1 + .../common/octicons/build/svg/broadcast.svg | 1 + .../common/octicons/build/svg/browser.svg | 1 + .../theme/common/octicons/build/svg/bug.svg | 1 + .../common/octicons/build/svg/calendar.svg | 1 + .../theme/common/octicons/build/svg/check.svg | 1 + .../common/octicons/build/svg/checklist.svg | 1 + .../octicons/build/svg/chevron-down.svg | 1 + .../octicons/build/svg/chevron-left.svg | 1 + .../octicons/build/svg/chevron-right.svg | 1 + .../common/octicons/build/svg/chevron-up.svg | 1 + .../octicons/build/svg/circle-slash.svg | 1 + .../octicons/build/svg/circuit-board.svg | 1 + .../common/octicons/build/svg/clippy.svg | 1 + .../theme/common/octicons/build/svg/clock.svg | 1 + .../octicons/build/svg/cloud-download.svg | 1 + .../octicons/build/svg/cloud-upload.svg | 1 + .../theme/common/octicons/build/svg/code.svg | 1 + .../octicons/build/svg/comment-discussion.svg | 1 + .../common/octicons/build/svg/comment.svg | 1 + .../common/octicons/build/svg/credit-card.svg | 1 + .../theme/common/octicons/build/svg/dash.svg | 1 + .../common/octicons/build/svg/dashboard.svg | 1 + .../common/octicons/build/svg/database.svg | 1 + .../octicons/build/svg/desktop-download.svg | 1 + .../build/svg/device-camera-video.svg | 1 + .../octicons/build/svg/device-camera.svg | 1 + .../octicons/build/svg/device-desktop.svg | 1 + .../octicons/build/svg/device-mobile.svg | 1 + .../common/octicons/build/svg/diff-added.svg | 1 + .../octicons/build/svg/diff-ignored.svg | 1 + .../octicons/build/svg/diff-modified.svg | 1 + .../octicons/build/svg/diff-removed.svg | 1 + .../octicons/build/svg/diff-renamed.svg | 1 + .../theme/common/octicons/build/svg/diff.svg | 1 + .../common/octicons/build/svg/ellipsis.svg | 1 + .../theme/common/octicons/build/svg/eye.svg | 1 + .../common/octicons/build/svg/file-binary.svg | 1 + .../common/octicons/build/svg/file-code.svg | 1 + .../octicons/build/svg/file-directory.svg | 1 + .../common/octicons/build/svg/file-media.svg | 1 + .../common/octicons/build/svg/file-pdf.svg | 1 + .../octicons/build/svg/file-submodule.svg | 1 + .../build/svg/file-symlink-directory.svg | 1 + .../octicons/build/svg/file-symlink-file.svg | 1 + .../common/octicons/build/svg/file-zip.svg | 1 + .../theme/common/octicons/build/svg/file.svg | 1 + .../theme/common/octicons/build/svg/flame.svg | 1 + .../theme/common/octicons/build/svg/fold.svg | 1 + .../theme/common/octicons/build/svg/gear.svg | 1 + .../theme/common/octicons/build/svg/gift.svg | 1 + .../common/octicons/build/svg/gist-secret.svg | 1 + .../theme/common/octicons/build/svg/gist.svg | 1 + .../common/octicons/build/svg/git-branch.svg | 1 + .../common/octicons/build/svg/git-commit.svg | 1 + .../common/octicons/build/svg/git-compare.svg | 1 + .../common/octicons/build/svg/git-merge.svg | 1 + .../octicons/build/svg/git-pull-request.svg | 1 + .../theme/common/octicons/build/svg/globe.svg | 1 + .../common/octicons/build/svg/grabber.svg | 1 + .../theme/common/octicons/build/svg/graph.svg | 1 + .../theme/common/octicons/build/svg/heart.svg | 1 + .../common/octicons/build/svg/history.svg | 1 + .../theme/common/octicons/build/svg/home.svg | 1 + .../octicons/build/svg/horizontal-rule.svg | 1 + .../theme/common/octicons/build/svg/hubot.svg | 1 + .../theme/common/octicons/build/svg/inbox.svg | 1 + .../theme/common/octicons/build/svg/info.svg | 1 + .../octicons/build/svg/issue-closed.svg | 1 + .../octicons/build/svg/issue-opened.svg | 1 + .../octicons/build/svg/issue-reopened.svg | 1 + .../common/octicons/build/svg/italic.svg | 1 + .../common/octicons/build/svg/jersey.svg | 1 + .../octicons/build/svg/kebab-horizontal.svg | 1 + .../octicons/build/svg/kebab-vertical.svg | 1 + .../theme/common/octicons/build/svg/key.svg | 1 + .../common/octicons/build/svg/keyboard.svg | 1 + .../theme/common/octicons/build/svg/law.svg | 1 + .../common/octicons/build/svg/light-bulb.svg | 1 + .../octicons/build/svg/link-external.svg | 1 + .../theme/common/octicons/build/svg/link.svg | 1 + .../octicons/build/svg/list-ordered.svg | 1 + .../octicons/build/svg/list-unordered.svg | 1 + .../common/octicons/build/svg/location.svg | 1 + .../theme/common/octicons/build/svg/lock.svg | 1 + .../common/octicons/build/svg/logo-gist.svg | 1 + .../common/octicons/build/svg/logo-github.svg | 1 + .../common/octicons/build/svg/mail-read.svg | 1 + .../theme/common/octicons/build/svg/mail.svg | 1 + .../common/octicons/build/svg/mark-github.svg | 1 + .../common/octicons/build/svg/markdown.svg | 1 + .../common/octicons/build/svg/megaphone.svg | 1 + .../common/octicons/build/svg/mention.svg | 1 + .../common/octicons/build/svg/milestone.svg | 1 + .../common/octicons/build/svg/mirror.svg | 1 + .../octicons/build/svg/mortar-board.svg | 1 + .../theme/common/octicons/build/svg/mute.svg | 1 + .../common/octicons/build/svg/no-newline.svg | 1 + .../theme/common/octicons/build/svg/note.svg | 1 + .../common/octicons/build/svg/octoface.svg | 1 + .../octicons/build/svg/organization.svg | 1 + .../common/octicons/build/svg/package.svg | 1 + .../common/octicons/build/svg/paintcan.svg | 1 + .../common/octicons/build/svg/pencil.svg | 1 + .../common/octicons/build/svg/person.svg | 1 + .../theme/common/octicons/build/svg/pin.svg | 1 + .../theme/common/octicons/build/svg/plug.svg | 1 + .../common/octicons/build/svg/plus-small.svg | 1 + .../theme/common/octicons/build/svg/plus.svg | 1 + .../octicons/build/svg/primitive-dot.svg | 1 + .../octicons/build/svg/primitive-square.svg | 1 + .../common/octicons/build/svg/project.svg | 1 + .../theme/common/octicons/build/svg/pulse.svg | 1 + .../common/octicons/build/svg/question.svg | 1 + .../theme/common/octicons/build/svg/quote.svg | 1 + .../common/octicons/build/svg/radio-tower.svg | 1 + .../theme/common/octicons/build/svg/reply.svg | 1 + .../common/octicons/build/svg/repo-clone.svg | 1 + .../octicons/build/svg/repo-force-push.svg | 1 + .../common/octicons/build/svg/repo-forked.svg | 1 + .../common/octicons/build/svg/repo-pull.svg | 1 + .../common/octicons/build/svg/repo-push.svg | 1 + .../theme/common/octicons/build/svg/repo.svg | 1 + .../common/octicons/build/svg/report.svg | 1 + .../common/octicons/build/svg/rocket.svg | 1 + .../theme/common/octicons/build/svg/rss.svg | 1 + .../theme/common/octicons/build/svg/ruby.svg | 1 + .../common/octicons/build/svg/screen-full.svg | 1 + .../octicons/build/svg/screen-normal.svg | 1 + .../common/octicons/build/svg/search.svg | 1 + .../common/octicons/build/svg/server.svg | 1 + .../common/octicons/build/svg/settings.svg | 1 + .../common/octicons/build/svg/shield.svg | 1 + .../common/octicons/build/svg/sign-in.svg | 1 + .../common/octicons/build/svg/sign-out.svg | 1 + .../common/octicons/build/svg/smiley.svg | 1 + .../common/octicons/build/svg/squirrel.svg | 1 + .../theme/common/octicons/build/svg/star.svg | 1 + .../theme/common/octicons/build/svg/stop.svg | 1 + .../theme/common/octicons/build/svg/sync.svg | 1 + .../theme/common/octicons/build/svg/tag.svg | 1 + .../common/octicons/build/svg/tasklist.svg | 1 + .../common/octicons/build/svg/telescope.svg | 1 + .../common/octicons/build/svg/terminal.svg | 1 + .../common/octicons/build/svg/text-size.svg | 1 + .../common/octicons/build/svg/three-bars.svg | 1 + .../common/octicons/build/svg/thumbsdown.svg | 1 + .../common/octicons/build/svg/thumbsup.svg | 1 + .../theme/common/octicons/build/svg/tools.svg | 1 + .../common/octicons/build/svg/trashcan.svg | 1 + .../octicons/build/svg/triangle-down.svg | 1 + .../octicons/build/svg/triangle-left.svg | 1 + .../octicons/build/svg/triangle-right.svg | 1 + .../common/octicons/build/svg/triangle-up.svg | 1 + .../common/octicons/build/svg/unfold.svg | 1 + .../common/octicons/build/svg/unmute.svg | 1 + .../common/octicons/build/svg/unverified.svg | 1 + .../common/octicons/build/svg/verified.svg | 1 + .../common/octicons/build/svg/versions.svg | 1 + .../theme/common/octicons/build/svg/watch.svg | 1 + htdocs/theme/common/octicons/build/svg/x.svg | 1 + .../theme/common/octicons/build/svg/zap.svg | 1 + htdocs/theme/common/octicons/index.html | 0 htdocs/theme/common/octicons/index.js | 8 +- htdocs/theme/common/octicons/index.scss | 5 + htdocs/theme/common/octicons/lib/data.json | 1174 ----------------- .../octicons/lib/octicons-master.sketch | Bin 1957888 -> 0 bytes .../theme/common/octicons/lib/svg/alert.svg | 12 - .../common/octicons/lib/svg/arrow-down.svg | 12 - .../common/octicons/lib/svg/arrow-left.svg | 12 - .../common/octicons/lib/svg/arrow-right.svg | 12 - .../octicons/lib/svg/arrow-small-down.svg | 12 - .../octicons/lib/svg/arrow-small-left.svg | 12 - .../octicons/lib/svg/arrow-small-right.svg | 12 - .../octicons/lib/svg/arrow-small-up.svg | 12 - .../common/octicons/lib/svg/arrow-up.svg | 12 - .../theme/common/octicons/lib/svg/beaker.svg | 12 - htdocs/theme/common/octicons/lib/svg/bell.svg | 12 - htdocs/theme/common/octicons/lib/svg/bold.svg | 12 - htdocs/theme/common/octicons/lib/svg/book.svg | 12 - .../common/octicons/lib/svg/bookmark.svg | 12 - .../common/octicons/lib/svg/briefcase.svg | 12 - .../common/octicons/lib/svg/broadcast.svg | 12 - .../theme/common/octicons/lib/svg/browser.svg | 12 - htdocs/theme/common/octicons/lib/svg/bug.svg | 12 - .../common/octicons/lib/svg/calendar.svg | 12 - .../theme/common/octicons/lib/svg/check.svg | 12 - .../common/octicons/lib/svg/checklist.svg | 12 - .../common/octicons/lib/svg/chevron-down.svg | 12 - .../common/octicons/lib/svg/chevron-left.svg | 12 - .../common/octicons/lib/svg/chevron-right.svg | 12 - .../common/octicons/lib/svg/chevron-up.svg | 12 - .../common/octicons/lib/svg/circle-slash.svg | 12 - .../common/octicons/lib/svg/circuit-board.svg | 12 - .../theme/common/octicons/lib/svg/clippy.svg | 12 - .../theme/common/octicons/lib/svg/clock.svg | 12 - .../octicons/lib/svg/cloud-download.svg | 12 - .../common/octicons/lib/svg/cloud-upload.svg | 12 - htdocs/theme/common/octicons/lib/svg/code.svg | 12 - .../octicons/lib/svg/comment-discussion.svg | 12 - .../theme/common/octicons/lib/svg/comment.svg | 12 - .../common/octicons/lib/svg/credit-card.svg | 12 - htdocs/theme/common/octicons/lib/svg/dash.svg | 12 - .../common/octicons/lib/svg/dashboard.svg | 12 - .../common/octicons/lib/svg/database.svg | 12 - .../octicons/lib/svg/desktop-download.svg | 12 - .../octicons/lib/svg/device-camera-video.svg | 12 - .../common/octicons/lib/svg/device-camera.svg | 12 - .../octicons/lib/svg/device-desktop.svg | 12 - .../common/octicons/lib/svg/device-mobile.svg | 12 - .../common/octicons/lib/svg/diff-added.svg | 12 - .../common/octicons/lib/svg/diff-ignored.svg | 12 - .../common/octicons/lib/svg/diff-modified.svg | 12 - .../common/octicons/lib/svg/diff-removed.svg | 12 - .../common/octicons/lib/svg/diff-renamed.svg | 12 - htdocs/theme/common/octicons/lib/svg/diff.svg | 12 - .../common/octicons/lib/svg/ellipses.svg | 12 - .../common/octicons/lib/svg/ellipsis.svg | 3 - htdocs/theme/common/octicons/lib/svg/eye.svg | 12 - .../common/octicons/lib/svg/file-binary.svg | 12 - .../common/octicons/lib/svg/file-code.svg | 12 - .../octicons/lib/svg/file-directory.svg | 12 - .../common/octicons/lib/svg/file-media.svg | 12 - .../common/octicons/lib/svg/file-pdf.svg | 12 - .../octicons/lib/svg/file-submodule.svg | 12 - .../lib/svg/file-symlink-directory.svg | 12 - .../octicons/lib/svg/file-symlink-file.svg | 12 - .../common/octicons/lib/svg/file-text.svg | 3 - .../common/octicons/lib/svg/file-zip.svg | 12 - htdocs/theme/common/octicons/lib/svg/file.svg | 12 - .../theme/common/octicons/lib/svg/flame.svg | 12 - htdocs/theme/common/octicons/lib/svg/fold.svg | 12 - htdocs/theme/common/octicons/lib/svg/gear.svg | 12 - htdocs/theme/common/octicons/lib/svg/gift.svg | 12 - .../common/octicons/lib/svg/gist-secret.svg | 12 - htdocs/theme/common/octicons/lib/svg/gist.svg | 12 - .../common/octicons/lib/svg/git-branch.svg | 12 - .../common/octicons/lib/svg/git-commit.svg | 12 - .../common/octicons/lib/svg/git-compare.svg | 12 - .../common/octicons/lib/svg/git-merge.svg | 12 - .../octicons/lib/svg/git-pull-request.svg | 12 - .../theme/common/octicons/lib/svg/globe.svg | 12 - .../theme/common/octicons/lib/svg/grabber.svg | 12 - .../theme/common/octicons/lib/svg/graph.svg | 12 - .../theme/common/octicons/lib/svg/heart.svg | 12 - .../theme/common/octicons/lib/svg/history.svg | 12 - htdocs/theme/common/octicons/lib/svg/home.svg | 12 - .../octicons/lib/svg/horizontal-rule.svg | 12 - .../theme/common/octicons/lib/svg/hubot.svg | 12 - .../theme/common/octicons/lib/svg/inbox.svg | 12 - htdocs/theme/common/octicons/lib/svg/info.svg | 12 - .../common/octicons/lib/svg/issue-closed.svg | 12 - .../common/octicons/lib/svg/issue-opened.svg | 12 - .../octicons/lib/svg/issue-reopened.svg | 12 - .../theme/common/octicons/lib/svg/italic.svg | 12 - .../theme/common/octicons/lib/svg/jersey.svg | 12 - htdocs/theme/common/octicons/lib/svg/key.svg | 12 - .../common/octicons/lib/svg/keyboard.svg | 12 - htdocs/theme/common/octicons/lib/svg/law.svg | 12 - .../common/octicons/lib/svg/light-bulb.svg | 12 - .../common/octicons/lib/svg/link-external.svg | 12 - htdocs/theme/common/octicons/lib/svg/link.svg | 12 - .../common/octicons/lib/svg/list-ordered.svg | 12 - .../octicons/lib/svg/list-unordered.svg | 12 - .../common/octicons/lib/svg/location.svg | 12 - htdocs/theme/common/octicons/lib/svg/lock.svg | 12 - .../common/octicons/lib/svg/logo-gist.svg | 12 - .../common/octicons/lib/svg/logo-github.svg | 12 - .../common/octicons/lib/svg/mail-read.svg | 12 - .../common/octicons/lib/svg/mail-reply.svg | 12 - htdocs/theme/common/octicons/lib/svg/mail.svg | 12 - .../common/octicons/lib/svg/mark-github.svg | 12 - .../common/octicons/lib/svg/markdown.svg | 12 - .../common/octicons/lib/svg/megaphone.svg | 12 - .../theme/common/octicons/lib/svg/mention.svg | 12 - .../common/octicons/lib/svg/milestone.svg | 12 - .../theme/common/octicons/lib/svg/mirror.svg | 12 - .../common/octicons/lib/svg/mortar-board.svg | 12 - htdocs/theme/common/octicons/lib/svg/mute.svg | 12 - .../common/octicons/lib/svg/no-newline.svg | 12 - htdocs/theme/common/octicons/lib/svg/note.svg | 12 - .../common/octicons/lib/svg/octoface.svg | 12 - .../common/octicons/lib/svg/organization.svg | 12 - .../theme/common/octicons/lib/svg/package.svg | 12 - .../common/octicons/lib/svg/paintcan.svg | 12 - .../theme/common/octicons/lib/svg/pencil.svg | 12 - .../theme/common/octicons/lib/svg/person.svg | 12 - htdocs/theme/common/octicons/lib/svg/pin.svg | 12 - htdocs/theme/common/octicons/lib/svg/plug.svg | 12 - .../common/octicons/lib/svg/plus-small.svg | 12 - htdocs/theme/common/octicons/lib/svg/plus.svg | 12 - .../common/octicons/lib/svg/primitive-dot.svg | 12 - .../octicons/lib/svg/primitive-square.svg | 12 - .../theme/common/octicons/lib/svg/project.svg | 12 - .../theme/common/octicons/lib/svg/pulse.svg | 12 - .../common/octicons/lib/svg/question.svg | 12 - .../theme/common/octicons/lib/svg/quote.svg | 12 - .../common/octicons/lib/svg/radio-tower.svg | 12 - .../theme/common/octicons/lib/svg/reply.svg | 12 - .../common/octicons/lib/svg/repo-clone.svg | 12 - .../octicons/lib/svg/repo-force-push.svg | 12 - .../common/octicons/lib/svg/repo-forked.svg | 12 - .../common/octicons/lib/svg/repo-pull.svg | 12 - .../common/octicons/lib/svg/repo-push.svg | 12 - htdocs/theme/common/octicons/lib/svg/repo.svg | 12 - .../theme/common/octicons/lib/svg/rocket.svg | 12 - htdocs/theme/common/octicons/lib/svg/rss.svg | 12 - htdocs/theme/common/octicons/lib/svg/ruby.svg | 12 - .../common/octicons/lib/svg/screen-full.svg | 12 - .../common/octicons/lib/svg/screen-normal.svg | 12 - .../theme/common/octicons/lib/svg/search.svg | 12 - .../theme/common/octicons/lib/svg/server.svg | 12 - .../common/octicons/lib/svg/settings.svg | 12 - .../theme/common/octicons/lib/svg/shield.svg | 12 - .../theme/common/octicons/lib/svg/sign-in.svg | 12 - .../common/octicons/lib/svg/sign-out.svg | 12 - .../theme/common/octicons/lib/svg/smiley.svg | 12 - .../common/octicons/lib/svg/squirrel.svg | 12 - htdocs/theme/common/octicons/lib/svg/star.svg | 12 - htdocs/theme/common/octicons/lib/svg/stop.svg | 12 - htdocs/theme/common/octicons/lib/svg/sync.svg | 12 - htdocs/theme/common/octicons/lib/svg/tag.svg | 12 - .../common/octicons/lib/svg/tasklist.svg | 12 - .../common/octicons/lib/svg/telescope.svg | 12 - .../common/octicons/lib/svg/terminal.svg | 12 - .../common/octicons/lib/svg/text-size.svg | 12 - .../common/octicons/lib/svg/three-bars.svg | 12 - .../common/octicons/lib/svg/thumbsdown.svg | 12 - .../common/octicons/lib/svg/thumbsup.svg | 12 - .../theme/common/octicons/lib/svg/tools.svg | 12 - .../common/octicons/lib/svg/trashcan.svg | 12 - .../common/octicons/lib/svg/triangle-down.svg | 12 - .../common/octicons/lib/svg/triangle-left.svg | 12 - .../octicons/lib/svg/triangle-right.svg | 12 - .../common/octicons/lib/svg/triangle-up.svg | 12 - .../theme/common/octicons/lib/svg/unfold.svg | 12 - .../theme/common/octicons/lib/svg/unmute.svg | 12 - .../common/octicons/lib/svg/unverified.svg | 12 - .../common/octicons/lib/svg/verified.svg | 12 - .../common/octicons/lib/svg/versions.svg | 12 - .../theme/common/octicons/lib/svg/watch.svg | 12 - htdocs/theme/common/octicons/lib/svg/x.svg | 12 - htdocs/theme/common/octicons/lib/svg/zap.svg | 12 - htdocs/theme/common/octicons/package.json | 29 +- 374 files changed, 221 insertions(+), 3880 deletions(-) delete mode 100644 htdocs/theme/common/octicons/.gitignore delete mode 100644 htdocs/theme/common/octicons/.npmignore delete mode 100644 htdocs/theme/common/octicons/.travis.yml delete mode 100644 htdocs/theme/common/octicons/CHANGELOG.md delete mode 100644 htdocs/theme/common/octicons/Gruntfile.js rename htdocs/theme/common/octicons/{lib/octicons.css => build/build.css} (100%) create mode 100644 htdocs/theme/common/octicons/build/data.json create mode 100644 htdocs/theme/common/octicons/build/svg/alert.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-down.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-left.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-right.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-small-down.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-small-left.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-small-right.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-small-up.svg create mode 100644 htdocs/theme/common/octicons/build/svg/arrow-up.svg create mode 100644 htdocs/theme/common/octicons/build/svg/beaker.svg create mode 100644 htdocs/theme/common/octicons/build/svg/bell.svg create mode 100644 htdocs/theme/common/octicons/build/svg/bold.svg create mode 100644 htdocs/theme/common/octicons/build/svg/book.svg create mode 100644 htdocs/theme/common/octicons/build/svg/bookmark.svg create mode 100644 htdocs/theme/common/octicons/build/svg/briefcase.svg create mode 100644 htdocs/theme/common/octicons/build/svg/broadcast.svg create mode 100644 htdocs/theme/common/octicons/build/svg/browser.svg create mode 100644 htdocs/theme/common/octicons/build/svg/bug.svg create mode 100644 htdocs/theme/common/octicons/build/svg/calendar.svg create mode 100644 htdocs/theme/common/octicons/build/svg/check.svg create mode 100644 htdocs/theme/common/octicons/build/svg/checklist.svg create mode 100644 htdocs/theme/common/octicons/build/svg/chevron-down.svg create mode 100644 htdocs/theme/common/octicons/build/svg/chevron-left.svg create mode 100644 htdocs/theme/common/octicons/build/svg/chevron-right.svg create mode 100644 htdocs/theme/common/octicons/build/svg/chevron-up.svg create mode 100644 htdocs/theme/common/octicons/build/svg/circle-slash.svg create mode 100644 htdocs/theme/common/octicons/build/svg/circuit-board.svg create mode 100644 htdocs/theme/common/octicons/build/svg/clippy.svg create mode 100644 htdocs/theme/common/octicons/build/svg/clock.svg create mode 100644 htdocs/theme/common/octicons/build/svg/cloud-download.svg create mode 100644 htdocs/theme/common/octicons/build/svg/cloud-upload.svg create mode 100644 htdocs/theme/common/octicons/build/svg/code.svg create mode 100644 htdocs/theme/common/octicons/build/svg/comment-discussion.svg create mode 100644 htdocs/theme/common/octicons/build/svg/comment.svg create mode 100644 htdocs/theme/common/octicons/build/svg/credit-card.svg create mode 100644 htdocs/theme/common/octicons/build/svg/dash.svg create mode 100644 htdocs/theme/common/octicons/build/svg/dashboard.svg create mode 100644 htdocs/theme/common/octicons/build/svg/database.svg create mode 100644 htdocs/theme/common/octicons/build/svg/desktop-download.svg create mode 100644 htdocs/theme/common/octicons/build/svg/device-camera-video.svg create mode 100644 htdocs/theme/common/octicons/build/svg/device-camera.svg create mode 100644 htdocs/theme/common/octicons/build/svg/device-desktop.svg create mode 100644 htdocs/theme/common/octicons/build/svg/device-mobile.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff-added.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff-ignored.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff-modified.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff-removed.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff-renamed.svg create mode 100644 htdocs/theme/common/octicons/build/svg/diff.svg create mode 100644 htdocs/theme/common/octicons/build/svg/ellipsis.svg create mode 100644 htdocs/theme/common/octicons/build/svg/eye.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-binary.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-code.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-directory.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-media.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-pdf.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-submodule.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-symlink-directory.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-symlink-file.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file-zip.svg create mode 100644 htdocs/theme/common/octicons/build/svg/file.svg create mode 100644 htdocs/theme/common/octicons/build/svg/flame.svg create mode 100644 htdocs/theme/common/octicons/build/svg/fold.svg create mode 100644 htdocs/theme/common/octicons/build/svg/gear.svg create mode 100644 htdocs/theme/common/octicons/build/svg/gift.svg create mode 100644 htdocs/theme/common/octicons/build/svg/gist-secret.svg create mode 100644 htdocs/theme/common/octicons/build/svg/gist.svg create mode 100644 htdocs/theme/common/octicons/build/svg/git-branch.svg create mode 100644 htdocs/theme/common/octicons/build/svg/git-commit.svg create mode 100644 htdocs/theme/common/octicons/build/svg/git-compare.svg create mode 100644 htdocs/theme/common/octicons/build/svg/git-merge.svg create mode 100644 htdocs/theme/common/octicons/build/svg/git-pull-request.svg create mode 100644 htdocs/theme/common/octicons/build/svg/globe.svg create mode 100644 htdocs/theme/common/octicons/build/svg/grabber.svg create mode 100644 htdocs/theme/common/octicons/build/svg/graph.svg create mode 100644 htdocs/theme/common/octicons/build/svg/heart.svg create mode 100644 htdocs/theme/common/octicons/build/svg/history.svg create mode 100644 htdocs/theme/common/octicons/build/svg/home.svg create mode 100644 htdocs/theme/common/octicons/build/svg/horizontal-rule.svg create mode 100644 htdocs/theme/common/octicons/build/svg/hubot.svg create mode 100644 htdocs/theme/common/octicons/build/svg/inbox.svg create mode 100644 htdocs/theme/common/octicons/build/svg/info.svg create mode 100644 htdocs/theme/common/octicons/build/svg/issue-closed.svg create mode 100644 htdocs/theme/common/octicons/build/svg/issue-opened.svg create mode 100644 htdocs/theme/common/octicons/build/svg/issue-reopened.svg create mode 100644 htdocs/theme/common/octicons/build/svg/italic.svg create mode 100644 htdocs/theme/common/octicons/build/svg/jersey.svg create mode 100644 htdocs/theme/common/octicons/build/svg/kebab-horizontal.svg create mode 100644 htdocs/theme/common/octicons/build/svg/kebab-vertical.svg create mode 100644 htdocs/theme/common/octicons/build/svg/key.svg create mode 100644 htdocs/theme/common/octicons/build/svg/keyboard.svg create mode 100644 htdocs/theme/common/octicons/build/svg/law.svg create mode 100644 htdocs/theme/common/octicons/build/svg/light-bulb.svg create mode 100644 htdocs/theme/common/octicons/build/svg/link-external.svg create mode 100644 htdocs/theme/common/octicons/build/svg/link.svg create mode 100644 htdocs/theme/common/octicons/build/svg/list-ordered.svg create mode 100644 htdocs/theme/common/octicons/build/svg/list-unordered.svg create mode 100644 htdocs/theme/common/octicons/build/svg/location.svg create mode 100644 htdocs/theme/common/octicons/build/svg/lock.svg create mode 100644 htdocs/theme/common/octicons/build/svg/logo-gist.svg create mode 100644 htdocs/theme/common/octicons/build/svg/logo-github.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mail-read.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mail.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mark-github.svg create mode 100644 htdocs/theme/common/octicons/build/svg/markdown.svg create mode 100644 htdocs/theme/common/octicons/build/svg/megaphone.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mention.svg create mode 100644 htdocs/theme/common/octicons/build/svg/milestone.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mirror.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mortar-board.svg create mode 100644 htdocs/theme/common/octicons/build/svg/mute.svg create mode 100644 htdocs/theme/common/octicons/build/svg/no-newline.svg create mode 100644 htdocs/theme/common/octicons/build/svg/note.svg create mode 100644 htdocs/theme/common/octicons/build/svg/octoface.svg create mode 100644 htdocs/theme/common/octicons/build/svg/organization.svg create mode 100644 htdocs/theme/common/octicons/build/svg/package.svg create mode 100644 htdocs/theme/common/octicons/build/svg/paintcan.svg create mode 100644 htdocs/theme/common/octicons/build/svg/pencil.svg create mode 100644 htdocs/theme/common/octicons/build/svg/person.svg create mode 100644 htdocs/theme/common/octicons/build/svg/pin.svg create mode 100644 htdocs/theme/common/octicons/build/svg/plug.svg create mode 100644 htdocs/theme/common/octicons/build/svg/plus-small.svg create mode 100644 htdocs/theme/common/octicons/build/svg/plus.svg create mode 100644 htdocs/theme/common/octicons/build/svg/primitive-dot.svg create mode 100644 htdocs/theme/common/octicons/build/svg/primitive-square.svg create mode 100644 htdocs/theme/common/octicons/build/svg/project.svg create mode 100644 htdocs/theme/common/octicons/build/svg/pulse.svg create mode 100644 htdocs/theme/common/octicons/build/svg/question.svg create mode 100644 htdocs/theme/common/octicons/build/svg/quote.svg create mode 100644 htdocs/theme/common/octicons/build/svg/radio-tower.svg create mode 100644 htdocs/theme/common/octicons/build/svg/reply.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo-clone.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo-force-push.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo-forked.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo-pull.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo-push.svg create mode 100644 htdocs/theme/common/octicons/build/svg/repo.svg create mode 100644 htdocs/theme/common/octicons/build/svg/report.svg create mode 100644 htdocs/theme/common/octicons/build/svg/rocket.svg create mode 100644 htdocs/theme/common/octicons/build/svg/rss.svg create mode 100644 htdocs/theme/common/octicons/build/svg/ruby.svg create mode 100644 htdocs/theme/common/octicons/build/svg/screen-full.svg create mode 100644 htdocs/theme/common/octicons/build/svg/screen-normal.svg create mode 100644 htdocs/theme/common/octicons/build/svg/search.svg create mode 100644 htdocs/theme/common/octicons/build/svg/server.svg create mode 100644 htdocs/theme/common/octicons/build/svg/settings.svg create mode 100644 htdocs/theme/common/octicons/build/svg/shield.svg create mode 100644 htdocs/theme/common/octicons/build/svg/sign-in.svg create mode 100644 htdocs/theme/common/octicons/build/svg/sign-out.svg create mode 100644 htdocs/theme/common/octicons/build/svg/smiley.svg create mode 100644 htdocs/theme/common/octicons/build/svg/squirrel.svg create mode 100644 htdocs/theme/common/octicons/build/svg/star.svg create mode 100644 htdocs/theme/common/octicons/build/svg/stop.svg create mode 100644 htdocs/theme/common/octicons/build/svg/sync.svg create mode 100644 htdocs/theme/common/octicons/build/svg/tag.svg create mode 100644 htdocs/theme/common/octicons/build/svg/tasklist.svg create mode 100644 htdocs/theme/common/octicons/build/svg/telescope.svg create mode 100644 htdocs/theme/common/octicons/build/svg/terminal.svg create mode 100644 htdocs/theme/common/octicons/build/svg/text-size.svg create mode 100644 htdocs/theme/common/octicons/build/svg/three-bars.svg create mode 100644 htdocs/theme/common/octicons/build/svg/thumbsdown.svg create mode 100644 htdocs/theme/common/octicons/build/svg/thumbsup.svg create mode 100644 htdocs/theme/common/octicons/build/svg/tools.svg create mode 100644 htdocs/theme/common/octicons/build/svg/trashcan.svg create mode 100644 htdocs/theme/common/octicons/build/svg/triangle-down.svg create mode 100644 htdocs/theme/common/octicons/build/svg/triangle-left.svg create mode 100644 htdocs/theme/common/octicons/build/svg/triangle-right.svg create mode 100644 htdocs/theme/common/octicons/build/svg/triangle-up.svg create mode 100644 htdocs/theme/common/octicons/build/svg/unfold.svg create mode 100644 htdocs/theme/common/octicons/build/svg/unmute.svg create mode 100644 htdocs/theme/common/octicons/build/svg/unverified.svg create mode 100644 htdocs/theme/common/octicons/build/svg/verified.svg create mode 100644 htdocs/theme/common/octicons/build/svg/versions.svg create mode 100644 htdocs/theme/common/octicons/build/svg/watch.svg create mode 100644 htdocs/theme/common/octicons/build/svg/x.svg create mode 100644 htdocs/theme/common/octicons/build/svg/zap.svg delete mode 100644 htdocs/theme/common/octicons/index.html create mode 100644 htdocs/theme/common/octicons/index.scss delete mode 100644 htdocs/theme/common/octicons/lib/data.json delete mode 100644 htdocs/theme/common/octicons/lib/octicons-master.sketch delete mode 100644 htdocs/theme/common/octicons/lib/svg/alert.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-down.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-left.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-right.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-small-down.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-small-left.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-small-right.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-small-up.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/arrow-up.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/beaker.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/bell.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/bold.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/book.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/bookmark.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/briefcase.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/broadcast.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/browser.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/bug.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/calendar.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/check.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/checklist.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/chevron-down.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/chevron-left.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/chevron-right.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/chevron-up.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/circle-slash.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/circuit-board.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/clippy.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/clock.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/cloud-download.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/cloud-upload.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/code.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/comment-discussion.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/comment.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/credit-card.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/dash.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/dashboard.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/database.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/desktop-download.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/device-camera-video.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/device-camera.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/device-desktop.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/device-mobile.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff-added.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff-ignored.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff-modified.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff-removed.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff-renamed.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/diff.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/ellipses.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/ellipsis.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/eye.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-binary.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-code.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-directory.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-media.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-pdf.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-submodule.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-symlink-directory.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-symlink-file.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-text.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file-zip.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/file.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/flame.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/fold.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/gear.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/gift.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/gist-secret.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/gist.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/git-branch.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/git-commit.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/git-compare.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/git-merge.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/git-pull-request.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/globe.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/grabber.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/graph.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/heart.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/history.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/home.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/horizontal-rule.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/hubot.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/inbox.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/info.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/issue-closed.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/issue-opened.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/issue-reopened.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/italic.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/jersey.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/key.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/keyboard.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/law.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/light-bulb.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/link-external.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/link.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/list-ordered.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/list-unordered.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/location.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/lock.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/logo-gist.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/logo-github.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mail-read.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mail-reply.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mail.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mark-github.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/markdown.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/megaphone.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mention.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/milestone.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mirror.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mortar-board.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/mute.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/no-newline.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/note.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/octoface.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/organization.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/package.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/paintcan.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/pencil.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/person.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/pin.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/plug.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/plus-small.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/plus.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/primitive-dot.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/primitive-square.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/project.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/pulse.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/question.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/quote.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/radio-tower.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/reply.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo-clone.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo-force-push.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo-forked.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo-pull.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo-push.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/repo.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/rocket.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/rss.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/ruby.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/screen-full.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/screen-normal.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/search.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/server.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/settings.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/shield.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/sign-in.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/sign-out.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/smiley.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/squirrel.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/star.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/stop.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/sync.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/tag.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/tasklist.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/telescope.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/terminal.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/text-size.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/three-bars.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/thumbsdown.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/thumbsup.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/tools.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/trashcan.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/triangle-down.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/triangle-left.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/triangle-right.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/triangle-up.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/unfold.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/unmute.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/unverified.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/verified.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/versions.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/watch.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/x.svg delete mode 100644 htdocs/theme/common/octicons/lib/svg/zap.svg diff --git a/htdocs/install/check.php b/htdocs/install/check.php index bba5ea85afa..112f742214d 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -62,7 +62,7 @@ pHeader('',''); // No next step for navigation buttons. Next step is defined //print "
\n"; //print $langs->trans("InstallEasy")."

\n"; -print '

Database '.$langs->trans("MiscellaneousChecks").":

\n"; +print '

Database '.$langs->trans("MiscellaneousChecks").":

\n"; // Check browser $useragent=$_SERVER['HTTP_USER_AGENT']; diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index a240973f095..b0affb2218a 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -111,7 +111,7 @@ if (! empty($force_install_message))
@@ -234,7 +234,7 @@ if (! empty($force_install_message)) @@ -468,7 +468,7 @@ if (! empty($force_install_message)) ?> diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index 920028a697c..62e27b1db33 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -356,7 +356,7 @@ if (! $error && $db->connected && $action == "set") } // Show title of step - print '

Configuration '.$langs->trans("ConfigurationFile").'

'; + print '

Configuration '.$langs->trans("ConfigurationFile").'

'; print '
  '; $searchpicto=$form->showFilterAndCheckAddButtons(0); @@ -299,14 +302,14 @@ print '
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).'  
'.$langs->trans("SubTotal").':'.price($sous_total_debit).''.price($sous_total_credit).'  
'; - if (! empty($line->numero_compte) && $line->numero_compte != '-1') print length_accountg($line->numero_compte) . ' : ' . $object->get_compte_desc($line->numero_compte); - else print ''.$langs->trans("Unknown").''; - print '
'; + if (! empty($line->numero_compte) && $line->numero_compte != '-1') print length_accountg($line->numero_compte) . ' : ' . $object->get_compte_desc($line->numero_compte); + else print ''.$langs->trans("Unknown").''; + print '
 '; - //if ($line->doc_type == 'supplier_invoice') - //if ($line->doc_type == 'customer_invoice') + //if ($line->doc_type == 'supplier_invoice') + //if ($line->doc_type == 'customer_invoice') print $line->doc_ref; - print '' . $line->label_operation . '' . $line->label_operation . '
(' . length_accounta($line->subledger_account) . ')
' . $line->label_operation . '' . $line->label_operation . '
(' . length_accounta($line->subledger_account) . ')
' . ($line->debit ? price($line->debit) :''). '' . ($line->credit ? price($line->credit) : '') . '' . $line->code_journal . '' . $journaltoshow . ''; print '' . img_edit() . ' '; - print '' . img_delete() . ''; + print '' . img_delete() . ''; print '
-

webserver trans("WebServer"); ?>

+

webserver trans("WebServer"); ?>


-

webserver trans("DolibarrDatabase"); ?>

+

webserver trans("DolibarrDatabase"); ?>


-

webserver trans("DatabaseSuperUserAccess"); ?>

+

webserver trans("DatabaseSuperUserAccess"); ?>

'; // Check parameter main_dir diff --git a/htdocs/install/step2.php b/htdocs/install/step2.php index 576e5e868a8..30b3ff7d64f 100644 --- a/htdocs/install/step2.php +++ b/htdocs/install/step2.php @@ -86,7 +86,7 @@ if (! is_writable($conffile)) if ($action == "set") { - print '

Database '.$langs->trans("Database").'

'; + print '

Database '.$langs->trans("Database").'

'; print '
'; $error=0; diff --git a/htdocs/install/step4.php b/htdocs/install/step4.php index ccd328b5092..92bcb3dc1a7 100644 --- a/htdocs/install/step4.php +++ b/htdocs/install/step4.php @@ -69,7 +69,7 @@ if (! is_writable($conffile)) } -print '

Database '.$langs->trans("DolibarrAdminLogin").'

'; +print '

Database '.$langs->trans("DolibarrAdminLogin").'

'; print $langs->trans("LastStepDesc").'

'; diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 5d289fb695e..d1d68596a94 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -106,7 +106,7 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09 { $actiondone=1; - print '

Database '.$langs->trans("DatabaseMigration").'

'; + print '

Database '.$langs->trans("DatabaseMigration").'

'; print '
'; $error=0; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 376a9b799a7..92ce07b2559 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -106,7 +106,7 @@ pHeader('','step5',GETPOST('action','aZ09')?GETPOST('action','aZ09'):'upgrade',' if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09'))) { - print '

Database '.$langs->trans('DataMigration').'

'; + print '

Database '.$langs->trans('DataMigration').'

'; print '
'; diff --git a/htdocs/theme/common/octicons/.gitignore b/htdocs/theme/common/octicons/.gitignore deleted file mode 100644 index b0e34801fac..00000000000 --- a/htdocs/theme/common/octicons/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.DS_Store -build -*.log diff --git a/htdocs/theme/common/octicons/.npmignore b/htdocs/theme/common/octicons/.npmignore deleted file mode 100644 index f50769fa751..00000000000 --- a/htdocs/theme/common/octicons/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.github -.travis.yml -Gruntfile.js -lib -test diff --git a/htdocs/theme/common/octicons/.travis.yml b/htdocs/theme/common/octicons/.travis.yml deleted file mode 100644 index 435bc15d7af..00000000000 --- a/htdocs/theme/common/octicons/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - '5' diff --git a/htdocs/theme/common/octicons/CHANGELOG.md b/htdocs/theme/common/octicons/CHANGELOG.md deleted file mode 100644 index 2085dcb0169..00000000000 --- a/htdocs/theme/common/octicons/CHANGELOG.md +++ /dev/null @@ -1,363 +0,0 @@ -### HEAD - -### 5.0.1 - -Fixes: - -- projects icon renders as a block, using `fill-rule` fixes it - -### 5.0.0 - -Adds: - -- `project` -- `note` -- `screen-full` -- `screen-normal` -- More node.js api endpoints for accessing icons https://github.com/primer/octicons/pull/120 -- Creating a spritesheet demo https://github.com/primer/octicons/pull/121 - -Removes: - -- Deprecating support for the webfont https://github.com/primer/octicons/pull/117 -- Stop checking `/build/` directory into repository https://github.com/primer/octicons/pull/118 -- Removing sass as a dependency https://github.com/primer/octicons/pull/119 - -### 4.4.0 - -Adds: - -- svg.json file that is accessible from node require - -### 4.3.0 - -Fixes: - -- Vertical alignment on `italic` - -Modifies: - -- `person` -- `organization` - -### 4.2.1 - -Fixes: - -- Removing inline sourcemap from `min` versions of css. - -### 4.2.0 - -Adds: - -- Keywords.json file that has an index of all octicons with alias names - -### 4.1.1 (June 16, 2016) - -Fixes: - -- Putting the `$octicons-font-path` back in the scss file. - -### 4.1.0 (June 6, 2016) - -Adds: - -- Installation docs https://github.com/primer/octicons/pull/94 -- `grabber` -- `plus-small` - -Modifies: - -- `smiley` - -Refines: - -- Renames `mail-reply` to `reply` and refines its shape. - -Fixes: - -- Revert license back to SPDX standard - -### 4.0.0 (June 6, 2016) - -Adds: - -- Whole new grunt build system including svg sprite sheet. -- adding css min https://github.com/primer/octicons/pull/60 -- adding woff2 format https://github.com/primer/octicons/issues/3 -- creates spritesheet of svg files https://github.com/primer/octicons/issues/88 - -Removes: - -- Bower support - -Fixes: - -- all svg icons include viewBox https://github.com/primer/octicons/issues/87 -- license in package.json https://github.com/primer/octicons/issues/85 - -### 3.5.0 (February 12, 2016) - -Adds: - -- `unverified` - -Refines: - -- `verified` - -### 3.4.1 (January 24, 2016) - -This includes various SVG viewport refinements. - -Refines: - -- `thumbs-down` -- `logo-github` - -### 3.4.0 (January 22, 2016) - -Adds: - -- `verified` -- `smiley` - -Removes: - -- `color-mode` - -Refines: - -- `primitive-dot` -- `horizontal-rule` -- `triangle-down` -- `triangle-up` -- `triangle-left` -- `triangle-right` -- `globe` -- `flame` -- `comment-discussion` - -### 3.3.0 (November 12, 2015) - -Adds: - -- `logo-gist` - -Resizes all our SVG to be 16x16 instead of 1024x1024 - -### 3.2.0 (November 6, 2015) - -Adds: - -- `bold` -- `text-size` -- `italic` -- `tasklist` - -It also normalizes some styling in: - -- `list-unordered` -- `list-ordered` -- `quote` -- `mention` -- `bookmark` -- `threebars` - -Removes - -- `screen-normal` -- `screen-full` - - -### 3.1.0 (August 13, 2015) - -Adds - -- `shield` - -This thickens stroke widths slightly on the following icons: - -- `circle-slash` -- `clock` -- `cloud-upload` -- `cloud-download` -- `dashboard` -- `info` -- `issue-closed` -- `issue` -- `issue-reopened` -- `history` -- `question` -- `search` - -Fills `comment-discussion` - -Thickens `x` to match `checkmark` - -### 3.0.1 (August 10, 2015) - -Some files were missing in `3.0.0` - -### 3.0.0 (August 10, 2015) - -Removes - -- `microscope` -- `beer` -- `split` -- `puzzle` -- `steps` -- `podium` -- `timer` -- all `alignment` icons -- all `move` icons -- all `playback` icons -- all `jump` icons - -Adds - -- `beaker` -- `bell` -- `desktop-download` -- `watch` - -Line-weight changes, sizing normalization, and new drawings - -- `circle-slash` -- `lock` -- `cloud-upload` -- `cloud-download` -- `plus` -- `✕` -- `broadcast` -- `lock` -- all `repo` icons -- organization -- person -- all `chevrons` & `triangles` -- all `diff` icons -- `clippy` -- all `issue` and circular icons -- `rss` -- `ruby` -- `cancel` -- `settings` -- `mirror` -- `external-link` -- `history` -- `gear` -- `settings` -- `info` -- `history` -- `package` -- `gist-secret` -- `rocket` -- `law` -- `telescope` -- `search` -- `tag` -- `normal-screen` -- `iphone` -- `no-new-line` -- `desktop` -- all `git` icons -- `circuit-board` -- `heart` -- `home` -- `briefcase` -- `wiki` -- `bookmark` -- `briefcase` -- `calendar` -- `color-mode` -- `comment` -- `discussions` -- `credit-card` -- `dashboard` -- `camera` -- `video` -- `bug` -- `desktop` -- `ellipses` -- `eye` -- all `files` & `folders` -- `fold` -- `unfold` -- `gift` -- `graph` -- `hubot` -- `inbox` -- `jersey` -- `keyboard` -- `light-bulb` -- `link` -- `location` -- `mail` -- `mail-read` -- `marker` -- `plug` -- `mute` -- `pencil` -- `push-pin` -- `fullscreen` -- `unfullscreen` -- `server` -- `sign-in` -- `sign-out` -- `tag` -- `terminal` -- `thumbs-up` -- `thumbs-down` -- `trash` -- `unmute` -- `versions` -- `gist` -- `key` -- `megaphone` -- `checklist` - -## 2.4.1 (June 2, 2015) - -- Add the scss file I forgot to include - -## 2.4.0 (June 2, 2015) - -- Add `octicons.scss` -- Revert path changes to `sprockets-octicons.scss`, as they broke octicons in sprockets. - -## 2.3.0 (May 28, 2015) - -- Add a path variable to `sprockets-octicons.scss` to be consistent with octicons.less` - -## 2.2.3 (May 21, 2015) - -- Use SPDX license identifiers in package.json - -## 2.2.2 (April 1, 2015) - -Fixes file icons for - -- `file-binary` -- `file-code` -- `file-media` -- `file-pdf` -- `file-symlink-file` -- `file-text` -- `file-zip` - -## 2.2.1 (March 30, 2015) - -- Fix vector artifact and smooth curves in `mark-github` - -## 2.2.0 (Feb 18, 2015) - -- Add two new icons: `thumbsup` and `thumbsdown` - -## 2.0.1 (June 16, 2014) - -- Add mention of github.com/logos to the license - -## 2.0.0 (June 16, 2014) - -- Hello world diff --git a/htdocs/theme/common/octicons/Gruntfile.js b/htdocs/theme/common/octicons/Gruntfile.js deleted file mode 100644 index 48e0c300427..00000000000 --- a/htdocs/theme/common/octicons/Gruntfile.js +++ /dev/null @@ -1,137 +0,0 @@ -var fs = require("fs") -var path = require("path") - -module.exports = function(grunt) { - - grunt.initConfig({ - - pkg: grunt.file.readJSON('package.json'), - - cssnano: { - options: {}, - dist: { - files: { - 'build/octicons.min.css': 'build/octicons.css' - } - } - }, - - svgmin: { - dist: { - options: { - plugins: [ - {removeTitle: true}, - {removeStyleElement: true}, - {removeAttrs: { attrs: ['id', 'class', 'data-name', 'fill'] }}, - {removeEmptyContainers: true}, - {sortAttrs: true}, - {removeUselessDefs: true}, - {removeEmptyText: true}, - {removeEditorsNSData: true}, - {removeEmptyAttrs: true}, - {removeHiddenElems: true} - ] - }, - files: [{ - expand: true, - cwd: 'lib/svg', - src: ['*.svg'], - dest: 'build/svg' - }] - } - }, - - svgstore: { - options: { - includeTitleElement: false, - inheritviewbox: true, - includedemo: function(arg) { - var octicons = require("./index.js") - - var icons = function() { - var result = [] - Object.keys(octicons).forEach(function(key){ - result.push("
" + octicons[key].toSVGUse({ height: 32 }) + "
" + key + "
") - }) - return result.join("\n") - } - - return ` - - - - - Octicons Spritesheet test - - - - - ${arg.svg} -
Octicons SVG Spritesheet demo
-
All the icons rendered below use the svg spriteheet located in the /build/ directory.
-
- ${icons()} -
- - -` - } - }, - default: { - files: { - "build/sprite.octicons.svg": ['build/svg/*.svg'] - } - }, - }, - - clean: { - build: [ - 'build/*' - ] - }, - - copy: { - css: { - src: "lib/octicons.css", - dest: "build/octicons.css" - } - } - }); - - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-svgstore'); - grunt.loadNpmTasks('grunt-svgmin'); - grunt.loadNpmTasks('grunt-cssnano'); - - // build tasks - grunt.registerTask('css', ['copy', 'cssnano']); - grunt.registerTask('svg', ['clean', 'svgmin']); - - // default task, build /dist/ - grunt.registerTask('default', [ 'svg', 'css', 'json:svg', 'svgstore']); - - grunt.registerTask('json:svg', 'add svg string to data.json build', function() { - var files = fs.readdirSync("./build/svg/") - var data = JSON.parse(fs.readFileSync("./lib/data.json")) - - files.forEach(function(file) { - var svg = fs.readFileSync(path.resolve("./build/svg", file)) - var key = path.basename(file, ".svg") - if (data[key]) { - var raw = svg.toString() - data[key].path = //g.exec(raw)[0] - data[key].height = /height="(\d+)"/g.exec(raw)[1] - data[key].width = /width="(\d+)"/g.exec(raw)[1] - } - }) - - fs.writeFileSync("build/data.json", JSON.stringify(data)); - }) -}; diff --git a/htdocs/theme/common/octicons/LICENSE b/htdocs/theme/common/octicons/LICENSE index 4cf2020ce77..9317777c6c3 100644 --- a/htdocs/theme/common/octicons/LICENSE +++ b/htdocs/theme/common/octicons/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2012-2016 GitHub, Inc. +Copyright (c) 2018 GitHub Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/htdocs/theme/common/octicons/README.md b/htdocs/theme/common/octicons/README.md index 84edd84dce5..e7cb3064a8a 100644 --- a/htdocs/theme/common/octicons/README.md +++ b/htdocs/theme/common/octicons/README.md @@ -1,29 +1,25 @@ # GitHub Octicons -[![NPM version](https://img.shields.io/npm/v/octicons.svg)](https://www.npmjs.org/package/octicons) +[![npm version](https://img.shields.io/npm/v/octicons.svg)](https://www.npmjs.org/package/octicons) [![Build Status](https://travis-ci.org/primer/octicons.svg?branch=master)](https://travis-ci.org/primer/octicons) > Octicons are a scalable set of icons handcrafted with <3 by GitHub. ## Install -**NOTE:** The compiled files are located in `/build/`. This directory is located in the published npm package. Which means you can access it when you `npm install octicons`. You can also build this directory by following the [building octicons directions](#building-octicons). The files in the `/lib/` directory are the raw source files and are not compiled or optimized. +**NOTE:** The compiled files are located in `build/`. This directory is located in the published npm package. Which means you can access it when you `npm install octicons`. You can also build this directory by following the [building octicons directions](#building-octicons). The files in the `lib/` directory are the raw source files and are not compiled or optimized. -#### NPM +#### npm This repository is distributed with [npm][npm]. After [installing npm][install-npm], you can install `octicons` with this command. ``` -$ npm install --save octicons +$ npm install octicons --save ``` ## Usage -For all the usages, we recommend using the CSS located in `./build/octicons.css`. This is some simple CSS to normalize the icons and inherit colors. - -### Spritesheet - -With a [SVG sprite icon system](https://css-tricks.com/svg-sprites-use-better-icon-fonts/) you can include the sprite sheet located `./build/sprite.octicons.svg` after you [build the icons](#building-octicons) or from the npm package. There is a demo of how to use the spritesheet in the build directory also. +For all the usages, we recommend using the CSS located in `build/build.css`. This is some simple CSS to normalize the icons and inherit colors. ### Node @@ -47,11 +43,11 @@ octicons.alert // toSVG: [Function] } ``` -There will be a key for every icon, with `keywords` and `svg`. +There will be a key for every icon, with [`toSVG`](#octiconsalerttosvg) and other properties. #### `octicons.alert.symbol` -Returns the string of the symbol name +Returns the string of the symbol name, same as the key for that icon. ```js octicons.x.symbol @@ -60,7 +56,7 @@ octicons.x.symbol #### `octicons.person.path` -Path returns the string representation of the path of the icon. +Returns the string representation of the path of the icon. ```js octicons.x.path @@ -69,7 +65,7 @@ octicons.x.path #### `octicons.issue.options` -This is a json object of all the `options` that will be added to the output tag. +This is an object of all the attributes that will be added to the output tag. ```js octicons.x.options @@ -78,15 +74,15 @@ octicons.x.options #### `octicons.alert.width` -Width is the icon's true width. Based on the svg view box width. _Note, this doesn't change if you scale it up with size options, it only is the natural width of the icon_ +Returns the icon's true width, based on the svg view box width. _Note, this doesn't change if you scale it up with size options, it only is the natural width of the icon._ #### `octicons.alert.height` -Height is the icon's true height. Based on the svg view box height. _Note, this doesn't change if you scale it up with size options, it only is the natural height of the icon_ +Returns the icon's true height, based on the svg view box height. _Note, this doesn't change if you scale it up with size options, it only is the natural height of the icon._ #### `keywords` -Returns an array of keywords for the icon. The data [comes from the octicons repository](https://github.com/primer/octicons/blob/master/lib/data.json). Consider contributing more aliases for the icons. +Returns an array of keywords for the icon. The data comes from the [data file in lib](../data.json). Consider contributing more aliases for the icons. ```js octicons.x.keywords @@ -95,7 +91,7 @@ octicons.x.keywords #### `octicons.alert.toSVG()` -Returns a string of the svg tag +Returns a string of the `` tag. ```js octicons.x.toSVG() @@ -131,64 +127,16 @@ octicons.x.toSVG({ "width": 45 }) // ``` -#### `octicons.alert.toSVGUse()` - -Returns a string of the svg tag with the `` tag, for use with the spritesheet located in the /build/ directory. - -```js -octicons.x.toSVGUse() -// -``` - -### Ruby - -If your environment is Ruby on Rails, we have a [octicons_helper](https://github.com/primer/octicons_helper) gem available that renders SVG in your page. The octicons_helper uses the [octicons_gem](https://github.com/primer/octicons_gem) to do the computing and reading of the SVG files. - -### Jekyll - -For jekyll, there's a [jekyll-octicons](https://github.com/primer/jekyll-octicons) plugin available. This works exactly like the octicons_helper. - -## Changing, adding, or deleting icons - -1. Open the [Sketch document][sketch-document] in `/lib/`. Each icon exists as an artboard within our master Sketch document. If you’re adding an icon, duplicate one of the artboards and add your shapes to it. Be sure to give your artboard a name that makes sense. -2. Once you’re happy with your icon set, choose File > Export… -3. Choose all the artboards you’d like to export and then press “Export” -4. Export to `/lib/svg/` - -You’ll next need to build your Octicons. - -## Building Octicons - -All the files you need will be in the `/build/` directory already, but if you’ve made changes to the `/lib/` directory and need to regenerate, follow these steps: - -1. Open the Octicons directory in Terminal -2. `npm install` to install all dependencies for the project. -3. Run the command `npm run build`. This will run the grunt task to build the SVGs, placing them in the `/build/` directory. - -## Publishing - -If you have access to publish this repository, these are the steps to publishing. If you need access, contact [#design-systems](https://github.slack.com/archives/design-systems). - -1. Update the [CHANGELOG.md](./CHANGELOG.md) with relevant version number and any updates made to the repository. -2. `npm version ` Run [npm version](https://docs.npmjs.com/cli/version) inputing the relevant version type. The versioning is [semver](http://semver.org/), so version appropriately based on what has changed. -3. `npm publish` This will publish the new version to npmjs.org -4. `git push && git push --tags` Push all these changes to origin. - ## License -(c) 2012-2016 GitHub, Inc. +(c) GitHub, Inc. When using the GitHub logos, be sure to follow the [GitHub logo guidelines](https://github.com/logos). -_SVG License:_ [SIL OFL 1.1](http://scripts.sil.org/OFL) -Applies to all SVG files - -_Code License:_ [MIT](./LICENSE) -Applies to all other files +[MIT](./LICENSE) [primer]: https://github.com/primer/primer [docs]: http://primercss.io/ [npm]: https://www.npmjs.com/ [install-npm]: https://docs.npmjs.com/getting-started/installing-node [sass]: http://sass-lang.com/ -[sketch-document]: https://github.com/primer/octicons/blob/master/lib/octicons-master.sketch diff --git a/htdocs/theme/common/octicons/lib/octicons.css b/htdocs/theme/common/octicons/build/build.css similarity index 100% rename from htdocs/theme/common/octicons/lib/octicons.css rename to htdocs/theme/common/octicons/build/build.css diff --git a/htdocs/theme/common/octicons/build/data.json b/htdocs/theme/common/octicons/build/data.json new file mode 100644 index 00000000000..41fa0740b8a --- /dev/null +++ b/htdocs/theme/common/octicons/build/data.json @@ -0,0 +1 @@ +{"alert":{"name":"alert","figma":{"id":"0:5","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["warning","triangle","exclamation","point"],"width":16,"height":16,"path":""},"arrow-down":{"name":"arrow-down","figma":{"id":"0:8","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction"],"width":10,"height":16,"path":""},"arrow-left":{"name":"arrow-left","figma":{"id":"0:10","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction"],"width":10,"height":16,"path":""},"arrow-right":{"name":"arrow-right","figma":{"id":"0:12","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction"],"width":10,"height":16,"path":""},"arrow-up":{"name":"arrow-up","figma":{"id":"0:14","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction"],"width":10,"height":16,"path":""},"arrow-small-down":{"name":"arrow-small-down","figma":{"id":"0:16","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction","little","tiny"],"width":6,"height":16,"path":""},"arrow-small-left":{"name":"arrow-small-left","figma":{"id":"0:18","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction","little","tiny"],"width":6,"height":16,"path":""},"arrow-small-right":{"name":"arrow-small-right","figma":{"id":"0:20","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction","little","tiny"],"width":6,"height":16,"path":""},"arrow-small-up":{"name":"arrow-small-up","figma":{"id":"0:22","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["point","direction","little","tiny"],"width":6,"height":16,"path":""},"beaker":{"name":"beaker","figma":{"id":"0:26","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["experiment","labs","experimental","feature","test","science","education","study","development","testing"],"width":16,"height":16,"path":""},"bell":{"name":"bell","figma":{"id":"0:34","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["notification"],"width":14,"height":16,"path":""},"bold":{"name":"bold","figma":{"id":"0:38","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["markdown","bold","text"],"width":10,"height":16,"path":""},"book":{"name":"book","figma":{"id":"0:43","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","wiki","readme"],"width":16,"height":16,"path":""},"bookmark":{"name":"bookmark","figma":{"id":"0:54","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["tab","star"],"width":10,"height":16,"path":""},"briefcase":{"name":"briefcase","figma":{"id":"0:58","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["suitcase","business"],"width":14,"height":16,"path":""},"broadcast":{"name":"broadcast","figma":{"id":"0:63","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["rss","radio","signal"],"width":16,"height":16,"path":""},"browser":{"name":"browser","figma":{"id":"0:70","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["window","web"],"width":14,"height":16,"path":""},"bug":{"name":"bug","figma":{"id":"0:78","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["insect","issue"],"width":16,"height":16,"path":""},"calendar":{"name":"calendar","figma":{"id":"0:82","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["time","day","month","year","date","appointment"],"width":14,"height":16,"path":""},"check":{"name":"check","figma":{"id":"0:104","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["mark","yes","confirm","accept","ok","success"],"width":12,"height":16,"path":""},"checklist":{"name":"checklist","figma":{"id":"0:108","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["todo","tasks"],"width":16,"height":16,"path":""},"chevron-down":{"name":"chevron-down","figma":{"id":"0:117","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["triangle","arrow"],"width":10,"height":16,"path":""},"chevron-left":{"name":"chevron-left","figma":{"id":"0:119","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["triangle","arrow"],"width":8,"height":16,"path":""},"chevron-right":{"name":"chevron-right","figma":{"id":"0:121","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["triangle","arrow"],"width":8,"height":16,"path":""},"chevron-up":{"name":"chevron-up","figma":{"id":"0:123","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["triangle","arrow"],"width":10,"height":16,"path":""},"circle-slash":{"name":"circle-slash","figma":{"id":"0:127","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["no","deny","fail","failure","error","bad"],"width":14,"height":16,"path":""},"circuit-board":{"name":"circuit-board","figma":{"id":"0:132","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["developer","hardware","electricity"],"width":14,"height":16,"path":""},"clippy":{"name":"clippy","figma":{"id":"0:138","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["copy","paste","save","capture","clipboard"],"width":14,"height":16,"path":""},"clock":{"name":"clock","figma":{"id":"0:147","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["time","hour","minute","second","watch"],"width":14,"height":16,"path":""},"cloud-download":{"name":"cloud-download","figma":{"id":"0:152","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["save","install","get"],"width":16,"height":16,"path":""},"cloud-upload":{"name":"cloud-upload","figma":{"id":"0:156","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["put","export"],"width":16,"height":16,"path":""},"code":{"name":"code","figma":{"id":"0:160","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["brackets"],"width":14,"height":16,"path":""},"comment-discussion":{"name":"comment-discussion","figma":{"id":"0:164","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["converse","talk"],"width":16,"height":16,"path":""},"comment":{"name":"comment","figma":{"id":"0:169","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["speak","bubble"],"width":16,"height":16,"path":""},"credit-card":{"name":"credit-card","figma":{"id":"0:173","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["money","billing","payments","transactions"],"width":16,"height":16,"path":""},"dash":{"name":"dash","figma":{"id":"0:178","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["hyphen","range"],"width":8,"height":16,"path":""},"dashboard":{"name":"dashboard","figma":{"id":"0:182","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["speed","dial"],"width":16,"height":16,"path":""},"database":{"name":"database","figma":{"id":"0:190","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["disks","data"],"width":12,"height":16,"path":""},"desktop-download":{"name":"desktop-download","figma":{"id":"0:196","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["clone","download"],"width":16,"height":16,"path":""},"device-camera-video":{"name":"device-camera-video","figma":{"id":"0:198","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["watch","view","media","stream"],"width":16,"height":16,"path":""},"device-camera":{"name":"device-camera","figma":{"id":"0:202","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["photo","picture","image","snapshot"],"width":16,"height":16,"path":""},"device-desktop":{"name":"device-desktop","figma":{"id":"0:208","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["computer","monitor"],"width":16,"height":16,"path":""},"device-mobile":{"name":"device-mobile","figma":{"id":"0:212","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["phone","iphone","cellphone"],"width":10,"height":16,"path":""},"diff-added":{"name":"diff-added","figma":{"id":"0:217","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["new","addition","plus"],"width":14,"height":16,"path":""},"diff-ignored":{"name":"diff-ignored","figma":{"id":"0:222","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["slash"],"width":14,"height":16,"path":""},"diff-modified":{"name":"diff-modified","figma":{"id":"0:227","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["dot","changed","updated"],"width":14,"height":16,"path":""},"diff-removed":{"name":"diff-removed","figma":{"id":"0:232","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["deleted","subtracted","dash"],"width":14,"height":16,"path":""},"diff-renamed":{"name":"diff-renamed","figma":{"id":"0:237","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["moved","arrow"],"width":14,"height":16,"path":""},"diff":{"name":"diff","figma":{"id":"0:242","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["difference","changes","compare"],"width":13,"height":16,"path":""},"ellipsis":{"name":"ellipsis","figma":{"id":"0:249","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["dot","read","more","hidden","expand"],"width":12,"height":16,"path":""},"eye":{"name":"eye","figma":{"id":"0:255","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["look","watch","see"],"width":16,"height":16,"path":""},"file-binary":{"name":"file-binary","figma":{"id":"0:260","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["image","video","word","powerpoint","excel"],"width":12,"height":16,"path":""},"file-code":{"name":"file-code","figma":{"id":"0:270","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["text","javascript","html","css","php","ruby","coffeescript","sass","scss"],"width":12,"height":16,"path":""},"file-directory":{"name":"file-directory","figma":{"id":"0:276","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["folder"],"width":14,"height":16,"path":""},"file-media":{"name":"file-media","figma":{"id":"0:280","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["image","video","audio"],"width":12,"height":16,"path":""},"file-pdf":{"name":"file-pdf","figma":{"id":"0:285","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["adobe"],"width":12,"height":16,"path":""},"file-submodule":{"name":"file-submodule","figma":{"id":"0:292","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["folder"],"width":14,"height":16,"path":""},"file-symlink-directory":{"name":"file-symlink-directory","figma":{"id":"0:298","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["folder","subfolder","link","alias"],"width":14,"height":16,"path":""},"file-symlink-file":{"name":"file-symlink-file","figma":{"id":"0:303","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["link","alias"],"width":12,"height":16,"path":""},"file":{"name":"file","figma":{"id":"0:308","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["file","text","words"],"width":12,"height":16,"path":""},"file-zip":{"name":"file-zip","figma":{"id":"0:316","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["compress","archive"],"width":12,"height":16,"path":""},"flame":{"name":"flame","figma":{"id":"0:325","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["fire","hot","burn","trending"],"width":12,"height":16,"path":""},"fold":{"name":"fold","figma":{"id":"0:329","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["unfold","hide","collapse"],"width":14,"height":16,"path":""},"gear":{"name":"gear","figma":{"id":"0:334","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["settings"],"width":14,"height":16,"path":""},"gift":{"name":"gift","figma":{"id":"0:338","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["package","present","skill","craft","freebie"],"width":14,"height":16,"path":""},"gist-secret":{"name":"gist-secret","figma":{"id":"0:347","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["gist","secret","private"],"width":14,"height":16,"path":""},"gist":{"name":"gist","figma":{"id":"0:354","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["gist","github"],"width":12,"height":16,"path":""},"git-branch":{"name":"git-branch","figma":{"id":"0:360","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["fork","branch","git","duplicate"],"width":10,"height":16,"path":""},"git-commit":{"name":"git-commit","figma":{"id":"0:366","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["save"],"width":14,"height":16,"path":""},"git-compare":{"name":"git-compare","figma":{"id":"0:370","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["difference","changes"],"width":14,"height":16,"path":""},"git-merge":{"name":"git-merge","figma":{"id":"0:376","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["join"],"width":12,"height":16,"path":""},"git-pull-request":{"name":"git-pull-request","figma":{"id":"0:382","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["review"],"width":12,"height":16,"path":""},"globe":{"name":"globe","figma":{"id":"0:389","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["world","earth","planet"],"width":14,"height":16,"path":""},"graph":{"name":"graph","figma":{"id":"0:396","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["trend","stats","statistics"],"width":16,"height":16,"path":""},"heart":{"name":"heart","figma":{"id":"0:400","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["love","beat"],"width":12,"height":16,"path":""},"history":{"name":"history","figma":{"id":"0:404","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["time","past","revert","back"],"width":14,"height":16,"path":""},"home":{"name":"home","figma":{"id":"0:408","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["welcome","index","house","building"],"width":16,"height":16,"path":""},"horizontal-rule":{"name":"horizontal-rule","figma":{"id":"0:412","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["hr"],"width":10,"height":16,"path":""},"hubot":{"name":"hubot","figma":{"id":"0:419","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["robot","bot"],"width":14,"height":16,"path":""},"inbox":{"name":"inbox","figma":{"id":"0:426","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["mail","todo","new","messages"],"width":14,"height":16,"path":""},"info":{"name":"info","figma":{"id":"0:430","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["help"],"width":14,"height":16,"path":""},"issue-closed":{"name":"issue-closed","figma":{"id":"0:436","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["done","complete"],"width":16,"height":16,"path":""},"issue-opened":{"name":"issue-opened","figma":{"id":"0:442","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["new"],"width":14,"height":16,"path":""},"issue-reopened":{"name":"issue-reopened","figma":{"id":"0:448","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["regression"],"width":14,"height":16,"path":""},"italic":{"name":"italic","figma":{"id":"0:454","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["font","italic","style"],"width":6,"height":16,"path":""},"jersey":{"name":"jersey","figma":{"id":"0:458","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["team","game","basketball"],"width":14,"height":16,"path":""},"keyboard":{"name":"keyboard","figma":{"id":"0:466","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["type","keys","write","shortcuts"],"width":16,"height":16,"path":""},"law":{"name":"law","figma":{"id":"0:490","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["legal","bill"],"width":14,"height":16,"path":""},"link":{"name":"link","figma":{"id":"0:496","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["connect","hyperlink"],"width":16,"height":16,"path":""},"list-ordered":{"name":"list-ordered","figma":{"id":"0:500","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["numbers","tasks","todo","items"],"width":12,"height":16,"path":""},"list-unordered":{"name":"list-unordered","figma":{"id":"0:508","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["bullet","point","tasks","todo","items"],"width":12,"height":16,"path":""},"location":{"name":"location","figma":{"id":"0:516","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["here","marker"],"width":12,"height":16,"path":""},"lock":{"name":"lock","figma":{"id":"0:521","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["secure","safe","protected"],"width":12,"height":16,"path":""},"logo-gist":{"name":"logo-gist","figma":{"id":"0:529","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["brand","github","logo"],"width":25,"height":16,"path":""},"logo-github":{"name":"logo-github","figma":{"id":"0:536","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["brand","github","logo"],"width":45,"height":16,"path":""},"mail-read":{"name":"mail-read","figma":{"id":"0:547","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["email","open"],"width":14,"height":16,"path":""},"reply":{"name":"reply","figma":{"id":"0:554","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["reply all","back"],"width":14,"height":16,"path":""},"mail":{"name":"mail","figma":{"id":"0:558","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["email","unread"],"width":14,"height":16,"path":""},"mark-github":{"name":"mark-github","figma":{"id":"0:563","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["octocat","brand","github","logo"],"width":16,"height":16,"path":""},"markdown":{"name":"markdown","figma":{"id":"0:567","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["markup","style"],"width":16,"height":16,"path":""},"megaphone":{"name":"megaphone","figma":{"id":"0:572","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["bullhorn","loud","shout","broadcast"],"width":16,"height":16,"path":""},"mention":{"name":"mention","figma":{"id":"0:579","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["at","ping"],"width":14,"height":16,"path":""},"milestone":{"name":"milestone","figma":{"id":"0:583","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["marker"],"width":14,"height":16,"path":""},"mirror":{"name":"mirror","figma":{"id":"0:589","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["reflect"],"width":16,"height":16,"path":""},"mortar-board":{"name":"mortar-board","figma":{"id":"0:594","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["education","learn","teach"],"width":16,"height":16,"path":""},"mute":{"name":"mute","figma":{"id":"0:599","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["quiet","sound","audio","turn","off"],"width":16,"height":16,"path":""},"no-newline":{"name":"no-newline","figma":{"id":"0:603","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["return"],"width":16,"height":16,"path":""},"octoface":{"name":"octoface","figma":{"id":"0:609","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["octocat","brand"],"width":16,"height":16,"path":""},"organization":{"name":"organization","figma":{"id":"0:613","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["people","group","team"],"width":16,"height":16,"path":""},"package":{"name":"package","figma":{"id":"0:617","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["box","ship"],"width":16,"height":16,"path":""},"paintcan":{"name":"paintcan","figma":{"id":"0:624","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["style","theme","art","color"],"width":12,"height":16,"path":""},"pencil":{"name":"pencil","figma":{"id":"0:630","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["edit","change","update","write"],"width":14,"height":16,"path":""},"person":{"name":"person","figma":{"id":"0:633","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["people","man","woman","human"],"width":12,"height":16,"path":""},"pin":{"name":"pin","figma":{"id":"0:635","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["save","star","bookmark"],"width":16,"height":16,"path":""},"plug":{"name":"plug","figma":{"id":"0:637","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["hook","webhook"],"width":14,"height":16,"path":""},"plus":{"name":"plus","figma":{"id":"0:639","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["add","new","more"],"width":12,"height":16,"path":""},"primitive-dot":{"name":"primitive-dot","figma":{"id":"0:641","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["circle"],"width":8,"height":16,"path":""},"primitive-square":{"name":"primitive-square","figma":{"id":"0:643","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["box"],"width":8,"height":16,"path":""},"pulse":{"name":"pulse","figma":{"id":"0:645","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["graph","trend","line","activity"],"width":14,"height":16,"path":""},"question":{"name":"question","figma":{"id":"0:649","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["help","explain"],"width":14,"height":16,"path":""},"quote":{"name":"quote","figma":{"id":"0:655","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["quotation"],"width":14,"height":16,"path":""},"radio-tower":{"name":"radio-tower","figma":{"id":"0:659","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["broadcast"],"width":16,"height":16,"path":""},"repo-clone":{"name":"repo-clone","figma":{"id":"0:669","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","repository"],"width":16,"height":16,"path":""},"repo-force-push":{"name":"repo-force-push","figma":{"id":"0:681","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","put"],"width":12,"height":16,"path":""},"repo-forked":{"name":"repo-forked","figma":{"id":"0:685","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","copy"],"width":10,"height":16,"path":""},"repo-pull":{"name":"repo-pull","figma":{"id":"0:691","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","get"],"width":16,"height":16,"path":""},"repo-push":{"name":"repo-push","figma":{"id":"0:700","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","repository","put"],"width":12,"height":16,"path":""},"repo":{"name":"repo","figma":{"id":"0:706","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["book","journal","repository"],"width":12,"height":16,"path":""},"rocket":{"name":"rocket","figma":{"id":"0:715","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["staff","stafftools","blast","off","space","launch","ship"],"width":16,"height":16,"path":""},"rss":{"name":"rss","figma":{"id":"0:719","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["broadcast","feed","atom"],"width":10,"height":16,"path":""},"ruby":{"name":"ruby","figma":{"id":"0:724","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["code","language"],"width":16,"height":16,"path":""},"search":{"name":"search","figma":{"id":"0:729","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["magnifying","glass"],"width":16,"height":16,"path":""},"server":{"name":"server","figma":{"id":"0:733","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["computers","racks","ops"],"width":12,"height":16,"path":""},"settings":{"name":"settings","figma":{"id":"0:751","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["sliders","filters","controls","levels"],"width":16,"height":16,"path":""},"shield":{"name":"shield","figma":{"id":"0:762","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["protect","shield","lock"],"width":14,"height":16,"path":""},"sign-in":{"name":"sign-in","figma":{"id":"0:764","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["door","arrow","direction","enter","log in"],"width":14,"height":16,"path":""},"sign-out":{"name":"sign-out","figma":{"id":"0:768","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["door","arrow","direction","leave","log out"],"width":16,"height":16,"path":""},"smiley":{"name":"smiley","figma":{"id":"0:772","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["emoji","smile","mood","emotion"],"width":16,"height":16,"path":""},"squirrel":{"name":"squirrel","figma":{"id":"0:779","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["ship","shipit","launch"],"width":16,"height":16,"path":""},"star":{"name":"star","figma":{"id":"0:781","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["save","remember","like"],"width":14,"height":16,"path":""},"stop":{"name":"stop","figma":{"id":"0:785","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["block","spam","report"],"width":14,"height":16,"path":""},"sync":{"name":"sync","figma":{"id":"0:791","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["cycle","refresh","loop"],"width":12,"height":16,"path":""},"tag":{"name":"tag","figma":{"id":"0:795","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["release"],"width":14,"height":16,"path":""},"tasklist":{"name":"tasklist","figma":{"id":"0:800","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["todo"],"width":16,"height":16,"path":""},"telescope":{"name":"telescope","figma":{"id":"0:806","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["science","space","look","view","explore"],"width":14,"height":16,"path":""},"terminal":{"name":"terminal","figma":{"id":"0:815","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["code","ops","shell"],"width":14,"height":16,"path":""},"text-size":{"name":"text-size","figma":{"id":"0:821","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["font","size","text"],"width":18,"height":16,"path":""},"three-bars":{"name":"three-bars","figma":{"id":"0:826","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["hamburger","menu","dropdown"],"width":12,"height":16,"path":""},"thumbsdown":{"name":"thumbsdown","figma":{"id":"0:831","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["thumb","thumbsdown","rejected","dislike"],"width":16,"height":16,"path":""},"thumbsup":{"name":"thumbsup","figma":{"id":"0:835","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["thumb","thumbsup","prop","ship","like"],"width":16,"height":16,"path":""},"tools":{"name":"tools","figma":{"id":"0:839","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["screwdriver","wrench","settings"],"width":16,"height":16,"path":""},"trashcan":{"name":"trashcan","figma":{"id":"0:844","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["garbage","rubbish","recycle","delete"],"width":12,"height":16,"path":""},"triangle-down":{"name":"triangle-down","figma":{"id":"0:847","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["arrow","point","direction"],"width":12,"height":16,"path":""},"triangle-left":{"name":"triangle-left","figma":{"id":"0:849","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["arrow","point","direction"],"width":6,"height":16,"path":""},"triangle-right":{"name":"triangle-right","figma":{"id":"0:851","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["arrow","point","direction"],"width":6,"height":16,"path":""},"triangle-up":{"name":"triangle-up","figma":{"id":"0:853","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["arrow","point","direction"],"width":12,"height":16,"path":""},"unfold":{"name":"unfold","figma":{"id":"0:857","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["expand","open","reveal"],"width":14,"height":16,"path":""},"unmute":{"name":"unmute","figma":{"id":"0:862","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["loud","volume","audio","sound","play"],"width":16,"height":16,"path":""},"project":{"name":"project","figma":{"id":"0:868","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["board","kanban","columns","scrum"],"width":15,"height":16,"path":""},"kebab-horizontal":{"name":"kebab-horizontal","figma":{"id":"0:875","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["kebab","dot","menu","more"],"width":13,"height":16,"path":""},"kebab-vertical":{"name":"kebab-vertical","figma":{"id":"0:880","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["kebab","dot","menu","more"],"width":3,"height":16,"path":""},"report":{"name":"report","figma":{"id":"0:885","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["report","abuse","flag"],"width":16,"height":16,"path":""},"note":{"name":"note","figma":{"id":"0:891","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["card","paper","ticket"],"width":14,"height":16,"path":""},"screen-full":{"name":"screen-full","figma":{"id":"0:898","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["fullscreen","expand"],"width":14,"height":16,"path":""},"screen-normal":{"name":"screen-normal","figma":{"id":"0:906","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["fullscreen","expand","exit"],"width":14,"height":16,"path":""},"unverified":{"name":"unverified","figma":{"id":"0:914","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["insecure","untrusted","signed"],"width":16,"height":16,"path":""},"verified":{"name":"verified","figma":{"id":"0:919","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["trusted","secure","trustworthy","signed"],"width":16,"height":16,"path":""},"versions":{"name":"versions","figma":{"id":"0:923","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["history","commits"],"width":14,"height":16,"path":""},"watch":{"name":"watch","figma":{"id":"0:929","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["wait","hourglass","time","date"],"width":12,"height":16,"path":""},"x":{"name":"x","figma":{"id":"0:932","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["remove","close","delete"],"width":12,"height":16,"path":""},"zap":{"name":"zap","figma":{"id":"0:934","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["electricity","lightning","props","like","star","save"],"width":10,"height":16,"path":""},"key":{"name":"key","figma":{"id":"0:938","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["key","lock","secure","safe"],"width":14,"height":16,"path":""},"grabber":{"name":"grabber","figma":{"id":"0:942","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["mover","drap","drop","sort"],"width":8,"height":16,"path":""},"plus-small":{"name":"plus-small","figma":{"id":"0:947","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["add","new","more","small"],"width":7,"height":16,"path":""},"light-bulb":{"name":"light-bulb","figma":{"id":"0:951","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["idea"],"width":12,"height":16,"path":""},"link-external":{"name":"link-external","figma":{"id":"0:956","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["out","see","more","go","to"],"width":12,"height":16,"path":""}} \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/alert.svg b/htdocs/theme/common/octicons/build/svg/alert.svg new file mode 100644 index 00000000000..ca50ea8b557 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-down.svg b/htdocs/theme/common/octicons/build/svg/arrow-down.svg new file mode 100644 index 00000000000..c1acf0ac259 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-left.svg b/htdocs/theme/common/octicons/build/svg/arrow-left.svg new file mode 100644 index 00000000000..f3cda4f5067 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-right.svg b/htdocs/theme/common/octicons/build/svg/arrow-right.svg new file mode 100644 index 00000000000..04a4fbffb37 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-small-down.svg b/htdocs/theme/common/octicons/build/svg/arrow-small-down.svg new file mode 100644 index 00000000000..57c1ee86034 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-small-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-small-left.svg b/htdocs/theme/common/octicons/build/svg/arrow-small-left.svg new file mode 100644 index 00000000000..9fa227ea82e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-small-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-small-right.svg b/htdocs/theme/common/octicons/build/svg/arrow-small-right.svg new file mode 100644 index 00000000000..bca68473434 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-small-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-small-up.svg b/htdocs/theme/common/octicons/build/svg/arrow-small-up.svg new file mode 100644 index 00000000000..6c132f182c2 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-small-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/arrow-up.svg b/htdocs/theme/common/octicons/build/svg/arrow-up.svg new file mode 100644 index 00000000000..63be8901bc4 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/beaker.svg b/htdocs/theme/common/octicons/build/svg/beaker.svg new file mode 100644 index 00000000000..19377609a5d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/beaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/bell.svg b/htdocs/theme/common/octicons/build/svg/bell.svg new file mode 100644 index 00000000000..d076a0c2129 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/bold.svg b/htdocs/theme/common/octicons/build/svg/bold.svg new file mode 100644 index 00000000000..d2f29953034 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/book.svg b/htdocs/theme/common/octicons/build/svg/book.svg new file mode 100644 index 00000000000..d21fa56a72d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/bookmark.svg b/htdocs/theme/common/octicons/build/svg/bookmark.svg new file mode 100644 index 00000000000..de64157315d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/briefcase.svg b/htdocs/theme/common/octicons/build/svg/briefcase.svg new file mode 100644 index 00000000000..5104b8193bd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/broadcast.svg b/htdocs/theme/common/octicons/build/svg/broadcast.svg new file mode 100644 index 00000000000..ddc1458f1e9 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/broadcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/browser.svg b/htdocs/theme/common/octicons/build/svg/browser.svg new file mode 100644 index 00000000000..00f512adb15 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/browser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/bug.svg b/htdocs/theme/common/octicons/build/svg/bug.svg new file mode 100644 index 00000000000..bd533f829e7 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/calendar.svg b/htdocs/theme/common/octicons/build/svg/calendar.svg new file mode 100644 index 00000000000..fede886f63c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/check.svg b/htdocs/theme/common/octicons/build/svg/check.svg new file mode 100644 index 00000000000..2d59600912e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/checklist.svg b/htdocs/theme/common/octicons/build/svg/checklist.svg new file mode 100644 index 00000000000..671aa3b507e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/checklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/chevron-down.svg b/htdocs/theme/common/octicons/build/svg/chevron-down.svg new file mode 100644 index 00000000000..3a4e0aad5c6 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/chevron-left.svg b/htdocs/theme/common/octicons/build/svg/chevron-left.svg new file mode 100644 index 00000000000..2de62df36b3 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/chevron-right.svg b/htdocs/theme/common/octicons/build/svg/chevron-right.svg new file mode 100644 index 00000000000..a5dadc68eed --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/chevron-up.svg b/htdocs/theme/common/octicons/build/svg/chevron-up.svg new file mode 100644 index 00000000000..19db9dd3992 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/circle-slash.svg b/htdocs/theme/common/octicons/build/svg/circle-slash.svg new file mode 100644 index 00000000000..edfb3d8046a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/circle-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/circuit-board.svg b/htdocs/theme/common/octicons/build/svg/circuit-board.svg new file mode 100644 index 00000000000..f9a4c7e6119 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/circuit-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/clippy.svg b/htdocs/theme/common/octicons/build/svg/clippy.svg new file mode 100644 index 00000000000..9cb633776de --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/clippy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/clock.svg b/htdocs/theme/common/octicons/build/svg/clock.svg new file mode 100644 index 00000000000..4bb89e09b51 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/cloud-download.svg b/htdocs/theme/common/octicons/build/svg/cloud-download.svg new file mode 100644 index 00000000000..8cc3d0f51a0 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/cloud-download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/cloud-upload.svg b/htdocs/theme/common/octicons/build/svg/cloud-upload.svg new file mode 100644 index 00000000000..c17e1d35d67 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/cloud-upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/code.svg b/htdocs/theme/common/octicons/build/svg/code.svg new file mode 100644 index 00000000000..6e6560e42d1 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/comment-discussion.svg b/htdocs/theme/common/octicons/build/svg/comment-discussion.svg new file mode 100644 index 00000000000..c155b889337 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/comment-discussion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/comment.svg b/htdocs/theme/common/octicons/build/svg/comment.svg new file mode 100644 index 00000000000..2c6d88c0b92 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/credit-card.svg b/htdocs/theme/common/octicons/build/svg/credit-card.svg new file mode 100644 index 00000000000..7da9f29aca3 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/dash.svg b/htdocs/theme/common/octicons/build/svg/dash.svg new file mode 100644 index 00000000000..b9a28fef746 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/dash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/dashboard.svg b/htdocs/theme/common/octicons/build/svg/dashboard.svg new file mode 100644 index 00000000000..dad1fd7a983 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/database.svg b/htdocs/theme/common/octicons/build/svg/database.svg new file mode 100644 index 00000000000..08b036d9aee --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/desktop-download.svg b/htdocs/theme/common/octicons/build/svg/desktop-download.svg new file mode 100644 index 00000000000..74b2c7d837b --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/desktop-download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/device-camera-video.svg b/htdocs/theme/common/octicons/build/svg/device-camera-video.svg new file mode 100644 index 00000000000..8f989c86e9c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/device-camera-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/device-camera.svg b/htdocs/theme/common/octicons/build/svg/device-camera.svg new file mode 100644 index 00000000000..609be0ea905 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/device-camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/device-desktop.svg b/htdocs/theme/common/octicons/build/svg/device-desktop.svg new file mode 100644 index 00000000000..3671fd0418d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/device-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/device-mobile.svg b/htdocs/theme/common/octicons/build/svg/device-mobile.svg new file mode 100644 index 00000000000..84559ca7730 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/device-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff-added.svg b/htdocs/theme/common/octicons/build/svg/diff-added.svg new file mode 100644 index 00000000000..8394151ee59 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff-added.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff-ignored.svg b/htdocs/theme/common/octicons/build/svg/diff-ignored.svg new file mode 100644 index 00000000000..eaa2bee6df5 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff-ignored.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff-modified.svg b/htdocs/theme/common/octicons/build/svg/diff-modified.svg new file mode 100644 index 00000000000..6a17dc3a9a1 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff-modified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff-removed.svg b/htdocs/theme/common/octicons/build/svg/diff-removed.svg new file mode 100644 index 00000000000..2dfe2a1b23d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff-removed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff-renamed.svg b/htdocs/theme/common/octicons/build/svg/diff-renamed.svg new file mode 100644 index 00000000000..c1f0982bf51 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff-renamed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/diff.svg b/htdocs/theme/common/octicons/build/svg/diff.svg new file mode 100644 index 00000000000..cbaa51ff7d1 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/diff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/ellipsis.svg b/htdocs/theme/common/octicons/build/svg/ellipsis.svg new file mode 100644 index 00000000000..7d4b9d8dc65 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/ellipsis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/eye.svg b/htdocs/theme/common/octicons/build/svg/eye.svg new file mode 100644 index 00000000000..4f43a098921 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-binary.svg b/htdocs/theme/common/octicons/build/svg/file-binary.svg new file mode 100644 index 00000000000..93d0f547f0a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-binary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-code.svg b/htdocs/theme/common/octicons/build/svg/file-code.svg new file mode 100644 index 00000000000..5b4b199531b --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-directory.svg b/htdocs/theme/common/octicons/build/svg/file-directory.svg new file mode 100644 index 00000000000..4bf1f1caa89 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-directory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-media.svg b/htdocs/theme/common/octicons/build/svg/file-media.svg new file mode 100644 index 00000000000..018e533e2e8 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-media.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-pdf.svg b/htdocs/theme/common/octicons/build/svg/file-pdf.svg new file mode 100644 index 00000000000..1b1703e19fd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-submodule.svg b/htdocs/theme/common/octicons/build/svg/file-submodule.svg new file mode 100644 index 00000000000..355a90546fe --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-submodule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-symlink-directory.svg b/htdocs/theme/common/octicons/build/svg/file-symlink-directory.svg new file mode 100644 index 00000000000..4b6263acc2b --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-symlink-directory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-symlink-file.svg b/htdocs/theme/common/octicons/build/svg/file-symlink-file.svg new file mode 100644 index 00000000000..b2aaf249407 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-symlink-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file-zip.svg b/htdocs/theme/common/octicons/build/svg/file-zip.svg new file mode 100644 index 00000000000..e2bb5b0a94e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file-zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/file.svg b/htdocs/theme/common/octicons/build/svg/file.svg new file mode 100644 index 00000000000..0997406531c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/flame.svg b/htdocs/theme/common/octicons/build/svg/flame.svg new file mode 100644 index 00000000000..49507a1073a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/flame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/fold.svg b/htdocs/theme/common/octicons/build/svg/fold.svg new file mode 100644 index 00000000000..1b0b399b688 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/fold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/gear.svg b/htdocs/theme/common/octicons/build/svg/gear.svg new file mode 100644 index 00000000000..aded0c46675 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/gift.svg b/htdocs/theme/common/octicons/build/svg/gift.svg new file mode 100644 index 00000000000..761be5473ca --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/gist-secret.svg b/htdocs/theme/common/octicons/build/svg/gist-secret.svg new file mode 100644 index 00000000000..a6459e19bf2 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/gist-secret.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/gist.svg b/htdocs/theme/common/octicons/build/svg/gist.svg new file mode 100644 index 00000000000..9584460c593 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/gist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/git-branch.svg b/htdocs/theme/common/octicons/build/svg/git-branch.svg new file mode 100644 index 00000000000..21ca8d8d3ac --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/git-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/git-commit.svg b/htdocs/theme/common/octicons/build/svg/git-commit.svg new file mode 100644 index 00000000000..3cc2e82a86f --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/git-commit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/git-compare.svg b/htdocs/theme/common/octicons/build/svg/git-compare.svg new file mode 100644 index 00000000000..4737499a242 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/git-compare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/git-merge.svg b/htdocs/theme/common/octicons/build/svg/git-merge.svg new file mode 100644 index 00000000000..fedb516064a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/git-merge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/git-pull-request.svg b/htdocs/theme/common/octicons/build/svg/git-pull-request.svg new file mode 100644 index 00000000000..4f597593774 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/git-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/globe.svg b/htdocs/theme/common/octicons/build/svg/globe.svg new file mode 100644 index 00000000000..990554c05eb --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/grabber.svg b/htdocs/theme/common/octicons/build/svg/grabber.svg new file mode 100644 index 00000000000..1a41fd02857 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/grabber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/graph.svg b/htdocs/theme/common/octicons/build/svg/graph.svg new file mode 100644 index 00000000000..cd3909ed9fa --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/graph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/heart.svg b/htdocs/theme/common/octicons/build/svg/heart.svg new file mode 100644 index 00000000000..8b81f8845fe --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/history.svg b/htdocs/theme/common/octicons/build/svg/history.svg new file mode 100644 index 00000000000..ee4d9fb1ca6 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/home.svg b/htdocs/theme/common/octicons/build/svg/home.svg new file mode 100644 index 00000000000..f3d3138fe7c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/horizontal-rule.svg b/htdocs/theme/common/octicons/build/svg/horizontal-rule.svg new file mode 100644 index 00000000000..9a05c305c3d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/horizontal-rule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/hubot.svg b/htdocs/theme/common/octicons/build/svg/hubot.svg new file mode 100644 index 00000000000..fea9f4b2237 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/hubot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/inbox.svg b/htdocs/theme/common/octicons/build/svg/inbox.svg new file mode 100644 index 00000000000..f9cfec28bce --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/info.svg b/htdocs/theme/common/octicons/build/svg/info.svg new file mode 100644 index 00000000000..745ef337a3d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/issue-closed.svg b/htdocs/theme/common/octicons/build/svg/issue-closed.svg new file mode 100644 index 00000000000..0a7819ac084 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/issue-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/issue-opened.svg b/htdocs/theme/common/octicons/build/svg/issue-opened.svg new file mode 100644 index 00000000000..a88cbcc7fd1 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/issue-opened.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/issue-reopened.svg b/htdocs/theme/common/octicons/build/svg/issue-reopened.svg new file mode 100644 index 00000000000..789e18bffb5 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/issue-reopened.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/italic.svg b/htdocs/theme/common/octicons/build/svg/italic.svg new file mode 100644 index 00000000000..51d65f10a1a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/jersey.svg b/htdocs/theme/common/octicons/build/svg/jersey.svg new file mode 100644 index 00000000000..776e4567941 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/jersey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/kebab-horizontal.svg b/htdocs/theme/common/octicons/build/svg/kebab-horizontal.svg new file mode 100644 index 00000000000..7c472d3657e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/kebab-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/kebab-vertical.svg b/htdocs/theme/common/octicons/build/svg/kebab-vertical.svg new file mode 100644 index 00000000000..2aaee6009fe --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/kebab-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/key.svg b/htdocs/theme/common/octicons/build/svg/key.svg new file mode 100644 index 00000000000..ac8badc2661 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/keyboard.svg b/htdocs/theme/common/octicons/build/svg/keyboard.svg new file mode 100644 index 00000000000..89712ade509 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/law.svg b/htdocs/theme/common/octicons/build/svg/law.svg new file mode 100644 index 00000000000..5ccc46420fc --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/law.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/light-bulb.svg b/htdocs/theme/common/octicons/build/svg/light-bulb.svg new file mode 100644 index 00000000000..d2ff74ce4f7 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/light-bulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/link-external.svg b/htdocs/theme/common/octicons/build/svg/link-external.svg new file mode 100644 index 00000000000..70b569d3742 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/link-external.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/link.svg b/htdocs/theme/common/octicons/build/svg/link.svg new file mode 100644 index 00000000000..820aef771e0 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/list-ordered.svg b/htdocs/theme/common/octicons/build/svg/list-ordered.svg new file mode 100644 index 00000000000..64126c3b8ef --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/list-ordered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/list-unordered.svg b/htdocs/theme/common/octicons/build/svg/list-unordered.svg new file mode 100644 index 00000000000..0b435366758 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/list-unordered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/location.svg b/htdocs/theme/common/octicons/build/svg/location.svg new file mode 100644 index 00000000000..f6372a3c441 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/lock.svg b/htdocs/theme/common/octicons/build/svg/lock.svg new file mode 100644 index 00000000000..55870644246 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/logo-gist.svg b/htdocs/theme/common/octicons/build/svg/logo-gist.svg new file mode 100644 index 00000000000..29f2213e1e8 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/logo-gist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/logo-github.svg b/htdocs/theme/common/octicons/build/svg/logo-github.svg new file mode 100644 index 00000000000..253c13ecbaa --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/logo-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mail-read.svg b/htdocs/theme/common/octicons/build/svg/mail-read.svg new file mode 100644 index 00000000000..bf4deaf9b29 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mail-read.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mail.svg b/htdocs/theme/common/octicons/build/svg/mail.svg new file mode 100644 index 00000000000..9fca68be5d6 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mark-github.svg b/htdocs/theme/common/octicons/build/svg/mark-github.svg new file mode 100644 index 00000000000..af1bfa1f96c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mark-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/markdown.svg b/htdocs/theme/common/octicons/build/svg/markdown.svg new file mode 100644 index 00000000000..999110e268c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/markdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/megaphone.svg b/htdocs/theme/common/octicons/build/svg/megaphone.svg new file mode 100644 index 00000000000..a62f82dc892 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/megaphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mention.svg b/htdocs/theme/common/octicons/build/svg/mention.svg new file mode 100644 index 00000000000..c09499bd9cd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mention.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/milestone.svg b/htdocs/theme/common/octicons/build/svg/milestone.svg new file mode 100644 index 00000000000..803465bdba9 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/milestone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mirror.svg b/htdocs/theme/common/octicons/build/svg/mirror.svg new file mode 100644 index 00000000000..76e0c37e070 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mirror.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mortar-board.svg b/htdocs/theme/common/octicons/build/svg/mortar-board.svg new file mode 100644 index 00000000000..302415b1736 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mortar-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/mute.svg b/htdocs/theme/common/octicons/build/svg/mute.svg new file mode 100644 index 00000000000..4d894a1cadd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/no-newline.svg b/htdocs/theme/common/octicons/build/svg/no-newline.svg new file mode 100644 index 00000000000..2a8fb94fe31 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/no-newline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/note.svg b/htdocs/theme/common/octicons/build/svg/note.svg new file mode 100644 index 00000000000..cbf7963eb1a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/octoface.svg b/htdocs/theme/common/octicons/build/svg/octoface.svg new file mode 100644 index 00000000000..bb1a40dce94 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/octoface.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/organization.svg b/htdocs/theme/common/octicons/build/svg/organization.svg new file mode 100644 index 00000000000..af333e418dd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/organization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/package.svg b/htdocs/theme/common/octicons/build/svg/package.svg new file mode 100644 index 00000000000..720e30026a5 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/paintcan.svg b/htdocs/theme/common/octicons/build/svg/paintcan.svg new file mode 100644 index 00000000000..08b4a4ba574 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/paintcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/pencil.svg b/htdocs/theme/common/octicons/build/svg/pencil.svg new file mode 100644 index 00000000000..41c6e7ec6f8 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/person.svg b/htdocs/theme/common/octicons/build/svg/person.svg new file mode 100644 index 00000000000..5871e2f447a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/pin.svg b/htdocs/theme/common/octicons/build/svg/pin.svg new file mode 100644 index 00000000000..861ae05afdc --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/plug.svg b/htdocs/theme/common/octicons/build/svg/plug.svg new file mode 100644 index 00000000000..42865d52931 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/plug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/plus-small.svg b/htdocs/theme/common/octicons/build/svg/plus-small.svg new file mode 100644 index 00000000000..5e093a4bb22 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/plus-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/plus.svg b/htdocs/theme/common/octicons/build/svg/plus.svg new file mode 100644 index 00000000000..23c27d8a45a --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/primitive-dot.svg b/htdocs/theme/common/octicons/build/svg/primitive-dot.svg new file mode 100644 index 00000000000..6f465da5a76 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/primitive-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/primitive-square.svg b/htdocs/theme/common/octicons/build/svg/primitive-square.svg new file mode 100644 index 00000000000..9d4058bb51e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/primitive-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/project.svg b/htdocs/theme/common/octicons/build/svg/project.svg new file mode 100644 index 00000000000..a728f7457ca --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/pulse.svg b/htdocs/theme/common/octicons/build/svg/pulse.svg new file mode 100644 index 00000000000..d87d04ea419 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/question.svg b/htdocs/theme/common/octicons/build/svg/question.svg new file mode 100644 index 00000000000..a6fc75310c9 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/quote.svg b/htdocs/theme/common/octicons/build/svg/quote.svg new file mode 100644 index 00000000000..7b5f4a7f191 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/quote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/radio-tower.svg b/htdocs/theme/common/octicons/build/svg/radio-tower.svg new file mode 100644 index 00000000000..a438661ce55 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/radio-tower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/reply.svg b/htdocs/theme/common/octicons/build/svg/reply.svg new file mode 100644 index 00000000000..5f89aad3010 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo-clone.svg b/htdocs/theme/common/octicons/build/svg/repo-clone.svg new file mode 100644 index 00000000000..32b86e87c88 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo-clone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo-force-push.svg b/htdocs/theme/common/octicons/build/svg/repo-force-push.svg new file mode 100644 index 00000000000..0aece33a4c9 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo-force-push.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo-forked.svg b/htdocs/theme/common/octicons/build/svg/repo-forked.svg new file mode 100644 index 00000000000..cc5e46a521c --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo-forked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo-pull.svg b/htdocs/theme/common/octicons/build/svg/repo-pull.svg new file mode 100644 index 00000000000..dfe8e6c9152 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo-pull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo-push.svg b/htdocs/theme/common/octicons/build/svg/repo-push.svg new file mode 100644 index 00000000000..408dca6a089 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo-push.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/repo.svg b/htdocs/theme/common/octicons/build/svg/repo.svg new file mode 100644 index 00000000000..e653d4ecfcd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/repo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/report.svg b/htdocs/theme/common/octicons/build/svg/report.svg new file mode 100644 index 00000000000..3f93ee49a90 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/report.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/rocket.svg b/htdocs/theme/common/octicons/build/svg/rocket.svg new file mode 100644 index 00000000000..98303f854be --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/rss.svg b/htdocs/theme/common/octicons/build/svg/rss.svg new file mode 100644 index 00000000000..3b2705d2f04 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/ruby.svg b/htdocs/theme/common/octicons/build/svg/ruby.svg new file mode 100644 index 00000000000..846390841c3 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/ruby.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/screen-full.svg b/htdocs/theme/common/octicons/build/svg/screen-full.svg new file mode 100644 index 00000000000..e78d3718ba1 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/screen-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/screen-normal.svg b/htdocs/theme/common/octicons/build/svg/screen-normal.svg new file mode 100644 index 00000000000..a884713e162 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/screen-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/search.svg b/htdocs/theme/common/octicons/build/svg/search.svg new file mode 100644 index 00000000000..d0304b6a41e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/server.svg b/htdocs/theme/common/octicons/build/svg/server.svg new file mode 100644 index 00000000000..78bc79f95ee --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/settings.svg b/htdocs/theme/common/octicons/build/svg/settings.svg new file mode 100644 index 00000000000..f22b92e0ddc --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/shield.svg b/htdocs/theme/common/octicons/build/svg/shield.svg new file mode 100644 index 00000000000..087a96954b9 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/sign-in.svg b/htdocs/theme/common/octicons/build/svg/sign-in.svg new file mode 100644 index 00000000000..91560c6ad61 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/sign-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/sign-out.svg b/htdocs/theme/common/octicons/build/svg/sign-out.svg new file mode 100644 index 00000000000..e0893cbce43 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/sign-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/smiley.svg b/htdocs/theme/common/octicons/build/svg/smiley.svg new file mode 100644 index 00000000000..0d93af54bdd --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/smiley.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/squirrel.svg b/htdocs/theme/common/octicons/build/svg/squirrel.svg new file mode 100644 index 00000000000..7c974be5979 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/squirrel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/star.svg b/htdocs/theme/common/octicons/build/svg/star.svg new file mode 100644 index 00000000000..9444880acf4 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/stop.svg b/htdocs/theme/common/octicons/build/svg/stop.svg new file mode 100644 index 00000000000..6ae8523457d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/sync.svg b/htdocs/theme/common/octicons/build/svg/sync.svg new file mode 100644 index 00000000000..61bef53cbd0 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/sync.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/tag.svg b/htdocs/theme/common/octicons/build/svg/tag.svg new file mode 100644 index 00000000000..6c8a9c43c1e --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/tasklist.svg b/htdocs/theme/common/octicons/build/svg/tasklist.svg new file mode 100644 index 00000000000..a0bd560991f --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/tasklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/telescope.svg b/htdocs/theme/common/octicons/build/svg/telescope.svg new file mode 100644 index 00000000000..ce4bfaaa184 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/telescope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/terminal.svg b/htdocs/theme/common/octicons/build/svg/terminal.svg new file mode 100644 index 00000000000..d6072fc6611 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/text-size.svg b/htdocs/theme/common/octicons/build/svg/text-size.svg new file mode 100644 index 00000000000..f83a5f964fb --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/text-size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/three-bars.svg b/htdocs/theme/common/octicons/build/svg/three-bars.svg new file mode 100644 index 00000000000..bb3b2c86984 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/three-bars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/thumbsdown.svg b/htdocs/theme/common/octicons/build/svg/thumbsdown.svg new file mode 100644 index 00000000000..ac4c7c6996b --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/thumbsdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/thumbsup.svg b/htdocs/theme/common/octicons/build/svg/thumbsup.svg new file mode 100644 index 00000000000..e77f1e30e57 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/thumbsup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/tools.svg b/htdocs/theme/common/octicons/build/svg/tools.svg new file mode 100644 index 00000000000..67a5984052b --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/trashcan.svg b/htdocs/theme/common/octicons/build/svg/trashcan.svg new file mode 100644 index 00000000000..3d8c051f4cf --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/trashcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/triangle-down.svg b/htdocs/theme/common/octicons/build/svg/triangle-down.svg new file mode 100644 index 00000000000..faa889630e7 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/triangle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/triangle-left.svg b/htdocs/theme/common/octicons/build/svg/triangle-left.svg new file mode 100644 index 00000000000..8762036160f --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/triangle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/triangle-right.svg b/htdocs/theme/common/octicons/build/svg/triangle-right.svg new file mode 100644 index 00000000000..59c2ac6346d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/triangle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/triangle-up.svg b/htdocs/theme/common/octicons/build/svg/triangle-up.svg new file mode 100644 index 00000000000..98d06543b8d --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/triangle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/unfold.svg b/htdocs/theme/common/octicons/build/svg/unfold.svg new file mode 100644 index 00000000000..ab043392e69 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/unfold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/unmute.svg b/htdocs/theme/common/octicons/build/svg/unmute.svg new file mode 100644 index 00000000000..531aafc8b46 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/unmute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/unverified.svg b/htdocs/theme/common/octicons/build/svg/unverified.svg new file mode 100644 index 00000000000..becff6dfc8f --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/unverified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/verified.svg b/htdocs/theme/common/octicons/build/svg/verified.svg new file mode 100644 index 00000000000..8420d2ac554 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/verified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/versions.svg b/htdocs/theme/common/octicons/build/svg/versions.svg new file mode 100644 index 00000000000..274bbdb3ac8 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/versions.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/watch.svg b/htdocs/theme/common/octicons/build/svg/watch.svg new file mode 100644 index 00000000000..45b2499cff8 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/watch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/x.svg b/htdocs/theme/common/octicons/build/svg/x.svg new file mode 100644 index 00000000000..3725777be40 --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/build/svg/zap.svg b/htdocs/theme/common/octicons/build/svg/zap.svg new file mode 100644 index 00000000000..e778194b9de --- /dev/null +++ b/htdocs/theme/common/octicons/build/svg/zap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/htdocs/theme/common/octicons/index.html b/htdocs/theme/common/octicons/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/theme/common/octicons/index.js b/htdocs/theme/common/octicons/index.js index 186af5cb46c..8fb8e4c9044 100644 --- a/htdocs/theme/common/octicons/index.js +++ b/htdocs/theme/common/octicons/index.js @@ -1,11 +1,12 @@ var data = require('./build/data.json') +var objectAssign = require('object-assign') Object.keys(data).forEach(function(key) { // Returns a string representation of html attributes var htmlAttributes = function(icon, options) { var attributes = [] - var attrObj = Object.assign({}, data[key].options, options) + var attrObj = objectAssign({}, data[key].options, options) // If the user passed in options if (options) { @@ -56,11 +57,6 @@ Object.keys(data).forEach(function(key) { data[key].toSVG = function(options) { return "" + data[key].path + "" } - - // Function to return an SVG object with a use, assuming you use the svg sprite - data[key].toSVGUse = function(options) { - return "" - } }) // Import data into exports diff --git a/htdocs/theme/common/octicons/index.scss b/htdocs/theme/common/octicons/index.scss new file mode 100644 index 00000000000..31d97867a12 --- /dev/null +++ b/htdocs/theme/common/octicons/index.scss @@ -0,0 +1,5 @@ +.octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} diff --git a/htdocs/theme/common/octicons/lib/data.json b/htdocs/theme/common/octicons/lib/data.json deleted file mode 100644 index af6b94aa6b1..00000000000 --- a/htdocs/theme/common/octicons/lib/data.json +++ /dev/null @@ -1,1174 +0,0 @@ -{ - "alert": { - "keywords": [ - "warning", - "triangle", - "exclamation", - "point" - ] - }, - "arrow-down": { - "keywords": [ - "point", - "direction" - ] - }, - "arrow-left": { - "keywords": [ - "point", - "direction" - ] - }, - "arrow-right": { - "keywords": [ - "point", - "direction" - ] - }, - "arrow-small-down": { - "keywords": [ - "point", - "direction" - ] - }, - "arrow-small-left": { - "keywords": [ - "point", - "direction", - "little", - "tiny" - ] - }, - "arrow-small-right": { - "keywords": [ - "point", - "direction", - "little", - "tiny" - ] - }, - "arrow-small-up": { - "keywords": [ - "point", - "direction", - "little", - "tiny" - ] - }, - "arrow-up": { - "keywords": [ - "point", - "direction" - ] - }, - "beaker": { - "keywords": [ - "experiment", - "labs", - "experimental", - "feature", - "test", - "science", - "education", - "study", - "development", - "testing" - ] - }, - "bell": { - "keywords": [ - "notification" - ] - }, - "bold": { - "keywords": [ - "bold" - ] - }, - "book": { - "keywords": [ - "book", - "journal", - "wiki", - "readme" - ] - }, - "bookmark": { - "keywords": [ - "tabbard" - ] - }, - "briefcase": { - "keywords": [ - "suitcase", - "business" - ] - }, - "broadcast": { - "keywords": [ - "rss", - "radio", - "signal" - ] - }, - "browser": { - "keywords": [ - "window", - "web" - ] - }, - "bug": { - "keywords": [ - "insect" - ] - }, - "calendar": { - "keywords": [ - "time", - "day", - "month", - "year" - ] - }, - "check": { - "keywords": [ - "mark", - "yes", - "confirm", - "accept", - "ok", - "success" - ] - }, - "checklist": { - "keywords": [ - "todo" - ] - }, - "chevron-down": { - "keywords": [ - "triangle", - "arrow" - ] - }, - "chevron-left": { - "keywords": [ - "triangle", - "arrow" - ] - }, - "chevron-right": { - "keywords": [ - "triangle", - "arrow" - ] - }, - "chevron-up": { - "keywords": [ - "triangle", - "arrow" - ] - }, - "circle-slash": { - "keywords": [ - "no", - "deny", - "fail", - "failure", - "error", - "bad" - ] - }, - "circuit-board": { - "keywords": [ - "developer", - "hardware", - "electricity" - ] - }, - "clippy": { - "keywords": [ - "copy", - "paste", - "save", - "capture" - ] - }, - "clock": { - "keywords": [ - "time", - "hour", - "minute", - "second" - ] - }, - "cloud-download": { - "keywords": [ - "save", - "install", - "get" - ] - }, - "cloud-upload": { - "keywords": [ - "put", - "export" - ] - }, - "code": { - "keywords": [ - "brackets" - ] - }, - "comment": { - "keywords": [ - "speak", - "bubble" - ] - }, - "comment-discussion": { - "keywords": [ - "converse", - "talk" - ] - }, - "credit-card": { - "keywords": [ - "money", - "billing", - "payments", - "transactions" - ] - }, - "dash": { - "keywords": [ - "hyphen", - "range" - ] - }, - "dashboard": { - "keywords": [ - "speed", - "dial" - ] - }, - "database": { - "keywords": [ - "disks", - "data" - ] - }, - "desktop-download": { - "keywords": [ - "clone", - "download" - ] - }, - "device-camera": { - "keywords": [ - "photo", - "picture", - "image", - "snapshot" - ] - }, - "device-camera-video": { - "keywords": [ - "watch", - "view", - "media", - "stream" - ] - }, - "device-desktop": { - "keywords": [ - "computer", - "monitor" - ] - }, - "device-mobile": { - "keywords": [ - "phone", - "iphone", - "cellphone" - ] - }, - "diff": { - "keywords": [ - "difference", - "changes", - "compare" - ] - }, - "diff-added": { - "keywords": [ - "new", - "addition" - ] - }, - "diff-ignored": { - "keywords": [ - "slash" - ] - }, - "diff-modified": { - "keywords": [ - "dot", - "changed", - "updated" - ] - }, - "diff-removed": { - "keywords": [ - "deleted", - "subtracted", - "dash" - ] - }, - "diff-renamed": { - "keywords": [ - "moved", - "arrow" - ] - }, - "ellipses": { - "keywords": [ - "dot", - "more" - ] - }, - "ellipsis": { - "keywords": [ - "read", - "more", - "hidden", - "expand" - ] - }, - "eye": { - "keywords": [ - "look", - "watch", - "see" - ] - }, - "file": { - "keywords": [ - "file" - ] - }, - "file-binary": { - "keywords": [ - "image", - "video", - "word", - "powerpoint", - "excel" - ] - }, - "file-code": { - "keywords": [ - "text", - "javascript", - "html", - "css", - "php", - "ruby", - "coffeescript", - "sass", - "scss" - ] - }, - "file-directory": { - "keywords": [ - "folder" - ] - }, - "file-media": { - "keywords": [ - "image", - "video", - "audio" - ] - }, - "file-pdf": { - "keywords": [ - "adobe" - ] - }, - "file-submodule": { - "keywords": [ - "folder" - ] - }, - "file-symlink-directory": { - "keywords": [ - "folder", - "subfolder", - "link", - "alias" - ] - }, - "file-symlink-file": { - "keywords": [ - "link", - "alias" - ] - }, - "file-text": { - "keywords": [ - "document" - ] - }, - "file-zip": { - "keywords": [ - "compress", - "archive" - ] - }, - "flame": { - "keywords": [ - "fire", - "hot", - "burn", - "trending" - ] - }, - "fold": { - "keywords": [ - "unfold", - "hide", - "collapse" - ] - }, - "gear": { - "keywords": [ - "settings" - ] - }, - "gift": { - "keywords": [ - "package", - "present", - "skill", - "craft", - "freebie" - ] - }, - "gist": { - "keywords": [ - "gist", - "github" - ] - }, - "gist-secret": { - "keywords": [ - "gist", - "secret", - "private" - ] - }, - "git-branch": { - "keywords": [ - "branch", - "git" - ] - }, - "git-commit": { - "keywords": [ - "save" - ] - }, - "git-compare": { - "keywords": [ - "difference", - "changes" - ] - }, - "git-merge": { - "keywords": [ - "join" - ] - }, - "git-pull-request": { - "keywords": [ - "review" - ] - }, - "globe": { - "keywords": [ - "world" - ] - }, - "grabber": { - "keywords": [ - "mover", - "drap", - "drop" - ] - }, - "graph": { - "keywords": [ - "trend", - "stats", - "statistics" - ] - }, - "heart": { - "keywords": [ - "love" - ] - }, - "history": { - "keywords": [ - "time", - "past", - "revert", - "back" - ] - }, - "home": { - "keywords": [ - "welcome", - "index", - "house", - "building" - ] - }, - "horizontal-rule": { - "keywords": [ - "hr" - ] - }, - "hubot": { - "keywords": [ - "robot" - ] - }, - "inbox": { - "keywords": [ - "mail", - "todo", - "new", - "messages" - ] - }, - "info": { - "keywords": [ - "help" - ] - }, - "issue-closed": { - "keywords": [ - "done", - "complete" - ] - }, - "issue-opened": { - "keywords": [ - "new" - ] - }, - "issue-reopened": { - "keywords": [ - "regression" - ] - }, - "italic": { - "keywords": [ - "font", - "italic", - "style" - ] - }, - "jersey": { - "keywords": [ - "team", - "game", - "basketball" - ] - }, - "key": { - "keywords": [ - "key", - "lock", - "secure", - "safe" - ] - }, - "keyboard": { - "keywords": [ - "type", - "keys", - "write", - "shortcuts" - ] - }, - "law": { - "keywords": [ - "legal", - "bill" - ] - }, - "light-bulb": { - "keywords": [ - "idea" - ] - }, - "link": { - "keywords": [ - "connect", - "hyperlink" - ] - }, - "link-external": { - "keywords": [ - "out", - "see", - "more", - "go", - "to" - ] - }, - "list-ordered": { - "keywords": [ - "numbers", - "tasks", - "todo", - "items" - ] - }, - "list-unordered": { - "keywords": [ - "bullet", - "point", - "tasks", - "todo", - "items" - ] - }, - "location": { - "keywords": [ - "here", - "marker" - ] - }, - "lock": { - "keywords": [ - "secure", - "safe", - "protected" - ] - }, - "logo-gist": { - "keywords": [ - "logo", - "gist" - ] - }, - "logo-github": { - "keywords": [ - "brand" - ] - }, - "mail": { - "keywords": [ - "email", - "unread" - ] - }, - "mail-read": { - "keywords": [ - "email", - "open" - ] - }, - "mail-reply": { - "keywords": [ - "email" - ] - }, - "mark-github": { - "keywords": [ - "octocat" - ] - }, - "markdown": { - "keywords": [ - "markup", - "style" - ] - }, - "megaphone": { - "keywords": [ - "bullhorn", - "loud", - "shout", - "broadcast" - ] - }, - "mention": { - "keywords": [ - "at", - "ping" - ] - }, - "milestone": { - "keywords": [ - "marker" - ] - }, - "mirror": { - "keywords": [ - "reflect" - ] - }, - "mortar-board": { - "keywords": [ - "education", - "learn", - "teach" - ] - }, - "mute": { - "keywords": [ - "quiet", - "sound", - "audio", - "turn", - "off" - ] - }, - "no-newline": { - "keywords": [ - "return" - ] - }, - "note": { - "keywords": [ - "card", - "paper", - "ticket" - ] - }, - "octoface": { - "keywords": [ - "octocat" - ] - }, - "organization": { - "keywords": [ - "people", - "group", - "team" - ] - }, - "package": { - "keywords": [ - "box", - "ship" - ] - }, - "paintcan": { - "keywords": [ - "style", - "theme", - "art", - "color" - ] - }, - "pencil": { - "keywords": [ - "edit", - "change", - "update", - "write" - ] - }, - "person": { - "keywords": [ - "people", - "man", - "woman", - "human" - ] - }, - "pin": { - "keywords": [ - "people", - "save", - "star", - "bookmark" - ] - }, - "plug": { - "keywords": [ - "hook", - "webhook" - ] - }, - "plus": { - "keywords": [ - "add", - "new", - "more" - ] - }, - "plus-small": { - "keywords": [ - "add", - "new", - "more", - "small" - ] - }, - "primitive-dot": { - "keywords": [ - "circle" - ] - }, - "primitive-square": { - "keywords": [ - "box" - ] - }, - "project": { - "keywords": [ - "board", - "kanban", - "columns", - "scrum" - ] - }, - "pulse": { - "keywords": [ - "graph", - "trend", - "line" - ] - }, - "question": { - "keywords": [ - "help", - "explain" - ] - }, - "quote": { - "keywords": [ - "quotation" - ] - }, - "radio-tower": { - "keywords": [ - "broadcast" - ] - }, - "reply": { - "keywords": [ - "reply all", - "back" - ] - }, - "repo": { - "keywords": [ - "book", - "journal" - ] - }, - "repo-clone": { - "keywords": [ - "book", - "journal" - ] - }, - "repo-force-push": { - "keywords": [ - "book", - "journal", - "put" - ] - }, - "repo-forked": { - "keywords": [ - "book", - "journal", - "copy" - ] - }, - "repo-pull": { - "keywords": [ - "book", - "journal", - "get" - ] - }, - "repo-push": { - "keywords": [ - "book", - "journal", - "put" - ] - }, - "rocket": { - "keywords": [ - "staff", - "stafftools", - "blast", - "off", - "space" - ] - }, - "rss": { - "keywords": [ - "broadcast", - "feed" - ] - }, - "ruby": { - "keywords": [ - "code" - ] - }, - "screen-full": { - "keywords": [ - "fullscreen", - "expand" - ] - }, - "screen-normal": { - "keywords": [ - "fullscreen", - "expand", - "exit" - ] - }, - "search": { - "keywords": [ - "magnifying", - "glass" - ] - }, - "server": { - "keywords": [ - "computers", - "racks", - "ops" - ] - }, - "settings": { - "keywords": [ - "sliders", - "filters" - ] - }, - "shield": { - "keywords": [ - "protect", - "shield", - "lock" - ] - }, - "sign-in": { - "keywords": [ - "door", - "arrow", - "direction", - "enter" - ] - }, - "sign-out": { - "keywords": [ - "door", - "arrow", - "direction", - "leave" - ] - }, - "smiley": { - "keywords": [ - "emoji", - "smile", - "mood", - "emotion" - ] - }, - "squirrel": { - "keywords": [ - "ship", - "shipit" - ] - }, - "star": { - "keywords": [ - "save", - "remember", - "like" - ] - }, - "stop": { - "keywords": [ - "block", - "spam" - ] - }, - "sync": { - "keywords": [ - "cycle", - "refresh", - "loop" - ] - }, - "tag": { - "keywords": [ - "release" - ] - }, - "tasklist": { - "keywords": [ - "todo" - ] - }, - "telescope": { - "keywords": [ - "science", - "space", - "look", - "view", - "explore" - ] - }, - "terminal": { - "keywords": [ - "code", - "ops", - "shell" - ] - }, - "text-size": { - "keywords": [ - "font", - "size", - "text" - ] - }, - "three-bars": { - "keywords": [ - "hamburger" - ] - }, - "thumbsdown": { - "keywords": [ - "thumb", - "thumbsdown", - "rejected" - ] - }, - "thumbsup": { - "keywords": [ - "thumb", - "thumbsup", - "prop", - "ship" - ] - }, - "tools": { - "keywords": [ - "screwdriver", - "wrench", - "settings" - ] - }, - "trashcan": { - "keywords": [ - "garbage", - "rubbish", - "recycle", - "delete" - ] - }, - "triangle-down": { - "keywords": [ - "arrow", - "point", - "direction" - ] - }, - "triangle-left": { - "keywords": [ - "arrow", - "point", - "direction" - ] - }, - "triangle-right": { - "keywords": [ - "arrow", - "point", - "direction" - ] - }, - "triangle-up": { - "keywords": [ - "arrow", - "point", - "direction" - ] - }, - "unfold": { - "keywords": [ - "expand", - "open", - "reveal" - ] - }, - "unmute": { - "keywords": [ - "loud", - "volume", - "audio", - "sound", - "play" - ] - }, - "unverified": { - "keywords": [ - "insecure", - "untrusted" - ] - }, - "verified": { - "keywords": [ - "trusted", - "secure", - "trustworthy" - ] - }, - "versions": { - "keywords": [ - "history" - ] - }, - "watch": { - "keywords": [ - "wait", - "hourglass" - ] - }, - "x": { - "keywords": [ - "remove", - "close", - "delete" - ] - }, - "zap": { - "keywords": [ - "electricity", - "lightning", - "props", - "like", - "star", - "save" - ] - } -} diff --git a/htdocs/theme/common/octicons/lib/octicons-master.sketch b/htdocs/theme/common/octicons/lib/octicons-master.sketch deleted file mode 100644 index 85a3f1d431d4afa5fdc9c45e4ef9e1e2975d6487..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1957888 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�k_EQ;c0q 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%0DkOv40s%P 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≫AG$w;A_CC{2_xHY<2gZ#&@R!GXS*l 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%0DNKE~{M+F{3e4h50CcAVFa^S+9? z^S;ghu;aXiXpg_mdx5X9>%3;qYwo<}&U-zGQw*PvP4^q=3&L1Le?c^T~gL1XW_Y$FP>X~ zSxTCvQZH(2fnUm!c*F^ZIb8N2dbqDc7^q$D*x8A1&9QQj?=x8w4Av77RT ziQ^b2kwy6zHSMCj9Ln281$(cM6tyd;T|wOn=}1p5iclW6SYaIARbdiSnZZoVP+=d( zgGfcURPim|;XM+Nh>)Dfs$zRqv6{7PK#huWsJNYT+zld?UdOvDRiF|wt|Z?|wW)($ zSBhpd-d*VgpCh|UYE-iCN*DM8_gVQh%AscEis+?sb=*&7H7j?)jFs)V^3UAl7xYs3 zckc5bh*U9Gl}xz7Dx>iJDr1RZ5>s)1Rs1fi?7|MJ+Iv;~R&7OF+98Lk9qGg;cz@My zbf*`+=}UhWa}x7aHD6VGtZI){zs0{N&4id6d{i1?;Zq`Ld4o|g1vBr{o1ySf>wcSZlz-DY+DSMS44 zt8gb`86!@dj`44)3y(Rjg$L8`;Dbw&FKaL+u*7QM<-|)UKg+ zjnB9pL~17FeIg`AHZ}EMQ~xz{kPADh*#>*5IhbJ#M@}_==04AYNG-k93Q0|N3Q>-V zRG~Vxs7rks(UcanrX3wwgPCfr$2_&nQp+s9F%+q#_gW|UDu~q9ckM*zy|&(KC&gZC zC&xY2c2BiiqW9WvskS?+-I+d^p|;)no=~Lr8T=k{nl~cb&hZrb?eBiu6*leAQM^0hP>9cHS37&FyB&I#N9 zH|$1F?5bgZ1~P=<*i%C@H9UrS8k(h{SsI$9q23$*h>RNPyODi0(t9JlH_Agk@*~$q za&2U1jr87VC?gn&oEz=o>mbrt-;F;Y336?m0&_G@LkXIqM&rHg;{Y;mtiQ%GZ!Gi1 z?x@Mjc(zFkTGAT7qbBaLNfe(jmSw2X9)dnWI@7NGc(?+Znm>!bN-WZHZQ=4;`8Q=OW~uw`AE zVMi_J;)Yv#e@nf$lw-@&Ji~5Uy~Had!i}_YAFVEMkxN|R8hU7Tou9bLE$-kxTm8!K z+~Yp}ZSbw3h;I!=TD!H@WhqBR?7MX}?6`G9TG57?$gA}nzT`Y#a~VCf_MX%X z;y5=SO}<{_S5SHRf-xR{PTd_!zl%kWGi8$fbi^JCtGsYIo3U2lw7V{SNx=;2j;#a27l3;BGox zLeCw(MeU9W$jT>lp&LEvLw^RK$BsMje5bDXn@;|wlfUWImwx!WPSFfz2xjhNX5S2o zbkbKReRa}Tr_FeOC-3j{9Y1h`Uom?pv-(C*q;qEU)j1pGu=CE9sDgPqd%m+9@BEPe zf=JZ6Bq2TS$@hOEQT{fn0c~hcC(Ie8|0w-O=|9ShQ3KI)l%AvH7-dJk5fq7%U(^() zV|L#LibTmTO8-%Qb5VMay3W5r%75R=)Frk z67oK|P^XJtyKG=1a_h2OY`WQPH~DmvPdE8=v(IjBt(#uDokgAQ*~x*PyXU0TZ06~XVSS8@ENdX=RD?yi>|_L4=f(dfCC zo_l@H7o6if7lKG{z4SIm?+kRHBc17j9D19pw_Wre%v_cRkv`tprx^O}QwHztQx5O$ zLZ&zt1y%A@kIK_r;q*gaU*@?-N%f5^xVge`}~7h z`|7dp2P7sbm8nl_+M@Tq`tGamzWVN~@4nmF!7l8w?*R_;8P~Xpo9dU7T;w4?1(9t( zbN173Kl|-Bko~C9?+|eu<0NwJ_j3^GAMh5H&|iNU^f!Nh^Y=GrN6!OKhFj9*WdgD>}Nn`vLfdJ<&p7#RTH?9r7tggvZqag!j-o5Fi#Bhx{G$8dhN9hc^Z=Hi*XUE6LBG-ZjsA(7+zuiG z6Jl2bBiPlzRHUH^&G7z#dLKBB80>qXOb5zzpuG%KZ{XKl4kCl5Gm}}ky+I3zWifsi zgFa;it69TZ*0YgKxT!%~*v7X(WbmuJ#+$s&|Ip`PeGb;=V0{j*gRBNOM_z+FVrPS+ zQD^WDcHy1|??(=U4)5|F2}p$fjZTbrkM{1-YK-25en)R*2fOim7;R^xFJt~O zYK*B)4LmodE)8f*6ZAjEGh==YB4gz<)|_K=l85{hq!9ISBV(uX73LiKHQqDUZpYf~ z*zfr#h>QzSV_bL4InHzA`r_Y!ac*qfVCJ%ovq5Bhe9SrieIg{mZ()3LynDQNk5^;7 zyBfcUUF<>MwqpA+;sp&?Be#TeY$gcxQpi{t2Lf;~^r z#{@l0e3Q3%7yFu+f>fkMKNJ0CChBS8&-{XZChBG4AKd2wkNAtn{Egqx#D96l^B^+G zzZsJ3IdC6Sa*>C;6yRg*drDzsJEb`Cog&{UotTasr_5$93;2|kY+?&~ zoTA4mb~oj}ATsr3Ug0(LIkgteP;Y7<`V-AyhA|R*o2u`r`ks0QH#+r8E^rC=GWA<- z@euEsRsy|F)9W&G7HXjCYas47FxN;oZJ36PY2W8C%)GZua0e zG~-?nnd!Ni{(fdvsw1nJb!k9D+R~jt=waq64im>wzQdi&{4t2k^53(LbAnUIah4os zeTDbUy2v-UuUXgd+^iSR+25?6knOBrxXW+IY?dBpJwWEO9`RQYnVlSY&n{0T^gmng zvs=&#J}klnoZh)+U7 zKEQkCWyU+^^`Rf`dfp%gvy#<(hTY6N&gVg7zI^7lqa*HQ{wH*y8+JXv7rp6=n)B71 zKM*zN4@KSi=lBx+&A*7f&bQ0?_Bh|}=G)zZl%z&B3uL>XII>+(3cHMbnRtANSz`0z z|320}V`UVp&shD$nkUw8Gj=x1*~|glSgd``U$NOV%aR+_G-ox$0{>9(?i{H;e z?_Oy43*X>v{)c=Q+VjE)NoYi4n$m*S$ZcVJW)jE!AhO6#7v&)zA5)lOn0Jv}7saxZ zC+NYqUm}a12a&}u@hbXQtj1#RSUicd$ak^*Fa8=cE;i%ht3hOmTV0ZYI_P1^Eaotu zg}58ve2FYkV~JUpy2GWN=!`ut?M6@fV82VJv7Qq_WSQE_WU=gB>}6R(Lge9lERkjQ zvdrwuROVlMOW_bdGE%2c$%PFK3Kl^u}L$}V(e z0VmPJssh;SszMaSjjk$98M-6)Ri}c;YPtDNN@TU{R?BX+>{chnEv@$N)oQt~Ud(lV z#I3Hrh1pmC#_vI7O;Y^r8u_f*id@(1U^ix8bC5&$`?dadZF$Brju_0nb}BQN$!ExP zT{4>Bme)1M?CZ?E&fM!dBBOQgdELDrvOX8N$&1<7n|r;v*B3)Z>)qRWy{(tydV5;` zn16T{L^cGxL=L=f!}uVwF&*j2L{_qqot${rM(^2}5AWJ2=Z%Fag7L^kVnvwSxDy>Bi>St?MGHVnazHlIX|&8IobSA5My?gx=A z?q^F#J@mJwAu`-zUt8>Ji+;BZ#_U_nzU2l#aTEP)G4qx`u){5X2a&CbNRE5*{gTMm zmZ-7S-nXi=)r?z*2a#?5dz*~6xrJ@^yR8dy+2#hf^`;N~8HjAQd2ZW_=SDD+F_>?g z``b2=$=KJnX-sD(cD8Lldfj#lH@{84+w{9V;ALLJU2Jz3+jHYCw##+9T(@^aKimC= zw(DcN_io?LPIlwphV63QZa3S%3?jZ?64@~cz3kA(4n6G9!w%W)SinLSA;%rdSk4Mo zv6?lk#cl1lz%$&^PPe`D6<#ME3Gh4I`5{%QP7TH(kDc<^DT|$Y*y%kxKgBzC+V{?f z{KXUO%Xd;DyV6pY@>D|2UFz++i@bKpYu5ujyX#Lpzw0r6f4kh`E`9FO=Wc!Omg(+S z(d+JP)WcovZbTE@)owfA-3htww(H$8*sZ_aGT8kYM>)m`^yqshkv(SK^F9%hVD>#J z(Epy+w4ohp?@@bC6rZqxjcjHs_P59W_Uz(CZ8Plo7ya*b6MOZ)SJr#WAd|f^*;|py z$YpOeCL`ay^4&XwS@`#9@7y4=&;9JnhksLi=OnVP2<~a0d)ilm(x|D-R=7n+3eH*KK<|8#{ukQpMCDLm;LYX9`TTqZ=yu@>vO-%efuQh z+b5Czt!RsU_IG9->)D9f`_--o*4h~{4!x+gZMl%*SeQ*M5ADoQZ z2dAUb|AYEJ^crtqCx;4QFNf;jE)O+8PKRR9=OLLN`V^TT zTFVCHb7&in_=_i~edtAP*&O;Wh#a=t!zGc;Vc8s(&0*Obw%@~QA2!2b*&NpYVc8tk z|KXWjG4=R5|W4yNQumk$@o|{n$d!m z%wquyk-;%N9P^%IJMfO@QLovD zy#VPT8>9&CO%)cbUVx*nYDZ&l5s?rzYKYi^b+*RdV%HcoYK*cec6rKF|Gpzuf0R^8!a^&HU!qXVy78!@&d#TnJzU;HP|kOJ#Bl=xuTe8Q@!! z@vX@R0lJ(#5wOu@WSfkBCL`NqY%>|1OhzY@Uj_C*c@3AeF%YleLM=9;WD@!>To4o1=ql}a4%rLkH3VUwaV0<5W#V99^j`_kzp!(n>rg- zYL#jD?X)`pKbm$IFvm1>G7X(fLvB9Lr7{hfry=vS$KeTh8lDC8G!5UGwov28lt4fW z&;eUc$492`4!xldprh$W0D77}2L1>a!zIAJrnAQM7lA!YN5<)|!<+DqR+&+PCMZKo zVE!3xpe-B<*nrP|smx&h8Akzjm~kxJ1MF!Aww{4K`23g33~W6Ed(8L>mc!S8J!Y(i zwSYZlR-ilJUo)}CO#E>sYs_SgnXEC3uV>+NvqBgN`@p`C0J&^d0SCe%fPAxfZkBqE zz0X3vS;#i)I5-i04d`PQF*EB_7zg9ww{R1@46gwGIO{*~7R-VZ1g`H9nD7n zv)e%jH~{eX*{nYs*=L^*5?%oGJo_bJ-r1AkW0gF69T&iMNU&E{jX`M&||Gk*e{ z1L$Br^36vF^WOw~cK*BYzE)Y#8<=N-2gtYpdn`B}u<-((U2q;;2$O(VSa3O90q9}@ z_E>-|7NCa(*kZvPm<#h^5qt`t!%{&0g~Z6hw!j(-M+1Jh5ZMTz$HF~uFW@75 z)=Y)ZnyD;CFN@L3;CFpYrKDY#(EkS2XeuC|QK9=m%DxYi61T8=Z^490OK^tfX9l(b%a0-lr z@o+le7oVRC_`~Oy!E?aAKL01Y4)XxLe7*=i(JD(1hGT&_mQH|+0pD4Q4wpU*=w<1@ z0sAe*eoL|6QtY=Be_A>pm}e=rS<2p*E`zV&Ygh$qVS`rr!UPK(K<+Oh7zNni3vBSk zUGT0}S;n51vFBy%d0A^{3mpJ^Eo1C5#xA=XSaTV6UBr3qQCHDIA zEO-Wx|I6p$MR*xr1NQSJvVT>A-f%LY%df`5Z{Rdwt*_36dw^%ZnxR#eBg=ARSj zSAPNc*=lsW`Wx5;n_)ZrtX0+w2McUK4{OlF8uYm4S8x$9{~C0$hPl_=47b7^fIikN z0CckE6Zj0!%No{P+ZV9M+8XqSL9jOrf#U$1to;jMm$eT9v9tD3_y@cL%(WJI*A0My zFc^4todG5w@47L7T#3}J4BiHOW8M2&Wj$Z7$0qBa1oXQ8d3XV^%X;$G z`d8s~coW_No?EY;`v5+KDey5&hnX-N@Q3yDfc>v0H>_v>>vw9E4eW6Pa&8z3!vGmK zB#^=W@CTR(*mVQGzu|JI!#@FeHsB{4-h=O8D{O-wwaUge&<;AnR6v%EGXPmOBF9GL z*oX{#{!eA&62Jx<7rYDF^Jo>2Nq6PJ|l) zyKlm$HcbZfv1uBhk4?z1iFGzD2iEx31pMe*4+02bER2IofIWZ9p1=K*R@vMK@RQ9o zz|NZo0y^BhH(=|{=y3CJK#!Z5b2D>p_JKJ!j{xS~d_CL%$hY~=a68~rn;(G30NZcI zH#g%?o6*f?^t$;6K(Cv(YnAUVge!r)eRm)5%y-!0yLVs)pwsWz*LTFrci4DK3Chq4 zu*;VA&jZqNgI0ejn0h5o>vwy>WqXTjMp0q}z@=ffXi65#h+=4zF#8pMDtw&FKi z_lJYvP#6to0J_`yAbbJK02^=p8nEqF?7DTGR{0+JzDKX$?*o^Ege%}GxE9da_t=%s z1gd=hE})xjdjfKA+Y9=^K)@E;kbN6+Y#Rs6we4*{Kil2|Vr1JCz#q2Zm)pM4DnB#< zbNw&|PJvTlJe&?^0($rX8GiUXFxQU)O3(sY!fwzG(Cv?`|6>8n@#7=FGe4rMAF=C? zPs4NYJWK_2@Dp?Wlt2nO8~_Icy8G!cxD=j(#ad-Mw%XnkdP85R!2n?2+m8WswH;sB zz6J1`?c3ld_*tv$V4WSvyaRvVaWbIG9qfO{444Jja>oK-ogMh!&+O}G7skTFz+QfS z6dniU`T1F3FF)g_J6nSf#1@~sQ`tEm76EhZWUifR4EEaj1uTQFU^%RWZ(ud7)w*e2 zU=%dNevm*8qv3Ek9!`WC;byo69*3vkX?PaC*Sd)&=m0%oAUNPd1S4S|h#`ah;UG8^ zm{TyPxE1bzyWuZzAG{2+0Xa(s32fsgiWv+wgT&yx5Eyto8BGRw>}y! zgh{}jb#$iR1w606058Hcm;tk36|8}E@UzyfWk+ByEf0fJ;Uc&lkfY^?uoxKIN{3#6 z-dnNPRwuy)fSp<)cdNHyD$Ik$>h->+wP?}!P2Ak6@%#V!rCX~{`QwK1hn#Wlc?XO? z5&o_f~!L&i=TKk>-%XN@0s-Wd~qU)%4NR~rw`(RS0?X#KPq z&vkr4>#q&a25N(}!P?&15N)VtXv4JOnyFcutvQ;jd77^UTBt?Z2yGxq5V!fQ#(sLTl>8>LHmPtjy6#{S36HTU%NoNQ2V1c zNxMk9Si3~KRJ%;OT$5T|yF$BC`;&H+cC~hmcCB_DABlAXp>z|Wbc^<9?N;qJ?RM=B z?N043?QZQJ?OyFK+I`wzwfnUPv}J)u2G;61H9L)bm1 zJ+Hl>{Zo5U`?AwOE^>F-RaRs-*tr93%(Jz2y)&R2p)a94<|1Nn1M7m7ervAVV3+5ptv)C7b0wa$mWhjAbHI znaNxha({V%JWw7a50;0>L*;0Bm^@tmN**DPlt;;<Cd7Hdl-XZUlcgefu zJ@Q`p7kQujtGr)6ARm-}lMl&<} z9MiF1k!M~In6{DonQOR7KFh9z2EAkTlvPcYrNP$c{ot6^q}nw->SSizz>VnuNr8(Ea4Y2*e$*ibL(2wl%l4W9=L*F@1w zks2|!2(8GB11n~>Fc0G>Kn;k3Y<7fd9HjL9z~+lAvn{3GJPX6nP7)(YS=n{N!U#Q9 zwt|#V3@f6DVRq`8sp}_(9~PE@3L+!2988bxJ*z0f)X5p<`k@#3VQg4tnxeNjM>gyq z#Bq{DfoEEeOooL{npqLr$`e!V6z9On10%%; zO~-Nq%T^weq%KkK?n)vzSCqR=x9FTf*_4P&XzgoW*9 zu30#koMEQvhu9@IoQC(hPD;pFCT{7n<21pt%JhY21s?8;QZp9K6UT_%EHjcMkMYzn z@Juz#OMNT1Nq%(7vOIR#!4+aL2ro{=D&C^E=}$+FdmB%Ge(>jzL8}qi7O}qzhNxXO@llyawE@j zR<=R{J4qeGajYl^Nuz0zsGXW*ODhfye45$PlpJCcURIbDevpK@pDUXNv7O{T8i+kC zhVS?W+0!&~&yT#o57RVJTfnyhJ0ihEdC0KB_KhfY3j<}?X69zfGZLo%+K&9X8tE6`S!ks(|x zY~W%(YP9hiKTj=3rNP(^%`9~?!zKdJTWk}jo^8Y=ktnrdo499KL^ygefs&}K?~(wF z#4}^VHf_iBJ=gptaj{F28etQF8IGjlCJIUT9+Bn*cH+93awL*wmZ%uPb5!o-m&m1N zk>71E38^&=w`5i~&jR0Y%uJ=hASF)8Z-tWtt{r>6>8SkXlLI`m3VF|Gn2TW(Y-~7T zRN%{5gx4}GbaD?zRWb*mvZ+e=#7&Z#RD~cht%k9p!X$^~8L6gFIV2~XDK3OehDqWm zEPSu0_Ga~n5B8yUG#6j#DP7>$13!dCaTwZSB$Yc&SM%0IqXGA73Mk@BRIPtyA zRdE`ng@b$)amU8V2}>i6DRPO4IE7!Bxv8w+i}yq9cn%Z5~K{mjv(FlvU*+ zmXn269%Y6Vt14rAWb!OWHu4&}QfW;MbJ8%&ECMCTEw-Q{Id+@`WBHLvM+A;q6z@oV z;?eL)KZZ-9Acs(v3On`rBJzqvIg;o4lvDnDtX$0v3HT&e?E`g|2(z515i(JddP!=z zMoL_(LP<+N#ziYW|2V1bgpI^yQ}hd3kl13o1TAUMwH=J&6nSou;~R@+x#OX+)Nt&A zG-$=Fm${_k2&ZtY*dpsI+5EH!8#^t?fNosiY91{Co?j$s76p;3axW#1lugK(j*EJ; zfNYuKdDI}H+RYrR(O|@}7uXr8%}SNts2KDi?9`@wXSPk;7LBAD6<**5Bn`);bHF8x z5EsGULJE-`+fJ$+377C=@-#&Q*LDjvf>dM>M}F-1i5(;=Bbg)-Kgo%`lz?!3W{Xol zM7?;L6QzSlP&Q3%!a2fS!vu5E9*`VNPpQ#K zEuXe6O&cDP(?cXyZXg5+AI-A`G#F%_8wZs4+*I|HOczC7oET}Y5`Ip|L?)e;U)Uz0 z>Bf%Rs0(xrPC>DkadjU(Ho?z1Sl&^B|DTM*iL z+_0%C;t>W=O&!^iJWc<`l(;aF?*)`uC0p!Ko2W9BZieA~xRgy22#DmEniYqQc7=wE zyc!ses>!aE(hc~08TgJ50hUu966X|v2tOo!sQjjaC#9?L@me=RgJ!CB>Y``YCok9; zq3;$hi>h|j3M?}Za{6n(F-&!>0Zl`Y1b7JjBgKdY%yaF`r#AXD56nifW!nkXA)ttQ z6@WB|YOEd6RI#=S8OyPQMCFJAdVN|iHwnn{WIu-CY~&Xlj69;YfQOLM zJ<2WyC5NQAJj2Y~PHE*VBP<~aC@X(KAp77^iAVKruB)i_3Q&ITkdmwFmnBmpe$ zgwz58Rn3+cxQs;wG|>}_l3o*z3Zy%>Ewv0lr3Eyj!^DyEm&rdS`HDfi5#+~le%qY7ti_&@%^*A#*Cng+%*z#0MkjK<2 zlO8D{yR&FUyP{eGaz$E1W}bvj!+WzVqiE4_<*LKSTZwKqgV4i~9M{FBG&w0*F|%l4;!OElV&;vO-=O7Z zHq|I`(s7MEumc*(fODKmT%=f&qZ#2Gavs9TGiD1NgSsA4@+euh${}&#hIDeYrX1dw z&7_r52PnF;JVP0rOVy&P)`tb%PGTXTn-LX>86u@uLFXDTL9D z87m`wG>)+ZimDtAEqdU%^s_{}a-`U|LP`Sqy)2!(%Jt~jr%*DSOIJDgx+ol^=7Z3TVgxqVd3=Y0aXQMgxo86jWn2$ z9SUw&s0KI^`(_xiK%$8-H=Ru*sS?$>9kM?P42vd|HtHj8S%jQTX>Cd0EJ~*0T!yXL z61<&Sy^Gloa|Gxkp{gaqK8&x*G?H0 z;T$9wIxEsC0|RnlBV=&T#G-fhQ6+BTGt4C`W*#*wC^BNU5i;D<;UIW#z$pqxVo{DK zs*8?NrX{Ew#mJ-6zztA{>U(J;h%t3bsOYTXcypK0`v4e7Ze^VJ1`ZIBOLb@3DVjQ~^@i9&U;Mr(p>s5j=a!SHD55f0P% zs(hFMmDT3N+^D^(q|-Uj#QWIaBRLdVqdFI4;YP2{;asVgt`?WIadNI7xMn0rHIjov z*arbk3avFROy3i7-M~H^uDH0wOU*`I$js1GDaegg0Meq+f|3M?DX#MZiyH+so4Oa^ zTuuwhp@l_pP{Ny&5eK$3|eqiV>wwbq)kz!r>Z=<>*7DG*hJ-N1eAK4y4>^F`G|g zPH?Ku(ZrmjP|jBj3%MuaLWDbNN8Ml$E?oMVq&p50ITv^tS6K|>W-{j_t`5bje2`!; z7RRxIvcQpzK=)PW;M1o1v=j(Vd*pJdLJLC3pqYS%hVGyd^+cvc#Wjr}BmyYAln?p} z)uOATJXZ~A<7C98FoHU?SgI!{r>W$?MNpXe+<0)pXmqMU!STcAxZy-pa&*pVS7|V_ zICjMBmS8}(h!Y!!N|J-AE=$Q=jrNGE3EQ_Ej{ITco}4RPE}Th5WGc4csp_0z)0~66 z$+0A-U0}AD?Q?~Mwg^L9m{26EaAq+%7uhJ-Y}}Y-4ktr(LXR6&hFeW_Z9<%KkH=L+ z<{%`qaoOb-)Om7CPO4FN+)+v% zQt{O=lj9`2!aAu+H9qw_C0Nre=gNV%331$TB)VRkW`ZDAZ623TEQ)@7`gDgKQG!&+ z1SDE6f`~Yi7KC|~-iU5i!Lukhd90jVU0-t5j_C;zRoZCGP@$1>tA&uqJvoucB@Z^`M!AvjDIeTYV`7U#Wz3yosNB+0H}$+& z;pRtO>8QI}cFy|+6wOhMOx9?&IgqG}J)7gLx_YGzV^L(_27)_$*Wm!=&k>WvMdD&{ z$qD_&oi+B{bALbf?D5C_^2hP#o;>=1*iGPdN#ec*b;!W|E zcw4+9-WBhO_r(X|L-CQAET)K$#Z)m(Ocyi6OfgH$7IVa0F;C1F3&cXPNGukgh)>05 zVu|=%EEQjfW#UWml~^uTh_A&;@r_s|R*N-atym}4iw$C<*d)Fco5goxi`Xi@7u&=S z;z#k5*e-U6pT*9SRuZLBsj1YWR4(bImZesu)}`G_ZAxuR?Mm%S9ZDTbol2ccT}r!` zx|S-XZl&&}JxV=FJxjexy-RzR`jq;X_9|6NwNk%Q|I&ccz|x@7;L_fuA@XJUihNbR zCjTv8m;aG($T#I%@@@H!d{@3F-GvzEfTh5VltfHk z=u;Pc>te6EsMbZTF8b9)|GF4Z7X#~JP+bhJi@ob&NL>uA3!^TE)y43-Fzdpq3%f3y zx^U~ls|&v_g1QLnBC3lKbuqFoM%6`gUF=gA`_{#NbrIJ^QWt4mWOb3(MNt>~*Tn&K zabR5>R2K)=#UXWZXkCo1i^J;T@VekLVEIQJQ5Q$n#Zh%}bX^=%7suAcadmNgU7S!C zC)UMDyI!E~dV#v@1?sLBsPrqlUZB#D?s|c`>jf$;{;n6OoV#|tK;88Mm1Enk7pS{l zpzeBsy6Xk%t{14gUZC!Jfx7Dj>aG{4yyn^U0(I95)Lk!7cfCOU|Lp}T-yf3rHs5u{ zH;D31PW{9~!kc+s?)o0zbHHnHU%hAD^#b+(dV%`?@RjFWt+o0o%hLSPBCXHEr3Iyh zb#ZcCjCr`Uxb#U~oKhEK<-blkcihAYXPtG}#4}Di_zs_ zzUn)EFRks@_>oOb`{n)T6{TeltM{B^I(8U+GP&_En2nc)S^duLiwEXx#jcA7nUcLFD_qNzPwy7 zUs=AYd`*Y7fZk^* z<(1`C;+-%GFQ{q=$RV10;g=)-kOcXUq=^hh76H|zWAv7YL=zQ2B;ez1P1ewh9%{Yd?2 z{aF2Y{Y3rO`WStzK29I6pQfLopQ)d%PtecN&(+V@FVrXL7webmm+N)?O8qMR8vQ!` z2K^@e7X4QJcKuHMZv9^UKK*|ELH!~95&cp9G5rbsDg7D!IsFCwMg1lH75z2+b^Q(f zE&Uz+J$-e{PA$WhV_II_@|l+NTK?3k+Umeoe`s}gt2bM%Xx+B8)B1$g_12HKp4ocq zZoPNQb~|&o+je_xw=deXY%{FQ(QPhi^GKVI+iYsvz3skjf7|w^w*PATX}eOp!R-!j zcVW8++I`S&ZTl|mN3wO`PFM~8kL4(>3q!@V8e?y$0B`;K16lR946@yU*} zJ8tXLr&H1C>`r%ddcD(^om+P{J0IKmvd)iop4NGDmmXc>E~j_7rOV4*mh9eQ_aVC< zvHPUm|F-)_yRYxswd<&^5BHqXb7QY=z4qxfzSoVtUhMTrZ_#^D@56du(EI-0@AqD_XXibmJx|&5nmwQ0 zbN-&&`_%dz)aRT&_w;$I&)0q1^>zE6*!POQH}t)$?}L4x?fX*SH~N0qcV^!eeb@H= zfp^zOR*$Y8TRpydV)fV6G1alvanV?%w)r+f_RxhvC zt5;U9s$NsQu6jfDrs^%#TdTKM@2uWky|;Q__5SLE)rYE&R3EKAR(+!SRP~wabJZ8B zFIHcwzEXXy`g-+^>RZ)!s_#`lsD4zPQk`0zUY%K;U7cHZ4Vq`I`atol`T zMRjF$b#+~JV|8JUh7utQR`jnTdUOu)CSjv)`r*Y znpX>JBWwHA;#yYQzjjdV(Awd(BWuUhj<20m8&f;AHokUx?abQmYvh z)~>8wUAwM!W9^pOZM8dV_tfsIJy3h7_V?OjwI^%O)Sj=sSbMqlTJ1lzw`%X!KB!Hu zO|8wS&92R>Ev$V~TT=U?_Eqic+N#>x+J@S^HjK`ThRd@4bGj z`*-Re_8-&#>i*C4pV$AV0o4Hq4*0`>y9c~EV8y_;1D$~<46F})eBjK1TL<+Xlnpv_ z&~1ZW8}!BCmV<{4K6>yagC80E@!(B+ci(&8y??v+O?&@q?@x!6h72BZ_>c>SJTT;g zA!~y6-`sp_^Bv81H9yk) lO!I5a?>0|up4I$i^UCJ6zoh?C>A$~!{oiu%-`|?o{|~l4z0&{y diff --git a/htdocs/theme/common/octicons/lib/svg/alert.svg b/htdocs/theme/common/octicons/lib/svg/alert.svg deleted file mode 100644 index 3a75a6a4702..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/alert.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - alert - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-down.svg b/htdocs/theme/common/octicons/lib/svg/arrow-down.svg deleted file mode 100644 index 49a04c4b48d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-down.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-down - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-left.svg b/htdocs/theme/common/octicons/lib/svg/arrow-left.svg deleted file mode 100644 index b6153c0eff2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-left.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-left - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-right.svg b/htdocs/theme/common/octicons/lib/svg/arrow-right.svg deleted file mode 100644 index 5d7f96ac2d8..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-right.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-right - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-small-down.svg b/htdocs/theme/common/octicons/lib/svg/arrow-small-down.svg deleted file mode 100644 index bcb668d9c2c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-small-down.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-small-down - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-small-left.svg b/htdocs/theme/common/octicons/lib/svg/arrow-small-left.svg deleted file mode 100644 index a98f8a13e03..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-small-left.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-small-left - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-small-right.svg b/htdocs/theme/common/octicons/lib/svg/arrow-small-right.svg deleted file mode 100644 index ac121726607..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-small-right.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-small-right - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-small-up.svg b/htdocs/theme/common/octicons/lib/svg/arrow-small-up.svg deleted file mode 100644 index 9bd85161df4..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-small-up.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-small-up - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/arrow-up.svg b/htdocs/theme/common/octicons/lib/svg/arrow-up.svg deleted file mode 100644 index a015f862bb2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/arrow-up.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - arrow-up - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/beaker.svg b/htdocs/theme/common/octicons/lib/svg/beaker.svg deleted file mode 100644 index 48aa51a85a2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/beaker.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - beaker - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/bell.svg b/htdocs/theme/common/octicons/lib/svg/bell.svg deleted file mode 100644 index 70607e932e7..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/bell.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - bell - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/bold.svg b/htdocs/theme/common/octicons/lib/svg/bold.svg deleted file mode 100644 index a63af7ac7a1..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/bold.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - bold - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/book.svg b/htdocs/theme/common/octicons/lib/svg/book.svg deleted file mode 100644 index 76026481ccb..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/book.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - book - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/bookmark.svg b/htdocs/theme/common/octicons/lib/svg/bookmark.svg deleted file mode 100644 index 24fe161ed0d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/bookmark.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - bookmark - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/briefcase.svg b/htdocs/theme/common/octicons/lib/svg/briefcase.svg deleted file mode 100644 index ae56b711b3c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/briefcase.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - briefcase - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/broadcast.svg b/htdocs/theme/common/octicons/lib/svg/broadcast.svg deleted file mode 100644 index 491048fb87a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/broadcast.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - broadcast - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/browser.svg b/htdocs/theme/common/octicons/lib/svg/browser.svg deleted file mode 100644 index 5c9251d0f91..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/browser.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - browser - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/bug.svg b/htdocs/theme/common/octicons/lib/svg/bug.svg deleted file mode 100644 index 8f515ad1b98..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/bug.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - bug - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/calendar.svg b/htdocs/theme/common/octicons/lib/svg/calendar.svg deleted file mode 100644 index 47755281156..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/calendar.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - calendar - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/check.svg b/htdocs/theme/common/octicons/lib/svg/check.svg deleted file mode 100644 index fffa457ac33..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/check.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - check - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/checklist.svg b/htdocs/theme/common/octicons/lib/svg/checklist.svg deleted file mode 100644 index 2ba6b100be0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/checklist.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - checklist - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/chevron-down.svg b/htdocs/theme/common/octicons/lib/svg/chevron-down.svg deleted file mode 100644 index a77c7eae8c0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/chevron-down.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - chevron-down - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/chevron-left.svg b/htdocs/theme/common/octicons/lib/svg/chevron-left.svg deleted file mode 100644 index d09f2f39e97..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/chevron-left.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - chevron-left - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/chevron-right.svg b/htdocs/theme/common/octicons/lib/svg/chevron-right.svg deleted file mode 100644 index aaaa6f036f3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/chevron-right.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - chevron-right - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/chevron-up.svg b/htdocs/theme/common/octicons/lib/svg/chevron-up.svg deleted file mode 100644 index 4bd14a27c5d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/chevron-up.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - chevron-up - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/circle-slash.svg b/htdocs/theme/common/octicons/lib/svg/circle-slash.svg deleted file mode 100644 index f0f5143a802..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/circle-slash.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - circle-slash - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/circuit-board.svg b/htdocs/theme/common/octicons/lib/svg/circuit-board.svg deleted file mode 100644 index 5c4e07e59b1..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/circuit-board.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - circuit-board - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/clippy.svg b/htdocs/theme/common/octicons/lib/svg/clippy.svg deleted file mode 100644 index 4001b75a296..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/clippy.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - clippy - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/clock.svg b/htdocs/theme/common/octicons/lib/svg/clock.svg deleted file mode 100644 index fb25a9ac451..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/clock.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - clock - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/cloud-download.svg b/htdocs/theme/common/octicons/lib/svg/cloud-download.svg deleted file mode 100644 index 0cd213d57c4..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/cloud-download.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - cloud-download - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/cloud-upload.svg b/htdocs/theme/common/octicons/lib/svg/cloud-upload.svg deleted file mode 100644 index b8c24ce596d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/cloud-upload.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - cloud-upload - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/code.svg b/htdocs/theme/common/octicons/lib/svg/code.svg deleted file mode 100644 index a297c9ba1d6..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/code.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - code - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/comment-discussion.svg b/htdocs/theme/common/octicons/lib/svg/comment-discussion.svg deleted file mode 100644 index 85243149efe..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/comment-discussion.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - comment-discussion - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/comment.svg b/htdocs/theme/common/octicons/lib/svg/comment.svg deleted file mode 100644 index 55279771463..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/comment.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - comment - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/credit-card.svg b/htdocs/theme/common/octicons/lib/svg/credit-card.svg deleted file mode 100644 index c801be4b18a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/credit-card.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - credit-card - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/dash.svg b/htdocs/theme/common/octicons/lib/svg/dash.svg deleted file mode 100644 index 6c000a991b0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/dash.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - dash - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/dashboard.svg b/htdocs/theme/common/octicons/lib/svg/dashboard.svg deleted file mode 100644 index 7c37b3a6637..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/dashboard.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - dashboard - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/database.svg b/htdocs/theme/common/octicons/lib/svg/database.svg deleted file mode 100644 index f1b798a970c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/database.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - database - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/desktop-download.svg b/htdocs/theme/common/octicons/lib/svg/desktop-download.svg deleted file mode 100644 index 6c9d08d97e0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/desktop-download.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - desktop-download - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/device-camera-video.svg b/htdocs/theme/common/octicons/lib/svg/device-camera-video.svg deleted file mode 100644 index e8e8167a812..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/device-camera-video.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - device-camera-video - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/device-camera.svg b/htdocs/theme/common/octicons/lib/svg/device-camera.svg deleted file mode 100644 index f0fa4bc7cfd..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/device-camera.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - device-camera - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/device-desktop.svg b/htdocs/theme/common/octicons/lib/svg/device-desktop.svg deleted file mode 100644 index d2cae7ae900..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/device-desktop.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - device-desktop - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/device-mobile.svg b/htdocs/theme/common/octicons/lib/svg/device-mobile.svg deleted file mode 100644 index 549767577c0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/device-mobile.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - device-mobile - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff-added.svg b/htdocs/theme/common/octicons/lib/svg/diff-added.svg deleted file mode 100644 index 0b1cd1779c3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff-added.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff-added - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff-ignored.svg b/htdocs/theme/common/octicons/lib/svg/diff-ignored.svg deleted file mode 100644 index bd11f983b1e..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff-ignored.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff-ignored - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff-modified.svg b/htdocs/theme/common/octicons/lib/svg/diff-modified.svg deleted file mode 100644 index 03929da650f..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff-modified.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff-modified - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff-removed.svg b/htdocs/theme/common/octicons/lib/svg/diff-removed.svg deleted file mode 100644 index b5c25a3ccc6..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff-removed.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff-removed - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff-renamed.svg b/htdocs/theme/common/octicons/lib/svg/diff-renamed.svg deleted file mode 100644 index 3f385f1fab8..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff-renamed.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff-renamed - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/diff.svg b/htdocs/theme/common/octicons/lib/svg/diff.svg deleted file mode 100644 index 0ea237dfbd7..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/diff.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/ellipses.svg b/htdocs/theme/common/octicons/lib/svg/ellipses.svg deleted file mode 100644 index cba76eb46dd..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/ellipses.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ellipses - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/ellipsis.svg b/htdocs/theme/common/octicons/lib/svg/ellipsis.svg deleted file mode 100644 index 60acf955383..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/htdocs/theme/common/octicons/lib/svg/eye.svg b/htdocs/theme/common/octicons/lib/svg/eye.svg deleted file mode 100644 index f2021488709..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/eye.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - eye - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-binary.svg b/htdocs/theme/common/octicons/lib/svg/file-binary.svg deleted file mode 100644 index 8efbe8f5d2b..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-binary.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-binary - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-code.svg b/htdocs/theme/common/octicons/lib/svg/file-code.svg deleted file mode 100644 index 3bc2b299a42..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-code.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-code - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-directory.svg b/htdocs/theme/common/octicons/lib/svg/file-directory.svg deleted file mode 100644 index 3b0ea6d66cb..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-directory.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-directory - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-media.svg b/htdocs/theme/common/octicons/lib/svg/file-media.svg deleted file mode 100644 index db00315d134..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-media.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-media - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-pdf.svg b/htdocs/theme/common/octicons/lib/svg/file-pdf.svg deleted file mode 100644 index dcd774e9bc4..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-pdf.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-pdf - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-submodule.svg b/htdocs/theme/common/octicons/lib/svg/file-submodule.svg deleted file mode 100644 index aa782e68dff..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-submodule.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-submodule - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-symlink-directory.svg b/htdocs/theme/common/octicons/lib/svg/file-symlink-directory.svg deleted file mode 100644 index 5d689bec548..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-symlink-directory.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-symlink-directory - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-symlink-file.svg b/htdocs/theme/common/octicons/lib/svg/file-symlink-file.svg deleted file mode 100644 index 710224295de..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-symlink-file.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-symlink-file - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file-text.svg b/htdocs/theme/common/octicons/lib/svg/file-text.svg deleted file mode 100644 index 874cf5b9100..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/htdocs/theme/common/octicons/lib/svg/file-zip.svg b/htdocs/theme/common/octicons/lib/svg/file-zip.svg deleted file mode 100644 index c0d0f282fb5..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file-zip.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file-zip - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/file.svg b/htdocs/theme/common/octicons/lib/svg/file.svg deleted file mode 100644 index a704f0c7118..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/file.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - file - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/flame.svg b/htdocs/theme/common/octicons/lib/svg/flame.svg deleted file mode 100644 index a9b69abaafc..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/flame.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - flame - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/fold.svg b/htdocs/theme/common/octicons/lib/svg/fold.svg deleted file mode 100644 index 5446d76a46e..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/fold.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - fold - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/gear.svg b/htdocs/theme/common/octicons/lib/svg/gear.svg deleted file mode 100644 index 2fdf75deec1..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/gear.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - gear - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/gift.svg b/htdocs/theme/common/octicons/lib/svg/gift.svg deleted file mode 100644 index 1cb9cff4535..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/gift.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - gift - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/gist-secret.svg b/htdocs/theme/common/octicons/lib/svg/gist-secret.svg deleted file mode 100644 index e427060c776..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/gist-secret.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - gist-secret - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/gist.svg b/htdocs/theme/common/octicons/lib/svg/gist.svg deleted file mode 100644 index ff79f169b27..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/gist.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - gist - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/git-branch.svg b/htdocs/theme/common/octicons/lib/svg/git-branch.svg deleted file mode 100644 index 0d2e53fd28f..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/git-branch.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - git-branch - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/git-commit.svg b/htdocs/theme/common/octicons/lib/svg/git-commit.svg deleted file mode 100644 index 0ee7457f455..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/git-commit.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - git-commit - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/git-compare.svg b/htdocs/theme/common/octicons/lib/svg/git-compare.svg deleted file mode 100644 index 6f7481f8293..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/git-compare.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - git-compare - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/git-merge.svg b/htdocs/theme/common/octicons/lib/svg/git-merge.svg deleted file mode 100644 index d0f41029b10..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/git-merge.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - git-merge - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/git-pull-request.svg b/htdocs/theme/common/octicons/lib/svg/git-pull-request.svg deleted file mode 100644 index 492dda2ff46..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/git-pull-request.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - git-pull-request - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/globe.svg b/htdocs/theme/common/octicons/lib/svg/globe.svg deleted file mode 100644 index 8e9d0196ff2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/globe.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - globe - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/grabber.svg b/htdocs/theme/common/octicons/lib/svg/grabber.svg deleted file mode 100644 index cd3b15112ca..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/grabber.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - grabber - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/graph.svg b/htdocs/theme/common/octicons/lib/svg/graph.svg deleted file mode 100644 index f72a1875263..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/graph.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - graph - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/heart.svg b/htdocs/theme/common/octicons/lib/svg/heart.svg deleted file mode 100644 index 688a14d9a5e..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/heart.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - heart - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/history.svg b/htdocs/theme/common/octicons/lib/svg/history.svg deleted file mode 100644 index 77010ba5c6c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/history.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - history - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/home.svg b/htdocs/theme/common/octicons/lib/svg/home.svg deleted file mode 100644 index d2862e50f48..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/home.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - home - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/horizontal-rule.svg b/htdocs/theme/common/octicons/lib/svg/horizontal-rule.svg deleted file mode 100644 index cf444e7b3d2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/horizontal-rule.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - horizontal-rule - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/hubot.svg b/htdocs/theme/common/octicons/lib/svg/hubot.svg deleted file mode 100644 index d2fb9ad052b..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/hubot.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - hubot - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/inbox.svg b/htdocs/theme/common/octicons/lib/svg/inbox.svg deleted file mode 100644 index 1b288f2570f..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/inbox.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - inbox - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/info.svg b/htdocs/theme/common/octicons/lib/svg/info.svg deleted file mode 100644 index 7c6de3ebd66..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/info.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - info - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/issue-closed.svg b/htdocs/theme/common/octicons/lib/svg/issue-closed.svg deleted file mode 100644 index f06480bb847..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/issue-closed.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - issue-closed - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/issue-opened.svg b/htdocs/theme/common/octicons/lib/svg/issue-opened.svg deleted file mode 100644 index d8ba7c46c35..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/issue-opened.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - issue-opened - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/issue-reopened.svg b/htdocs/theme/common/octicons/lib/svg/issue-reopened.svg deleted file mode 100644 index 1d5eab6bdba..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/issue-reopened.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - issue-reopened - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/italic.svg b/htdocs/theme/common/octicons/lib/svg/italic.svg deleted file mode 100644 index d488293cbe0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/italic.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - italic - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/jersey.svg b/htdocs/theme/common/octicons/lib/svg/jersey.svg deleted file mode 100644 index 56e85ee4cd8..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/jersey.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - jersey - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/key.svg b/htdocs/theme/common/octicons/lib/svg/key.svg deleted file mode 100644 index bc3b52382af..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/key.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - key - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/keyboard.svg b/htdocs/theme/common/octicons/lib/svg/keyboard.svg deleted file mode 100644 index 77aa0f5fe04..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/keyboard.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - keyboard - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/law.svg b/htdocs/theme/common/octicons/lib/svg/law.svg deleted file mode 100644 index 0b144363d9a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/law.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - law - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/light-bulb.svg b/htdocs/theme/common/octicons/lib/svg/light-bulb.svg deleted file mode 100644 index 364cb691527..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/light-bulb.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - light-bulb - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/link-external.svg b/htdocs/theme/common/octicons/lib/svg/link-external.svg deleted file mode 100644 index e4d0aecb71a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/link-external.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - link-external - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/link.svg b/htdocs/theme/common/octicons/lib/svg/link.svg deleted file mode 100644 index b28cf283854..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/link.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - link - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/list-ordered.svg b/htdocs/theme/common/octicons/lib/svg/list-ordered.svg deleted file mode 100644 index 16f458cbfe6..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/list-ordered.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - list-ordered - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/list-unordered.svg b/htdocs/theme/common/octicons/lib/svg/list-unordered.svg deleted file mode 100644 index e0fce86f0b1..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/list-unordered.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - list-unordered - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/location.svg b/htdocs/theme/common/octicons/lib/svg/location.svg deleted file mode 100644 index 2bb33c679b6..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/location.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - location - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/lock.svg b/htdocs/theme/common/octicons/lib/svg/lock.svg deleted file mode 100644 index 3e81d98ee0d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/lock.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - lock - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/logo-gist.svg b/htdocs/theme/common/octicons/lib/svg/logo-gist.svg deleted file mode 100644 index c95f58fc0cc..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/logo-gist.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - logo-gist - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/logo-github.svg b/htdocs/theme/common/octicons/lib/svg/logo-github.svg deleted file mode 100644 index bb6c20a7b01..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/logo-github.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - logo-github - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mail-read.svg b/htdocs/theme/common/octicons/lib/svg/mail-read.svg deleted file mode 100644 index 9a6ee16730d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mail-read.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mail-read - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mail-reply.svg b/htdocs/theme/common/octicons/lib/svg/mail-reply.svg deleted file mode 100644 index 03c8212f636..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mail-reply.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mail-reply - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mail.svg b/htdocs/theme/common/octicons/lib/svg/mail.svg deleted file mode 100644 index 1ff97533bb5..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mail.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mail - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mark-github.svg b/htdocs/theme/common/octicons/lib/svg/mark-github.svg deleted file mode 100644 index 2bda9afa081..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mark-github.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mark-github - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/markdown.svg b/htdocs/theme/common/octicons/lib/svg/markdown.svg deleted file mode 100644 index fb33c140c80..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/markdown.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - markdown - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/megaphone.svg b/htdocs/theme/common/octicons/lib/svg/megaphone.svg deleted file mode 100644 index e8f10228767..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/megaphone.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - megaphone - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mention.svg b/htdocs/theme/common/octicons/lib/svg/mention.svg deleted file mode 100644 index f82be86a72a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mention.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mention - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/milestone.svg b/htdocs/theme/common/octicons/lib/svg/milestone.svg deleted file mode 100644 index 829bba95ef5..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/milestone.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - milestone - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mirror.svg b/htdocs/theme/common/octicons/lib/svg/mirror.svg deleted file mode 100644 index 39055e601eb..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mirror.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mirror - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mortar-board.svg b/htdocs/theme/common/octicons/lib/svg/mortar-board.svg deleted file mode 100644 index ee3b5f8b9a3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mortar-board.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mortar-board - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/mute.svg b/htdocs/theme/common/octicons/lib/svg/mute.svg deleted file mode 100644 index f29643f227d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/mute.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - mute - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/no-newline.svg b/htdocs/theme/common/octicons/lib/svg/no-newline.svg deleted file mode 100644 index fae7c4fe789..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/no-newline.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - no-newline - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/note.svg b/htdocs/theme/common/octicons/lib/svg/note.svg deleted file mode 100644 index 49c1a3892b3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/note.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - note - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/octoface.svg b/htdocs/theme/common/octicons/lib/svg/octoface.svg deleted file mode 100644 index 87aadac2360..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/octoface.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - octoface - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/organization.svg b/htdocs/theme/common/octicons/lib/svg/organization.svg deleted file mode 100644 index 51cb253acfa..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/organization.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - organization - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/package.svg b/htdocs/theme/common/octicons/lib/svg/package.svg deleted file mode 100644 index cb41bcf6a03..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/package.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - package - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/paintcan.svg b/htdocs/theme/common/octicons/lib/svg/paintcan.svg deleted file mode 100644 index 387195bff62..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/paintcan.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - paintcan - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/pencil.svg b/htdocs/theme/common/octicons/lib/svg/pencil.svg deleted file mode 100644 index 354df31f3f2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/pencil.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - pencil - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/person.svg b/htdocs/theme/common/octicons/lib/svg/person.svg deleted file mode 100644 index a26225e1c4a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/person.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - person - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/pin.svg b/htdocs/theme/common/octicons/lib/svg/pin.svg deleted file mode 100644 index d08cb652dd1..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/pin.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - pin - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/plug.svg b/htdocs/theme/common/octicons/lib/svg/plug.svg deleted file mode 100644 index 8f4ee9f46ba..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/plug.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - plug - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/plus-small.svg b/htdocs/theme/common/octicons/lib/svg/plus-small.svg deleted file mode 100644 index ccb9d2d6256..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/plus-small.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - plus-small - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/plus.svg b/htdocs/theme/common/octicons/lib/svg/plus.svg deleted file mode 100644 index 3882ee5a1c7..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/plus.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - plus - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/primitive-dot.svg b/htdocs/theme/common/octicons/lib/svg/primitive-dot.svg deleted file mode 100644 index b9a2f416c28..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/primitive-dot.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - primitive-dot - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/primitive-square.svg b/htdocs/theme/common/octicons/lib/svg/primitive-square.svg deleted file mode 100644 index 361b7c383ac..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/primitive-square.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - primitive-square - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/project.svg b/htdocs/theme/common/octicons/lib/svg/project.svg deleted file mode 100644 index 606672f3f52..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/project.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - project - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/pulse.svg b/htdocs/theme/common/octicons/lib/svg/pulse.svg deleted file mode 100644 index a17f9c00d3a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/pulse.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - pulse - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/question.svg b/htdocs/theme/common/octicons/lib/svg/question.svg deleted file mode 100644 index 554fc5bf02c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/question.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - question - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/quote.svg b/htdocs/theme/common/octicons/lib/svg/quote.svg deleted file mode 100644 index 882882f0fbd..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/quote.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - quote - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/radio-tower.svg b/htdocs/theme/common/octicons/lib/svg/radio-tower.svg deleted file mode 100644 index 6f27ab3d9ce..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/radio-tower.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - radio-tower - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/reply.svg b/htdocs/theme/common/octicons/lib/svg/reply.svg deleted file mode 100644 index 7dbde79bfa5..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/reply.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - reply - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo-clone.svg b/htdocs/theme/common/octicons/lib/svg/repo-clone.svg deleted file mode 100644 index 8fb3ea1688d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo-clone.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo-clone - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo-force-push.svg b/htdocs/theme/common/octicons/lib/svg/repo-force-push.svg deleted file mode 100644 index a9cb1d62609..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo-force-push.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo-force-push - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo-forked.svg b/htdocs/theme/common/octicons/lib/svg/repo-forked.svg deleted file mode 100644 index b1db2556a49..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo-forked.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo-forked - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo-pull.svg b/htdocs/theme/common/octicons/lib/svg/repo-pull.svg deleted file mode 100644 index 9ca11006c80..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo-pull.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo-pull - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo-push.svg b/htdocs/theme/common/octicons/lib/svg/repo-push.svg deleted file mode 100644 index be7433ce792..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo-push.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo-push - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/repo.svg b/htdocs/theme/common/octicons/lib/svg/repo.svg deleted file mode 100644 index 613f72d52f3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/repo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - repo - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/rocket.svg b/htdocs/theme/common/octicons/lib/svg/rocket.svg deleted file mode 100644 index 1f227b7dae8..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/rocket.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - rocket - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/rss.svg b/htdocs/theme/common/octicons/lib/svg/rss.svg deleted file mode 100644 index 6d82aaf8c20..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/rss.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - rss - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/ruby.svg b/htdocs/theme/common/octicons/lib/svg/ruby.svg deleted file mode 100644 index fff3baf760c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/ruby.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - ruby - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/screen-full.svg b/htdocs/theme/common/octicons/lib/svg/screen-full.svg deleted file mode 100644 index 302ef1725d4..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/screen-full.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - screen-full - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/screen-normal.svg b/htdocs/theme/common/octicons/lib/svg/screen-normal.svg deleted file mode 100644 index e144fc5a04d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/screen-normal.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - screen-normal - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/search.svg b/htdocs/theme/common/octicons/lib/svg/search.svg deleted file mode 100644 index 547eb505ef6..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/search.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - search - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/server.svg b/htdocs/theme/common/octicons/lib/svg/server.svg deleted file mode 100644 index 3f439fd5a7c..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/server.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - server - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/settings.svg b/htdocs/theme/common/octicons/lib/svg/settings.svg deleted file mode 100644 index 70f860c411e..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/settings.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - settings - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/shield.svg b/htdocs/theme/common/octicons/lib/svg/shield.svg deleted file mode 100644 index f83a8d0c549..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/shield.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - shield - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/sign-in.svg b/htdocs/theme/common/octicons/lib/svg/sign-in.svg deleted file mode 100644 index 99bc42b6ccc..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/sign-in.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - sign-in - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/sign-out.svg b/htdocs/theme/common/octicons/lib/svg/sign-out.svg deleted file mode 100644 index dca0faa5cb9..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/sign-out.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - sign-out - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/smiley.svg b/htdocs/theme/common/octicons/lib/svg/smiley.svg deleted file mode 100644 index 6041ee91f61..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/smiley.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - smiley - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/squirrel.svg b/htdocs/theme/common/octicons/lib/svg/squirrel.svg deleted file mode 100644 index 0cff65843f9..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/squirrel.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - squirrel - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/star.svg b/htdocs/theme/common/octicons/lib/svg/star.svg deleted file mode 100644 index 9d8ca6a7fc0..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/star.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - star - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/stop.svg b/htdocs/theme/common/octicons/lib/svg/stop.svg deleted file mode 100644 index bc74f95f8d7..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/stop.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - stop - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/sync.svg b/htdocs/theme/common/octicons/lib/svg/sync.svg deleted file mode 100644 index 59b5f3c4000..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/sync.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - sync - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/tag.svg b/htdocs/theme/common/octicons/lib/svg/tag.svg deleted file mode 100644 index 1b425c8a69d..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/tag.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - tag - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/tasklist.svg b/htdocs/theme/common/octicons/lib/svg/tasklist.svg deleted file mode 100644 index e9291f70a26..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/tasklist.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - tasklist - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/telescope.svg b/htdocs/theme/common/octicons/lib/svg/telescope.svg deleted file mode 100644 index 961891fcf90..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/telescope.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - telescope - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/terminal.svg b/htdocs/theme/common/octicons/lib/svg/terminal.svg deleted file mode 100644 index 9980e86827f..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/terminal.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - terminal - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/text-size.svg b/htdocs/theme/common/octicons/lib/svg/text-size.svg deleted file mode 100644 index 9c40dd04ab3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/text-size.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - text-size - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/three-bars.svg b/htdocs/theme/common/octicons/lib/svg/three-bars.svg deleted file mode 100644 index 585dfeee331..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/three-bars.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - three-bars - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/thumbsdown.svg b/htdocs/theme/common/octicons/lib/svg/thumbsdown.svg deleted file mode 100644 index e0e642d9455..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/thumbsdown.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - thumbsdown - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/thumbsup.svg b/htdocs/theme/common/octicons/lib/svg/thumbsup.svg deleted file mode 100644 index a9bc8529976..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/thumbsup.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - thumbsup - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/tools.svg b/htdocs/theme/common/octicons/lib/svg/tools.svg deleted file mode 100644 index 52aafd2555e..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/tools.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - tools - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/trashcan.svg b/htdocs/theme/common/octicons/lib/svg/trashcan.svg deleted file mode 100644 index 4a4ad77d458..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/trashcan.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - trashcan - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/triangle-down.svg b/htdocs/theme/common/octicons/lib/svg/triangle-down.svg deleted file mode 100644 index dba0fc4ac70..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/triangle-down.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - triangle-down - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/triangle-left.svg b/htdocs/theme/common/octicons/lib/svg/triangle-left.svg deleted file mode 100644 index 7011b15bbe2..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/triangle-left.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - triangle-left - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/triangle-right.svg b/htdocs/theme/common/octicons/lib/svg/triangle-right.svg deleted file mode 100644 index 8abb5e92e25..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/triangle-right.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - triangle-right - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/triangle-up.svg b/htdocs/theme/common/octicons/lib/svg/triangle-up.svg deleted file mode 100644 index e6488cf35f3..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/triangle-up.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - triangle-up - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/unfold.svg b/htdocs/theme/common/octicons/lib/svg/unfold.svg deleted file mode 100644 index 3f40744b9d9..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/unfold.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - unfold - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/unmute.svg b/htdocs/theme/common/octicons/lib/svg/unmute.svg deleted file mode 100644 index 71a5624a738..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/unmute.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - unmute - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/unverified.svg b/htdocs/theme/common/octicons/lib/svg/unverified.svg deleted file mode 100644 index c91b44e5f4a..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/unverified.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - unverified - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/verified.svg b/htdocs/theme/common/octicons/lib/svg/verified.svg deleted file mode 100644 index c0c0a7223e5..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/verified.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - verified - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/versions.svg b/htdocs/theme/common/octicons/lib/svg/versions.svg deleted file mode 100644 index 62b9c199811..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/versions.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - versions - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/watch.svg b/htdocs/theme/common/octicons/lib/svg/watch.svg deleted file mode 100644 index 705f441ae5f..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/watch.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - watch - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/x.svg b/htdocs/theme/common/octicons/lib/svg/x.svg deleted file mode 100644 index 51466da25a4..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/x.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - x - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/lib/svg/zap.svg b/htdocs/theme/common/octicons/lib/svg/zap.svg deleted file mode 100644 index 95641465029..00000000000 --- a/htdocs/theme/common/octicons/lib/svg/zap.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - zap - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/htdocs/theme/common/octicons/package.json b/htdocs/theme/common/octicons/package.json index 61def286fac..77188450670 100644 --- a/htdocs/theme/common/octicons/package.json +++ b/htdocs/theme/common/octicons/package.json @@ -1,14 +1,15 @@ { - "version": "5.0.1", + "version": "7.2.0", "name": "octicons", "description": "A scalable set of icons handcrafted with <3 by GitHub.", "homepage": "https://octicons.github.com", "author": "GitHub Inc.", - "license": "(OFL-1.1 OR MIT)", - "style": "build/octicons.css", + "license": "MIT", + "style": "index.scss", "main": "index.js", "files": [ "index.js", + "index.scss", "build" ], "repository": "https://github.com/primer/octicons.git", @@ -16,24 +17,18 @@ "url": "https://github.com/primer/octicons/issues" }, "scripts": { - "build": "grunt", - "prepublish": "npm run build", - "test": "npm run build && ava --verbose \"test/**/*.js\"" - }, - "devDependencies": { - "autoprefixer": "^6.3.6", - "ava": "^0.16.0", - "grunt": "^1.0.1", - "grunt-contrib-clean": "^1.0.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-cssnano": "^2.1.0", - "grunt-svgmin": "^4.0.0", - "grunt-svgstore": "^1.0.0" + "publish": "../../script/notify success", + "prepublishOnly": "../../script/notify pending", + "prepare": "cp -R ../build . && cp index.scss build/build.css", + "test": "ava --verbose 'tests/*.js'" }, "keywords": [ "GitHub", "icons", "svg", "octicons" - ] + ], + "dependencies": { + "object-assign": "^4.1.1" + } } From d4c03230a09b8c8dd3b04ff53e19c3d8273996eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 15 Apr 2018 11:34:21 +0200 Subject: [PATCH 052/336] add optional esign field in pdf propal --- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index c27b8a7008e..2a790822ea4 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1624,6 +1624,7 @@ class pdf_azur extends ModelePDFPropales */ function _signature_area(&$pdf, $object, $posy, $outputlangs) { + global $conf; $default_font_size = pdf_getPDFFontSize($outputlangs); $tab_top = $posy + 4; $tab_hl = 4; @@ -1640,6 +1641,9 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($posx, $tab_top + $tab_hl); $pdf->MultiCell($largcol, $tab_hl*3, '', 1, 'R'); + if (! empty($conf->global->MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING)) { + $pdf->addEmptySignatureAppearance($posx, $tab_top + $tab_hl, $largcol, $tab_hl*3); + } return ($tab_hl*7); } From da66e5c5a74d0731874c2fd9e311f6a6a9a03e68 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 11:38:29 +0200 Subject: [PATCH 053/336] Update pdf.lib.php --- htdocs/core/lib/pdf.lib.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 1b11c3fd803..e238dc7054e 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -123,7 +123,7 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') require_once TCPDF_PATH.'tcpdf.php'; // We need to instantiate tcpdi object (instead of tcpdf) to use merging features. But we can disable it (this will break all merge features). - if (empty($conf->global->MAIN_DISABLE_TCPDI)) require_once TCPDI_PATH.'tcpdi.php'; + if (empty($conf->global->MAIN_DISABLE_TCPDI)) require_once TCPDI_PATH.'tcpdi.php'; else if (empty($conf->global->MAIN_DISABLE_FPDI)) require_once FPDI_PATH.'fpdi.php'; //$arrayformat=pdf_getFormat(); @@ -131,7 +131,6 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P') //$metric=$arrayformat['unit']; if (class_exists('TCPDI')) $pdf = new TCPDI($pagetype,$metric,$format); - else if (class_exists('FPDI')) $pdf = new FPDI($pagetype,$metric,$format); else $pdf = new TCPDF($pagetype,$metric,$format); // Protection and encryption of pdf From dec774ccf582e26a97ca2795ef9c734f45e0acd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 15 Apr 2018 14:03:05 +0200 Subject: [PATCH 054/336] login transparent when using background --- htdocs/theme/eldy/style.css.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index e1bb49ae46e..ae1ffa0ae99 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1815,8 +1815,13 @@ form#login { padding-top:16px; padding-bottom:12px; max-width: 560px; - - background-color: #FFFFFF; +global->MAIN_LOGIN_BACKGROUND)) { + print ' background-color: rgba(255, 255, 255, 0.8);'; +} else { + print ' background-color: #FFFFFF;'; +} +?> -webkit-box-shadow: 0 2px 23px 2px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); box-shadow: 0 2px 23px 2px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); From 9e50bbb9b1b7cf8c3d1300e62d1ecdd9b631080a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 16:35:18 +0200 Subject: [PATCH 055/336] standardize code --- htdocs/accountancy/admin/account.php | 4 +-- htdocs/adherents/agenda.php | 6 ++-- htdocs/core/class/html.formactions.class.php | 2 +- htdocs/cron/list.php | 6 ++-- htdocs/public/ticketsup/list.php | 2 +- htdocs/societe/agenda.php | 2 +- htdocs/societe/website.php | 8 ++--- htdocs/theme/eldy/img/menus/ticketsup.png | Bin 936 -> 209 bytes .../theme/eldy/img/menus/ticketsup_over.png | Bin 936 -> 209 bytes .../theme/eldy/img/menus_black/ticketsup.png | Bin 1044 -> 203 bytes .../eldy/img/menus_black/ticketsup_over.png | Bin 1044 -> 203 bytes htdocs/theme/eldy/img/object_ticketsup.png | Bin 520 -> 344 bytes htdocs/theme/eldy/img/title_ticketsup.png | Bin 1044 -> 234 bytes htdocs/theme/eldy/style.css.php | 28 +++++++++++++++++- htdocs/theme/md/style.css.php | 27 ++++++++++++++++- htdocs/ticketsup/img/ticketsup.png | Bin 1412 -> 234 bytes htdocs/ticketsup/list.php | 14 ++++----- 17 files changed, 75 insertions(+), 24 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 7d73202eb79..66c7000d853 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -225,9 +225,9 @@ if ($resql) print ''; print ''; - $htmlbuttonadd = '' . $langs->trans("Addanaccount") . ''; + $newcardbutton = '' . $langs->trans("Addanaccount") . ''; - print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $htmlbuttonadd, '', $limit); + print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit); // Box to select active chart of account print $langs->trans("Selectchartofaccounts") . " : "; diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php index 927bd22f7fa..64c4c3e09fc 100644 --- a/htdocs/adherents/agenda.php +++ b/htdocs/adherents/agenda.php @@ -148,10 +148,10 @@ if ($object->id > 0) //print ''; - $createbutton = ''; + $newcardbutton = ''; if (! empty($conf->agenda->enabled)) { - $createbutton.=''.$langs->trans("AddAction").''; + $newcardbutton.=''.$langs->trans("AddAction").''; } if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) @@ -162,7 +162,7 @@ if ($object->id > 0) if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - print_barre_liste($langs->trans("ActionsOnMember"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', '', $createbutton, '', 0, 1, 1); + print_barre_liste($langs->trans("ActionsOnMember"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', '', $newcardbutton, '', 0, 1, 1); // List of all actions $filters=array(); diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index f254fe44b9d..9f58a61aaa6 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -197,7 +197,7 @@ class FormActions $buttontoaddnewevent=''; if (! empty($conf->agenda->enabled)) { - $buttontoaddnewevent = ''; + $buttontoaddnewevent = ''; $buttontoaddnewevent.= $langs->trans("AddEvent"); $buttontoaddnewevent.= ''; } diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 7bca10ff883..803337dcb6c 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -334,14 +334,14 @@ print ''; // Line with explanation and button new job if (! $user->rights->cron->create) { - $buttontoshow.=''.$langs->trans("CronCreateJob").''; + $newcardbutton.=''.$langs->trans("CronCreateJob").''; } else { - $buttontoshow.=''.$langs->trans("CronCreateJob").''; + $newcardbutton.=''.$langs->trans("CronCreateJob").''; } -print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $buttontoshow, '', $limit); +print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $newcardbutton, '', $limit); print $langs->trans('CronInfo').'
'; diff --git a/htdocs/public/ticketsup/list.php b/htdocs/public/ticketsup/list.php index d4d8b16a743..2b8f3d821d2 100644 --- a/htdocs/public/ticketsup/list.php +++ b/htdocs/public/ticketsup/list.php @@ -350,7 +350,7 @@ if ($action == "view_ticketlist") { $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); - print_barre_liste($langs->trans('TicketList'), $page, 'public/list.php', $param, $sortfield, $sortorder, '', $num, $num_total, 'ticketsup-32@ticketsup'); + print_barre_liste($langs->trans('TicketList'), $page, 'public/list.php', $param, $sortfield, $sortorder, '', $num, $num_total, 'ticketsup'); /* * Search bar diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index c286ec7e6f7..63aa9873204 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -177,7 +177,7 @@ if ($socid > 0) if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; print load_fiche_titre($langs->trans("ActionsOnCompany"), $buttoncreate, ''); - //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $buttoncreate, '', 0, 1, 1); + //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $newcardbutton, '', 0, 1, 1); // List of all actions $filters=array(); diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 1f3e69a674c..4b2e02a303e 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -220,12 +220,12 @@ print ''; dol_fiche_end(); -$morehtmlcenter = ''; +$newcardbutton = ''; if (! empty($conf->website->enabled)) { if (! empty($user->rights->societe->lire)) { - $morehtmlcenter .= '' . $langs->trans("AddWebsiteAccount") . ''; + $newcardbutton .= '' . $langs->trans("AddWebsiteAccount") . ''; } else { - $morehtmlcenter .= '' . $langs->trans("AddAction") . ''; + $newcardbutton .= '' . $langs->trans("AddAction") . ''; } } @@ -322,7 +322,7 @@ print ''; print ''; print ''; -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $morehtmlcenter, '', $limit); +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit); $topicmail="Information"; $modelmail="websiteaccount"; diff --git a/htdocs/theme/eldy/img/menus/ticketsup.png b/htdocs/theme/eldy/img/menus/ticketsup.png index 03354cc98e0b5d1506cf4f534c7877b51c9c567e..98a482c47011e3a76ddd3a985879869a241c23e3 100644 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|Q?v2s7?X4m1J^vX^-Jy0SlF;pbv94PM!L0w@&c>Eak-aXL9cBItpAt*_=;Cec;d9;E&I!tPuXH#PL0w3 vzi``hX?J0>cLsm{|NmbvbT&gGs?~(ytE{h`R;nVkdg00002VoOIv0063u zBQgL0010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXr{BPr2XW~KlD135`VK~zY` z&6V448b=g|zq1R=#ax2Z#Nc}yN0uu!X(RRjm#RKiQL9Fd-P8%eVDL>b7%yIS=bSz) z#$eosJhk&SnmOP6&TS6-*GsHHj$?6OZ)!dpgkl~UUJ%oi90Jf}{B2GFHT&(8AWsd<@Q&gh5(nG&mP)0R^h<-9liM4l`;vOr8k#8}_*wlD@; zVT~q(RI$v+s!*pNW$b5m$zy=W8OAdVfQUnW%g0nXmBBQKv!1z{y>Yu*147>Mg&`qO zq(qJHDS~(9AIR_imwTJcEFgL+J6_#Wx6dEaF5KLojFzm$5B?s{V`s-a4hSp!Xl1>~ zjxv}2;e6B!HypY(>m_+B@hUtkPF?V3ZoQ^~bMNF=FJrG468Fl>$}h>EIO@!tP65MB z{Z2*O9Qf}!V#jK8<~3e&T}O>|jiDm}X zc?DI&V(V9K0Z=kD@XVhyjYl0H1*qKGz!dDs0|34{!aL2x7&~c?iem?eC-sPi>eRRL z96&{lSak|Wh$*I-uo?wo+#LWV#+l3m`Wh*kyK6>z#29HRYd}no+sWOWqGKJ*yKqH> zlD`PjUxsu3La0vM6An2S1Go$*;E1@IE9LmwPjD;|Fb0s3eV|O5$O`BDEu+c%0R@!A zUC$|~DZgF;Gr1}GHg>Eak-aXL9cBItpAt*_=;Cec;d9;E&I!tPuXH#PL0w3 vzi``hX?J0>cLsm{|NmbvbT&gGs?~(ytE{h`R;nVkdg00002VoOIv0063u zBQgL0010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXr{BPr2XW~KlD135`VK~zY` z&6V448b=g|zq1R=#ax2Z#Nc}yN0uu!X(RRjm#RKiQL9Fd-P8%eVDL>b7%yIS=bSz) z#$eosJhk&SnmOP6&TS6-*GsHHj$?6OZ)!dpgkl~UUJ%oi90Jf}{B2GFHT&(8AWsd<@Q&gh5(nG&mP)0R^h<-9liM4l`;vOr8k#8}_*wlD@; zVT~q(RI$v+s!*pNW$b5m$zy=W8OAdVfQUnW%g0nXmBBQKv!1z{y>Yu*147>Mg&`qO zq(qJHDS~(9AIR_imwTJcEFgL+J6_#Wx6dEaF5KLojFzm$5B?s{V`s-a4hSp!Xl1>~ zjxv}2;e6B!HypY(>m_+B@hUtkPF?V3ZoQ^~bMNF=FJrG468Fl>$}h>EIO@!tP65MB z{Z2*O9Qf}!V#jK8<~3e&T}O>|jiDm}X zc?DI&V(V9K0Z=kD@XVhyjYl0H1*qKGz!dDs0|34{!aL2x7&~c?iem?eC-sPi>eRRL z96&{lSak|Wh$*I-uo?wo+#LWV#+l3m`Wh*kyK6>z#29HRYd}no+sWOWqGKJ*yKqH> zlD`PjUxsu3La0vM6An2S1Go$*;E1@IE9LmwPjD;|Fb0s3eV|O5$O`BDEu+c%0R@!A zUC$|~DZgF;GI}K)5S5w;&gI?MAid)$sKYx8N_tj zj3zy3s48Jp%c?G9kvh@jd}m%`<3Yy$eat*OJnSo9I`Id^RtQYz&UpHiE#~Fa82$eX rw@sIJ7dE?R@W+3VB(L-87B+@uVdAMdyTbni?O^b9^>bP0l+XkKJWf7# literal 1044 zcmV+v1nc{WP)kdg00002VoOIv0RM-N z%)bBt010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXr{7YHUBg%1D#1EonsK~zY` z&6Vv>+f@|DKj+?GOI!Oe%0ttN3<`sdEyC0&NN_>-kSr`F#uvWx?=#VuMVTRPCT5Yr zP}vM5jFurAY!phN4;j$*_q)DmDJ{$w`bN*Yn{&ROdmeJ`h5y<#QQFC2{*|_yCP87* zN0FzL|AE*dj+&fVoe_65-(Z92B{Iloa0Y6 z;Jn9-FoK6BJh*@o2OM%B4|uS20K7>T2{M(89t#fnTLn{Kj%~800OBV^8}CT~lh5Sl?fd!d`exKwPxRI0 z{dnFvGpl~FlMDG{&!vD)nh$s1CloQh$ zeuhU36K#-38Rk*pp);pfRg)fk=i(`V88s1XW`9iri%fH+0dR$B7UB1&YDR2{$ml76 z6}B8}K`#RkB!)wKP2P?}j39tcSc}?N%_jgO5#<$2WmKi}1}_8D(&Qooc&q!8CoQ79 z!;uDnM3qb1YI~*tfQ^qK+_(U6;bsUQHo$B_?`XuWVvQxl#H)~8_2f{-%~eVOl(>qU zGEVifoD%VxXam5~T8kscOYPtgr3-*AqL?E&C`W89E~^2cQgWy)9jL}+Sp?kl0?>;a z!{X7ds-SYop-MHDu%QmM(&0~h)%%y2!b=>0I9{e$s^svoPqirI(5yEA{3%@&RGav# zz#S$@)-p&k$xgKce$}c(m;8+xd|xIf!iA~?AWec+T4rxDgI=|!9|E&exn;N zKa*#l9QK6eTxV3oJd~-VeFBiM`?As@t%S9!e`mQsj^|_%c35G99Hm<=e5A%yKrO2~ zchawU4-$J9EZw8Sa!&l`vmfLi+d#Tf{g+l(r`(Wh;#Yfe@4NZBN1%S?KJ{>oal*hB zQ*4ss0Pqkb!VMz8E_bq?S!@i3pUe;6?4693*MB@;G@Bl}O?TyEkyTb%`D&N{rTqo<%tv;ioLqST O0000kdg00002VoOIv0RM-N z%)bBt010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXr{7YHUBg%1D#1EonsK~zY` z&6Vv>+f@|DKj+?GOI!Oe%0ttN3<`sdEyC0&NN_>-kSr`F#uvWx?=#VuMVTRPCT5Yr zP}vM5jFurAY!phN4;j$*_q)DmDJ{$w`bN*Yn{&ROdmeJ`h5y<#QQFC2{*|_yCP87* zN0FzL|AE*dj+&fVoe_65-(Z92B{Iloa0Y6 z;Jn9-FoK6BJh*@o2OM%B4|uS20K7>T2{M(89t#fnTLn{Kj%~800OBV^8}CT~lh5Sl?fd!d`exKwPxRI0 z{dnFvGpl~FlMDG{&!vD)nh$s1CloQh$ zeuhU36K#-38Rk*pp);pfRg)fk=i(`V88s1XW`9iri%fH+0dR$B7UB1&YDR2{$ml76 z6}B8}K`#RkB!)wKP2P?}j39tcSc}?N%_jgO5#<$2WmKi}1}_8D(&Qooc&q!8CoQ79 z!;uDnM3qb1YI~*tfQ^qK+_(U6;bsUQHo$B_?`XuWVvQxl#H)~8_2f{-%~eVOl(>qU zGEVifoD%VxXam5~T8kscOYPtgr3-*AqL?E&C`W89E~^2cQgWy)9jL}+Sp?kl0?>;a z!{X7ds-SYop-MHDu%QmM(&0~h)%%y2!b=>0I9{e$s^svoPqirI(5yEA{3%@&RGav# zz#S$@)-p&k$xgKce$}c(m;8+xd|xIf!iA~?AWec+T4rxDgI=|!9|E&exn;N zKa*#l9QK6eTxV3oJd~-VeFBiM`?As@t%S9!e`mQsj^|_%c35G99Hm<=e5A%yKrO2~ zchawU4-$J9EZw8Sa!&l`vmfLi+d#Tf{g+l(r`(Wh;#Yfe@4NZBN1%S?KJ{>oal*hB zQ*4ss0Pqkb!VMz8E_bq?S!@i3pUe;6?4693*MB@;G@Bl}O?TyEkyTb%`D&N{rTqo<%tv;ioLqST O0000bfY3D}R8H&jKqXB1fZl6|kfc zltaOocL!*i=0-$L0Gl=hzCs93s%nd%nH^_vm<61>`#Yd>PyouZe26iMyH5w=s#>&d zt94!9E+(q#y_sFi5(nTirSvik!}DUIyT6**=j@IKe2d7Nh{Q#(@B8h(NlvSVY1RL{ qqpdN!`)>5coE>(WQu;aIlk*GW5>UQdU?z?L0000T)As^H^U+sInh$rLZ%GCccLZLz8{*XDOaC}+Bk{ z_2n(fErVrSD}V2Fc8zHqj|&AY%oosMa_~92^Igv8=tH;3!58Srdu1x~Aw^G%_IC8+ zQjY#S*YqMqkIH;xrb`LyLP1J_6)dAS$1+x=6uHcG)1`DGbxn$WwS~J)yJI=OS22I@ zt1aA-Vh?N3)-)&W;Gq;xjlBG9=H?PUH96C|d#|qGkxoeWv2*fsno)gyR*DB05%EUj z_;rqx-dg}Y^wbI??I@}ohGiLhRb>OBc4g=gXtST{crpN`00p5s)=B200000 LNkvXXu0mjfGT7ki diff --git a/htdocs/theme/eldy/img/title_ticketsup.png b/htdocs/theme/eldy/img/title_ticketsup.png index 3ec332075e66b1160122713117fa0d8087f659c5..b1cf5df0e7580226f61d129d2ebbd93506c0ee75 100644 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE^%(yc-&<;;;jpisG|i(`nz>ARCRaxok7IL~kXzgpJm zM11VK^(HA9|5mHa<@0*ky3KvMaD~7LH>R5mMdzB|2db>yXXyFuWtvwery_%ZMTfA= zhjgLjJv)AvF52&z70kZ(`(4T8Co7wyvYBt$D^Iz;@5gSAYJ<(cFLJz|+5P3Pw|E2l Ywo4Xlix2!20y=@g)78&qol`;+0C<>DdjJ3c literal 1044 zcmV+v1nc{WP)kdg00002VoOIv0RM-N z%)bBt010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXr{7YHUBg%1D#1EonsK~zY` z&6Vv>+f@|DKj+?GOI!Oe%0ttN3<`sdEyC0&NN_>-kSr`F#uvWx?=#VuMVTRPCT5Yr zP}vM5jFurAY!phN4;j$*_q)DmDJ{$w`bN*Yn{&ROdmeJ`h5y<#QQFC2{*|_yCP87* zN0FzL|AE*dj+&fVoe_65-(Z92B{Iloa0Y6 z;Jn9-FoK6BJh*@o2OM%B4|uS20K7>T2{M(89t#fnTLn{Kj%~800OBV^8}CT~lh5Sl?fd!d`exKwPxRI0 z{dnFvGpl~FlMDG{&!vD)nh$s1CloQh$ zeuhU36K#-38Rk*pp);pfRg)fk=i(`V88s1XW`9iri%fH+0dR$B7UB1&YDR2{$ml76 z6}B8}K`#RkB!)wKP2P?}j39tcSc}?N%_jgO5#<$2WmKi}1}_8D(&Qooc&q!8CoQ79 z!;uDnM3qb1YI~*tfQ^qK+_(U6;bsUQHo$B_?`XuWVvQxl#H)~8_2f{-%~eVOl(>qU zGEVifoD%VxXam5~T8kscOYPtgr3-*AqL?E&C`W89E~^2cQgWy)9jL}+Sp?kl0?>;a z!{X7ds-SYop-MHDu%QmM(&0~h)%%y2!b=>0I9{e$s^svoPqirI(5yEA{3%@&RGav# zz#S$@)-p&k$xgKce$}c(m;8+xd|xIf!iA~?AWec+T4rxDgI=|!9|E&exn;N zKa*#l9QK6eTxV3oJd~-VeFBiM`?As@t%S9!e`mQsj^|_%c35G99Hm<=e5A%yKrO2~ zchawU4-$J9EZw8Sa!&l`vmfLi+d#Tf{g+l(r`(Wh;#Yfe@4NZBN1%S?KJ{>oal*hB zQ*4ss0Pqkb!VMz8E_bq?S!@i3pUe;6?4693*MB@;G@Bl}O?TyEkyTb%`D&N{rTqo<%tv;ioLqST O0000em; + font-family: ; + font-weight: normal; + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); + display: inline-block; + text-align: center; + cursor: pointer; + color: #fff !important; + background: rgb(); + border: 1px solid rgb(); -.butAction:hover { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.butAction:hover, .butActionNew:hover { -webkit-box-shadow: 0px 0px 6px 1px rgba(50, 50, 50, 0.4), 0px 0px 0px rgba(60,60,60,0.1); box-shadow: 0px 0px 6px 1px rgba(50, 50, 50, 0.4), 0px 0px 0px rgba(60,60,60,0.1); } @@ -2696,6 +2716,12 @@ div.pagination { div.pagination a { font-weight: normal; } +/*div.pagination a.butAction, div.fichehalfright a.butAction { + margin-right: 0px !important; +} +div.tabsAction a.butActionDelete:last-child, div.tabsAction a.butAction:last-child { + margin-right: 0px !important; +}*/ div.pagination ul { list-style: none; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 86646fe2c78..221c2c9a705 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2373,6 +2373,31 @@ span.butAction, span.butActionDelete { -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } +.butActionNew, .butActionNew:link, .butActionNew:visited, .butActionNew:hover, .butActionNew:active { + text-decoration: none; + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); + display: inline-block; + padding: 0.2em em; + margin: 0em em; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #ffffff !important; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} .button, .butAction { color: #ffffff !important; @@ -2427,7 +2452,7 @@ a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active { a.butAction:hover, a.butActionDelete:hover, a.butActionRefused:hover { text-decoration: none; } -a.butAction:hover, a.butActionDelete:hover { +a.butAction:hover, a.butActionNew:hover, a.butActionDelete:hover { opacity: 0.9; } diff --git a/htdocs/ticketsup/img/ticketsup.png b/htdocs/ticketsup/img/ticketsup.png index ce4b71ca624f73ce0f0b56b945b2ec254b21b383..b1cf5df0e7580226f61d129d2ebbd93506c0ee75 100644 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE^%(yc-&<;;;jpisG|i(`nz>ARCRaxok7IL~kXzgpJm zM11VK^(HA9|5mHa<@0*ky3KvMaD~7LH>R5mMdzB|2db>yXXyFuWtvwery_%ZMTfA= zhjgLjJv)AvF52&z70kZ(`(4T8Co7wyvYBt$D^Iz;@5gSAYJ<(cFLJz|+5P3Pw|E2l Ywo4Xlix2!20y=@g)78&qol`;+0C<>DdjJ3c literal 1412 zcmV-~1$+95P)$^!`kVuT1S#0y?(pjMjr;)97O zBpRYGq)h>n#u&knmO|7Z4KYy(rd;I~C~~P3q(U#0NK@=?chC56zQUp1ZR>-+=$D-2 zd^7X?=YMAA%zW@)UmjpQkO6c6`Y-y;1p)$CfDf1nbOQ}Q_#blYGmeJ=r-87zlwKek z$OH}pxBDI6u+L9NcseixVLG-w6#&aRhjJD;!${v*HZ2Xsa6Sr{3p4>2fgS*f!7$ZC z;{wnKK-sP!wzn9S*ARk05J&)37=mfe@x)A*gtEYNSzMD|z zPJTIfBbJ+lxCEBIm(T5{HMCxy%(YWCnR)y1`ah?;`yks_w#Gd3W_2pw;31-+HC#Kn z7>(wUw=BS@%nR`d#E!uF+6mZHlHgxVTVosN4m5J_kMForzhOwVo;7zP!$&M&+M+B{ zCZ!Px)nQRe#fqzaO|6&!DkTW>iG(3NdoNubo4Hb-02B?ueGyj<`{-=nO#0+KL_#3U zN2Mf|aeo5q_dE@{9F+jVQ6k};G#>pLvlz zkw6w;1LI;iA7^w~#VgR+9}Rn%z|-ddpoIPV-?dFfRsyc}AD?&`fbK zdW$d7_=rP5B^O9U6jYk1DC%%&Bfz7;LLdP6T{^#!Ei^Wf`<14}eM;t+^> za!?szb~pQ0hiRb!;1yFNy(?s70b^tLIeXK5;0U6gocII;AA*GvMTy4xL3{snV46!l z&B%y3(tGg)3&9tkfW;-?F5tn^)IKn+z#;P<0P-h6Wo#a#z`+=g07@rO&c`PZ^fw^fGm|b8m9#!lXa=?d zr+_&w`5YtLYHZwvo#tQx!aaiihWG?Nd8P+wF(YCDwid*wgB!pJ^WSHfXPlAUh>`yS z&;~6Iun}1VtYPggpKE+afp38=z!>vvF|z3W5&!nC1Z;U3Sc0Iy0fXJ|cKYx-x;H{W z;Z0x)Do&U!kC%egzjCbl4$x*UuC3++dQ)=I=t7izHHN6X0lbPzGNSbeA5y;R`p|Dg zrL`pp?}MbFgg|#<$u^QR8`zZpXUsDn92-tYa}Kt>4%L@Hh9TO5vXROa+y35-NP2dl z-eh1M!ehYe*gQ!`Qw49;o}l`C2XgB}`z2jhASwly0hAJsfpH#~*NNzk9M?BkRd{?7kvi0d!jdBXY@ SHh8K40000'; if ($socid) print ''; if ($projectid) print ''; -$buttontocreate = '' . $langs->trans('NewTicket') . ''; +$newcardbutton = '' . $langs->trans('NewTicket') . ''; -print_barre_liste($langs->trans('TicketList'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_ticketsup', 0, $buttontocreate, '', $limit); +print_barre_liste($langs->trans('TicketList'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_ticketsup', 0, $newcardbutton, '', $limit); if ($mode == 'my_assign') { print '

' . $langs->trans('TicketAssignedToMeInfos') . '

'; @@ -676,18 +676,18 @@ if (in_array('builddoc',$arrayofmassactions) && ($nbtotalofrecords === '' || $nb { $hidegeneratedfilelistifempty=1; if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty=0; - + require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'); $formfile = new FormFile($db); - + // Show list of available documents $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; $urlsource.=str_replace('&','&',$param); - + $filedir=$diroutputmassaction; $genallowed=$user->rights->ticketsup->read; $delallowed=$user->rights->ticketsup->write; - + print $formfile->showdocuments('massfilesarea_ticketsup','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'','','',null,$hidegeneratedfilelistifempty); } From 8fbde88872ff996c5e93a5c7b2711559df343d50 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 17:37:49 +0200 Subject: [PATCH 056/336] Look and feel v8 --- htdocs/accountancy/admin/account.php | 2 +- htdocs/adherents/agenda.php | 2 +- htdocs/adherents/list.php | 2 +- htdocs/adherents/subscription/list.php | 6 ++++- htdocs/adherents/type.php | 2 +- htdocs/bookmarks/list.php | 6 ++++- htdocs/comm/mailing/list.php | 6 ++++- htdocs/comm/propal/list.php | 2 +- htdocs/commande/list.php | 2 +- htdocs/compta/bank/list.php | 2 +- htdocs/compta/bank/various_payment/index.php | 6 ++++- htdocs/compta/facture/list.php | 2 +- htdocs/compta/localtax/list.php | 2 +- htdocs/compta/paiement/cheque/list.php | 2 +- htdocs/compta/prelevement/bons.php | 6 ++++- htdocs/compta/salaries/index.php | 8 ++++-- htdocs/compta/sociales/index.php | 2 +- htdocs/compta/tva/list.php | 2 +- htdocs/contact/list.php | 2 +- htdocs/contrat/list.php | 2 +- htdocs/core/lib/company.lib.php | 26 +++++++++---------- htdocs/cron/list.php | 7 ++--- htdocs/don/list.php | 6 ++++- htdocs/expedition/list.php | 2 +- htdocs/expensereport/list.php | 2 +- htdocs/fichinter/list.php | 2 +- htdocs/fourn/commande/list.php | 4 +-- htdocs/fourn/facture/list.php | 2 +- htdocs/holiday/list.php | 6 ++++- htdocs/loan/index.php | 2 +- .../modulebuilder/template/myobject_list.php | 8 +++++- htdocs/opensurvey/list.php | 10 ++++--- htdocs/product/list.php | 2 +- htdocs/product/stock/list.php | 2 +- htdocs/projet/list.php | 2 +- htdocs/projet/tasks/list.php | 2 +- htdocs/resource/list.php | 2 +- htdocs/societe/list.php | 2 +- htdocs/societe/website.php | 4 +-- htdocs/supplier_proposal/list.php | 2 +- htdocs/theme/eldy/style.css.php | 20 ++++++++++++-- htdocs/theme/md/style.css.php | 23 ++++++++++------ htdocs/ticketsup/list.php | 6 ++++- htdocs/user/group/list.php | 2 +- htdocs/user/list.php | 2 +- 45 files changed, 142 insertions(+), 72 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 66c7000d853..c8dfa078cff 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -225,7 +225,7 @@ if ($resql) print ''; print ''; - $newcardbutton = '' . $langs->trans("Addanaccount") . ''; + $newcardbutton = '' . $langs->trans("Addanaccount") . ''; print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit); diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php index 64c4c3e09fc..7a39f6c5502 100644 --- a/htdocs/adherents/agenda.php +++ b/htdocs/adherents/agenda.php @@ -151,7 +151,7 @@ if ($object->id > 0) $newcardbutton = ''; if (! empty($conf->agenda->enabled)) { - $newcardbutton.=''.$langs->trans("AddAction").''; + $newcardbutton.=''.$langs->trans("AddAction").''; } if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index c92b66e8bc2..21ce7c9801c 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -348,7 +348,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->adherent->creer) { - $newcardbutton=''.$langs->trans('NewMember').''; + $newcardbutton=''.$langs->trans('NewMember').''; } print ''; diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 2a6c4fe2d71..a5fb8934503 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -181,7 +181,11 @@ if ($result) if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); $massactionbutton=$form->selectMassAction('', $arrayofmassactions); - $newcardbutton=''.$langs->trans('NewSubscription').''; + $newcardbutton=''; + if ($user->rights->adherent->cotisation->creer) + { + $newcardbutton=''.$langs->trans('NewSubscription').''; + } print ''; if ($optioncss != '') print ''; diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index d942038b0bc..5962ec470b0 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -231,7 +231,7 @@ if (! $rowid && $action != 'create' && $action != 'edit') $newcardbutton=''; if ($user->rights->adherent->configurer) { - $newcardbutton=''.$langs->trans('NewMemberType').''; + $newcardbutton=''.$langs->trans('NewMemberType').''; } print ''; diff --git a/htdocs/bookmarks/list.php b/htdocs/bookmarks/list.php index b1262b7a554..4774d4c82c2 100644 --- a/htdocs/bookmarks/list.php +++ b/htdocs/bookmarks/list.php @@ -81,7 +81,11 @@ $userstatic=new User($db); llxHeader('', $langs->trans("ListOfBookmarks")); -$newcardbutton=''.$langs->trans('NewBookmark').''; +$newcardbutton=''; +if ($user->rights->bookmark->creer) +{ + $newcardbutton=''.$langs->trans('NewBookmark').''; +} print_barre_liste($langs->trans("ListOfBookmarks"), $page, $_SERVER['PHP_SELF'], $param, $sortfield, $sortorder, '', -1, '', 'title_generic.png', 0, $newcardbutton); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index f9fad78a1f0..37a5b200d8a 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -104,7 +104,11 @@ if ($result) $title=$langs->trans("ListOfEMailings"); if ($filteremail) $title.=' ('.$langs->trans("SentTo",$filteremail).')'; - $newcardbutton=''.$langs->trans('NewMailing').''; + $newcardbutton=''; + if ($user->rights->mailing->creer) + { + $newcardbutton=''.$langs->trans('NewMailing').''; + } $i = 0; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 3259654ebcc..72751ff637c 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -397,7 +397,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->propal->creer) { - $newcardbutton=''.$langs->trans('NewPropal').''; + $newcardbutton=''.$langs->trans('NewPropal').''; } // Lignes des champs de filtre diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 8048d5a618f..2d07ab95ffe 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -422,7 +422,7 @@ if ($resql) $newcardbutton=''; if ($contextpage == 'orderlist' && $user->rights->commande->creer) { - $newcardbutton=''.$langs->trans('NewOrder').''; + $newcardbutton=''.$langs->trans('NewOrder').''; } // Lines of title fields diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index e3c2a5b94a9..6cb345745c5 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -230,7 +230,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->banque->configurer) { - $newcardbutton.=''.$langs->trans("NewFinancialAccount").''; + $newcardbutton.=''.$langs->trans("NewFinancialAccount").''; } diff --git a/htdocs/compta/bank/various_payment/index.php b/htdocs/compta/bank/various_payment/index.php index aa47d714bd9..0e16faef1a3 100644 --- a/htdocs/compta/bank/various_payment/index.php +++ b/htdocs/compta/bank/various_payment/index.php @@ -153,7 +153,11 @@ if ($result) if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); - $newcardbutton=''.$langs->trans('MenuNewVariousPayment').''; + $newcardbutton=''; + if ($user->rights->banque->modifier) + { + $newcardbutton=''.$langs->trans('MenuNewVariousPayment').''; + } print ''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index aefd80a4412..e245008ffc3 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -592,7 +592,7 @@ if ($resql) $newcardbutton=''; if($user->rights->facture->creer) { - $newcardbutton=''.$langs->trans('NewBill').''; + $newcardbutton=''.$langs->trans('NewBill').''; } $i = 0; diff --git a/htdocs/compta/localtax/list.php b/htdocs/compta/localtax/list.php index 50bc87d4d27..af305c295f2 100644 --- a/htdocs/compta/localtax/list.php +++ b/htdocs/compta/localtax/list.php @@ -44,7 +44,7 @@ $localtax_static = new Localtax($db); $newcardbutton=''; if ($user->rights->tax->charges->creer) { - $newcardbutton=''.$langs->trans('NewVATPayment').''; + $newcardbutton=''.$langs->trans('NewVATPayment').''; } print load_fiche_titre($langs->transcountry($ltt==2?"LT2Payments":"LT1Payments",$mysoc->country_code), $newcardbutton); diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index 532d2e4c9b8..4969736071d 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -134,7 +134,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->banque->cheque) { - $newcardbutton = ''.$langs->trans('NewCheckDeposit').''; + $newcardbutton = ''.$langs->trans('NewCheckDeposit').''; } print ''; diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index 31dfbd5b610..1d911f24c4c 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -101,7 +101,11 @@ if ($result) $selectedfields=''; - $newcardbutton = ''.$langs->trans('NewStandingOrder').''; + $newcardbutton=''; + if ($user->rights->prelevement->bons->creer) + { + $newcardbutton = ''.$langs->trans('NewStandingOrder').''; + } // Lines of title fields print ''; diff --git a/htdocs/compta/salaries/index.php b/htdocs/compta/salaries/index.php index f9b9adf616c..45213851a64 100644 --- a/htdocs/compta/salaries/index.php +++ b/htdocs/compta/salaries/index.php @@ -150,9 +150,13 @@ if ($result) if ($typeid) $param.='&typeid='.$typeid; if ($optioncss != '') $param.='&optioncss='.$optioncss; - $newcardbutton=''.$langs->trans('NewSalaryPayment').''; + $newcardbutton=''; + if ($user->rights->salaries->payment->write) + { + $newcardbutton=''.$langs->trans('NewSalaryPayment').''; + } - print ''; + print ''; if ($optioncss != '') print ''; print ''; print ''; diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index 3850ddfe5c5..d33b2cb0bdd 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -149,7 +149,7 @@ if ($resql) $newcardbutton=''; if($user->rights->tax->charges->creer) { - $newcardbutton=''.$langs->trans('MenuNewSocialContribution').''; + $newcardbutton=''.$langs->trans('MenuNewSocialContribution').''; } print ''; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index e796ddacac7..1cb623bb75e 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -151,7 +151,7 @@ if ($result) $newcardbutton=''; if ($user->rights->tax->charges->creer) { - $newcardbutton=''.$langs->trans('NewVATPayment').''; + $newcardbutton=''.$langs->trans('NewVATPayment').''; } print ''; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 5c101401dac..7414cb43b1c 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -415,7 +415,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->societe->contact->creer) { - $newcardbutton=''.$langs->trans('NewContactAddress').''; + $newcardbutton=''.$langs->trans('NewContactAddress').''; } print ''; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index b1755b7f7ec..9fb4412d024 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -372,7 +372,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->contrat->creer) { - $newcardbutton=''.$langs->trans('NewContractSubscription').''; + $newcardbutton=''.$langs->trans('NewContractSubscription').''; } print ''; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 320b8cc1b63..3fa17ba4312 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -724,17 +724,17 @@ function show_projects($conf, $langs, $db, $object, $backtopage='', $nocreatelin { $langs->load("projects"); - $buttoncreate=''; + $newcardbutton=''; if (! empty($conf->projet->enabled) && $user->rights->projet->creer && empty($nocreatelink)) { - //$buttoncreate=''.$langs->trans("AddProject").''; - $buttoncreate=''.$langs->trans("AddProject"); - if (empty($conf->dol_optimize_smallscreen)) $buttoncreate.=' '.img_picto($langs->trans("AddProject"),'filenew'); - $buttoncreate.=''."\n"; + //$newcardbutton=''.$langs->trans("AddProject").''; + $newcardbutton=''.$langs->trans("AddProject"); + if (empty($conf->dol_optimize_smallscreen)) $newcardbutton.=' '.img_picto($langs->trans("AddProject"),'filenew'); + $newcardbutton.=''."\n"; } print "\n"; - print load_fiche_titre($langs->trans("ProjectsDedicatedToThisThirdParty"), $buttoncreate.$morehtmlright, ''); + print load_fiche_titre($langs->trans("ProjectsDedicatedToThisThirdParty"), $newcardbutton.$morehtmlright, ''); print '
'; print "\n".'
'; @@ -921,18 +921,18 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') $contactstatic->fields = dol_sort_array($contactstatic->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); - $buttoncreate=''; + $newcardbutton=''; if ($user->rights->societe->contact->creer) { $addcontact = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("AddContact") : $langs->trans("AddContactAddress")); - $buttoncreate=''.$addcontact; - $buttoncreate.=''."\n"; + $newcardbutton=''.$addcontact; + $newcardbutton.=''."\n"; } print "\n"; $title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("ContactsForCompany") : $langs->trans("ContactsAddressesForCompany")); - print load_fiche_titre($title, $buttoncreate,''); + print load_fiche_titre($title, $newcardbutton,''); print ''; print ''; @@ -1171,14 +1171,14 @@ function show_addresses($conf,$langs,$db,$object,$backtopage='') $addressstatic = new Address($db); $num = $addressstatic->fetch_lines($object->id); - $buttoncreate=''; + $newcardbutton=''; if ($user->rights->societe->creer) { - $buttoncreate=''.$langs->trans("AddAddress").' '.img_picto($langs->trans("AddAddress"),'filenew').''."\n"; + $newcardbutton=''.$langs->trans("AddAddress").' '.img_picto($langs->trans("AddAddress"),'filenew').''."\n"; } print "\n"; - print load_fiche_titre($langs->trans("AddressesForCompany"),$buttoncreate,''); + print load_fiche_titre($langs->trans("AddressesForCompany"),$newcardbutton,''); print "\n".'
'."\n"; diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 803337dcb6c..de0fd543572 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -332,13 +332,14 @@ print ''; print ''; // Line with explanation and button new job -if (! $user->rights->cron->create) +$newcardbutton=''; +if ($user->rights->cron->create) { - $newcardbutton.=''.$langs->trans("CronCreateJob").''; + $newcardbutton.=''.$langs->trans("CronCreateJob").''; } else { - $newcardbutton.=''.$langs->trans("CronCreateJob").''; + $newcardbutton.=''.$langs->trans("CronCreateJob").''; } print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $newcardbutton, '', $limit); diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 4d7db533e12..12cfa6a0757 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -131,7 +131,11 @@ if ($resql) //if ($page > 0) $param.= '&page='.$page; if ($optioncss != '') $param.='&optioncss='.$optioncss; - $newcardbutton=''.$langs->trans('NewDonation').''; + $newcardbutton=''; + if ($user->rights->don->create) + { + $newcardbutton=''.$langs->trans('NewDonation').''; + } print ''."\n"; if ($optioncss != '') print ''; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 88050097d3f..3f754d6b5f9 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -268,7 +268,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->expedition->creer) { - $newcardbutton=''.$langs->trans('NewSending').''; + $newcardbutton=''.$langs->trans('NewSending').''; } $i = 0; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 2944220458d..23873d533d7 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -465,7 +465,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->expensereport->creer) { - $newcardbutton=''.$langs->trans('NewTrip').''; + $newcardbutton=''.$langs->trans('NewTrip').''; } print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, $newcardbutton, '', $limit); diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index f7082770970..f38ba21cb96 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -274,7 +274,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->ficheinter->creer) { - $newcardbutton=''.$langs->trans('NewIntervention').''; + $newcardbutton=''.$langs->trans('NewIntervention').''; } // Lines of title fields diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 6f0b4899d6e..cbfbac36b41 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -642,11 +642,11 @@ if ($resql) if ($user->rights->fournisseur->commande->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete"); if (in_array($massaction, array('presend','predelete','createbills'))) $arrayofmassactions=array(); $massactionbutton=$form->selectMassAction('', $arrayofmassactions); - + $newcardbutton=''; if($user->rights->fournisseur->commande->creer) { - $newcardbutton=''.$langs->trans('NewOrder').''; + $newcardbutton=''.$langs->trans('NewOrder').''; } // Lignes des champs de filtre diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index d3fdcdcba01..6d1b3bc48b6 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -474,7 +474,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->fournisseur->facture->creer) { - $newcardbutton=''.$langs->trans('NewBill').''; + $newcardbutton=''.$langs->trans('NewBill').''; } $i = 0; diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 7335bfcf243..aa06459983a 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -378,7 +378,11 @@ else //print $num; //print count($holiday->holiday); - $newcardbutton=''.$langs->trans('MenuAddCP').''; + $newcardbutton=''; + if ($user->rights->holiday->write) + { + $newcardbutton=''.$langs->trans('MenuAddCP').''; + } print_barre_liste($langs->trans("ListeCP"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_hrm.png', 0, $newcardbutton, '', $limit); diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 24ea1ab72f9..3b07b7503d7 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -114,7 +114,7 @@ if ($resql) $newcardbutton=''; if ($user->rights->loan->write) { - $newcardbutton=''.$langs->trans('NewLoan').''; + $newcardbutton=''.$langs->trans('NewLoan').''; } print ''."\n"; diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 5c3e5f2ae96..f8ce7a0ce24 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -350,7 +350,13 @@ print ''; print ''; print ''; -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit); +$newcardbutton=''; +//if ($user->rights->mymodule->creer) +//{ + $newcardbutton=''.$langs->trans('New').''; +//} + +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, $newcardbutton, '', $limit); // Add code for pre mass action (confirmation or email presend form) $topicmail="SendMyObjectRef"; diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index d2232019592..0b0fa5c818c 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -97,9 +97,13 @@ $fieldtosortuser=empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?'firstname': $newcardbutton=''; -if ($user->rights->opensurvey->read) +if (!$user->rights->opensurvey->read) { - $newcardbutton=''.$langs->trans('NewSurvey').''; + $newcardbutton=''.$langs->trans('NewSurvey').''; +} +else +{ + $newcardbutton=''.$langs->trans('NewSurvey').''; } @@ -213,7 +217,7 @@ while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); if (empty($obj)) break; // Should not happen - + $sql2='select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->id_sondage)."'"; $resql2=$db->query($sql2); if ($resql2) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 04f0bca71f9..511a15ec1fc 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -427,7 +427,7 @@ else { $label='NewProduct'; if($type == Product::TYPE_SERVICE) $label='NewService'; - $newcardbutton=''.$langs->trans($label).''; + $newcardbutton=''.$langs->trans($label).''; } print ''; diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 29e5439b8e8..faf30ba066a 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -133,7 +133,7 @@ if ($result) $newcardbutton=''; if ($user->rights->stock->creer) { - $newcardbutton=''.$langs->trans('MenuNewWarehouse').''; + $newcardbutton=''.$langs->trans('MenuNewWarehouse').''; } print ''; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index e57eab2d109..83d18f3e3b6 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -441,7 +441,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->projet->creer) { - $newcardbutton = ''.$langs->trans('NewProject').''; + $newcardbutton = ''.$langs->trans('NewProject').''; } print ''; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 9e14c462bef..cc77e89ab77 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -393,7 +393,7 @@ $massactionbutton=$form->selectMassAction('', $arrayofmassactions); $newcardbutton=''; if ($user->rights->projet->creer) { - $newcardbutton = ''.$langs->trans('NewTask').''; + $newcardbutton = ''.$langs->trans('NewTask').''; } print ''; diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 927975e9c26..10ec58e9371 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -199,7 +199,7 @@ if($ret == -1) { $newcardbutton=''; if ($user->rights->resource->write) { - $newcardbutton=''.$langs->trans('MenuResourceAdd').''; + $newcardbutton=''.$langs->trans('MenuResourceAdd').''; } print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $ret+1, $nbtotalofrecords,'title_generic.png', 0, $newcardbutton, '', $limit); diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index dd1cb616c4d..f1996140cd2 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -594,7 +594,7 @@ if ($user->rights->societe->creer) if($type == 'f') $label='NewSupplier'; } - $newcardbutton = ''.$langs->trans($label).''; + $newcardbutton = ''.$langs->trans($label).''; } print ''; diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 4b2e02a303e..41a4990d7bd 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -223,9 +223,9 @@ dol_fiche_end(); $newcardbutton = ''; if (! empty($conf->website->enabled)) { if (! empty($user->rights->societe->lire)) { - $newcardbutton .= '' . $langs->trans("AddWebsiteAccount") . ''; + $newcardbutton .= '' . $langs->trans("AddWebsiteAccount") . ''; } else { - $newcardbutton .= '' . $langs->trans("AddAction") . ''; + $newcardbutton .= '' . $langs->trans("AddAction") . ''; } } diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 09cbd063e64..3863f06d7c3 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -389,7 +389,7 @@ if ($resql) $newcardbutton=''; if($user->rights->supplier_proposal->creer) { - $newcardbutton=''.$langs->trans('NewAskPrice').''; + $newcardbutton=''.$langs->trans('NewAskPrice').''; } // Lignes des champs de filtre diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 83e0f5ed7ea..53ea560d92a 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2445,6 +2445,23 @@ span.butAction, span.butActionDelete { color: #999 !important; border: 1px solid #bbb; } +.butActionNewRefused, .butActionNewRefused:link, .butActionNewRefused:visited, .butActionNewRefused:hover, .butActionNewRefused:active { + text-decoration: none !important; + white-space: nowrap !important; + cursor: not-allowed !important; + margin: 0em em; + padding: 0.2em em; + font-family: !important; + font-weight: normal !important; + display: inline-block; + text-align: center; + cursor: pointer; + color: #999 !important; + border: 1px solid #bbb; + padding-top: 0.2em; + box-shadow: none !important; + -webkit-box-shadow: none !important; +} .butActionTransparent { color: #222 ! important; @@ -2452,7 +2469,7 @@ span.butAction, span.butActionDelete { } global->MAIN_BUTTON_HIDE_UNAUTHORIZED) && (! $user->admin)) { ?> -.butActionRefused { +.butActionRefused, .butActionNewRefused { display: none; } @@ -2803,7 +2820,6 @@ div.pagination li a:focus, div.pagination li span:focus { -webkit-box-shadow: 0px 0px 6px 1px rgba(50, 50, 50, 0.4), 0px 0px 0px rgba(60,60,60,0.1); box-shadow: 0px 0px 6px 1px rgba(50, 50, 50, 0.4), 0px 0px 0px rgba(60,60,60,0.1); - padding-top: 8px; } div.pagination li .active a, div.pagination li .active span, diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 221c2c9a705..3e728114254 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1580,9 +1580,12 @@ li.tmenu, li.tmenusel { margin: 0px 0px 0px 0px; font-weight: normal; } -li.tmenusel, li.tmenu:hover { +li.tmenu:hover { opacity: .50; /* show only a slight shadow */ } +li.tmenusel { + text-decoration: underline; +} .tmenuend .tmenuleft { width: 0px; } .tmenuend { display: none; } @@ -2344,7 +2347,7 @@ span.butAction, span.butActionDelete { } -.button, .butAction, .butActionDelete, .butActionRefused { +.button, .butAction, .butActionDelete, .butActionRefused, .butActionNewRefused { border-color: #c5c5c5; border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); display: inline-block; @@ -2386,6 +2389,10 @@ span.butAction, span.butActionDelete { cursor: pointer; color: #ffffff !important; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); @@ -2393,10 +2400,6 @@ span.butAction, span.butActionDelete { background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; - -webkit-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .button, .butAction { @@ -2444,7 +2447,7 @@ a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active { color: #FFFFFF; } -.butActionRefused { +.butActionRefused, .butActionNewRefused { color: #AAAAAA !important; cursor: not-allowed !important; } @@ -2452,6 +2455,10 @@ a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active { a.butAction:hover, a.butActionDelete:hover, a.butActionRefused:hover { text-decoration: none; } +a.butActionNewRefused:hover { + border-color: unset !important; + border: 1px solid #bbbbbb; +} a.butAction:hover, a.butActionNew:hover, a.butActionDelete:hover { opacity: 0.9; } @@ -2462,7 +2469,7 @@ a.butAction:hover, a.butActionNew:hover, a.butActionDelete:hover { } global->MAIN_BUTTON_HIDE_UNAUTHORIZED)) { ?> -.butActionRefused { +.butActionRefused, .butActionNewRefused { display: none; } diff --git a/htdocs/ticketsup/list.php b/htdocs/ticketsup/list.php index 871bd010a81..b29e6dfc5a9 100644 --- a/htdocs/ticketsup/list.php +++ b/htdocs/ticketsup/list.php @@ -437,7 +437,11 @@ print ''; if ($socid) print ''; if ($projectid) print ''; -$newcardbutton = '' . $langs->trans('NewTicket') . ''; +$newcardbutton=''; +if ($user->rights->ticketsup->write) +{ + $newcardbutton = '' . $langs->trans('NewTicket') . ''; +} print_barre_liste($langs->trans('TicketList'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_ticketsup', 0, $newcardbutton, '', $limit); diff --git a/htdocs/user/group/list.php b/htdocs/user/group/list.php index cf0c23f9fec..ae79b3cb220 100644 --- a/htdocs/user/group/list.php +++ b/htdocs/user/group/list.php @@ -141,7 +141,7 @@ if ($resql) $newcardbutton=''; if ($caneditperms) { - $newcardbutton=''.$langs->trans('NewGroup').''; + $newcardbutton=''.$langs->trans('NewGroup').''; } print ''."\n"; diff --git a/htdocs/user/list.php b/htdocs/user/list.php index 3521b4bbde0..0c648d6ddeb 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -277,7 +277,7 @@ $text = $langs->trans("ListOfUsers"); $newcardbutton=''; if ($canadduser) { - $newcardbutton=''.$langs->trans('NewUser').''; + $newcardbutton=''.$langs->trans('NewUser').''; } print ''."\n"; From e2838aa074db1531d38884f99646b8c17414a2d6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 17:58:13 +0200 Subject: [PATCH 057/336] NEW Show also size in bytes in tooltip if visible unit is not bytes --- htdocs/core/class/html.formfile.class.php | 13 ++++++++++++- htdocs/core/lib/functions.lib.php | 2 +- htdocs/core/modules/modVariants.class.php | 4 +--- htdocs/product/stock/productlot_list.php | 2 +- htdocs/variants/list.php | 11 +++++++---- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index e64271b7c0e..24b06065a5b 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -990,6 +990,7 @@ class FormFile global $user, $conf, $langs, $hookmanager; global $sortfield, $sortorder, $maxheightmini; global $dolibarr_main_url_root; + global $form; // Define relative path used to store the file if (empty($relativepath)) @@ -1034,6 +1035,8 @@ class FormFile } else { + if (! is_object($form)) $form=new Form($this->db); + if (! preg_match('/&id=/', $param) && isset($object->id)) $param.='&id='.$object->id; $relativepathwihtoutslashend=preg_replace('/\/$/', '', $relativepath); if ($relativepathwihtoutslashend) $param.= '&file='.urlencode($relativepathwihtoutslashend); @@ -1161,7 +1164,15 @@ class FormFile print "\n"; // Size - print ''; + $sizetoshow = dol_print_size($file['size'],1,1); + $sizetoshowbytes = dol_print_size($file['size'],0,1); + + print ''; // Date print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9a5033b76c9..e90ce6e88ad 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2040,7 +2040,7 @@ function dol_now($mode='gmt') * * @param int $size Size to print * @param int $shortvalue Tell if we want long value to use another unit (Ex: 1.5Kb instead of 1500b) - * @param int $shortunit Use short value of size unit + * @param int $shortunit Use short label of size unit (for example 'b' instead of 'bytes') * @return string Link */ function dol_print_size($size,$shortvalue=0,$shortunit=0) diff --git a/htdocs/core/modules/modVariants.class.php b/htdocs/core/modules/modVariants.class.php index 87a2e2ce491..4160e0e0639 100644 --- a/htdocs/core/modules/modVariants.class.php +++ b/htdocs/core/modules/modVariants.class.php @@ -75,9 +75,7 @@ class modVariants extends DolibarrModules $this->dirs = array(); // Config pages. Put here list of php page, stored into mymodule/admin directory, to use to setup module. - $this->config_page_url = array( - 'admin.php@variants' - ); + $this->config_page_url = array('admin.php@variants'); // Dependencies $this->hidden = false; // A condition to hide module diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php index 1d1f6a89478..5e1888e6bbe 100644 --- a/htdocs/product/stock/productlot_list.php +++ b/htdocs/product/stock/productlot_list.php @@ -295,7 +295,7 @@ if ($resql) print ''; print ''; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies', 0, '', '', $limit); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_products', 0, '', '', $limit); $topicmail="Information"; $modelmail="productlot"; diff --git a/htdocs/variants/list.php b/htdocs/variants/list.php index 74fb252147d..a1ece93d71d 100644 --- a/htdocs/variants/list.php +++ b/htdocs/variants/list.php @@ -18,7 +18,7 @@ require '../main.inc.php'; require DOL_DOCUMENT_ROOT.'/variants/class/ProductAttribute.class.php'; -$id = GETPOST('id'); +$id = GETPOST('id','int'); $action = GETPOST('action','aZ09'); $object = new ProductAttribute($db); @@ -57,9 +57,12 @@ $variants = $object->fetchAll(); llxHeader('', $title); -$buttonadd=''.$langs->trans('Create').''; - -print load_fiche_titre($title, $buttonadd); +$newcardbutton=''; +if ($user->rights->produit->creer) +{ + $newcardbutton=''.$langs->trans('Create').''; +} +print load_fiche_titre($title, $newcardbutton, 'title_products'); $forcereloadpage=empty($conf->global->MAIN_FORCE_RELOAD_PAGE)?0:1; ?> From 2959dc4a3a076a47e4c41793f1d41f8116dcb86d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 18:20:04 +0200 Subject: [PATCH 058/336] Fix regression --- htdocs/fourn/class/fournisseur.commande.class.php | 7 +++++-- htdocs/product/fournisseurs.php | 2 +- test/phpunit/CommandeFournisseurTest.php | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index df4a189b885..4b795862e9b 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -324,9 +324,12 @@ class CommandeFournisseur extends CommonOrder $result=$this->fetch_lines(); if ($result < 0) { - return -3; + return -1; + } + else + { + return 1; } - } else { diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index ebb7f9753dc..21439a1ac8a 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -852,7 +852,7 @@ SCRIPT; { print ''.img_edit().""; print '   '; - print ''.img_picto($langs->trans("Remove"),'disable.png').''; + print ''.img_picto($langs->trans("Remove"),'delete').''; } print ''; diff --git a/test/phpunit/CommandeFournisseurTest.php b/test/phpunit/CommandeFournisseurTest.php index 2d615e0bd06..33271a07dcc 100644 --- a/test/phpunit/CommandeFournisseurTest.php +++ b/test/phpunit/CommandeFournisseurTest.php @@ -179,7 +179,7 @@ class CommandeFournisseurTest extends PHPUnit_Framework_TestCase $result=$localobject2->create($user); print __METHOD__." result=".$result."\n"; - $this->assertGreaterThanOrEqual(0, $result); + $this->assertGreaterThan(0, $result); return $result; } @@ -206,7 +206,7 @@ class CommandeFournisseurTest extends PHPUnit_Framework_TestCase $result=$localobject->fetch($id); print __METHOD__." id=".$id." result=".$result."\n"; - $this->assertLessThan($result, 0); + $this->assertLessThan($result, 0, 'Failed to fetch supplier order with id '.$id); return $localobject; } From 72de21537cc13698ab30b01a63857567b1dcf339 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 20:09:09 +0200 Subject: [PATCH 059/336] Clean code --- htdocs/accountancy/bookkeeping/list.php | 9 +++--- .../accountancy/bookkeeping/listbyaccount.php | 10 +++---- htdocs/admin/ihm.php | 18 +++++++----- htdocs/core/lib/usergroups.lib.php | 29 ++++++++++++++++++- htdocs/langs/en_US/admin.lang | 3 +- htdocs/theme/eldy/style.css.php | 12 ++++---- htdocs/theme/md/style.css.php | 2 +- 7 files changed, 58 insertions(+), 25 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 9a7ebf9716e..8d090646024 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -272,6 +272,7 @@ if (! empty($search_credit)) { $param .= '&search_credit=' . urlencode($search_credit); } + if ($action == 'delbookkeeping') { $import_key = GETPOST('importkey', 'alpha'); @@ -430,17 +431,17 @@ print ''; print ''; $listofformat=AccountancyExport::getType(); -$button = ''; +$button = ''; if (count($filter)) $button.= $langs->trans("ExportFilteredList"); else $button.= $langs->trans("ExportList"); //$button.=' ('.$listofformat[$conf->global->ACCOUNTING_EXPORT_MODELCSV].')'; $button.= ''; -$groupby = ' ' . $langs->trans("GroupByAccountAccounting") . ''; -$addbutton = '' . $langs->trans("NewAccountingMvt") . ''; +$groupby = ' ' . $langs->trans("GroupByAccountAccounting") . ''; +$newcardbutton = '' . $langs->trans("NewAccountingMvt") . ''; -print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $button, $result, $nbtotalofrecords, 'title_accountancy', 0, $groupby.$addbutton, '', $limit); +print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $button, $result, $nbtotalofrecords, 'title_accountancy', 0, $groupby.$newcardbutton, '', $limit); $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index b02bb26122a..5f021c04d59 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -255,13 +255,13 @@ if ($action == 'delbookkeepingyear') { print ''; -$viewflat = ' ' . $langs->trans("ViewFlatList") . ''; -$addbutton = '' . $langs->trans("NewAccountingMvt") . ''; +$viewflat = ' ' . $langs->trans("ViewFlatList") . ''; +$newcardbutton = '' . $langs->trans("NewAccountingMvt") . ''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); -print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $result, $nbtotalofrecords, 'title_accountancy', 0, $viewflat.$addbutton, '', $limit); +print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $result, $nbtotalofrecords, 'title_accountancy', 0, $viewflat.$newcardbutton, '', $limit); // Reverse sort order if ( preg_match('/^asc/i', $sortorder) ) @@ -292,8 +292,8 @@ print $form->select_date($search_date_end, 'search_date_end', 0, 0, 1); print ''; print ''; print ''; -print ''; -print ''; +print ''; +print ''; print ''; print ''; } - // TextTitleColor + // TextTitleColor for title of Pages if ($foruserprofile) { @@ -657,6 +657,33 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; } + // TextTitleColor + if ($foruserprofile) + { + + + } + else + { + print ''; + print ''; + print ''; + + print ''; + } + // BackgroundTableLineOddColor if ($foruserprofile) { diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 699b7690249..7283658a036 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1689,7 +1689,7 @@ InstallModuleFromWebHasBeenDisabledByFile=Install of external module from applic ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to add the 2 directive lines:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (keep empty for no highlight) -TextTitleColor=Color of page title +TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes @@ -1698,6 +1698,7 @@ TopMenuBackgroundColor=Background color for Top menu TopMenuDisableImages=Hide images in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line +BackgroundTableTitleTextColor=Text color for Table title line BackgroundTableLineOddColor=Background color for odd table lines BackgroundTableLineEvenColor=Background color for even table lines MinimumNoticePeriod=Minimum notice period (Your leave request must be done before this delay) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 53ea560d92a..3e0f8febed6 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -258,7 +258,7 @@ body { trans("DIRECTION").";\n"; ?> } -.thumbstat, a.tab { color: rgb() !important; font-weight: bold !important; } +.thumbstat, a.tab { font-weight: bold !important; } th a { font-weight: !important; } a.tab { font-weight: bold !important; } @@ -2397,7 +2397,7 @@ span.butAction, span.butActionDelete { .butActionNew, .butActionNew:link, .butActionNew:visited, .butActionNew:hover, .butActionNew:active { text-decoration: none; margin: 0em 0.3em 0 0.3em !important; - padding: 0.2em em; + padding: 0.2em em 0.3em; font-family: ; font-weight: normal; border-color: #c5c5c5; @@ -2806,13 +2806,13 @@ div.pagination li span { div.pagination li:first-child a, div.pagination li:first-child span { margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; + /*border-top-left-radius: 4px; + border-bottom-left-radius: 4px;*/ } div.pagination li:last-child a, div.pagination li:last-child span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; + /*border-top-right-radius: 4px; + border-bottom-right-radius: 4px;*/ } div.pagination li a:hover, div.pagination li span:hover, diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3e728114254..0f4858ede91 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -251,7 +251,7 @@ body { trans("DIRECTION").";\n"; ?> } -th a, .thumbstat, a.tab { color: rgb() !important; font-weight: bold !important; } +th a, .thumbstat, a.tab { font-weight: bold !important; } a.tab { font-weight: bold !important; } a:link, a:visited, a:hover, a:active { font-family: ; font-weight: normal; color: rgb(); text-decoration: none; } From 56a634bec342bac0cdca196cefa9c7b75ef47272 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 20:17:04 +0200 Subject: [PATCH 060/336] Look and feel v7 --- htdocs/accountancy/bookkeeping/balance.php | 2 +- htdocs/compta/bank/bankentries_list.php | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index b62b092e3da..d27da1afbe9 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -186,7 +186,7 @@ else { print ''; print ''; - $button = 'global->ACCOUNTING_EXPORT_FORMAT.')" />'; + $button = 'global->ACCOUNTING_EXPORT_FORMAT.')" />'; print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $result, 'title_accountancy', 0, $button); $moreforfilter = ''; diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index c583e9180ff..205c891b5aa 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2004-2018 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2012 Vinícius Nogueira * Copyright (C) 2014 Florian Henry @@ -427,9 +427,9 @@ if ($id > 0 || ! empty($ref)) if ($user->rights->banque->consolidate) { $newparam = $param; $newparam = preg_replace('/search_conciliated=\d+/i','',$newparam); - $buttonreconcile = ''.$langs->trans("Conciliate").''; + $buttonreconcile = ''.$langs->trans("Conciliate").''; } else { - $buttonreconcile = ''.$langs->trans("Conciliate").''; + $buttonreconcile = ''.$langs->trans("Conciliate").''; } } } @@ -722,7 +722,7 @@ if ($resql) // Title $bankcateg=new BankCateg($db); - $addbutton = ''; + $newcardbutton = ''; if ($action != 'addline' && $action != 'reconcile') { if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) @@ -730,27 +730,27 @@ if ($resql) if (! empty($conf->global->BANK_USE_VARIOUS_PAYMENT)) // If direct entries is done using miscellaneous payments { if ($user->rights->banque->modifier) { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } else // If direct entries is not done using miscellaneous payments { if ($user->rights->banque->modifier) { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } - $morehtml='
'; + $morehtml='
'; $morehtml.= ' "; // ' Page '; $morehtml.=''; $morehtml.='/'.$nbtotalofpages.' '; @@ -761,7 +761,7 @@ if ($resql) $morehtml.=$buttonreconcile; } - $morehtml.=$addbutton; + $morehtml.=$newcardbutton; $picto='title_bank'; if ($id > 0 || ! empty($ref)) $picto=''; From 69c26e19a89d9a9aba39ae18a5fb29d6344a4da0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Apr 2018 20:17:04 +0200 Subject: [PATCH 061/336] NEW Can edit the text color for title line of tables --- htdocs/accountancy/bookkeeping/balance.php | 2 +- htdocs/compta/bank/bankentries_list.php | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index b62b092e3da..d27da1afbe9 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -186,7 +186,7 @@ else { print ''; print ''; - $button = 'global->ACCOUNTING_EXPORT_FORMAT.')" />'; + $button = 'global->ACCOUNTING_EXPORT_FORMAT.')" />'; print_barre_liste($title_page, $page, $_SERVER["PHP_SELF"], $options, $sortfield, $sortorder, '', $result, $result, 'title_accountancy', 0, $button); $moreforfilter = ''; diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index c583e9180ff..205c891b5aa 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2004-2018 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2012 Vinícius Nogueira * Copyright (C) 2014 Florian Henry @@ -427,9 +427,9 @@ if ($id > 0 || ! empty($ref)) if ($user->rights->banque->consolidate) { $newparam = $param; $newparam = preg_replace('/search_conciliated=\d+/i','',$newparam); - $buttonreconcile = ''.$langs->trans("Conciliate").''; + $buttonreconcile = ''.$langs->trans("Conciliate").''; } else { - $buttonreconcile = ''.$langs->trans("Conciliate").''; + $buttonreconcile = ''.$langs->trans("Conciliate").''; } } } @@ -722,7 +722,7 @@ if ($resql) // Title $bankcateg=new BankCateg($db); - $addbutton = ''; + $newcardbutton = ''; if ($action != 'addline' && $action != 'reconcile') { if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) @@ -730,27 +730,27 @@ if ($resql) if (! empty($conf->global->BANK_USE_VARIOUS_PAYMENT)) // If direct entries is done using miscellaneous payments { if ($user->rights->banque->modifier) { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } else // If direct entries is not done using miscellaneous payments { if ($user->rights->banque->modifier) { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } } else { - $addbutton = ''.$langs->trans("AddBankRecord").''; + $newcardbutton = ''.$langs->trans("AddBankRecord").''; } } - $morehtml='
'; + $morehtml='
'; $morehtml.= ' "; // ' Page '; $morehtml.=''; $morehtml.='/'.$nbtotalofpages.' '; @@ -761,7 +761,7 @@ if ($resql) $morehtml.=$buttonreconcile; } - $morehtml.=$addbutton; + $morehtml.=$newcardbutton; $picto='title_bank'; if ($id > 0 || ! empty($ref)) $picto=''; From 8c307987d855e4c2a6469c9e816ac9943c4fdd01 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 00:26:13 +0200 Subject: [PATCH 062/336] css --- htdocs/theme/eldy/style.css.php | 1 + htdocs/theme/md/style.css.php | 1 + 2 files changed, 2 insertions(+) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 3e0f8febed6..9594f801d48 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -3216,6 +3216,7 @@ ul.noborder li:nth-child(even):not(.liste_titre) { span.boxstatstext { opacity: 0.8; line-height: 18px; + color: #000; } span.boxstatstext img, a.dashboardlineindicatorlate img { border: 0; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 0f4858ede91..da952125bf5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3189,6 +3189,7 @@ div .tdtop { } span.boxstatstext { line-height: 18px; + color: #000; /* opacity: 0.7; */ /* a bug if browser make z-index infintie when opacity is set so we disable it */ } span.boxstatsindicator { From 90f1ab8af4233773a113a61e5160dbbc3762d4a6 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 16 Apr 2018 06:46:22 +0200 Subject: [PATCH 063/336] add hooks on supplier documents --- .../modules/supplier_invoice/pdf/pdf_canelle.modules.php | 8 +++++--- .../modules/supplier_order/pdf/pdf_muscadet.modules.php | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index a5120574b7f..11951e90207 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -398,15 +398,16 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->MultiCell($this->posxqty-$this->posxup-0.8, 3, $up_excl_tax, 0, 'R', 0); // Quantity + $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); $pdf->SetXY($this->posxqty, $curY); // Enough for 6 chars if($conf->global->PRODUCT_USE_UNITS) { - $pdf->MultiCell($this->posxunit-$this->posxqty-0.8, 4, $object->lines[$i]->qty, 0, 'R'); + $pdf->MultiCell($this->posxunit-$this->posxqty-0.8, 4, $qty, 0, 'R'); } else { - $pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 4, $object->lines[$i]->qty, 0, 'R'); + $pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 4, $qty, 0, 'R'); } // Unit @@ -421,7 +422,8 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetXY($this->posxdiscount, $curY); if ($object->lines[$i]->remise_percent) { - $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 3, $object->lines[$i]->remise_percent."%", 0, 'R'); + $remise_percent = pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails); + $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 3, $remise_percent."%", 0, 'R'); } // Total HT line diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index f5d9971639b..b70a299fa03 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -405,15 +405,16 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->MultiCell($this->posxqty-$this->posxup-0.8, 3, $up_excl_tax, 0, 'R', 0); // Quantity + $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); $pdf->SetXY($this->posxqty, $curY); // Enough for 6 chars if($conf->global->PRODUCT_USE_UNITS) { - $pdf->MultiCell($this->posxunit-$this->posxqty-0.8, 4, $object->lines[$i]->qty, 0, 'R'); + $pdf->MultiCell($this->posxunit-$this->posxqty-0.8, 4, $qty, 0, 'R'); } else { - $pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 4, $object->lines[$i]->qty, 0, 'R'); + $pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 4, $qty, 0, 'R'); } // Unit @@ -428,7 +429,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($this->posxdiscount, $curY); if ($object->lines[$i]->remise_percent) { - $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 3, $object->lines[$i]->remise_percent."%", 0, 'R'); + $remise_percent = pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails); + $pdf->MultiCell($this->postotalht-$this->posxdiscount-1, 3, $remise_percent."%", 0, 'R'); } // Total HT line From 99633eb8152e983faa97de8da843c30a06f8821c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 11:12:27 +0200 Subject: [PATCH 064/336] FIX button "Classify bill" on supplier order was not visible --- htdocs/fourn/commande/card.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index ec9426f7a3c..03d405d905e 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2176,6 +2176,7 @@ elseif (! empty($object->id)) // modified by hook if (empty($reshook)) { + $object->fetchObjectLinked(); // Links are used to show or not button, so we load them now. // Validate if ($object->statut == 0 && $num > 0) From d549090290a2bbd0b1c1d4c1dc2b41788828961a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 11:12:56 +0200 Subject: [PATCH 065/336] Fix translation of button action must be a verb --- htdocs/fourn/commande/card.php | 4 ++-- htdocs/langs/en_US/stocks.lang | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index c0842bc253a..b9a1b7b0fa1 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2338,9 +2338,9 @@ elseif (! empty($object->id)) { if (in_array($object->statut, array(3,4))) { if ($conf->fournisseur->enabled && $user->rights->fournisseur->commande->receptionner) { - print ''; + print ''; } else { - print ''; + print ''; } } } diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 31873ad527e..d1b1f85224f 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -202,4 +202,5 @@ inventoryDeleteLine=Delete line RegulateStock=Regulate Stock ListInventory=List StockSupportServices=Stock management support services -StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" \ No newline at end of file +StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" +ReceiveProducts=Receive products \ No newline at end of file From 0d26bdcdc55fc4c0ad9bd3e9eccd72488592d423 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 11:12:27 +0200 Subject: [PATCH 066/336] FIX Button receive products not visible --- htdocs/fourn/commande/card.php | 7 ++++--- htdocs/langs/en_US/stocks.lang | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index ec9426f7a3c..0198bcc24ac 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2176,6 +2176,7 @@ elseif (! empty($object->id)) // modified by hook if (empty($reshook)) { + $object->fetchObjectLinked(); // Links are used to show or not button, so we load them now. // Validate if ($object->statut == 0 && $num > 0) @@ -2304,11 +2305,11 @@ elseif (! empty($object->id)) // Ship if (! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) { - if (in_array($object->statut, array(3,4))) { + if (in_array($object->statut, array(3,4,5))) { if ($conf->fournisseur->enabled && $user->rights->fournisseur->commande->receptionner) { - print ''; + print ''; } else { - print ''; + print ''; } } } diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 62d2e23e66c..9405157a473 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -199,4 +199,5 @@ inventoryDeleteLine=Delete line RegulateStock=Regulate Stock ListInventory=List StockSupportServices=Stock management support services -StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" \ No newline at end of file +StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" +ReceiveProducts=Receive products \ No newline at end of file From e7f6785a531bc344d7910a79b2230c110c160656 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 12:23:24 +0200 Subject: [PATCH 067/336] Add log --- htdocs/install/upgrade.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index d1d68596a94..c2ee6e93ad4 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -61,7 +61,7 @@ $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'alpha',3)?GETPOST("versionfrom",'alpha',3):(empty($argv[1])?'':$argv[1]); $versionto=GETPOST("versionto",'alpha',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]); $dirmodule=((GETPOST("dirmodule",'alpha',3) && GETPOST("dirmodule",'alpha',3) != 'ignoredbversion'))?GETPOST("dirmodule",'alpha',3):((empty($argv[3]) || $argv[3] == 'ignoredbversion')?'':$argv[3]); -$ignoredbversion=(GETPOST('ignoredbversion','',3)=='ignoredbversion')?GETPOST('ignoredbversion','',3):((empty($argv[3]) || $argv[3] != 'ignoredbversion')?'':$argv[3]); +$ignoredbversion=(GETPOST('ignoredbversion','alpha',3)=='ignoredbversion')?GETPOST('ignoredbversion','alpha',3):((empty($argv[3]) || $argv[3] != 'ignoredbversion')?'':$argv[3]); $langs->load("admin"); $langs->load("install"); @@ -254,6 +254,8 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09 if (count($versioncommande) && count($versionarray) && versioncompare($versioncommande,$versionarray) <= 0) // Si mysql >= 4.0 { + dolibarr_install_syslog("Clean database from bad named constraints"); + // Suppression vieilles contraintes sans noms et en doubles // Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999 $listtables=array( @@ -310,6 +312,7 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09 { $dir = "mysql/migration/"; // We use mysql migration scripts whatever is database driver if (! empty($dirmodule)) $dir=dol_buildpath('/'.$dirmodule.'/sql/',0); + dolibarr_install_syslog("Scan sql files for migration files in ".$dir); // Clean last part to exclude minor version x.y.z -> x.y $newversionfrom=preg_replace('/(\.[0-9]+)$/i','.0',$versionfrom); From c702c88fde57790035bc0d767f08f1dc1ce5e6a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 13:11:48 +0200 Subject: [PATCH 068/336] CSS --- htdocs/core/tpl/login.tpl.php | 6 +++--- htdocs/core/tpl/passwordforgotten.tpl.php | 4 ++-- htdocs/theme/eldy/style.css.php | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index e3dc94cd30e..0f22527ff01 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -121,7 +121,7 @@ if ($disablenofollow) echo ''; global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> -" name="username" class="flat input-icon-user" size="20" value="" tabindex="1" autofocus="autofocus" /> +" name="username" class="flat input-icon-user minwidth150" value="" tabindex="1" autofocus="autofocus" /> @@ -131,7 +131,7 @@ if ($disablenofollow) echo ''; global->MAIN_OPTIMIZEFORTEXTBROWSER)) { ?> -" name="password" class="flat input-icon-password" type="password" size="20" value="" tabindex="2" autocomplete="global->MAIN_LOGIN_ENABLE_PASSWORD_AUTOCOMPLETE)?'off':'on'; ?>" /> +" name="password" class="flat input-icon-password minwidth150" type="password" value="" tabindex="2" autocomplete="global->MAIN_LOGIN_ENABLE_PASSWORD_AUTOCOMPLETE)?'off':'on'; ?>" />
diff --git a/htdocs/core/tpl/passwordforgotten.tpl.php b/htdocs/core/tpl/passwordforgotten.tpl.php index e1b3ebfc21f..2f36d32535f 100644 --- a/htdocs/core/tpl/passwordforgotten.tpl.php +++ b/htdocs/core/tpl/passwordforgotten.tpl.php @@ -95,7 +95,7 @@ if ($disablenofollow) echo ''; @@ -132,7 +132,7 @@ if (! empty($morelogincontent)) { diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 9594f801d48..b0c66ed1cb9 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1950,7 +1950,6 @@ div.login_block_other { padding-top: 3px; text-align: right; } } .alogin, .alogin:hover { font-weight: normal !important; - font-size: !important; padding-top: 2px; } .alogin:hover, .atoplogin:hover { From 0d0da234b1c71bb068aea6cde15ff653a771f90e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 13:51:16 +0200 Subject: [PATCH 069/336] Lowercase NULL, TRUE, FALSE according to PSR2 --- .../class/PSWebServiceLibrary.class.php | 6 ++-- htdocs/admin/tools/export.php | 2 +- htdocs/api/class/api_setup.class.php | 2 +- htdocs/cashdesk/class/Facturation.class.php | 32 +++++++++---------- .../categories/class/api_categories.class.php | 4 +-- .../action/class/api_agendaevents.class.php | 4 +-- .../comm/propal/class/api_proposals.class.php | 8 ++--- htdocs/commande/class/api_orders.class.php | 8 ++--- htdocs/commande/class/commande.class.php | 2 +- .../facture/class/api_invoices.class.php | 8 ++--- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/contrat/class/api_contracts.class.php | 12 +++---- htdocs/core/actions_sendmails.inc.php | 4 +-- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/cookie.class.php | 2 +- htdocs/core/class/dolgraph.class.php | 4 +-- htdocs/core/class/fileupload.class.php | 2 +- htdocs/core/class/ldap.class.php | 2 +- htdocs/core/class/rssparser.class.php | 2 +- htdocs/core/class/smtps.class.php | 6 ++-- .../connectors/php/commands.php | 6 ++-- htdocs/core/js/lib_foot.js.php | 2 +- htdocs/core/js/lib_gravatar.js.php | 2 +- htdocs/core/js/lib_head.js.php | 2 +- htdocs/core/js/lib_notification.js.php | 24 +++++++------- htdocs/core/js/timepicker.js.php | 2 +- htdocs/core/lib/files.lib.php | 2 +- htdocs/core/lib/functions.lib.php | 4 +-- htdocs/core/lib/geturl.lib.php | 4 +-- htdocs/dav/dav.class.php | 2 +- .../expedition/class/api_shipments.class.php | 8 ++--- .../class/api_expensereports.class.php | 8 ++--- .../class/api_interventions.class.php | 4 +-- .../class/api_supplier_invoices.class.php | 4 +-- .../fourn/class/api_supplier_orders.class.php | 4 +-- .../fourn/class/fournisseur.facture.class.php | 2 +- htdocs/install/step1.php | 2 +- htdocs/loan/calc.php | 6 ++-- htdocs/main.inc.php | 6 ++-- .../template/class/api_mymodule.class.php | 4 +-- .../template/css/mymodule.css.php | 2 +- htdocs/paypal/lib/paypal.lib.php | 6 ++-- htdocs/product/class/api_products.class.php | 4 +-- .../stock/class/api_stockmovements.class.php | 4 +-- .../stock/class/api_warehouses.class.php | 4 +-- htdocs/projet/class/api_projects.class.php | 8 ++--- htdocs/projet/class/api_tasks.class.php | 8 ++--- htdocs/societe/class/api_contacts.class.php | 6 ++-- .../societe/class/api_thirdparties.class.php | 4 +-- htdocs/stripe/class/stripe.class.php | 4 +-- htdocs/stripe/payment.php | 2 +- htdocs/theme/eldy/style.css.php | 2 +- htdocs/theme/md/style.css.php | 2 +- htdocs/ticketsup/css/styles.css.php | 2 +- htdocs/user/class/api_users.class.php | 4 +-- htdocs/user/passwordforgotten.php | 2 +- 56 files changed, 138 insertions(+), 138 deletions(-) diff --git a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php index 10653df9dc0..de3ca683519 100644 --- a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php +++ b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php @@ -118,9 +118,9 @@ class PrestaShopWebservice public function executeRequest($url, $curl_params = array()) { $defaultParams = array( - CURLOPT_HEADER => TRUE, - CURLOPT_RETURNTRANSFER => TRUE, - CURLINFO_HEADER_OUT => TRUE, + CURLOPT_HEADER => true, + CURLOPT_RETURNTRANSFER => true, + CURLINFO_HEADER_OUT => true, CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 01ab314df73..de9ccb2c048 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -280,7 +280,7 @@ function backup_tables($outputfile, $tables='*') //cycle through $handle = fopen($outputfile, 'w+'); - if (fwrite($handle, '') === FALSE) + if (fwrite($handle, '') === false) { $langs->load("errors"); dol_syslog("Failed to open file ".$outputfile,LOG_ERR); diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 22c763100d4..19bf6688638 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -170,7 +170,7 @@ class Setup extends DolibarrApi // and then apply the filter if there is one. $this->translateLabel($country, $lang); - if (empty($filter) || stripos($country->label, $filter) !== FALSE) { + if (empty($filter) || stripos($country->label, $filter) !== false) { $list[] = $this->_cleanObjectDatas($country); } } diff --git a/htdocs/cashdesk/class/Facturation.class.php b/htdocs/cashdesk/class/Facturation.class.php index 769a69a23fa..a0e992e9da9 100644 --- a/htdocs/cashdesk/class/Facturation.class.php +++ b/htdocs/cashdesk/class/Facturation.class.php @@ -292,7 +292,7 @@ class Facturation else if ( $aId == 'RESET' ) { - $this->id = NULL; + $this->id = null; } else @@ -318,7 +318,7 @@ class Facturation } else if ( $aRef == 'RESET' ) { - $this->ref = NULL; + $this->ref = null; } else { @@ -342,7 +342,7 @@ class Facturation else if ( $aQte == 'RESET' ) { - $this->qte = NULL; + $this->qte = null; } else { @@ -366,7 +366,7 @@ class Facturation } else if ( $aStock == 'RESET' ) { - $this->stock = NULL; + $this->stock = null; } else { @@ -390,7 +390,7 @@ class Facturation } else if ($aRemisePercent == 'RESET') { - $this->remise_percent = NULL; + $this->remise_percent = null; } else { @@ -414,7 +414,7 @@ class Facturation } else if ( $aMontantRemise == 'RESET' ) { - $this->montant_remise = NULL; + $this->montant_remise = null; } else { @@ -439,7 +439,7 @@ class Facturation } else if ( $aPrix == 'RESET' ) { - $this->prix = NULL; + $this->prix = null; } else { @@ -463,7 +463,7 @@ class Facturation } else if ( $aTva == 'RESET' ) { - $this->tva = NULL; + $this->tva = null; } else { @@ -487,7 +487,7 @@ class Facturation } else if ( $aNumFacture == 'RESET' ) { - $this->num_facture = NULL; + $this->num_facture = null; } else { @@ -511,7 +511,7 @@ class Facturation } else if ( $aModeReglement == 'RESET' ) { - $this->mode_reglement = NULL; + $this->mode_reglement = null; } else { @@ -536,7 +536,7 @@ class Facturation } else if ( $aMontantEncaisse == 'RESET' ) { - $this->montant_encaisse = NULL; + $this->montant_encaisse = null; } else { @@ -560,7 +560,7 @@ class Facturation return $this->montant_rendu; } else if ( $aMontantRendu == 'RESET' ) { - $this->montant_rendu = NULL; + $this->montant_rendu = null; } else { @@ -584,7 +584,7 @@ class Facturation } else if ( $aPaiementLe == 'RESET' ) { - $this->paiement_le = NULL; + $this->paiement_le = null; } else { @@ -607,7 +607,7 @@ class Facturation } else if ( $aTotalHt == 'RESET' ) { - $this->prix_total_ht = NULL; + $this->prix_total_ht = null; } else { @@ -630,7 +630,7 @@ class Facturation } else if ( $aMontantTva == 'RESET' ) { - $this->montant_tva = NULL; + $this->montant_tva = null; } else { @@ -654,7 +654,7 @@ class Facturation } else if ( $aTotalTtc == 'RESET' ) { - $this->prix_total_ttc = NULL; + $this->prix_total_ttc = null; } else { diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index 46332f9f979..c559d760f0f 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -172,7 +172,7 @@ class Categories extends DolibarrApi * @param array $request_data Request data * @return int ID of category */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->categorie->creer) { throw new RestException(401); @@ -197,7 +197,7 @@ class Categories extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->categorie->creer) { throw new RestException(401); diff --git a/htdocs/comm/action/class/api_agendaevents.class.php b/htdocs/comm/action/class/api_agendaevents.class.php index b507d9c72b9..f5d9c7db762 100644 --- a/htdocs/comm/action/class/api_agendaevents.class.php +++ b/htdocs/comm/action/class/api_agendaevents.class.php @@ -187,7 +187,7 @@ class AgendaEvents extends DolibarrApi * @param array $request_data Request data * @return int ID of Agenda Event */ - function post($request_data = NULL) + function post($request_data = null) { if (! DolibarrApiAccess::$user->rights->agenda->myactions->create) { throw new RestException(401, "Insuffisant rights to create your Agenda Event"); @@ -226,7 +226,7 @@ class AgendaEvents extends DolibarrApi * @return int */ /* - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if (! DolibarrApiAccess::$user->rights->agenda->myactions->create) { throw new RestException(401, "Insuffisant rights to create your Agenda Event"); } diff --git a/htdocs/comm/propal/class/api_proposals.class.php b/htdocs/comm/propal/class/api_proposals.class.php index 63b26373f60..d153489dcc8 100644 --- a/htdocs/comm/propal/class/api_proposals.class.php +++ b/htdocs/comm/propal/class/api_proposals.class.php @@ -176,7 +176,7 @@ class Proposals extends DolibarrApi * @param array $request_data Request data * @return int ID of proposal */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->propal->creer) { throw new RestException(401, "Insuffisant rights"); @@ -241,7 +241,7 @@ class Proposals extends DolibarrApi * * @return int */ - function postLine($id, $request_data = NULL) + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->propal->creer) { throw new RestException(401); @@ -307,7 +307,7 @@ class Proposals extends DolibarrApi * * @return object */ - function putLine($id, $lineid, $request_data = NULL) + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->propal->creer) { throw new RestException(401); @@ -410,7 +410,7 @@ class Proposals extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->propal->creer) { throw new RestException(401); } diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index cbd505a41b8..c0e494a1684 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -179,7 +179,7 @@ class Orders extends DolibarrApi * @param array $request_data Request data * @return int ID of order */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->commande->creer) { throw new RestException(401, "Insuffisant rights"); @@ -245,7 +245,7 @@ class Orders extends DolibarrApi * * @return int */ - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->commande->creer) { throw new RestException(401); } @@ -308,7 +308,7 @@ class Orders extends DolibarrApi * * @return object */ - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->commande->creer) { throw new RestException(401); } @@ -402,7 +402,7 @@ class Orders extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if (! DolibarrApiAccess::$user->rights->commande->creer) { throw new RestException(401); } diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 0c63da5d4c2..a38cc3a442d 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -823,7 +823,7 @@ class Commande extends CommonOrder $line = $this->lines[$i]; // Test and convert into object this->lines[$i]. When coming from REST API, we may still have an array - //if (! is_object($line)) $line=json_decode(json_encode($line), FALSE); // convert recursively array into object. + //if (! is_object($line)) $line=json_decode(json_encode($line), false); // convert recursively array into object. if (! is_object($line)) $line = (object) $line; // Reset fk_parent_line for no child products and special product diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index a114829d43c..f3aab82422f 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -196,7 +196,7 @@ class Invoices extends DolibarrApi * @param array $request_data Request datas * @return int ID of invoice */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->facture->creer) { throw new RestException(401, "Insuffisant rights"); @@ -313,7 +313,7 @@ class Invoices extends DolibarrApi * @throws 401 * @throws 404 */ - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->facture->creer) { throw new RestException(401); } @@ -414,7 +414,7 @@ class Invoices extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->facture->creer) { throw new RestException(401); @@ -499,7 +499,7 @@ class Invoices extends DolibarrApi * @throws 404 * @throws 400 */ - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->facture->creer) { throw new RestException(401); } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index a06c1ccfa20..53e6ed99469 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -613,7 +613,7 @@ class Facture extends CommonInvoice $line = $this->lines[$i]; // Test and convert into object this->lines[$i]. When coming from REST API, we may still have an array - //if (! is_object($line)) $line=json_decode(json_encode($line), FALSE); // convert recursively array into object. + //if (! is_object($line)) $line=json_decode(json_encode($line), false); // convert recursively array into object. if (! is_object($line)) $line = (object) $line; if ($result >= 0) diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index 689b0465fd4..1bb17eb4352 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -182,7 +182,7 @@ class Contracts extends DolibarrApi * @param array $request_data Request data * @return int ID of contrat */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401, "Insuffisant rights"); @@ -247,7 +247,7 @@ class Contracts extends DolibarrApi * * @return int */ - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401); } @@ -300,7 +300,7 @@ class Contracts extends DolibarrApi * * @return object */ - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401); } @@ -359,7 +359,7 @@ class Contracts extends DolibarrApi * * @return object */ - function activateLine($id, $lineid, $datestart, $dateend = NULL, $comment = NULL) { + function activateLine($id, $lineid, $datestart, $dateend = null, $comment = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401); } @@ -396,7 +396,7 @@ class Contracts extends DolibarrApi * * @return object */ - function unactivateLine($id, $lineid, $datestart, $comment = NULL) { + function unactivateLine($id, $lineid, $datestart, $comment = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401); } @@ -470,7 +470,7 @@ class Contracts extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->contrat->creer) { throw new RestException(401); } diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index f1ab9305a4d..fde845f6af1 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -347,9 +347,9 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO if (!$folder) $folder = "Sent"; // Default Sent folder $mailboxconfig->mbox = imap_open($mailboxconfig->get_connector_url().$folder, $mailboxconfig->mailbox_imap_login, $mailboxconfig->mailbox_imap_password); - if (FALSE === $mailboxconfig->mbox) + if (false === $mailboxconfig->mbox) { - $info = FALSE; + $info = false; $err = $langs->trans('Error3_Imap_Connection_Error'); setEventMessages($err,$mailboxconfig->element, null, 'errors'); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index addb7a98b80..9225fbe10ae 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6644,7 +6644,7 @@ abstract class CommonObject { $this->{$field} = @unserialize($obj->{$field}); // Hack for data not in UTF8 - if($this->{$field } === FALSE) @unserialize(utf8_decode($obj->{$field})); + if($this->{$field } === false) @unserialize(utf8_decode($obj->{$field})); } elseif($this->isInt($info)) { diff --git a/htdocs/core/class/cookie.class.php b/htdocs/core/class/cookie.class.php index 1d28861a44e..c41077f76fb 100644 --- a/htdocs/core/class/cookie.class.php +++ b/htdocs/core/class/cookie.class.php @@ -50,7 +50,7 @@ class DolCookie */ function __construct($key = '') { - $this->_myKey = hash('sha256', $key, TRUE); + $this->_myKey = hash('sha256', $key, true); $this->_iv = md5(md5($this->_myKey)); $this->cookie = ""; $this->myCookie = ""; diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index ba7a67be3cb..3ad22f87c03 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -674,7 +674,7 @@ class DolGraph $group->setPadding($paddleft, $paddright); // Width on left and right for Y axis values $group->legend->setSpace(0); $group->legend->setPadding(2,2,2,2); - $group->legend->setPosition(NULL,0.1); + $group->legend->setPosition(null, 0.1); $group->legend->setBackgroundColor($colorsemitrans); if (is_array($this->bgcolorgrid)) $group->grid->setBackgroundColor($bgcolorgrid); @@ -734,7 +734,7 @@ class DolGraph $plot->barShadow->setSize($this->SetShading); $plot->barShadow->setPosition(SHADOW_RIGHT_TOP); $plot->barShadow->setColor(new Color(160, 160, 160, 50)); - $plot->barShadow->smooth(TRUE); + $plot->barShadow->smooth(true); //$plot->setSize(1, 0.96); //$plot->setCenter(0.5, 0.52); diff --git a/htdocs/core/class/fileupload.class.php b/htdocs/core/class/fileupload.class.php index 648f1295c25..c3a40599877 100644 --- a/htdocs/core/class/fileupload.class.php +++ b/htdocs/core/class/fileupload.class.php @@ -225,7 +225,7 @@ class FileUpload * getFileObject * * @param string $file_name Filename - * @return stdClass|NULL + * @return stdClass|null */ protected function getFileObject($file_name) { diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 8fcdf53b4a6..f54caacff8b 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -502,7 +502,7 @@ class Ldap * @param string $newrdn New RDN entry key (uid=qqq) * @param string $newparent New parent (ou=xxx,dc=aaa,dc=bbb) * @param User $user Objet user that modify - * @param bool $deleteoldrdn If TRUE the old RDN value(s) is removed, else the old RDN value(s) is retained as non-distinguished values of the entry. + * @param bool $deleteoldrdn If true the old RDN value(s) is removed, else the old RDN value(s) is retained as non-distinguished values of the entry. * @return int <0 if KO, >0 if OK */ function rename($dn, $newrdn, $newparent, $user, $deleteoldrdn = true) diff --git a/htdocs/core/class/rssparser.class.php b/htdocs/core/class/rssparser.class.php index 1d3af953375..32a5842d410 100644 --- a/htdocs/core/class/rssparser.class.php +++ b/htdocs/core/class/rssparser.class.php @@ -753,7 +753,7 @@ function xml2php($xml) { //If this element is already in the array we will create an indexed array $tmp = $array[$key]; - $array[$key] = NULL; + $array[$key] = null; $array[$key][] = $tmp; $array[$key][] = $child; $tab = true; diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index c4176d2b81b..f3e41d8d212 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -647,7 +647,7 @@ class SMTPs { /** * Returns constructed SELECT Object string or boolean upon failure - * Default value is set at TRUE + * Default value is set at true */ $_retVal = true; @@ -655,7 +655,7 @@ class SMTPs if ( ! empty ($_strConfigPath) ) { // If the path is not valid, this will NOT generate an error, - // it will simply return FALSE. + // it will simply return false. if ( ! @include ( $_strConfigPath ) ) { $this->_setErr(110, '"' . $_strConfigPath . '" is not a valid path.'); @@ -1756,7 +1756,7 @@ class SMTPs { /** * Returns constructed SELECT Object string or boolean upon failure - * Default value is set at TRUE + * Default value is set at true */ $_retVal = true; diff --git a/htdocs/core/filemanagerdol/connectors/php/commands.php b/htdocs/core/filemanagerdol/connectors/php/commands.php index 5523708a3a0..34e32fa5f99 100644 --- a/htdocs/core/filemanagerdol/connectors/php/commands.php +++ b/htdocs/core/filemanagerdol/connectors/php/commands.php @@ -24,7 +24,7 @@ /** * GetFolders - * + * * @param string $resourceType Resource type * @param string $currentFolder Current folder * @return void @@ -145,7 +145,7 @@ function CreateFolder( $resourceType, $currentFolder ) $sNewFolderName = $_GET['NewFolderName'] ; $sNewFolderName = SanitizeFolderName($sNewFolderName); - if (strpos($sNewFolderName, '..') !== FALSE) + if (strpos($sNewFolderName, '..') !== false) $sErrorNumber = '102' ; // Invalid folder name. else { @@ -187,7 +187,7 @@ function CreateFolder( $resourceType, $currentFolder ) //function FileUpload( $resourceType, $currentFolder, $sCommand ) /** * FileUpload - * + * * @param string $resourceType Resource type * @param string $currentFolder Current folder * @param string $sCommand Command diff --git a/htdocs/core/js/lib_foot.js.php b/htdocs/core/js/lib_foot.js.php index 0d8301c3b3b..a303f78eb15 100644 --- a/htdocs/core/js/lib_foot.js.php +++ b/htdocs/core/js/lib_foot.js.php @@ -32,7 +32,7 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; diff --git a/htdocs/core/js/lib_gravatar.js.php b/htdocs/core/js/lib_gravatar.js.php index bb850be8d5d..485a57ede88 100644 --- a/htdocs/core/js/lib_gravatar.js.php +++ b/htdocs/core/js/lib_gravatar.js.php @@ -33,7 +33,7 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index 15dbc62ffa7..3f47e4da15d 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -35,7 +35,7 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index ba725d3e226..6900e9b03e7 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * + * * Library javascript to enable Browser notifications */ @@ -34,17 +34,17 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H global $langs, $conf; top_httphead('text/javascript; charset=UTF-8'); - + $nowtime = time(); //$nowtimeprevious = floor($nowtime / 60) * 60; // auto_check_events_not_before is rounded to previous minute // TODO Try to make a solution with only a javascript timer that is easier. Difficulty is to avoid notification twice when. /* session already started into main - session_cache_limiter(FALSE); + session_cache_limiter(false); header('Cache-Control: no-cache'); session_set_cookie_params(0, '/', null, false, true); // Add tag httponly on session cookie session_start();*/ - if (! isset($_SESSION['auto_check_events_not_before'])) + if (! isset($_SESSION['auto_check_events_not_before'])) { print 'console.log("_SESSION[auto_check_events_not_before] is not set");'."\n"; // Round to eliminate the seconds @@ -65,9 +65,9 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H /* Launch timer */ // We set a delay before launching first test so next check will arrive after the time_auto_update compared to previous one. var time_first_execution = (time_auto_update - (nowtime - time_js_next_test)) * 1000; //need milliseconds - if (login != '') { + if (login != '') { console.log("Launch browser notif check: setTimeout is set to launch 'first_execution' function after a wait of time_first_execution="+time_first_execution+". nowtime (time php page generation) = "+nowtime+" auto_check_events_not_before (val in session)= "+auto_check_events_not_before+" time_js_next_test (max now,auto_check_events_not_before) = "+time_js_next_test+" time_auto_update="+time_auto_update); - setTimeout(first_execution, time_first_execution); + setTimeout(first_execution, time_first_execution); } //first run auto check @@ -88,13 +88,13 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H success: function (result) { var arr = JSON.parse(result); if (arr.length > 0) { - var audio = null; + var audio = null; global->AGENDA_REMINDER_BROWSER_SOUND)) { print 'audio = new Audio(\''.DOL_URL_ROOT.'/theme/common/sound/notification_agenda.wav'.'\');'; } ?> - + $.each(arr, function (index, value) { var url="notdefined"; var title="Not defined"; @@ -102,7 +102,7 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H if (value['type'] == 'agenda' && value['location'] != null && value['location'] != '') { body += '\n' + value['location']; } - + if (value['type'] == 'agenda') { url = '' + value['id']; @@ -113,10 +113,10 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H body: body, tag: value['id'] }; - + // We release the notify var noti = new Notification(title, extra); - if (index==0 && audio) + if (index==0 && audio) { audio.play(); } @@ -140,5 +140,5 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H time_js_next_test += time_auto_update; console.log('Updated time_js_next_test. New value is '+time_js_next_test); } -open($inputfile); - if ($res === TRUE) + if ($res === true) { $zip->extractTo($outputdir.'/'); $zip->close(); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index aa38af3c16d..fd3a2017a3d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -272,7 +272,7 @@ function GETPOSTISSET($paramname) * @param string $noreplace Force disable of replacement of __xxx__ strings. * @return string|string[] Value found (string or array), or '' if check fails */ -function GETPOST($paramname, $check='none', $method=0, $filter=NULL, $options=NULL, $noreplace=0) +function GETPOST($paramname, $check='none', $method=0, $filter=null, $options=null, $noreplace=0) { global $mysoc,$user,$conf; @@ -6519,7 +6519,7 @@ function dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensiti else { ($case_sensitive) ? natsort($temp) : natcasesort($temp); - if($order!='asc') $temp=array_reverse($temp,TRUE); + if($order!='asc') $temp=array_reverse($temp, true); } $sorted = array(); diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index 2a45a71c4c9..418cc1418b5 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -65,8 +65,8 @@ function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addhea //curl_setopt($ch, CURLOPT_SSLVERSION, 6); for tls 1.2 //turning off the server and peer verification(TrustManager Concept). - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT)?5:$conf->global->MAIN_USE_CONNECT_TIMEOUT); curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT)?30:$conf->global->MAIN_USE_RESPONSE_TIMEOUT); diff --git a/htdocs/dav/dav.class.php b/htdocs/dav/dav.class.php index 25f2ac8ccc7..9e5121112d0 100644 --- a/htdocs/dav/dav.class.php +++ b/htdocs/dav/dav.class.php @@ -244,7 +244,7 @@ class CdavLib * * @param int $calendarId Calendar id * @param int $bCalendarData Add calendar data - * @return array|string[][]|unknown[][]|NULL[][] + * @return array|string[][] */ public function getFullCalendarObjects($calendarId, $bCalendarData) { diff --git a/htdocs/expedition/class/api_shipments.class.php b/htdocs/expedition/class/api_shipments.class.php index 9857b90c84c..844a6c95305 100644 --- a/htdocs/expedition/class/api_shipments.class.php +++ b/htdocs/expedition/class/api_shipments.class.php @@ -181,7 +181,7 @@ class Shipments extends DolibarrApi * @param array $request_data Request data * @return int ID of shipment */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->expedition->creer) { throw new RestException(401, "Insuffisant rights"); @@ -250,7 +250,7 @@ class Shipments extends DolibarrApi * @return int */ /* - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->expedition->creer) { throw new RestException(401); } @@ -312,7 +312,7 @@ class Shipments extends DolibarrApi * @return object */ /* - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->expedition->creer) { throw new RestException(401); } @@ -407,7 +407,7 @@ class Shipments extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if (! DolibarrApiAccess::$user->rights->expedition->creer) { throw new RestException(401); } diff --git a/htdocs/expensereport/class/api_expensereports.class.php b/htdocs/expensereport/class/api_expensereports.class.php index e68c9338b92..726aa158413 100644 --- a/htdocs/expensereport/class/api_expensereports.class.php +++ b/htdocs/expensereport/class/api_expensereports.class.php @@ -160,7 +160,7 @@ class ExpenseReports extends DolibarrApi * @param array $request_data Request data * @return int ID of Expense Report */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->expensereport->creer) { throw new RestException(401, "Insuffisant rights"); @@ -228,7 +228,7 @@ class ExpenseReports extends DolibarrApi * @return int */ /* - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->expensereport->creer) { throw new RestException(401); } @@ -290,7 +290,7 @@ class ExpenseReports extends DolibarrApi * @return object */ /* - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->expensereport->creer) { throw new RestException(401); } @@ -380,7 +380,7 @@ class ExpenseReports extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->expensereport->creer) { throw new RestException(401); } diff --git a/htdocs/fichinter/class/api_interventions.class.php b/htdocs/fichinter/class/api_interventions.class.php index 0d9360b0e72..8b21b534856 100644 --- a/htdocs/fichinter/class/api_interventions.class.php +++ b/htdocs/fichinter/class/api_interventions.class.php @@ -188,7 +188,7 @@ class Interventions extends DolibarrApi * @param array $request_data Request data * @return int ID of intervention */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->ficheinter->creer) { throw new RestException(401, "Insuffisant rights"); @@ -249,7 +249,7 @@ class Interventions extends DolibarrApi * * @return int */ - function postLine($id, $request_data = NULL) + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->ficheinter->creer) { throw new RestException(401, "Insuffisant rights"); diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index e60fdccd4ad..68bb902b8fb 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -182,7 +182,7 @@ class SupplierInvoices extends DolibarrApi * @param array $request_data Request datas * @return int ID of supplier invoice */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401, "Insuffisant rights"); @@ -218,7 +218,7 @@ class SupplierInvoices extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->fournisseur->facture->creer) { throw new RestException(401); diff --git a/htdocs/fourn/class/api_supplier_orders.class.php b/htdocs/fourn/class/api_supplier_orders.class.php index 74b5bbe43b3..d9596bf3958 100644 --- a/htdocs/fourn/class/api_supplier_orders.class.php +++ b/htdocs/fourn/class/api_supplier_orders.class.php @@ -186,7 +186,7 @@ class SupplierOrders extends DolibarrApi * @param array $request_data Request datas * @return int ID of supplier order */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->fournisseur->commande->creer) { throw new RestException(401, "Insuffisant rights"); @@ -222,7 +222,7 @@ class SupplierOrders extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->fournisseur->commande->creer) { throw new RestException(401); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 139792f3044..3f8fee2d5ad 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -404,7 +404,7 @@ class FactureFournisseur extends CommonInvoice $line = $this->lines[$i]; // Test and convert into object this->lines[$i]. When coming from REST API, we may still have an array - //if (! is_object($line)) $line=json_decode(json_encode($line), FALSE); // convert recursively array into object. + //if (! is_object($line)) $line=json_decode(json_encode($line), false); // convert recursively array into object. if (! is_object($line)) $line = (object) $line; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'facture_fourn_det (fk_facture_fourn)'; diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index 62e27b1db33..f313a7a9595 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -878,7 +878,7 @@ function write_conf_file($conffile) $error=0; - $key = md5(uniqid(mt_rand(),TRUE)); // Generate random hash + $key = md5(uniqid(mt_rand(), true)); // Generate random hash $fp = fopen("$conffile", "w"); if($fp) diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 434d57b43c2..fedf26e6a36 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -28,7 +28,7 @@ $default_sale_price = "150000"; $default_annual_interest_percent = 7.0; $default_year_term = 30; $default_down_percent = 10; -$default_show_progress = TRUE; +$default_show_progress = true; /* --------------------------------------------------- * * Initialize Variables @@ -241,7 +241,7 @@ if ($form_complete && $monthly_payment) print ''; print ''; */ - + print ''; print ''; print ''; print ''; - ($current_month % 12) ? $show_legend = FALSE : $show_legend = TRUE; + ($current_month % 12) ? ($show_legend = false) : ($show_legend = true); if ($show_legend) { print ''; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index f1d6487d5de..68fb0ce8d38 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -350,7 +350,7 @@ if (! defined('NOTOKENRENEWAL')) if (isset($_SESSION['newtoken'])) $_SESSION['token'] = $_SESSION['newtoken']; // Save in $_SESSION['newtoken'] what will be next token. Into forms, we will add param token = $_SESSION['newtoken'] - $token = dol_hash(uniqid(mt_rand(),TRUE)); // Generates a hash of a random number + $token = dol_hash(uniqid(mt_rand(), true)); // Generates a hash of a random number $_SESSION['newtoken'] = $token; } if ((! defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && ! empty($conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN)) @@ -468,7 +468,7 @@ if (! defined('NOLOGIN')) if (GETPOST("username","alpha",2) && ! empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA)) { $sessionkey = 'dol_antispam_value'; - $ok=(array_key_exists($sessionkey, $_SESSION) === TRUE && (strtolower($_SESSION[$sessionkey]) == strtolower($_POST['code']))); + $ok=(array_key_exists($sessionkey, $_SESSION) === true && (strtolower($_SESSION[$sessionkey]) == strtolower($_POST['code']))); // Check code if (! $ok) @@ -1502,7 +1502,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a { $toprightmenu.=$result; // For backward compatibility } - + // Link to module builder if (! empty($conf->modulebuilder->enabled)) { diff --git a/htdocs/modulebuilder/template/class/api_mymodule.class.php b/htdocs/modulebuilder/template/class/api_mymodule.class.php index a068715b521..b4abf60861e 100644 --- a/htdocs/modulebuilder/template/class/api_mymodule.class.php +++ b/htdocs/modulebuilder/template/class/api_mymodule.class.php @@ -192,7 +192,7 @@ class MyModuleApi extends DolibarrApi * * @url POST myobjects/ */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->myobject->create) { throw new RestException(401); @@ -218,7 +218,7 @@ class MyModuleApi extends DolibarrApi * * @url PUT myobjects/{id} */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->myobject->create) { throw new RestException(401); diff --git a/htdocs/modulebuilder/template/css/mymodule.css.php b/htdocs/modulebuilder/template/css/mymodule.css.php index b8b39dd6e8b..cd9a4b6035b 100644 --- a/htdocs/modulebuilder/template/css/mymodule.css.php +++ b/htdocs/modulebuilder/template/css/mymodule.css.php @@ -48,7 +48,7 @@ if (! $res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -session_cache_limiter(FALSE); +session_cache_limiter(false); // Load user to have $user->conf loaded (not done by default here because of NOLOGIN constant defined) and load permission if we need to use them in CSS /*if (empty($user->id) && ! empty($_SESSION['dol_login'])) diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index c34e964c522..4855799c508 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -630,8 +630,8 @@ function hash_call($methodName,$nvpStr) curl_setopt($ch, CURLOPT_SSLVERSION, (empty($conf->global->PAYPAL_SSLVERSION)?1:$conf->global->PAYPAL_SSLVERSION)); //turning off the server and peer verification(TrustManager Concept). - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT)?5:$conf->global->MAIN_USE_CONNECT_TIMEOUT); curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT)?30:$conf->global->MAIN_USE_RESPONSE_TIMEOUT); @@ -639,7 +639,7 @@ function hash_call($methodName,$nvpStr) curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, 1); - //if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled. + //if USE_PROXY constant set to true in Constants.php, then only proxy will be enabled. if ($USE_PROXY) { dol_syslog("Paypal API hash_call set proxy to ".$PROXY_HOST. ":" . $PROXY_PORT." - ".$PROXY_USER. ":" . $PROXY_PASS); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 516c67f1fbe..083aeb80e34 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -178,7 +178,7 @@ class Products extends DolibarrApi * @param array $request_data Request data * @return int ID of product */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->produit->creer) { throw new RestException(401); @@ -208,7 +208,7 @@ class Products extends DolibarrApi * @throws 401 * @throws 404 */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { global $conf; diff --git a/htdocs/product/stock/class/api_stockmovements.class.php b/htdocs/product/stock/class/api_stockmovements.class.php index cb861f78575..16d21c02eb3 100644 --- a/htdocs/product/stock/class/api_stockmovements.class.php +++ b/htdocs/product/stock/class/api_stockmovements.class.php @@ -173,7 +173,7 @@ class StockMovements extends DolibarrApi * @return int ID of stock movement */ //function post($product_id, $warehouse_id, $qty, $lot='', $movementcode='', $movementlabel='', $price=0) - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->stock->creer) { throw new RestException(401); @@ -212,7 +212,7 @@ class StockMovements extends DolibarrApi * @return int */ /* - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->stock->creer) { throw new RestException(401); diff --git a/htdocs/product/stock/class/api_warehouses.class.php b/htdocs/product/stock/class/api_warehouses.class.php index fd2dc4b2328..10b76d22a25 100644 --- a/htdocs/product/stock/class/api_warehouses.class.php +++ b/htdocs/product/stock/class/api_warehouses.class.php @@ -158,7 +158,7 @@ class Warehouses extends DolibarrApi * @param array $request_data Request data * @return int ID of warehouse */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->stock->creer) { throw new RestException(401); @@ -183,7 +183,7 @@ class Warehouses extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->stock->creer) { throw new RestException(401); diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php index bf98938074d..ab157bf237c 100644 --- a/htdocs/projet/class/api_projects.class.php +++ b/htdocs/projet/class/api_projects.class.php @@ -179,7 +179,7 @@ class Projects extends DolibarrApi * @param array $request_data Request data * @return int ID of project */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401, "Insuffisant rights"); @@ -300,7 +300,7 @@ class Projects extends DolibarrApi * @return int */ /* - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } @@ -362,7 +362,7 @@ class Projects extends DolibarrApi * @return object */ /* - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } @@ -418,7 +418,7 @@ class Projects extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } diff --git a/htdocs/projet/class/api_tasks.class.php b/htdocs/projet/class/api_tasks.class.php index 81e28663cc4..3125546c10a 100644 --- a/htdocs/projet/class/api_tasks.class.php +++ b/htdocs/projet/class/api_tasks.class.php @@ -187,7 +187,7 @@ class Tasks extends DolibarrApi * @param array $request_data Request data * @return int ID of project */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401, "Insuffisant rights"); @@ -305,7 +305,7 @@ class Tasks extends DolibarrApi * @return int */ /* - function postLine($id, $request_data = NULL) { + function postLine($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } @@ -367,7 +367,7 @@ class Tasks extends DolibarrApi * @return object */ /* - function putLine($id, $lineid, $request_data = NULL) { + function putLine($id, $lineid, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } @@ -422,7 +422,7 @@ class Tasks extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->projet->creer) { throw new RestException(401); } diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index 3270bc144c2..508fe892ebe 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -194,7 +194,7 @@ class Contacts extends DolibarrApi * @param array $request_data Request datas * @return int ID of contact */ - function post($request_data = NULL) { + function post($request_data = null) { if (!DolibarrApiAccess::$user->rights->societe->contact->creer) { throw new RestException(401, 'No permission to create/update contacts'); @@ -219,7 +219,7 @@ class Contacts extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { if (!DolibarrApiAccess::$user->rights->societe->contact->creer) { throw new RestException(401, 'No permission to create/update contacts'); @@ -282,7 +282,7 @@ class Contacts extends DolibarrApi * * @url POST {id}/createUser */ - function createUser($id, $request_data = NULL) { + function createUser($id, $request_data = null) { //if (!DolibarrApiAccess::$user->rights->user->user->creer) { //throw new RestException(401); //} diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 1cdfabf7fca..73c782ddf7c 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -199,7 +199,7 @@ class Thirdparties extends DolibarrApi * @param array $request_data Request datas * @return int ID of thirdparty */ - function post($request_data = NULL) + function post($request_data = null) { if(! DolibarrApiAccess::$user->rights->societe->creer) { throw new RestException(401); @@ -223,7 +223,7 @@ class Thirdparties extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) + function put($id, $request_data = null) { if(! DolibarrApiAccess::$user->rights->societe->creer) { throw new RestException(401); diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 6ed703d7a92..2fbaa261665 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -334,10 +334,10 @@ class Stripe extends CommonObject $obj = $this->db->fetch_object($result); $key = $obj->fk_soc; } else { - $key = NULL; + $key = null; } } else { - $key = NULL; + $key = null; } $arrayzerounitcurrency=array('BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'); diff --git a/htdocs/stripe/payment.php b/htdocs/stripe/payment.php index 4eeae97ee71..0b124ea9929 100644 --- a/htdocs/stripe/payment.php +++ b/htdocs/stripe/payment.php @@ -418,7 +418,7 @@ else { } if (GETPOST('error')){ - setEventMessages(GETPOST('error'), NULL, 'errors'); + setEventMessages(GETPOST('error'), null, 'errors'); } if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paiement') diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b0c66ed1cb9..8577657204c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -58,7 +58,7 @@ $fontsizesmaller='0.75em'; if (defined('THEME_ONLY_CONSTANT')) return; -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index da952125bf5..514f575d356 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -59,7 +59,7 @@ $fontsizesmaller='11'; if (defined('THEME_ONLY_CONSTANT')) return; -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/ticketsup/css/styles.css.php b/htdocs/ticketsup/css/styles.css.php index aed9b79cbc9..d52739d9dc0 100644 --- a/htdocs/ticketsup/css/styles.css.php +++ b/htdocs/ticketsup/css/styles.css.php @@ -31,7 +31,7 @@ if (! defined('NOLOGIN')) define('NOLOGIN',1); // File must be if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(FALSE); +session_cache_limiter(false); require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/user/class/api_users.class.php b/htdocs/user/class/api_users.class.php index c30cacd72c0..556b86332bc 100644 --- a/htdocs/user/class/api_users.class.php +++ b/htdocs/user/class/api_users.class.php @@ -162,7 +162,7 @@ class Users extends DolibarrApi * @param array $request_data New user data * @return int */ - function post($request_data = NULL) { + function post($request_data = null) { // check user authorization //if(! DolibarrApiAccess::$user->rights->user->creer) { // throw new RestException(401, "User creation not allowed"); @@ -194,7 +194,7 @@ class Users extends DolibarrApi * @param array $request_data Datas * @return int */ - function put($id, $request_data = NULL) { + function put($id, $request_data = null) { //if (!DolibarrApiAccess::$user->rights->user->user->creer) { //throw new RestException(401); //} diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index cde5c5199e0..584fa6f2427 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -96,7 +96,7 @@ if ($action == 'validatenewpassword' && $username && $passwordhash) if ($action == 'buildnewpassword' && $username) { $sessionkey = 'dol_antispam_value'; - $ok=(array_key_exists($sessionkey, $_SESSION) === TRUE && (strtolower($_SESSION[$sessionkey]) == strtolower($_POST['code']))); + $ok=(array_key_exists($sessionkey, $_SESSION) === true && (strtolower($_SESSION[$sessionkey]) == strtolower($_POST['code']))); // Verify code if (! $ok) From 14ed19265c49e951955296fc972ffce6e23c048e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 13:53:59 +0200 Subject: [PATCH 070/336] FIX environment shown on cron card --- htdocs/cron/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 707b75b95fe..7730f6aafe4 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -624,7 +624,7 @@ else } else { - $mc->getInfo($obj->entity); + $mc->getInfo($object->entity); print $mc->label; } print ""; From f1ad3912e732f7734ff018259745f2f3236ad235 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 14:18:38 +0200 Subject: [PATCH 071/336] Fix multicompany compatibility for recurring invoice generation --- .../facture/class/facture-rec.class.php | 89 +++++++++++-------- htdocs/cron/class/cronjob.class.php | 3 +- 2 files changed, 52 insertions(+), 40 deletions(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index aeed921d136..799fd25c5ae 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -973,6 +973,7 @@ class FactureRec extends CommonInvoice $sql.= " AND (date_when IS NULL OR date_when <= '".$db->idate($today)."')"; $sql.= ' AND (nb_gen_done < nb_gen_max OR nb_gen_max = 0)'; $sql.= ' AND suspended = 0'; + $sql.= ' AND entity = '.$conf->entity; // MUST STAY = $conf->entity here $sql.= $db->order('entity', 'ASC'); //print $sql;exit; @@ -987,7 +988,7 @@ class FactureRec extends CommonInvoice $saventity = $conf->entity; - while ($i < $num) // Loop on each template invoice + while ($i < $num) // Loop on each template invoice. If $num = 0, test is false at first pass. { $line = $db->fetch_object($resql); @@ -996,49 +997,59 @@ class FactureRec extends CommonInvoice $facturerec = new FactureRec($db); $facturerec->fetch($line->rowid); - // Set entity context - $conf->entity = $facturerec->entity; + if ($facturerec->id > 0) + { + // Set entity context + $conf->entity = $facturerec->entity; - dol_syslog("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref.", entity=".$facturerec->entity); + dol_syslog("createRecurringInvoices Process invoice template id=".$facturerec->id.", ref=".$facturerec->ref.", entity=".$facturerec->entity); - $error=0; + $error=0; - $facture = new Facture($db); - $facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice - $facture->fk_fac_rec_source = $facturerec->id; // We will create $facture from this recurring invoice + $facture = new Facture($db); + $facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice + $facture->fk_fac_rec_source = $facturerec->id; // We will create $facture from this recurring invoice - $facture->type = self::TYPE_STANDARD; - $facture->brouillon = 1; - $facture->date = (empty($facturerec->date_when)?$now:$facturerec->date_when); // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later. - $facture->socid = $facturerec->socid; + $facture->type = self::TYPE_STANDARD; + $facture->brouillon = 1; + $facture->date = (empty($facturerec->date_when)?$now:$facturerec->date_when); // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later. + $facture->socid = $facturerec->socid; - $invoiceidgenerated = $facture->create($user); - if ($invoiceidgenerated <= 0) - { - $this->errors = $facture->errors; - $this->error = $facture->error; - $error++; - } - if (! $error && $facturerec->auto_validate) - { - $result = $facture->validate($user); - if ($result <= 0) - { - $this->errors = $facture->errors; - $this->error = $facture->error; - $error++; - } - } - if (! $error && $facturerec->generate_pdf) - { - $result = $facture->generateDocument($facturerec->modelpdf, $langs); - if ($result <= 0) - { - $this->errors = $facture->errors; - $this->error = $facture->error; - $error++; - } - } + $invoiceidgenerated = $facture->create($user); + if ($invoiceidgenerated <= 0) + { + $this->errors = $facture->errors; + $this->error = $facture->error; + $error++; + } + if (! $error && $facturerec->auto_validate) + { + $result = $facture->validate($user); + if ($result <= 0) + { + $this->errors = $facture->errors; + $this->error = $facture->error; + $error++; + } + } + if (! $error && $facturerec->generate_pdf) + { + $result = $facture->generateDocument($facturerec->modelpdf, $langs); + if ($result <= 0) + { + $this->errors = $facture->errors; + $this->error = $facture->error; + $error++; + } + } + } + else + { + $error++; + $this->error="Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity."\n"; + $this->errors[]="Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity; + dol_syslog("createRecurringInvoices Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity); + } if (! $error && $invoiceidgenerated >= 0) { diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index f890391431b..20d332e7cbd 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1044,8 +1044,9 @@ class Cronjob extends CommonObject { dol_syslog(get_class($this)."::run_jobs START ".$this->objectname."->".$this->methodename."(".$this->params.");", LOG_DEBUG); - // Create Object for the call module + // Create Object for the called module $object = new $this->objectname($this->db); + if ($this->entity > 0) $object->entity = $this->entity; // We work on a dedicated entity $params_arr = array_map('trim', explode(",",$this->params)); From 50d86a7cfd492ed68b1c0c1e9fd615926f78f1ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 14:25:39 +0200 Subject: [PATCH 072/336] Fix accounting area when advanced accounting module not enabled --- htdocs/accountancy/index.php | 209 ++++++++++++++++++----------------- 1 file changed, 108 insertions(+), 101 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 270a6b1ab09..cad9547ec4c 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -63,111 +63,118 @@ print load_fiche_titre($langs->trans("AccountancyArea"), '', 'title_accountancy' $step = 0; -print $langs->trans("AccountancyAreaDescIntro")."
\n"; -print "
\n";print "
\n"; - -print_fiche_titre(' '.$langs->trans("AccountancyAreaDescActionOnce"), '', '')."
\n"; -print '
'; -print "
\n"; - -// STEPS -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescJournalSetup", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("AccountingJournals").''); -print "
\n"; -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChartModel", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("Pcg_version").''); -print "
\n"; -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChart", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("Chartofaccounts").''); -print "
\n"; - -print "
\n"; -print $langs->trans("AccountancyAreaDescActionOnceBis"); -print "
\n"; -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBank", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuBankAccounts").'')."\n"; -print "
\n"; - -$step++; -$textlink = ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup").'-'.$langs->transnoentitiesnoconv("MenuVatAccounts").''; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescVat", $step, $textlink); -print "
\n"; -if (! empty($conf->tax->enabled)) +if ($conf->accounting->enabled) { - $textlink = ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup").'-'.$langs->transnoentitiesnoconv("MenuTaxAccounts").''; - $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescContrib", $step, $textlink); - print "
\n"; + print $langs->trans("AccountancyAreaDescIntro")."
\n"; + print "
\n";print "
\n"; + + print_fiche_titre(' '.$langs->trans("AccountancyAreaDescActionOnce"), '', '')."
\n"; + print '
'; + print "
\n"; + + // STEPS + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescJournalSetup", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("AccountingJournals").''); + print "
\n"; + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChartModel", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("Pcg_version").''); + print "
\n"; + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescChart", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("Chartofaccounts").''); + print "
\n"; + + print "
\n"; + print $langs->trans("AccountancyAreaDescActionOnceBis"); + print "
\n"; + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBank", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuBankAccounts").'')."\n"; + print "
\n"; + + $step++; + $textlink = ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup").'-'.$langs->transnoentitiesnoconv("MenuVatAccounts").''; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescVat", $step, $textlink); + print "
\n"; + if (! empty($conf->tax->enabled)) + { + $textlink = ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup").'-'.$langs->transnoentitiesnoconv("MenuTaxAccounts").''; + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescContrib", $step, $textlink); + print "
\n"; + } + /*if (! empty($conf->salaries->enabled)) + { + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescSal", $step, ''.$langs->transnoentitiesnoconv("MenuFinancial").'-'.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); + // htdocs/admin/salaries.php + print "
\n"; + print "
\n"; + }*/ + if (! empty($conf->expensereport->enabled)) // TODO Move this in the default account page because this is only one accounting account per purpose, not several. + { + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").''); + print "
\n"; + } + /* + if (! empty($conf->loan->enabled)) + { + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescLoan", $step, ''.$langs->transnoentitiesnoconv("MenuSpecialExpenses").'-'.$langs->transnoentitiesnoconv("Loans").' '.$langs->transnoentitiesnoconv("or").' '.$langs->transnoentitiesnoconv("MenuFinancial").'-'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); + print "
\n"; + } + if (! empty($conf->don->enabled)) + { + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescDonation", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDonationAccounts").''); + print "
\n"; + }*/ + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("ProductsBinding").''); + print "
\n"; + + + print '
'; + + + print "
\n"; + print_fiche_titre(' '.$langs->trans("AccountancyAreaDescActionFreq"), '', ''); + print '
'; + print "
\n"; + $step = 0; + + $langs->loadLangs(array('bills', 'trips')); + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("BillsCustomers"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("CustomersVentilation").'')."\n"; + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("BillsSuppliers"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("SuppliersVentilation").'')."\n"; + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("ExpenseReports"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("ExpenseReportsVentilation").'')."\n"; + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescWriteRecords", chr(64+$step), $langs->transnoentitiesnoconv("Journalization"), $langs->transnoentitiesnoconv("WriteBookKeeping"))."\n"; + print "
\n"; + + $step++; + print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescAnalyze", chr(64+$step))."
\n"; + print "
\n"; } -/*if (! empty($conf->salaries->enabled)) +else { - $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescSal", $step, ''.$langs->transnoentitiesnoconv("MenuFinancial").'-'.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); - // htdocs/admin/salaries.php - print "
\n"; - print "
\n"; -}*/ -if (! empty($conf->expensereport->enabled)) // TODO Move this in the default account page because this is only one accounting account per purpose, not several. -{ - $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").''); - print "
\n"; + print $langs->trans("Module10Desc")."
\n"; } -/* -if (! empty($conf->loan->enabled)) -{ - $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescLoan", $step, ''.$langs->transnoentitiesnoconv("MenuSpecialExpenses").'-'.$langs->transnoentitiesnoconv("Loans").' '.$langs->transnoentitiesnoconv("or").' '.$langs->transnoentitiesnoconv("MenuFinancial").'-'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); - print "
\n"; -} -if (! empty($conf->don->enabled)) -{ - $step++; - print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescDonation", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDonationAccounts").''); - print "
\n"; -}*/ - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescProd", $step, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("ProductsBinding").''); -print "
\n"; - - -print '
'; - - -print "
\n"; -print_fiche_titre(' '.$langs->trans("AccountancyAreaDescActionFreq"), '', ''); -print '
'; -print "
\n"; -$step = 0; - -$langs->loadLangs(array('bills', 'trips')); - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("BillsCustomers"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("CustomersVentilation").'')."\n"; -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("BillsSuppliers"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("SuppliersVentilation").'')."\n"; -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64+$step), $langs->transnoentitiesnoconv("ExpenseReports"), ''.$langs->transnoentitiesnoconv("MenuAccountancy")."-".$langs->transnoentitiesnoconv("ExpenseReportsVentilation").'')."\n"; -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescWriteRecords", chr(64+$step), $langs->transnoentitiesnoconv("Journalization"), $langs->transnoentitiesnoconv("WriteBookKeeping"))."\n"; -print "
\n"; - -$step++; -print img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescAnalyze", chr(64+$step))."
\n"; -print "
\n"; llxFooter(); $db->close(); From 622042e9b21269bd29530ac258035e2fcf677494 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 15:05:35 +0200 Subject: [PATCH 073/336] FIX Max nb of generation of recurring invoice should not show warning --- htdocs/compta/facture/fiche-rec.php | 11 +++++++-- .../compta/facture/invoicetemplate_list.php | 23 ++++++++++++++----- htdocs/langs/en_US/bills.lang | 1 + 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index a3d93608ebf..bb6358ed160 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1518,7 +1518,7 @@ else } print ''; - // Date when + // Date when (next invoice generation) print '
'; print ''; diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index 0966807facd..306106d4889 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -598,11 +598,18 @@ if ($resql) // Date next generation if (! empty($arrayfields['f.date_when']['checked'])) { - print ''; - if (! $i) $totalarray['nbfield']++; + print ''; + if (! $i) $totalarray['nbfield']++; } if (! empty($arrayfields['f.datec']['checked'])) { @@ -629,7 +636,11 @@ if ($resql) print '
'.dol_print_size($file['size'],1,1).''; + if ($sizetoshow == $sizetoshowbytes) print $sizetoshow; + else { + print $form->textwithpicto($sizetoshow, $sizetoshowbytes, -1); + } + print ''.dol_print_date($file['date'],"dayhour","tzuser").''; $searchpicto=$form->showFilterAndCheckAddButtons(0); diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 3959f760b6b..ed687288a0a 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -108,10 +108,18 @@ if ($action == 'update') if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_VERMENU_BACK1', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_VERMENU_BACK1', $val,'chaine',0,'',$conf->entity); + $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLENOTAB'),array())))); + if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $conf->entity); + else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $val,'chaine',0,'',$conf->entity); + $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_BACKTITLE1'),array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_BACKTITLE1', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_BACKTITLE1', $val,'chaine',0,'',$conf->entity); + $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLE'),array())))); + if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLE', $conf->entity); + else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLE', $val,'chaine',0,'',$conf->entity); + $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_LINEIMPAIR1'),array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_LINEIMPAIR1', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_LINEIMPAIR1', $val,'chaine',0,'',$conf->entity); @@ -126,17 +134,13 @@ if ($action == 'update') if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_LINEPAIR2', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_LINEPAIR2', $val,'chaine',0,'',$conf->entity); - $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLENOTAB'),array())))); - if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $conf->entity); - else dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $val,'chaine',0,'',$conf->entity); - - if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", '0', 'chaine', 0, '', $conf->entity); // If empty, we set to '0' ('000000' is for black) - else dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $_POST["THEME_ELDY_USE_HOVER"], 'chaine', 0, '', $conf->entity); - $val=(implode(',',(colorStringToArray(GETPOST('THEME_ELDY_TEXTLINK'),array())))); if ($val == '') dolibarr_del_const($db, 'THEME_ELDY_TEXTLINK', $conf->entity); else dolibarr_set_const($db, 'THEME_ELDY_TEXTLINK', $val,'chaine',0,'',$conf->entity); + if (GETPOST('THEME_ELDY_USE_HOVER') == '') dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", '0', 'chaine', 0, '', $conf->entity); // If empty, we set to '0' ('000000' is for black) + else dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $_POST["THEME_ELDY_USE_HOVER"], 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_SIZE_SHORTLIST_LIMIT", $_POST["main_size_shortliste_limit"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["main_disable_javascript"],'chaine',0,'',$conf->entity); diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index a29fec993c8..7a62470e2da 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -603,7 +603,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '
'.$langs->trans("BackgroundTableTitleTextColor").''; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLE,array()),''),'THEME_ELDY_TEXTTITLE','formcolor',1).' '; + } + else + { + print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default")); + } + print '   ('.$langs->trans("Default").': 000000) '; + print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); + print ''; + print '
- " class="flat input-icon-security" type="text" size="12" maxlength="5" name="code" tabindex="3" /> + " class="flat input-icon-security width100" type="text" maxlength="5" name="code" tabindex="3" /> -" id="username" name="username" class="flat input-icon-user" size="20" value="" tabindex="1" /> +" id="username" name="username" class="flat input-icon-user minwidth150" value="" tabindex="1" />
- " class="flat input-icon-security" type="text" size="12" maxlength="5" name="code" tabindex="3" /> + " class="flat input-icon-security width100" type="text" maxlength="5" name="code" tabindex="3" />
TOTAL Monthly Payment:' . number_format(($monthly_payment + $pmi_per_month + $residential_monthly_tax), "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
'; @@ -352,7 +352,7 @@ if ($form_complete && $show_progress) { print '
' . number_format($remaining_balance, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
'; if ($action == 'date_when' || $object->frequency > 0) { @@ -1534,7 +1534,14 @@ else print $form->editfieldval($langs->trans("NextDateToExecution"), 'date_when', $object->date_when, $object, $user->rights->facture->creer, 'day', $object->date_when, null, '', '', 0, 'strikeIfMaxNbGenReached'); } //var_dump(dol_print_date($object->date_when+60, 'dayhour').' - '.dol_print_date($now, 'dayhour')); - if ($action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late")); + if (! $object->isMaxNbGenReached()) + { + if ($action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late")); + } + else + { + print img_info($langs->trans("MaxNumberOfGenerationReached")); + } print '
'; - print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'':'') : ''.$langs->trans('NA').''); - if ($objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late")); - print ''; + print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'':'') : ''.$langs->trans('NA').''); + if (! $invoicerectmp->isMaxNbGenReached()) + { + if ($objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late")); + } + else + { + print img_info($langs->trans("MaxNumberOfGenerationReached")); + } + print ''; if ($user->rights->facture->creer && empty($invoicerectmp->suspended)) { - if (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today) + if ($invoicerectmp->isMaxNbGenReached()) + { + print $langs->trans("MaxNumberOfGenerationReached"); + } + elseif (empty($objp->frequency) || $db->jdate($objp->date_when) <= $today) { print ''; print $langs->trans("CreateBill").''; diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 668090129ff..3e5aaca5198 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -521,3 +521,4 @@ BillCreated=%s bill(s) created StatusOfGeneratedDocuments=Status of document generation DoNotGenerateDoc=Do not generate document file AutogenerateDoc=Auto generate document file +MaxNumberOfGenerationReached=Max number of gen. reached From ba50fcd13059449a6defedc76b49877b4730c631 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio Date: Mon, 16 Apr 2018 15:15:35 +0200 Subject: [PATCH 074/336] FIX: left search form: directly display all qualified objects --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 68fb0ce8d38..14a0e42a2f5 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1634,7 +1634,7 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra if ($conf->use_javascript_ajax && empty($conf->global->MAIN_USE_OLD_SEARCH_FORM)) { //$searchform.=$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1); - $searchform.=$form->selectArrayFilter('searchselectcombo', $arrayresult, $selected, '', 1, 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1); + $searchform.=$form->selectArrayFilter('searchselectcombo', $arrayresult, $selected, '', 1, 0, 0, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1); } else { From 27a8476117fcb9dfc4fa9f5333846226dbf5820e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 17:02:54 +0200 Subject: [PATCH 075/336] FIX remove var_dump --- htdocs/expensereport/note.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expensereport/note.php b/htdocs/expensereport/note.php index a715d85f6a6..063406b1878 100644 --- a/htdocs/expensereport/note.php +++ b/htdocs/expensereport/note.php @@ -90,7 +90,7 @@ if ($id > 0 || ! empty($ref)) print '
'; print '
'; -var_dump($value_public); + $cssclass="titlefield"; include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; From f19abe38d76d708d4f5553e9dcd1193f7e6fd917 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 18:17:35 +0200 Subject: [PATCH 076/336] FIX pdf thumb for expense report --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index fd3a2017a3d..cf135aec844 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5281,7 +5281,7 @@ function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart) // TODO // We will enhance here a common way of forging path for document storage // Here, object->id, object->ref and modulepart are required. - if (in_array($modulepart, array('thirdparty','contact','member','propal','proposal','commande','order','facture','invoice','shipment'))) + if (in_array($modulepart, array('thirdparty','contact','member','propal','proposal','commande','order','facture','invoice','shipment','expensereport'))) { $path=($object->ref?$object->ref:$object->id); } From 106fb87d0a7d1ee3d6c3a311892673260a97680e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 19:25:27 +0200 Subject: [PATCH 077/336] NEW Can sort order of files in attach tab for leave and expensereport --- htdocs/core/class/html.formfile.class.php | 6 ++--- .../tpl/document_actions_post_headers.tpl.php | 22 +++++++++++-------- htdocs/expensereport/card.php | 4 +--- htdocs/expensereport/document.php | 10 ++++----- htdocs/holiday/class/holiday.class.php | 1 + htdocs/holiday/document.php | 2 +- .../template/myobject_document.php | 4 ++-- 7 files changed, 26 insertions(+), 23 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 24b06065a5b..a825c4709e6 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -992,6 +992,9 @@ class FormFile global $dolibarr_main_url_root; global $form; + $disablecrop=1; + if (in_array($modulepart, array('societe','product','produit','service','expensereport','holiday','member','project','ticketsup','user'))) $disablecrop=0; + // Define relative path used to store the file if (empty($relativepath)) { @@ -1253,9 +1256,6 @@ class FormFile $newmodulepart=$modulepart; if (in_array($modulepart, array('product','produit','service'))) $newmodulepart='produit|service'; - $disablecrop=1; - if (in_array($modulepart, array('societe','product','produit','service','expensereport','holiday','member','project','ticketsup','user'))) $disablecrop=0; - if (! $disablecrop && image_format_supported($file['name']) > 0) { if ($permtoeditline) diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php index 01d7b091a49..9bd0cc7e976 100644 --- a/htdocs/core/tpl/document_actions_post_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php @@ -19,10 +19,10 @@ */ // Following var can be set -// $permission = permission or not to add a file -// $permtoedit = permission or not to edit file name, crop file -// $modulepart = for download -// $param = param to add to download links +// $permission = permission or not to add a file +// $permtoedit = permission or not to edit file name, crop file +// $modulepart = for download +// $param = param to add to download links // Protection to avoid direct call of template if (empty($langs) || ! is_object($langs)) @@ -36,6 +36,15 @@ $langs->load("link"); if (empty($relativepathwithnofile)) $relativepathwithnofile=''; if (empty($permtoedit)) $permtoedit=-1; +// Drag and drop for up and down allowed on product, thirdparty, ... +// The drag and drop call the page core/ajax/row.php +// If you enable the move up/down of files here, check that page that include template set its sortorder on 'position_name' instead of 'name' +// Also the object->fk_element must be defined. +$disablemove=1; +if (in_array($modulepart, array('product', 'produit', 'societe', 'user', 'ticketsup', 'holiday', 'expensereport'))) $disablemove=0; + + + /* * Confirm form to delete */ @@ -86,11 +95,6 @@ $formfile->form_attach_new_file( $savingdocmask ); -// Drag and drop for up and down allowed on product, thirdparty, ... -// The drag and drop call the page core/ajax/row.php -$disablemove=1; -if (in_array($modulepart, array('product', 'produit', 'societe', 'user', 'ticketsup'))) $disablemove=0; - // List of document $formfile->list_of_documents( $filearray, diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 1faa521d8b7..a2d67d627c0 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -44,9 +44,7 @@ if (! empty($conf->accounting->enabled)) { require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php'; } -$langs->load("trips"); -$langs->load("bills"); -$langs->load("mails"); +$langs->loadLangs(array("trips","bills","mails")); $action=GETPOST('action','aZ09'); $cancel=GETPOST('cancel','alpha'); diff --git a/htdocs/expensereport/document.php b/htdocs/expensereport/document.php index dc4f1c8a7af..67f074d7f92 100644 --- a/htdocs/expensereport/document.php +++ b/htdocs/expensereport/document.php @@ -34,10 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/expensereport.lib.php'; require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; -$langs->load("other"); -$langs->load("trips"); -$langs->load("companies"); -$langs->load("interventions"); +$langs->loadLangs(array("other","trips","companies","interventions")); $id = GETPOST('id','int'); $ref = GETPOST('ref', 'alpha'); @@ -58,7 +55,7 @@ $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="name"; +if (! $sortfield) $sortfield="position_name"; $object = new ExpenseReport($db); @@ -67,6 +64,9 @@ $object->fetch($id, $ref); $upload_dir = $conf->expensereport->dir_output.'/'.dol_sanitizeFileName($object->ref); $modulepart='trip'; +// Load object +//include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals + /* * Actions diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 950c297fb3b..c034db59c57 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -35,6 +35,7 @@ class Holiday extends CommonObject public $element='holiday'; public $table_element='holiday'; public $ismultientitymanaged = 0; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + var $fk_element = 'fk_holiday'; public $picto = 'holiday'; /** diff --git a/htdocs/holiday/document.php b/htdocs/holiday/document.php index 6e5137e5b57..52386acf93c 100644 --- a/htdocs/holiday/document.php +++ b/htdocs/holiday/document.php @@ -59,7 +59,7 @@ $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="name"; +if (! $sortfield) $sortfield="position_name"; $object = new Holiday($db); diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php index 8ce85b8eee6..905f16d8780 100644 --- a/htdocs/modulebuilder/template/myobject_document.php +++ b/htdocs/modulebuilder/template/myobject_document.php @@ -81,8 +81,8 @@ $extralabels = $extrafields->fetch_name_optionals_label('myobject'); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals -//if ($id > 0 || ! empty($ref)) $upload_dir = $conf->sellyoursaas->multidir_output[$object->entity] . "/packages/" . dol_sanitizeFileName($object->id); -if ($id > 0 || ! empty($ref)) $upload_dir = $conf->sellyoursaas->multidir_output[$object->entity] . "/packages/" . dol_sanitizeFileName($object->ref); +//if ($id > 0 || ! empty($ref)) $upload_dir = $conf->sellyoursaas->multidir_output[$object->entity] . "/myobject/" . dol_sanitizeFileName($object->id); +if ($id > 0 || ! empty($ref)) $upload_dir = $conf->sellyoursaas->multidir_output[$object->entity] . "/myobject/" . dol_sanitizeFileName($object->ref); /* From 1e0a660d24d7049aec63fbfae7a2fed1ea8cb436 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Apr 2018 19:56:53 +0200 Subject: [PATCH 078/336] More font awesome picto instead of img --- htdocs/core/boxes/modules_boxes.php | 8 ++++---- htdocs/core/class/html.form.class.php | 14 +++++++------- htdocs/core/lib/functions.lib.php | 14 +++++++++++++- htdocs/theme/eldy/style.css.php | 8 +++++--- htdocs/theme/md/style.css.php | 7 ++++--- 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php index 74f0ffc9d9d..61af58a4b8b 100644 --- a/htdocs/core/boxes/modules_boxes.php +++ b/htdocs/core/boxes/modules_boxes.php @@ -261,17 +261,17 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" { $sublink=''; if (! empty($head['sublink'])) $sublink.= ''; - if (! empty($head['subpicto'])) $sublink.= img_picto($head['subtext'], $head['subpicto'], 'class="'.(empty($head['subclass'])?'':$head['subclass']).'" id="idsubimg'.$this->boxcode.'"'); + if (! empty($head['subpicto'])) $sublink.= img_picto($head['subtext'], $head['subpicto'], 'class="opacitymedium '.(empty($head['subclass'])?'':$head['subclass']).'" id="idsubimg'.$this->boxcode.'"'); if (! empty($head['sublink'])) $sublink.= ''; $out.= '
'; $out.=$sublink; // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object - $out.= img_picto($langs->trans("MoveBox",$this->box_id),'grip_title','class="boxhandle hideonsmartphone cursormove"'); - $out.= img_picto($langs->trans("CloseBox",$this->box_id),'close_title','class="boxclose cursorpointer" rel="x:y" id="imgclose'.$this->box_id.'"'); + $out.= img_picto($langs->trans("MoveBox",$this->box_id),'grip_title','class="opacitymedium boxhandle hideonsmartphone cursormove"'); + $out.= img_picto($langs->trans("CloseBox",$this->box_id),'close_title','class="opacitymedium boxclose cursorpointer" rel="x:y" id="imgclose'.$this->box_id.'"'); $label=$head['text']; //if (! empty($head['graph'])) $label.=' ('.$langs->trans("Graph").')'; - if (! empty($head['graph'])) $label.=' '; + if (! empty($head['graph'])) $label.=' '; $out.= ''; $out.= '
'; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 32de5f2edfd..1465b0ea570 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5908,7 +5908,7 @@ class Form -
+