From 6969339159d178d8102861bc40fa87d2bbbc9da7 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 3 Oct 2015 08:18:03 +0200 Subject: [PATCH 01/21] Try for responsive design --- htdocs/theme/md_exp/style.css.php | 36 +++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/md_exp/style.css.php b/htdocs/theme/md_exp/style.css.php index e92ea9f2423..412f6dea8d0 100644 --- a/htdocs/theme/md_exp/style.css.php +++ b/htdocs/theme/md_exp/style.css.php @@ -3540,7 +3540,23 @@ border-top-right-radius: 6px; #tooltip { position: absolute; width: px; - } + } + + div.fichethirdleft { + width: 100%; + } + + div.fichetwothirdright { + width: 100%; + } + + div.fichehalfleft { + width: 100%; + } + + div.fichehalfright { + width: 100%; + } } @media only screen and (max-width: 570px) { @@ -3554,7 +3570,23 @@ border-top-right-radius: 6px; #tooltip { position: absolute; width: px; - } + } + + div.fichethirdleft { + width: 100%; + } + + div.fichetwothirdright { + width: 100%; + } + + div.fichehalfleft { + width: 100%; + } + + div.fichehalfright { + width: 100%; + } } From cb545332739894b48a23a1c6ba4be80a2031782e Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Mon, 5 Oct 2015 17:38:26 +0300 Subject: [PATCH 02/21] Display names and numbers calls on --- htdocs/asterisk/wrapper.php | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/htdocs/asterisk/wrapper.php b/htdocs/asterisk/wrapper.php index e0f115e31c5..f168de78b6e 100644 --- a/htdocs/asterisk/wrapper.php +++ b/htdocs/asterisk/wrapper.php @@ -112,6 +112,34 @@ $strMaxRetry = "2"; llxHeader(); +$sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid"; +$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")"; +$sql.= " AND (s.phone='".$db->escape($called)."'"; +$sql.= " OR sp.phone='".$db->escape($called)."'"; +$sql.= " OR sp.phone_perso='".$db->escape($called)."'"; +$sql.= " OR sp.phone_mobile='".$db->escape($called)."')"; +$sql.= $db->plimit(1); + +dol_syslog('click to dial search information with phone '.$called, LOG_DEBUG); +$resql = $db->query($sql); +if ($resql) +{ + $obj = $db->fetch_object($resql); + if ($obj) + { + $found = $obj->name; + } else { + $found = $notfound; + } + $db->free($resql); +} +else +{ + dol_print_error($db,'Error'); + $found = 'Error'; +} + $number=strtolower($called); $pos=strpos($number,"local"); if (! empty($number)) @@ -120,7 +148,7 @@ if (! empty($number)) { $errno=0; $errstr=0; - $strCallerId = "Dolibarr <".strtolower($caller).">"; + $strCallerId = "Dolibarr call $found <".strtolower($number).">"; $oSocket = @fsockopen($strHost, $port, $errno, $errstr, 10); if (!$oSocket) { From e3bdc8aaaa96bad54aafcc1e9dde27e84a91a28e Mon Sep 17 00:00:00 2001 From: "Andreas, OE8APR" Date: Mon, 5 Oct 2015 16:43:08 +0200 Subject: [PATCH 03/21] Get invoice customer contact Added functionality to get invoice customer contact as contact_xx tags --- .../facture/doc/doc_generic_invoice_odt.modules.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index 12ea7aa7b08..542f53c24b7 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -270,7 +270,11 @@ class doc_generic_invoice_odt extends ModelePDFFactures { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else { + $socobject = $object->client; + // if we have a BILLING contact and we dont use it as recipient we store the contact object for later use + $contactobject = $object->contact; + } } else { @@ -344,8 +348,12 @@ class doc_generic_invoice_odt extends ModelePDFFactures $array_objet=$this->get_substitutionarray_object($object,$outputlangs); $array_propal=is_object($propal_object)?$this->get_substitutionarray_object($propal_object,$outputlangs,'propal'):array(); $array_other=$this->get_substitutionarray_other($outputlangs); + // retrieve contact information for use in invoice as contact_xxx tags + $array_thirdparty_contact = array(); + if ($usecontact) + $array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact'); - $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_propal,$array_other); + $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_propal,$array_other,$array_thirdparty_contact); complete_substitutions_array($tmparray, $outputlangs, $object); // Call the ODTSubstitution hook $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); From 3aeeab96542b75189df9aed09a7074f756e3e300 Mon Sep 17 00:00:00 2001 From: "Andreas, OE8APR" Date: Mon, 5 Oct 2015 16:44:51 +0200 Subject: [PATCH 04/21] Get proposal customer contact Added functionality to get proposal customer contact as contact_xx tags --- .../doc/doc_generic_proposal_odt.modules.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 80ec0ba6fe0..d6773eb2c80 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -288,9 +288,9 @@ class doc_generic_proposal_odt extends ModelePDFPropales dol_mkdir($conf->propal->dir_temp); - // If BILLING contact defined on invoice, we use it + // If CUSTOMER contact defined on proposal, we use it $usecontact=false; - $arrayidcontact=$object->getIdContact('external','BILLING'); + $arrayidcontact=$object->getIdContact('external','CUSTOMER'); if (count($arrayidcontact) > 0) { $usecontact=true; @@ -302,13 +302,16 @@ class doc_generic_proposal_odt extends ModelePDFPropales { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else { + $socobject = $object->client; + // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use + $contactobject = $object->contact; + } } else { $socobject=$object->client; } - // Make substitution $substitutionarray=array( '__FROM_NAME__' => $this->emetteur->name, @@ -369,8 +372,12 @@ class doc_generic_proposal_odt extends ModelePDFPropales $array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs); $array_objet=$this->get_substitutionarray_object($object,$outputlangs); $array_other=$this->get_substitutionarray_other($outputlangs); + // retrieve contact information for use in proposal as contact_xxx tags + $array_thirdparty_contact = array(); + if ($usecontact) + $array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact'); - $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other); + $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact); complete_substitutions_array($tmparray, $outputlangs, $object); // Call the ODTSubstitution hook $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); From 11fb52d2e3cc296fa5a5633a35301398e542388d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 5 Oct 2015 21:22:58 +0200 Subject: [PATCH 05/21] Ask for version in contributing guidelines --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a603fd242cc..d4a333d9a21 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,8 @@ Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). 1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem. 2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request. -3. Report with as much detail as possible ([Use screenshots or even screencasts whenever possible](https://help.github.com/articles/issue-attachments)). +4. Tell us the version you are using! +3. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible). We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr). From a5ac5b6525743fb2d3ae42a1a359a1a1fda7a915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 5 Oct 2015 21:23:54 +0200 Subject: [PATCH 06/21] Updated Transifex project link in contributing guidelines --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d4a333d9a21..1e5e61ff992 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,7 +68,7 @@ Translations ------------ The source language (en_US) is maintained in the repository. See the [Code](#code) section above. -All other translations are managed online at [Transifex](https://www.transifex.com/projects/p/dolibarr). +All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/). Join an existing translation team or create your own and translate into the interface. From c7c3ba7ba09ab8380f2ffc5496768408d2a86eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 5 Oct 2015 21:24:35 +0200 Subject: [PATCH 07/21] Fixed translator documentation link in contributing guidelines --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e5e61ff992..47f25b7a4d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,7 +75,7 @@ Join an existing translation team or create your own and translate into the inte Your translations will be available in the next major release. ### Resources -[Translator documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) +[Translator documentation](http://wiki.dolibarr.org/index.php/Translator_documentation) Documentation ------------- From fa64761b67b7c27e1a0ee3326007b3d7b3da1fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 5 Oct 2015 21:42:57 +0200 Subject: [PATCH 08/21] Enhanced contributing guidelines --- CONTRIBUTING.md | 50 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 47f25b7a4d3..304924fe150 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,11 +4,9 @@ How to contribute to Dolibarr Bug reports and feature requests -------------------------------- -*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum). +*Note*: Issues are not a support forum. If you need help using the software, please use [the forums](http://www.dolibarr.org/forum). -**NEW** - -Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). +Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). 1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem. 2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request. @@ -42,9 +40,45 @@ Choose your base branch accordingly. ### General rules Please don't edit the ChangeLog file. A project manager will update it from your commit messages. -### Commits +### Commits Use clear commit messages with the following structure: +``` +[KEYWORD] [ISSUENUM] DESC + +LONGDESC +``` + +#### Keyword +In uppercase to appear in ChangeLog when generated. + +The keyword can be ommitted if your commit does not fit in any of the following categories: +- Fix: for a bug fix +- Close: for closing a referenced feature request +- New: for an unreferenced new feature (Opening a feature request and using close is prefered) + +#### Issuenum +If your commit fixes a referenced bug or feature request. + +In the form of a # followed by the GitHub issue number. + +#### Desc +A short description of the commit content. + +This should ideally be less than 50 characters. + +#### LongDesc +A long description of the commit content. + +You can really go to town here and explain in depth what you've been doing. + +Feel free to express technical details, use cases or anything relevant to the current commit. + +This section can span multiple lines. + +Try to keep lines under 72 characters. + +#### Samples
 FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
 or
@@ -58,8 +92,10 @@ Long description (Can span accross multiple lines).
 
### Pull Requests -When submitting a pull request, use same rule than Commits. With upper case keyword to appear into ChangeLog. +When submitting a pull request, use same rule as [Commits](#commits) for the message. +If your pull request only contains one commit, GitHub will be smart enough to fill it for you. +Otherwise, please be a bit verbose about what you're providing. ### Resources [Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) @@ -81,5 +117,5 @@ Documentation ------------- The project's documentation is maintained on the [Wiki](http://wiki.dolibarr.org/index.php). -*You need to create an account before being able to edit.* +*Note*: to help prevent spam, you need to create an account before being able to edit. From ea949437ab09bd29d0d4c9acb765cfaef3931beb Mon Sep 17 00:00:00 2001 From: tysauron Date: Wed, 7 Oct 2015 17:17:32 +0200 Subject: [PATCH 09/21] For not error Undefined property: stdClass::$id --- htdocs/comm/action/class/actioncomm.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index d9f2d7b6541..10fcc6c0173 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -218,7 +218,7 @@ class ActionComm extends CommonObject $this->userassigned[$tmpid]=array('id'=>$tmpid); } - if (is_object($this->contact) && $this->contact->id > 0 && ! ($this->contactid > 0)) $this->contactid = $this->contact->id; // For backward compatibility. Using this->contact->xx is deprecated + if (is_object($this->contact) && isset($this->contact->id) && $this->contact->id > 0 && ! ($this->contactid > 0)) $this->contactid = $this->contact->id; // For backward compatibility. Using this->contact->xx is deprecated $userownerid=$this->userownerid; From e1f946578b2dcb96a978991bdeacc91623638264 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 7 Oct 2015 21:06:55 +0200 Subject: [PATCH 10/21] Fix presentation --- htdocs/compta/stats/cabyuser.php | 2 +- htdocs/compta/stats/casoc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 385ac1f140c..cb8151cf33c 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -280,7 +280,7 @@ if ($modecompta == 'CREANCES-DETTES') { $sortorder ); } else { - print ''; + print_liste_field_titre(''); } print_liste_field_titre( $langs->trans("AmountTTC"), diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 7b9cfdd7913..dade07fd0e3 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -350,7 +350,7 @@ if ($modecompta == 'CREANCES-DETTES') { $sortorder ); } else { - print ''; + print_liste_field_titre(''); } print_liste_field_titre( $langs->trans("AmountTTC"), From f8ade01f0efc5c179ba3bb3e0bb70fca5b66d15d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 7 Oct 2015 21:48:46 +0200 Subject: [PATCH 11/21] New : Add payment donation in accountancy expert --- htdocs/accountancy/journal/bankjournal.php | 176 +++++++++++---------- 1 file changed, 92 insertions(+), 84 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 812acf5c923..01957fcedf5 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; @@ -120,6 +121,7 @@ $paymentsupplierstatic = new PaiementFourn($db); $societestatic = new Societe($db); $userstatic = new User($db); $chargestatic = new ChargeSociales($db); +$paymentdonstatic = new PaymentDonation($db); $paymentvatstatic = new TVA($db); $paymentsalstatic = new PaymentSalary($db); @@ -133,7 +135,8 @@ if ($result) { $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef")); $accountancy_account_salary = (! empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) ? $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT : $langs->trans("CodeNotDef")); $accountancy_account_pay_vat = (! empty($conf->global->ACCOUNTING_VAT_PAY_ACCOUNT) ? $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT : $langs->trans("CodeNotDef")); - + $accountancy_account_pay_donation = (! empty($conf->global->DONATION_ACCOUNTINGACCOUNT) ? $conf->global->DONATION_ACCOUNTINGACCOUNT : $langs->trans("CodeNotDef")); + $tabpay = array (); $tabbq = array (); $tabtp = array (); @@ -174,95 +177,100 @@ if ($result) { // get_url may return -1 which is not traversable if (is_array($links)) { - - foreach ( $links as $key => $val ) - { - $tabtype[$obj->rowid] = $links[$key]['type']; + foreach ( $links as $key => $val ) + { + $tabtype[$obj->rowid] = $links[$key]['type']; - if ($links[$key]['type'] == 'payment') - { - $paymentstatic->id = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2); - } - else if ($links[$key]['type'] == 'payment_supplier') - { - $paymentsupplierstatic->id = $links[$key]['url_id']; - $paymentsupplierstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2); - } - else if ($links[$key]['type'] == 'company') - { - $societestatic->id = $links[$key]['url_id']; - $societestatic->name = $links[$key]['label']; - $tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30); - $tabtp[$obj->rowid][$compta_soc] += $obj->amount; - } - else if ($links[$key]['type'] == 'user') - { - $userstatic->id = $links[$key]['url_id']; - $userstatic->name = $links[$key]['label']; - $tabpay[$obj->rowid]["soclib"] = $userstatic->getNomUrl(1, '', 30); - // $tabtp[$obj->rowid][$compta_user] += $obj->amount; - } - else if ($links[$key]['type'] == 'sc') - { - $chargestatic->id = $links[$key]['url_id']; - $chargestatic->ref = $links[$key]['url_id']; - - $tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2); - if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { - if ($reg[1] == 'socialcontribution') - $reg[1] = 'SocialContribution'; - $chargestatic->lib = $langs->trans($reg[1]); - } - else + if ($links[$key]['type'] == 'payment') { - $chargestatic->lib = $links[$key]['label']; + $paymentstatic->id = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2); } - $chargestatic->ref = $chargestatic->lib; - $tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30); - - $sqlmid = 'SELECT cchgsoc.accountancy_code'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; - $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; - - - dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) + else if ($links[$key]['type'] == 'payment_supplier') { - $objmid = $db->fetch_object($resultmid); - $tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount; + $paymentsupplierstatic->id = $links[$key]['url_id']; + $paymentsupplierstatic->ref = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2); } + else if ($links[$key]['type'] == 'company') + { + $societestatic->id = $links[$key]['url_id']; + $societestatic->name = $links[$key]['label']; + $tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30); + $tabtp[$obj->rowid][$compta_soc] += $obj->amount; + } + else if ($links[$key]['type'] == 'user') + { + $userstatic->id = $links[$key]['url_id']; + $userstatic->name = $links[$key]['label']; + $tabpay[$obj->rowid]["soclib"] = $userstatic->getNomUrl(1, '', 30); + // $tabtp[$obj->rowid][$compta_user] += $obj->amount; + } + else if ($links[$key]['type'] == 'sc') + { + $chargestatic->id = $links[$key]['url_id']; + $chargestatic->ref = $links[$key]['url_id']; + + $tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2); + if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { + if ($reg[1] == 'socialcontribution') + $reg[1] = 'SocialContribution'; + $chargestatic->lib = $langs->trans($reg[1]); + } + else + { + $chargestatic->lib = $links[$key]['label']; + } + $chargestatic->ref = $chargestatic->lib; + $tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30); + + $sqlmid = 'SELECT cchgsoc.accountancy_code'; + $sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc "; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id"; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid"; + $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; + $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; + + + dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); + $resultmid = $db->query($sqlmid); + if ($resultmid) + { + $objmid = $db->fetch_object($resultmid); + $tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount; + } + } + else if ($links[$key]['type'] == 'payment_donation') + { + $paymentdonstatic->id = $links[$key]['url_id']; + $paymentdonstatic->fk_donation = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentDonation"); + $tabtp[$obj->rowid][$accountancy_account_pay_donation] += $obj->amount; + } + else if ($links[$key]['type'] == 'payment_vat') + { + $paymentvatstatic->id = $links[$key]['url_id']; + $paymentvatstatic->ref = $links[$key]['url_id']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentVat"); + $tabtp[$obj->rowid][$accountancy_account_pay_vat] += $obj->amount; + } + else if ($links[$key]['type'] == 'payment_salary') + { + $paymentsalstatic->id = $links[$key]['url_id']; + $paymentsalstatic->ref = $links[$key]['url_id']; + $paymentsalstatic->label = $links[$key]['label']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); + $tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount; + } + else if ($links[$key]['type'] == 'banktransfert') + { + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); + $tabtp[$obj->rowid][$cpttva] += $obj->amount; + } + /*else { + $tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount; + }*/ } - else if ($links[$key]['type'] == 'payment_vat') - { - $paymentvatstatic->id = $links[$key]['url_id']; - $paymentvatstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("PaymentVat"); - $tabtp[$obj->rowid][$accountancy_account_pay_vat] += $obj->amount; - } - else if ($links[$key]['type'] == 'payment_salary') - { - $paymentsalstatic->id = $links[$key]['url_id']; - $paymentsalstatic->ref = $links[$key]['url_id']; - $paymentsalstatic->label = $links[$key]['label']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); - $tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount; - } - else if ($links[$key]['type'] == 'banktransfert') - { - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); - $tabtp[$obj->rowid][$cpttva] += $obj->amount; - } - /*else { - $tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount; - }*/ - } - } $tabbq[$obj->rowid][$compta_bank] += $obj->amount; From deaf23870e3d2e980fd7c329abec94d493f35d87 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 7 Oct 2015 21:52:30 +0200 Subject: [PATCH 12/21] Cancel work on responsive design --- htdocs/theme/md/style.css.php | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index d9910f82dd7..b917022cf84 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3560,22 +3560,6 @@ border-top-right-radius: 6px; position: absolute; width: px; } - - div.fichethirdleft { - width: 100%; - } - - div.fichetwothirdright { - width: 100%; - } - - div.fichehalfleft { - width: 100%; - } - - div.fichehalfright { - width: 100%; - } } @media only screen and (max-width: 570px) { @@ -3590,22 +3574,6 @@ border-top-right-radius: 6px; position: absolute; width: px; } - - div.fichethirdleft { - width: 100%; - } - - div.fichetwothirdright { - width: 100%; - } - - div.fichehalfleft { - width: 100%; - } - - div.fichehalfright { - width: 100%; - } } From 0d799402d0b6b2becbcd997d05c9b670ffa20f01 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 8 Oct 2015 23:50:17 +0200 Subject: [PATCH 13/21] Work on image for "no photo" with better resolution --- dev/cliparts/commons.svg | 2049 ++++++++++++++++++++++++ htdocs/admin/company.php | 4 +- htdocs/core/class/html.form.class.php | 2 +- htdocs/core/lib/usergroups.lib.php | 2 +- htdocs/public/theme/common/nophoto.jpg | Bin 1307 -> 0 bytes htdocs/public/theme/common/nophoto.png | Bin 0 -> 75936 bytes htdocs/viewimage.php | 2 +- 7 files changed, 2054 insertions(+), 5 deletions(-) create mode 100644 dev/cliparts/commons.svg delete mode 100644 htdocs/public/theme/common/nophoto.jpg create mode 100644 htdocs/public/theme/common/nophoto.png diff --git a/dev/cliparts/commons.svg b/dev/cliparts/commons.svg new file mode 100644 index 00000000000..4b8820d06f5 --- /dev/null +++ b/dev/cliparts/commons.svg @@ -0,0 +1,2049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index eb78ead387b..b9660c8a04d 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -380,7 +380,7 @@ if ($action == 'edit' || $action == 'updateedit') print ''; } } else { - print ''; + print ''; } print ''; print ''; @@ -769,7 +769,7 @@ else } else { - print ''; + print ''; } print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8d69e58bad3..5591847ddc1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5197,7 +5197,7 @@ class Form } else { - $nophoto='/public/theme/common/nophoto.jpg'; + $nophoto='/public/theme/common/nophoto.png'; if (in_array($modulepart,array('userphoto','contact'))) // For module thar are "physical" users { $nophoto='/public/theme/common/user_anonymous.png'; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index cb62b63377f..10b97265a93 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -355,7 +355,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '
'; $file=$dirtheme."/".$subdir."/thumb.png"; $url=$urltheme."/".$subdir."/thumb.png"; - if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg"; + if (! file_exists($file)) $url=DOL_URL_ROOT.'/public/theme/common/nophoto.png'; print 'id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">'; if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive"); else $title=$langs->trans("ShowPreview"); diff --git a/htdocs/public/theme/common/nophoto.jpg b/htdocs/public/theme/common/nophoto.jpg deleted file mode 100644 index 14eeb1cf01fcd037f612061d53c9bf18d61be901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmex=NKJ3#L0SE}i!Mf);VHl()9 z-81=jsr=>ARac_6w9K{mXs`IFZqd@kiQ0n7k5ZDO9NgyCoIMqgDPi3AbMyBIw*kM01Q5R#s#X6J%DHbwbM58=vEMs+ zPi2+;u)MmxerD3vM@_*?{J#mL@m`(2pfxjVOM*f0F^k~ldosdb7QOr?FSi}&B5-t;Ecnj;7Pn$ z^#s&{qE_I{(dC=smcxS)n0Dbt15H&lbOc6gqk=)eM1h3|5y2?%bKZ&7`WFqO+_hG& z-uLW3L)pxZxye#lpq&d5J`G(BU=@z+9XUthP$;SB}pG9TE zskMu;c+Z@*n9aRL|xP?#a*M^_Q+NKk!+%MSOMg zck$Jo`K}7f5A+xMNAEvg5GFZIbHT17QYu_&ysA?(N*yoMZ*&n0)ch(#Fd%C=bKIfyk*E_{^FaptI`M5w;fK5>sl-?~2S+q>ZTng0wf={2UCKKaNmuAKX9 b>SalN)wsjWw;VO~()awGu-Iu|_Wzpz#j2J= diff --git a/htdocs/public/theme/common/nophoto.png b/htdocs/public/theme/common/nophoto.png new file mode 100644 index 0000000000000000000000000000000000000000..c3989b59135510003b18afc6081242646afdbc74 GIT binary patch literal 75936 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

kIj(P1~WfHB(&<V4)a0>X*t}n zW8S1>_JG5l>m39))ONz8oOnRzAPM#7DGcwDloSzJR$uaMDgDeQ z{jNylm{f}2(%sn>P*RdQM}>Yiv5P@hC~N*rGcFosB5vHJYrt_Bk!wURaY+<2Z(%J{ z4vs?;U^&8mnrL!xaPSUePrF#kd=SgZV`)U(==PC<^@F^)TP&sfb*vgGL*?H!fV|C? zJy{(Mrw(JdhGokOP98i6(>N|4SW>x*RZWBY6PwCvYovb2r%h6eVq4kl{FXw@g46qT z#Lmu)YXtZ8^mWQ@KCO0pwos4P7sOY{C`99Vo*Uh&)Mh_XYNWE+nL9r9pI(9vzh!AB zZMw`D~9yzpKQ@ev*7v9P6@%hMjhDhBLOJ%Q`f{dFxB>C%t$i=dfA z8y2m#Jgb`?g8m=X9MQQtLLZwCIYsJF6m_&C{RK$uJcp9W{tX9biUQ)W^Fx++y2i5O zvn+&Pby=610vJhzdr&r`__rkW_!@Am^0x?91eF}ES zLzHf~@L2TU^129N*hKD)Ad{5m_|3IbKg(W4qY9eynOaIYx2Fv@29m;-AK^iN_Z$+K zZ-A}82HILsUS!;bA>ntB@vlv9S2hC;FEj?et}d`fS*VvKra-e;NX~a_#dL~4gT}9GpN?YQ=|X&kp}a$zbPaTK^r(W(EBm-GSJ5*dZ)QZ;(pxS+gC1= z?vFbO_o=;_iAyzk|Fk3nY*~j4T$+EYAsss_Ew`41(A-sgyjHz8Ux0XOEHMu-TnKf%Ih- zWwH!uM$YY%Tk-hNpJqVlj`-0+Vr{Yd_aGd+EeQO?4U)cTPg3M5U6fX>zltg_t)l*j zCq;gV`HJ1^Z&Rx@8ik%Er2B_J5;v928k2Id4Onwf0S~aNrOKm z9=l1URu=XaIWQ^74EquB*_0n-FZ%xhyMDzlo-+(jhNlSK8@C3VH+F(zdnJ$qAKM5q zvpM5VEYyUg687JPnci3e%wm+`RZ+^c2R1O6wgy^HWQY{RU9i*&2Laeuzc*@(=`$RxG(RjdFCaNWri*1cJ7UtZ=U@Kmnpi^rV;eh=D_tK|=EIf)s~_=aiTP<><1$D>b)0=*;D29P#+9|-_~ zOQ8(&eiC{KVERe&)iWV5;}JSnP5FhX1K!7KeX@Vbvkcp(@?HrySvETCt|Yy#WZC-- z2cY|baF%J91^5<)nyBD)-@mU?BMCqlT$%j)Nv~e|C<}uELYVq)W@2SC92&v&v9?&! z_G+riA5hH>DBCM`?<}=ADWiVRTUETG@Qic*hg<{tW*&V)=A{Ol+^}*W0`u2`wz@=x zEu>|pM(ulL+=*@;Gy0G~q^UxekjCN!nnzGHD6$;EaAw#LGswseDDL1k2VrWW*lMdb zUJVPm`(Dqw_8*kp6a3*~1BFc0jBcnjBoJcWt8HDP;|Hz5-=4fJn!!7joo~#dXBn%)=~mkP;yXu zXLvq*pL{^iI~&4nvjhTQuUSMa{fPRTNn|MnWR7@SK@6k0p@~WFN}{xYCtU^ZI6omy z{?JFm*aQXRk7?DPweTZ6>mW16xY9|94!FR;*-ic3O2>*qo2oC|C;KDq4b@}}McUm& zfO<Fp}r8^SqaV!Ocu0(01`?Cz>%2wy`mbg_ZQX(=>ZDt z4et%ZNBN3o`iCYBD46K~%}|4nxE9v-Pb(3(_&hf1rSXFB-n(-8SpM#ekOBe&B2 zdSab$!h9>*@+)Xozni6aWzsY@S%%~jjR!KlyBeBJcI#rJlU)NkvohZ8P`*)#oD6af zv@({J1BpsU!aFQ2V1Rl{-L-4i%I+@O{hkBig_$4BHS@Pj!m`;8bRh5xvw)m^L63t( ze3v|{+@~3^ojdzdI4G5OKr9;EZ|n z6VlD+fOe$M^@TOxnH19EW>Z~ixs!vaq?Jj1Bo5tIG0yB;BW&#KrN|_5VqHBwGed5_*#exLKKn3&G%oqKy;`{eVlcJw~znDX2@OePdr5OK-;#*%f0Z9j!k8Nc^v(@&Kk4Dy&jNzs-nnNih7KC3=Be&!gfYLaVGR$qn1 zazWadHe6k4N?OTghCCDWs()<33i{yLlv}3<$g`&rgj$5NODsipbz+fvGnr;N~dJ(ZswVINe76o=Y4t!o2~x+K&?3C&GX#;z?awSN z;))Uu=-=D(=a~eY?xiD%z8)aTMoJRE?w9@pJ+}b0j=AO>MIEM@DaW4jl+`;a^a%ji z@OG2_^pA>yupdH1uKrCR@)2V;GJCw@OBE?c>ULmcA?m)D;IlDOtW-qA2l&`qj3jAf zs!d?EG>i%PwhB-1snyIe%tEN3t7&cA>EWa|%T|dn;4(p7)2!Oh{XTmNo}jinioM> z3vfKuu6E@r?XS}{jMru#n_1~8`U zWDUOyFf1EtuB51_wU_l2r;qhNAZ2#dtP}mSJ?Ge=gZ|kag%ARVbC7=A2=lCl$#UL> zfJSUq@-IZ*s;jD|@;p4e-aFTVm%J9YGjmx5GCTG3Y?fW`eRPKNlb1KJ%yxkE0r~3( z#<{`|)YWkm{V%anCCj?2c894xvHYy(h!IHk-^YxBKHq5F8mEYl@#D>y75#siHz^Lq z2RQr{ch499w$5+sSlCk<=O}gu&*C%}G>db*TED949`Wr;{Ibi(#h_mz+-|SJmQjf6 z=G^l1-yShPp%u~nPc1OUsmJ`Vl_~>VY@(UX%EUHT4~?>8EU4iE`Wzw?mra2q0Y-8d zstOhfY6lh2c|za=(0Ctk?yVYdlT5($95f*V#(Tzd`vB!>>x~Axz|}tP-W_o$rR*zo z7PL`wrZ z5E|_sK3GZ8`s~@W09#-sW&r@Xb8KsS`#2XvWU#?pTvQ~~D@h9K8n7j$NA&5xTY7N; z?eU+P0r5zIiLRy8DWO`Qb~R@tBe^;$S+mf%upfx>jxA0LZy+|cKZNz_6kKcLw0_0T z%KD>TE!i3>^T9L}T_-^du5P^Rhhr>e$NI_UN-zypVXRn+%m>-1@65fvbfQA1HSqi< z$=u$8+^A2lPmRwOpk-@_mz)Zwk?mlrI(Ga{=30UW5dCxsPIK*(RmkhRCE2Ko>h2i& z{`zWtigLE92)CqqEqAf3Nh9QRY*%j+)3%otuoIl1(OM$uY9VbF*mSQJnMY4XmdiRKg>!2d7NQdgNb+1W|mjel(2n%Xt^W`rrIbiG~p#l zorB$=WB-+mIA4kxwT(Th2Gm;j?geo#X#lPdGd6w)T4gL5#&+J~W}@ae{uQ}-B}s+! z*15W_>`KLjGbL0&x~Q?|*S7iXpAe(BeV&x`D#sni{HgRnU&g}r;Ueo6T#r#w05nK~ zw=9WD;64oJo~m-4h0Z?K-xJ%wr@hg#;}UAZ%s_No_V0C4;$8B~3|W$BF})(AP!Oy1 zm5$5fE1?$V>q7S+{08z~*+*snokjMr6(weSf}KkmLc@VM2KguOcf=_@d3D_OEIf2X zAS5ILi`2H4_^;=SA}-^nGTm+5`+uThIjnaQMwxA^%tAb1VvSDb6#iJ{moM+@qMe3j zW-3l&9*h8hktt=Uq4C2Ku4QoA)_?+h@vAwgy$N2| zTeO8Gg*12?Kd@8IJYgNlUu-EZDY+Bcj5mD0@ylmO$5~#sllh6gknzv6qb_5o!&#p3 zDo9_En-Y@30C7S{I3Q-Aq9kLx+A+qKb|bbE3QKU_A^{?bOpF|q7ek0Lb$ELSo~@`j z)y+7gt+eQf@F2|e(ZxnD(=Oac!oZ6qd(Z5h?JJRFf}$e=431YNyyrz+v=(_Oj#8-f zv3U8FINm%-6M#=GR#; zm!zi2AVWQtDGK~!+PD5x0Y%rJdtZ#teG8kpE%#52x^A4xxp?SakM-OT9^5H=h=rgj znFk|Df}eJb1W^YXOyM*`fKl@Erz<{+dBG)0?HBA%Att@JIA$%|BXBs8V`;poq$K5f zM8SyR?QzP@lvNR>fuUQE^O~Ib=sJN?Z=ZK-pWl|lkKXl5NO@c=La1;^q;#-Kv8O!t zo@s7mCIvEUK>o?)%gAs#Wou)j%BLpx9sZRlyKwFmif-j4I0WkVCmcZ>nX8)~_QESg zT42qDp8BIEaqYCr2-Yp8@7-Oz>Gjlvii5Y)-%U(Sr4|1*vRrfDnhRLCbz>ZfW0i!r zx??FB39)~&NPbU~*V)NY?)y1_V&z^{7$_1-W@JfGRX zh2V=!@xh!z9Ochyw;Y@B2dlB>e`+ZDl`15KvTi%2B)@gEe8?3vz)J|*0bHZmlXox0 zg(lctzs1IKD&crtpKKUCpsMn|hrk!wOfhbk9)}8$7{OqrW|t}!IwIxSdqs|vh*ciq z%K{f)n4Me-l>wO$?=5EL?lb&`?2HAvj3q=U4<>2dv72y=5(oGC^2qNG{MI@ruBC(S z(-EaZWB1}iGmDb2FG|JSA*V5Z3?<^KF`2X`vkN$w+ZgGUlv2EN1ej0&#m}~8&iYO3 zhY#mE5t(Put_MgxV0(4q#^E2A_Y@1c7Wes={u&U;ROA$MywGFP_hyaZJ2bX&+-|Sqrs>h8q!{fx)-k`wjW3k&LNIZXzAke$Vq! zOnC~rc40=~V;5DNi^|0+&q;V;K*a*xf%uQW-wM%mg0%O+zXyC>b{Rv2UyV;v2$Ba4 zu7|`KvYJKMPxfNzT5wgpPN*`AlD-)TXbU(S@;uiG+g<^Rn=im<==Ot)xrC2D~_!Trsrm zS9{Ou-iOJo?fw1zORh%WLdEtlOF|!Fn((?Vo*APy)TWcmmtoZl!B-uaqkKuwmDl`B zgeXW_dUT$H3nKBuKrT2^9(aUAxpX6nehK&%tI(H$kLwirp~;=UJv^DDo6kh(sxdD) zG<0-wSM|7-+~^m14uqR#G*p zbWT2anD{(!z&2lJi=nPq{UN4aOJ08fx9`6dO1l5(f!?MS*uZgg%~^&NV`%i+tXZow zx1vJGEhD+g$WN8lh*7?8=z&jKds&gLybJ2{7js9`jXdF>ddoLKpaIArlA4y4g>~(Y z3lc^FwZt!Q58i&3&={^fHZn6qlt08asg&3V0kXP{G~X;MWAFxca`-VBGFN%ULVbT< zXq;T%zEP z{q0x12h+&lruAvBT_g@bQEfN@>E5bKJw&Q1C@Wj!RzjSrg{e2=+@1H zdFbsRY2_Q_=*whjSOylw)n(?A-SU$(N*4;VfJDMKxj%#jEGlR5JKdIMXr2`?ZD>Ci zd?4`0M2z~QQsKXyKLRQ{bifJf+%lEBD*him$ofP~pTpr#<^K)R-v z*6jgrktv!3zB9oyGiI0hlMitl!B5PiACCxnYs*HP`l3sgwYVf_Q>`wMG1h4F)>77%LlQnBT*&A zCRrSP;s(|J3JoX642#6=XE7!;Y%e6xK+6lWr}LOng?PaRVIsW;2N}EqpgmwMuRXmB zzrq!XREnUzwG;ewST1d13rhg}c|uZB57}mq4-cz<`#vPMQ5x^w@dK|B9ZW6Z8=JrI zl7>$!k^UxEDi3x*V&}ZQd)>4ZZiPBu9QZ0en?0c1pp2G>q!~Bxf_^rB#^-*2L*1;t zBqs;w`t|F`fG}Wr>@O}TNdAqNny7Z0ZzF6=<@jP81QiGlB9t70?XUT+FAS;%Naw}Y z*gs>pZY8*Y?LA*ZMHbbedMA~eH1hqIFC>9JoRV$4Ao!P1OB0F5zmxFN6$mWOyfLop zoE*gpCh}^{98bvGyBY@2!zo$|Vys&6JY&fw66n0GmvW4e{}|)(K_dwfcck=4U@aV# z0Fd@QehL`V#!lDi4c@UZX<2txS}*a8+o*Shf#=wp}_D`$JZK(=p)i((tp(#AbeJT9`e=6)tCCg_8E8!N$} zF}};~Y+lb@MIPb{3xbzgm9XB%P&giNc0BWyMNhG>;2Imx=W%~ZFXcZ)j%^gF!TQMV zSbTu^pI>7Ow27i6K@-geVs`s~7v+N|2VOQy5#7XpuTdrX=9lby>`WQR|A(;*Ot7?O zKr#q9eD;@o*&tU*4vtb-Y>?zLx94+(BIOxO0Zs=kYk*5CmKY5+_2C$@`_Exgtr%Q@ zEBm8SRp88ejAS3Gg)N#KNvzn|o}M_TFgS zqYh9zr%Q$c7C$6j+ZtB7LXs;J34UtTfh-?~e7_L12rtTcbC%SH=C@BMo1d^zzb5#N zr2|u~PJAQ--XwHW`=NUOj1)fUtcT1YBvl;2#l8MkG;TTsH@s+hD6_Woy$ptAd`38@ zQ_!Oy@e_rvuC5+;2ICQ*#p=9|?1=eNL_T^m=`Mtk06XFS{EA`AXEp(V3?k}Vz~o0w z2y-zxesxoYlzFjLanDdTEyQ%cW@fupW&Xu@mHFAaLxwM#vUIl!KC zn-tq_oGw}(NuEe`*!o2NtNVV;RvG7AN}_Pv&dyHR>gDHSq|y$Z+S?+m8Hoc#uX--V zc3R=^;=J#@N#?)wv~E_x$RHN)hJlaZ!=z>&oG)a7D+!BQrNjd}oxqEvFC9haF2ROD zGF^bmf$??*b$Z^#!bMUt{|((Gbvw<{zy~RPBq#N_7onM^=C6~(PN~Mi+}uaT-#7-a z#RnANJD;6FBt$^mPGf@CYUp#=`mp0f{3J8Y1Q@e4puIR9zfBos=;+`uO6?p@4S({% zF_@*i3?Zq8qof|0zN4Beth0mR@cz}Y*go@2RK2lWa=Vf|i@SxgBGq?Ag=--~$1jg@ z`z=nG4kLc2Ao_Y5~LK(gqVw{lL;{bm#oZ-KQ)wBEQq$^w4w@{>C`3@LAk| zIDVXNZAaaPA&*;3aN` zm?$3*w&^5fP!om2%u5UCN|3N!py1TKG?nBU(3L|gArN)zq>wY%e#;HAH1?%`KmDA3-f-X@ z9REu+u>b29pNnVjP}wLtql;zj(I|SM0_T?mb0Wo^4iy{2zB5}}ydc1WE$_BBq7TX* zqpzReeo2|cO?IyZb08@k460tt(A3WD907`taAHv%5iSd>VaZ71rlVMs!7d_njE~jr-<{nC3bdjn=Ceh$fYvxQl(%NFm#QvkwmH z?T%ISbGlAsU`3&RiCQm?45_l`?lNTHV5M)W_D8}HNf&tqZ}hB(*e_vnNbe;25-pS8 zJVp^ri~QZ&=Bf+w~H;2<)Vv*Kt`(-%zU*o-X zZFIQ8TdBC2nHe&e`g6C9H}7Mbl&EMVTqc0ITdYr1EH5uZws~8En^p=?5@vtMVgjFfvY_!N6IP-~1rv@Wg~0a2lB9Dp z?h|+LuO~etZIX=miNB_=`yJ`3V4O7v-A2aW5w*FeyDX^Hzun#IUuqstM_$% zD*8Dx&Hc$Aa=;_``AK-`p>BjuXGmMZAA)?52&dQb*BHY|Fc6z6xAqJ8^=}Y`^%!F9 z4*ev@H}5LZHOv_J-do_9c5TnPqxDstaYN}Y9g~cCkFPms6T$A+Mf5>;2Xg>#6d;g@~gA> z{46jP@&huF>AkbRMPjHfdsf7OAM65T!$7{%D>WCg*v?M4Df(?cx2`4Z9=U)Sf~<{q zQJyB}KFp_p5LDFiWeb`cH^BI%Ux~Vv@jy$v73=!UQ`~tD{^I^rWbluJ=75D)ur_7 zP~vj=s4I^cA4)+ZyFKOk5%mSWnH<8josZcsYExg9syJK z6;>q`0!tlxIh>p0-4)juVJ|+RdPpf)}dkoD!qSI@ITb5 z{!GL93E0e%KP1$iOId_Z2>~DiS?Xz$&uL-F8}@YcxlNgvo6piLjNNcSA9z?=G8&nh zKJQ=ge9L~PF%|L*GL{l8Tb1g2pelsQs|7|6K#5K&x^qzxvyD|sw0z;_ zfVAbOH@%0=JQ_*bZk( z3$%4HvUsIzs9p~0 zIYQ}r6=@Z!bU0uuR^sl0kYHOj*0Y0{v|H?O0Ywce}iz?4du2>b6I zI#QyhUVK*dfLg?^2^I|`#RAcDs9!?|CHX|P^usr)oKA@MnPjA=6QRL*1?p0!6ZyOD z!WqB;IPwVpfg#7?*gnCqTOkv|xYh+s4Cn^w#&ChtEXry$Mgv`x($%f_cOQim_{T)KRY z=bdga9}mZ{PUT}$?R2rT`sdI49ToYHrBA;H{d0Zu*0FYUwM$?S`o%O(MYF9^FO@uk zOLIw6q2te4bu0<>RKwCBEjyFhJ<&wt%U6>x8CLR4L%hQ z{l+tUW{sb9G&y$|yyGIwd|nZl8E4;oLof>ur|iBpOw5lU+_#tfY?0%w8N}$vx!swn zeR}D#P5WuJKmBHHkuzGtuU|JeN6>S91brY*vk8|1FBzE?U$8pR=u{6@vWvXsb8GWI zX4UreFGESfvW{nu8Ow}8|Bn4?fu40`-*TENHhwW>$T&3reejrSv8WX8eF|lJbKT#v zZdTGE^!@s$Ph-WxdjmPOrOt$;}5i#*OOGH`XF=DFX-8i19w8h zw^xVXt_kzCwXdsst|&}nyq`omv%P}x5PF*tQsF^`?5s~SfNwL>I}YqIrt$- zuoKvL7$}yo77{>Hw1$@;mJ={i;VuzdTU+}Fh>f#ez3#IzKtqpS^ht>H(HP7cU0z!< zr&hlu2ch=y)J2b%{C=3VOuLk$iFEz5q_OslYZZYp`!r!B^JhUWB(m=3r;%ycf<~{u zicj=1L03i+lR~+MTV_Z=QTxu z(QuMCIj?8h5`s$IcF-EDLgsi!Tv87;tHo6bnv*y*_)YGCLI&esGsKm}zh{gxPF#Zq zF4sx*&N(F&I+4&D@h-H4fpB~>Grs(Q9v2VW_< zj1@#e5-(ToTI+xEoqzWiDfo;vI^+h81=rQp)>;I{glmig{Hpo@?8&@<-iF^%iF?}x z13sNo+a+{nl`wO-DW!Ar)_W=YH_#O^)b{y&R|Tkv6E?Ms!|2r^e>~u{Hr{Sv-g~mS z%mFVoF1U3lmh(XC%BWAz)5`_><oR71t>6x^X#Y{HFm{?aI@WHl$HKU?5+K4AKrDteyIbB2NHLD7LH-tFU@ zkOc)FV3@v#2#!@Xx@)S`I7?$JPgwfPRx_k=q2sSSv^>;J5@=^ER?(w>3R${lHlx;A z=P@9e8}g&n+oAGfGo3S1;e>z7ZBVzI7rw( zDYAP#JAf$-)Q#E#l5`@f)c^Vskx#p=? zXXtW2sxC~I+10gGFM+Z3cloesOj`B zj!Es;tIzjsrIpTPcHVmdOzS^a*_Na^o$cQ&2h*uM+HutaVzagZQ0;8L2B#|?d=r~7 z2WIVr-TeU(id_)i@v(03E6N>7_&hS?UN+we6R+*c(~RtcoxjN<`&6#dkfEc&kB>bU z!*&Wye3(D|mft_Cc`tp8WFp~>cYMPPHOt`14Syf;8&URx=Axc9)KJN#$>Aik_<^;2 zs>!6rQoiN<^l}|ZYp2Bm6A5nrTaOsOJbqEGdWcn{IbHv@C@wLEy%#* z*K(_%3(v1=OS_u`nJ{Q&u~HtWkw;5^*B9X`g-mP>G!GwT7z@^Ux6Hh=T4ZR@UH_cg z+{?EqViQ>T3cw3!?IrI`QfA}ae<^j~x9NuUv(eK^O7gHR40yU=@_ttLC!88mbB9yO zCzoyKX1|?&zuxdL`Hu_T*x~8$5F#j#tx;9B)si@8w9%Ai%D1kCHP~n_*c=%pPN7`y z@7^i7*7SNF67IQhuxd-*5if_9z=6$n;WcE4Th_io(0^{VGEAcd;#b~wHa4Scpz;w4 zaQ_8dL8GYXL#nT|DqH;O$7oSZxm=(tXiVy_s@kuNIb5K7&neR`@Cnq%^pw%uhh4`% zeIfvWU#)W93C?Z!dV=%$PUwA6(zw3ZnN>^St8Qsd{p@>%T4X}nFhAR3*+ZW_ET1(v zt|npd28E$DoE>(5LeN34+#|GQ?v~2`t`(dZk(qqz#$b6hXzT@bIn!D&h87YT-P9ef zzH+;K9qz&!srS8Z1~FhGh}ZmtyS0{ydn=yKPi#Oxx=(SuN0J`@cirx@GjtxkE1;4J z>i)Kf)}1S1YQ_#4t`JNjLT6jJ(5aVXyAktb@o(5?xM{4o+`j4cM#sh!H~(+C(g8DSwWOoZfTKen8pTYJh_6R-+Cm)UF2$S%<{8w9V zp;t=9$4NiS^xwY?pFMy6>ro81#%k4!K;LsA+60pLNU_Wv4p?sub*s&XDcjjD(?Lv z@Jl+g+aDkYNLux|{Y=sEMUY@p*yBMk_OIdtPeS-c(PnP(@A?{ONc9GYzFgGoUB1$q zNRAmF_!YW#^?lvfsDyAuBZK4|M|4m6wbXdkp0dBe)F#gyzSoXs9~bm4c=-H?WS z?xQE@kQ-{LI|QO<=_cuK`~|^E9{yLz7E? zzrJaZ6wT}T+~2Paef}ZN@@0L~R$32kECUCd6H3gMm@IyAS097`>6Fzv+$WL6-RiML zhad@9FG^chwQ%o}jXac&lrmVk=~AuCWV7igCgHUVAN>(eQ;25Ml}RB(u*XY>@e0Dj zZNz1zO18ZX`7M8^!o#ymazi{~L0N2YDOZ6uzE%bxJ&uP1PnrUP+H2(x=Z8pKYIFBT z;rttS*QDQQrg}<$A=tbRpz(JeqtD-nec_mZ_Q1Hi3ZKlM$4(AXBz2T>=-=;|@N*SQ{0UW3K3HFKc}a(7$O)#nU(E=C1!W))>5ODg5(K%c$M)HI>Ji zJts{ClaAGrwBpqQ3^*dL$wn^Udg31~?7+NSFc&{ z0q>Yl0`V%$3)Vbze&r9me+r*QQquX{Y3#FL1_SXn{&>( z_+in?4EP-5%3#ml?mbsn{@PY0N6w{#12!&s(oedn~{|yEiRSslQV~RJNcIeug#VWJ$Go?d}1p-RF;;Yb9lr@6KC6{0G8h{#tY*7NwOs_}uZ|a%4+vbCFk-)H z`+RmzconR}Y@@}rfMti3{O?PDZG|u<=}0fJtgt6XaH4}oF>9t2JYD38c=(s90`m}w^UEvQ;zUpH()m{cQmZ^I36W8F z*U5bSo&B4_n=o7$Up;Pdqv<%nO5`LQuG0+u;$GrzbSEGk;+>0gVH#U3MGa>!Kf9ul z=L5d|pL8&Oq*=bqI8@54Y=ni#b&RF$xRI;$knc1NF_b>roOqLK z!41RKjtHtic{6q2?KUm6pqNdxCATQ5#{KuhJslmf_`SUoK#~%R+I4W*+EM%Hd4oV$ zxH-qZ6Az&yMO8+U@Q<%Oc1;x}$$#*}Wv`6lbt=ZRaK|oX1aL)!Qa6<`SFNax%7>zS z(Y30wF@@Q9ZdNL5(mfc8jnWVOENHaeb7Fi68spa>aKrEqnqDjA9Wj?`0fvO`MHg*) zH^XztFFw-#ELY|x+(~G>l8sMh*@t|~eEp0!xGVu&T`9>(O=sRH7x*p_(o|tQS9?Eu6@>trp7f=~jy|9}$=v@%4SlXzAYHdsUpuJJ z8h(G+kK5&p<}+KHfWuaNO&P-j`PJBYlty!5I)0vY{lI?VoFe@mri>wNyZseiOf#H^SUpTQc~SUpm}Tm0eN&lm^ogij9N4tU0@y>zpqKX*h@1pxmG(lzREeDuJtvdl*mY6Vk1{;P1;+^QcrxWUq=55w!YY~q$GO5L=e zTm#GzW*&R$C-eS?Q{vmxHb=oM>OJk=R|uYi*H$~+&my(&lBD}vaGtj0fmv0+xSMxB zZ>&-~9uOMp)s}MBeddnKuaA@VZ-iM+FpHXG*dgbf(1)1i_1Wv`r368-*e5P;WU!yR z%1^1rIa^jrt;Gt3%p^hE0@T#f-}3d1`!BpmK##kvf!SmB$45W6)i}xEEcU;s+&`=# z`yr7a)m1*hQkE+5lf4ZbSgo1x3Y?I42wUl2dQ~fZE_P$+4~@Lw!+DB8B)cK z-+s3VN6O~)Xg=ti>{uy0;xYh1)aCv{gEXO>Q`bL8*5=qb5DmkF%Kn6_cm;N#M!7 zfn{rObX_d7^H*x;TC=7qayhy^%!+?|H2)@ zj$lV&`7DQSltd`Qh|-HH=-500* zeZQo3&v}b)9Gia$@ox?ko+pJXFWh)M7a4Eptd2>=k%i&&ZN<9>pUn7pqp4gAt#G4# zgB$VTsq0|ONBj+o(AUxGIPKS9s|BILx!|R#lMXc==8+a(>7QF`tYxgy?^rHL$wd{L zO0ABj*nX0IHpe|!bK0>H*R_jym=AalvB}bSTGc2egQ*QSQaE#1RNd>V3d4Z|phwzY zuDry27PvMMpnr*>Ne4c~nU;T}t@)e(ILbjHN4dt61M3BbYcTgbtjwKR$B73?8{QO> z;Te1WA5lF_c{_=RT`X2P*7+UhXHMum(vzErFb?419e!PYv$jezc=7v9LO+1MGXYLw zw1JfYwa5`?UCaiP0Q4c#f5sJjYomQK_9W|DK`mVAKaM^KDczSRzWFF$P4Y7J$$6<& z1T{i-;fjt>`Hi1ga+jwIhD!n&q?ztK8F3*XLsWgIz;(1yeoWkQA^yPz?2soNJSUC3 zp5zzK#gcXTH8lf_uNO2O%#F`PcoUY#5`2@(x#<%B1N3 zZJ-|@{JKKT|Gl{;v2a=bMiQ5(DSHmzCLH7ogU-@FKZ3QY_R?t5%;h|+NX8ostXB|b zRD??yf6k?kRGslw!geg*7d=G^mwg$v`twe=Y&Bl;kK+SrZB670)E&!J-_cRlRi1?j z0;eg!jSl6YstQiNsF~H)5goGc!L#0x<_&0KQqFgEXF22Uff9yWd`lxw7}c1%8vgPc z@EtU`{uvF5tnU$IF!7-cTPJ6JZ<_xo>Ii?h>erIsoO$m3l>kQE#fP;ULPOp+9^nM{ zf}8$^{4?rMRF5vmk&yB@@kKJM&0Wx9)n5-ZG69kTyg)}i$4n2QCS2#_L5QE(dwO|= zHlabaz_Dw8xlS`g{1H&~N)7t43 zlq#T|M=172g=_r@YC@qS(@;TXIo!)Q=Xqdz@cLsd~tA?OcJh;kw8I z`ElFWcR^~zW86iKZV??nnlEAF-4^C*d1lo0uDNy)W~)yx3a1S0|9UVF29UljLHC)6 zv#@=`5REJZ@6=5?^H4_5Gz#u|!opk};h#G=JEoVAiQ#UK54d#$nIP;1f0poTo$3THUhaeD3y~M(UK|g(`-ML$na%aS zXgz(CkcU;zuiop>@4mpyYz+(WTon2tp@;%*!oMrGp}nTbOMRE>dh1QtlGNPASI*yafws6EU|R zG<-6$Eo-C-7T;GR6d^mq&v!FLnYwA{DE)h)y2S&XsdEPN{b^N}0efKKxwASI9vNf4 zv_1Mu0QT7+*Ub~Nd)0T5L+#p^%q;dP)M!p>`}-@5unsXB8<$Vh&S34fAoM!GMp z8avJt`6{3?g0pdyIH-r><>f8axoym^{+yR0j;yN*tb@$VN465h2gq$~+oW`UeP zRUHdp85h_8y46a>A1m_aa`D5FCvOgzRz`ErUVSgjY`a@9e_sQgN@)3L+~B~{czM!Z zTU$&~TBMnzrK;-X!M@pJU}*NrpWVew@*PAx9tmKsii^`%-TQh}rB@|t z8XH=mb=Ht!Ga!|8rVry1h5ZhnJLyMLN-ZbN?}Jyi*plR`rvX{x;y$7?Qv&MU#*I4_ zny&0!kG6@r*((wyPY$n`;Th;Ak8`i{?PrYAf*M1kWwuF_qWz>g=Ri)(_b-j3`C6W- zkH8}+({JNPAI1a+#Cc3n^F)JpO6>}rOz@Rjh>*V#$0Z7XY#Oo)@jCP;xaaq{Dh(uy zXFR`ALz#`&zv@0Glo34xF-gxRsAq89WB*qRV43#Z>yqW8k<0=u#ykf};b#^&e>YVg z815wYVbmqyaAp`nJ~YXhE94aufv;EOSv-CSPygjyLaJlVyVStX%WLplDo%!m&@?e? zh)w5Pk6w7o#BO|(R(>JSKru*|9neGy_U2&Jp02qJ;A&CPs^{nR)D%_q&RM_yi7u5| zMW5bzOI8)tJ~Y)a!(%l~Rb$>lBqf3^nrR?iykQ6GmX~+7??GWf+vWf}cRua7PTF_~bNWX0 zVG?2sjE6bJMky8lVm<&<8nJ$oR#cQ(R8;1Dqy{X9V@UTARCp79NH6vybCBlk?*o}B z!1l{VlpJtBRDry40nb0Zf05jMc>#ak@?uf{zV+x%tODncabaa8RqZbg^k71dew%Oa z`&DU70!~qvA(JUWIYxc$`I82}f2bGEJud66r^`g875F2{qQbj8g9Glr@}&tZ?4m@^ zoM^(t<7U^`;T=v4EhkEa@O0(`K^+}v7!XG-3}+Rlbe^>d*pce|C+R4HIYPcTm_$qpeAlR$IKK6q;e~*i|olFzK`D&g5rkP43)<>S%Cf(kO zPYq+ca|$R)=fy8JT>v2}!xqo*unskZS{!?yo{l#Wlc3SHT_yU`#3r|GG+thbTs$}1 zi^T5BpS1gQZDq1hLQFHPcAxS6nu-_p+vj`w~ta=Uf*nF+@RPb=ADARCGf3+J}P{Sqvgvp_sE$J@T<(H|2{%GT4 z9L>1rh!=6)z1?->@U|JAA_^6c;7-fMRjXSu3wWWqwYMqREERBHf$xVDdyc%noYewH zGdB^wA$vzs`RgE=b_C}ei2)Jpg6(#AFmx6u*#9sKd%0JHJy&G*5iWfMFz+N`y1@U{ z(lt1t9T3+H@QO%g4rSAm7!;%E%V+WbqeB~c9M!0)s;8DG6VP>`gS0m%iL{|Xsh<&G z?P01oUHzx`T*zB;GLkAHm=>S#+m(W}qN@TeKGu@LLsRVz;DK*eV{lDss@jpxfvhb# zTSsw^Q`th99pbrq4^bobE!cn`JC88l2E5XPL#erb<1Aq!@VHAeC2Pd9PyX~CN;P%! z^$gE@46QS26uSoQ!rE(GxI(84E*?hON8LoHwyU`Nrs2BaqYk+7d?bZhpf6odl2A2z zqu`j2E1G<8`+0q+U^}-?UIIYPX^KC3C1)ElO%GBvSZ*C0R)R-O9UbIt_6QcX$hAas zJEF^?WOSz8rq5Cmdqq^uRyzY^MkHwW2&IxVfLiluzdkc6lXU4FKW_6XhVn#4iATkN z3@b3lJ{&2ZIh?iEes)!T;R8(9dROBRQRwcrA}N}nqL66@J*U5lN4+JMpH$VCxbmJ| zBMMiO`l1pSgSFw%laBSLk)t9(QMc^BmDbS&%JHVeiH>VNo_gzt#5oq&r99LgjHnlsea(I6p=TR>c3#5HuXcI@$@XOgR|(`lZ` z28k8?7Cl<^^vhyWG`yb6Oi`OY*UJ!%ZA3`VfT)PAU`{~}8>JOk(BdX*3#Mwe4%kJ0 z_p1FnB%U6MZDA@nBGkgYiD(=k+W#BO<+oPf&6Vz&f%>Oc;T1|5!Khc{i^?0argb|i zfM&wn!hGk-qA&fc1tlCk$g|C1hCSpSmN6k1i$BT-W*GYnm;d?l*Q}YXeE(O~8P3nT z8~rrz;~jKff4H;qT~Zz|s`?+Wb9yX(9(iWx-MH?)?pbtTP(YmD(?PzlC}Cu>ZmgRt z3nu7m$L}f(jfom@2zKo`LEN0Gqpkfc6F-F16tSD!%p;f-Xr&ts>=iaOv)vn_{vP-E${(%h8mJu-V{)6m$>hL6ZWHVLl9$nhGK(WaRw-V8XxU| zk$8DnRU4%_(67BDZ$VTK`8x3M*CL>pdq~gl34t z25Y?(kXH{mO$#^@)YCv8!X9ex-l{X|n){5-DE=wTpi!7KTT%j7?;9`liX+VR*_Sj= zyy<=kl|B3S7e>wbE zB+>I`z z{BJxbY3*XL1O3248@w~e9agrXMhfR#IK0pucQ*W`z^z2whQv0JuJi|C!}GNQ7H-JX z!B*O#2*9nuT7C}}AkJ~U2t#W!K$D;Wf2rFN_6Wxj17O%f-FmvX!MJgZIiaLLOS`l| zef3uZy@AlxtD-uL$ky>Y^-C(cdhbsO%6|FK|BYgNZG7V`;qlA~!E7&donCC5=}*=c zu3Ie1qN+wHFX!oj2QA2XrE0~0>c@}WCO!`l5?*YA+xScz+bt++YGLSXwfBQkF0#-| z+QVYAWnDnof?>%N*6y7mZ$&RZpzkW2Clw@g8m62$Bp=FFFRQA@Mn;5vBtF`95%k~N zA=g`Gcyd-DniS8)`@Fbr=G8Pck~t~9JB2Bja$X)U{f{8I_`DtKa;kdb5jW8DiCigc ziY?LO-8e$u43ESRXV}&4QBOC}H_smIc^%BF3~I#sDTV*x$nMlsnH(FGfGaxapHbi8 zPva%{MDg}oseVKXO9-GPpHh5^FlWuad_Wh!*-hy}uhebJ#_lOSF_eFCSKYwn+T!Sz z=NwT7dPPj%VUG~!;{QGHmMnuXzT4d!UrKo2E7GUSKN8pqrr0s2n1X7StP65%{#M&o zZTwg27We8Q*~38AL)iG+@o{}g77J?E(4V7Zbf!^anXAIw+7?jd@H|KGP_^gmn!0`DF^WF!!cpq}ArmMQ(!4HjKX`qY#?nO_LFl7~_Dr^2=}LkIIiC z8ilWdtHoSu_k9dPY*dn0|I_gvKlsnrc$uK-utJ|cqN=TU>5UApJYAyw zY3VCf#OjS}Mkx$ya7WO1d?BgirrIgOO?03S_`Oe}9jqM=j|^p4#3CXCX}tf?VI9mk ziVUF)W;r2D&|!F~(p4u<1&trTI9?6N@IJ%YXoS*Z&`>5wm~EYpfiX(^nD=yfS_Rzq z$md(%Enl4(6_g_I>Ar;zbHq<-%s+iP%a=P5srR}w{0Jt$BYd`$l8MD_a43VN$vwuj z-b()YzsKt7XDRlS=e<@T3kT%0_6p`7gh%6XWW>5M<547OlDeh=Zfq&@?dfHF)Smq6 zWlD%VUQt!M#()1cZ6J4#Z2UNQpKqCPKs&tx5QiMH$Pn+hxkI1TcA>vD3{ z78Gqt`^*V-qLL_>sV+0n$0y2cMe^SRG zb^|6>(=^oqsj(-g0JRhqbR)sxZz;tx3fHtlfTM6@W|D)vu{gs6kC~ncYGJ8o%-WtU zY2aOU$E7zF_gi~A#hJTcb(kW2q{KE0EtfB3Zw$-`sJpR@-9Y!~qDuKBSNWXLkthw` zoPr&e?)W5F#%sRZvWkT6-k39(Vx0PJ!NQCgu~7(k^WDE~zBtd6cUnH2;X@W`U$gG+ zB5Z*b-dcoSshQ!a(Ph<)!;iCOgUPich}o6z7&C(`hl7L>B(5+qRU=++rRwSet$tCj z-uR_cls7XxI?6HM-;JKzW(W_fum63?OS|W{WeK4t5swEJ3&;k#8|5-33hdl^VdcvO z&q3HFd&sef7ExSBW}peuM}eVhJOIyRgU0u)%E+EpHasQ7Vk}#I^WQgb}^y3sC=K@j%GRdqVxgW2IADEI~)8Tr1AXycWJic?CV^|SfUkz7=-oEbzkEY}7P+(E% zrRXw6`qH?!m0i1N(3UbrSQcb0MOv{sD_={0S^=dwN!rMAc2$IE1Uk@#!Ne&iFf;+o zu7&rE2*y2}-EP72uZyGen5dg}l*oMl<<=a+2s-0-Wgd`AguUeR*v{;|IYs=?YC7*8 zmk1fK%X3u$qZbfouN>pt+5L1|v$%h!sxd{1+e~h5MJ>U|J+Gqkc&QqQRSAq=K!*Lp zodPz>&n;m=h#+C^^_|1wszx$kKy(qm1!%fWDL3k- zE~SpZ1+ws!Mu^{zfhH83R6Sri{25Re3rkpFhuw|b)=eq;)Xj6i1!W{nM0UAf-bu;T z1J}{_2%%U#MyBr)Wr+GBJQRd3jkIA(@pc4f*nX9NA@@A(K4O$$?J(yeYg*7DR^=2;*@QcN* z+-Ck;Ht@5M{mNs+L0wcz^W`@^%0a@qe!n|y0EPOh3G}YHf98166cv@i`Qc+%nI$9*$%JI{=hh zo&ux;?U$tSnq&1p>1AL<1wYyof)@b=o72mvI)gN<5KOk4tjQ5}=p&Fkrc|szVS3vI z8F@#(=gcyNg(V#34*NiCJ|w8!p?6)bEE`8=$=>DsyA{0Tc4~y@w#GvQX)-;$aJn;G z3X{})Z!&I<$iCNajN?J?3R4H#3D@_m9l8| zhEZsCX2FQTAQ~Y&t1od)+is}`xR+XT;+r>N5^hJ@(_hnpd0pHRjdw|`zt`AzRWPS0 zIf*Sdke0?U$@IN2v}9(J6tZ8-L1o>^=2|z_7Pba@S(GLtpfZ~*oMtQbYTM$yBFu=X z^L$*)@AD`4qE|p`m!9BTKRC%qw;}`}xGg-zT!I^kWFU?H9}GPDC+TSHbTxdFU%LjhwCeko7dr5^&v+PO0a8J1&T8#(z{!~MWI%JGdF zh8*QWh-CIjw9F`mM%Mq}CIo1dXN|pqmFn`m9S`@^n4ZjbGK?ijPaGHkP z{@LD)$_B$udl2FJaAY1>YOR!F)C-vbgHySTpIb2TBkHnno1$P(F$F=ATr_wxSR0dV zieqXVC!+OGDV{)jdtcf$!Y_gZe17I!Y9eNOoAk~8G^GBEI#oGUqn#Vfs}FI{A#pka z#0>vN%|kWs1R<43xkt#v`po7Z76^K$#Y0Vt)a!&+Ubo5v_Z z6h6l1B`BWqS=$g2GDY<{Y*iC^6KHA8ob8DQRg~gs`X)2N7m|xI*tbCXOHvr*f=iQ_ zq-d(~?Ir7G=CDU|!dC~zt`kt(l`rkmd||V7twsgoY@47K;!lbOx6{O5@37Ps6C^cp zt?pP*bex9itf)hLZV<}%sxGoR7=9r4AR-W+{5eJMgv9@%Xq60V))2|bqE?q4L0a$K z!6=hQBRNoxrV3kY&_EXfD4{`^k4+QV?1tuGh*JOVpz#>zmv7s9tvVbv+IJ93fcOA` znW_G?UILkL3V!~Wsea$;9h_Gj2$N|SdjU>{xf^wdrA;E1j{QvZbOBM7mRvR6cUwKx z65+t?_r|y58gF}AH~CARjHs#g?YGY~IBk)4Ig-q{f+-#pL-`wtTt^1I-h5ro8a20kiWd4E$!WB0%56t-o2wDZfKP)~<3HB@PjLph)3y+|# zwpb#258pUK1J-+22%(YB`_R-ICc}ICq#8f7B@;4cBE6F>b>r`N|7I9(%C~y@rPS$I zj?!ic&nyMzOoWn~P05vL_U0>$Xnq4C2uv-PS36cEF?gJ!PAp`ajsyv_gmKpI9adB} zR#8WSD_;!E`~}#D&+_W?2BuZee{wcw{dfli8LAm3w2J|#kDtjfg#wA{valRPkWrpe z(8RkxkjIfEwmFbq;uN!G>IG8oD;C~TgWJy^m84v_Ix4Pg+;CE);r@yV?Ad9Mfa5{q zx1Bq>L3*zcPEa}t>R)0cL~HV87Z;sVBezzPFPibvn1to4i{SY{c)q?>b2INKE>~7r z+4$%MAIFi0jSB-?EwY&!VGo=Y4WT}Ec}=`!MDhQX~1nj zJyV>%L<8Md%n3Tm}QIiJ82zGAh zvi!Gk0lF|k4+QJHnO1fsnYt%N9m3i$f>nTrQ0*k7j8f(vKB;V6)WxRZjphawI-A7a z?0o*3&*mh7^=vpM+t9|S%6i#LK2$^XZe0Jdpva>JrJAVyyaFYCkFYlkYA^rzBx#_| z7uLQvNb_OgoY29Xqh~oVG7BdeqOYs%5d%Cka>svnO&x(*cBk^_c5K=71iT;+Bz(3i zAwW@9LD@JRh5Z?&Is54ZuS8AjU$M57z4U_XpZ~Mswq+v~nteQaKG@G$4jAD~kY-Hbck2F}qn~zD z&=fklRumTDoQR)i31eSX09V4eaFQ@hoTCCNYyi8Ozah8XzmWacF(AY75Y_=%_h=;M zjg_|8d-hSx*m=L+IeOH&%J^0?>v{$5Bp_s;1Bj71ds{)I@UXh75j#<&;qYHBhTWvA z-S>tZ#H3;9_u=DMrMu}@70Mp;$`FiG1RBS@jU0<~5D#u>kXAN6sDO+_c(ZOkOMI{G zVRB9R4PM{kXL7;mlCN;*IEls91APc~GCdUp@MMrC%j)TcshJZJi)S!u3z6uR^RSf? zGC|`=<+25f8?mN0r$thmR!m?gB~W}}r6JVKh}4wSP#sr;6pK^|-Z~~4&dLZQ#4EuI zEYq0fT(kLW<^geK3OSuMQUPd}p2ptX&k`ie875T!-xoD(rML{UCR>Cv+CREFPG1;cG=1T^<}gwJCM+cPY$Z1`vr+os>KDbwZYixEnBGyyJ{cuM-(5VB!dyL3eW z^8`l*%TFu;7Sq_;JGaGQ%gM=|losekXn|oe*`|3*t*M*r6r@5HY>V3bvy-9=KN`b*gXb@8(CPU%6K^uZW5EN z6IupdGeGi%rErnLMKMP(&H)*m?o69pBoxU9?H{ug=dAnn{K)mF32a@y*3*!Q%ak+Q zno;cHl?5HuuT+&(^H)+>OV+mb{1L*&?Yh_t$uDLR2vntk_PHy|ehnY@-S)!z9FzFd zhM2g%$E8n!;wMk{f*K$N(>MIHckn|@CCrwO#lJRxL9C~p|Eg3S{3cjivYSjp8$H>I zBzzjy#wqSumBUovN(pfRU{V$C0H;e?5K8RSl#K_~I|s|?ssXysjK5-9=&FhV)&Bgd9gjofc z=Jp(X_WFdF%FXpHV!4XyUHw7E%UWMuR!!~`KaHy>8!K8HKAGbm%ayGz9@aNaWas}N zq-#2rEGDsBprvJA!f${c8PER}DjHq_d&f*|7F^II@MBNC@qIR;>nLZ#zSW`_>CnND z?!A96`s~4;d-CMjs43+Tf!0+n!WgiWl9+xU&yCbT+9Kw71WNXOH>myNX+Nn{JyMw> zmIzjsjm32Gd9!NCNf(MWMGajGc&J}<=?y=W1q$yB6H?}XK4baCF!jKQ34cTm+XbcS znkS`Ve57!e1rG|Lb@beAhZ=HmRR&^QL}KLz2=tXhz%O!=bEE3WRR@J*GN!rC2iuBU zTT0h^PFD{SY)y~d?ya2|dHqg!$K1~E-%xiil@IZ7u zU5F4&7$L+_lua8gD6FZiRyP(=hHFZf$HG_7sh04YmXCNN_@?bq{eLEu{ zbHp@}@p=P&h0uoWN!@#(z4jO-IJFfD;fxm(2npR0KIlVEP8pea?xR*#_WyFG&=!67CVaUO%-H%V2NTH)O>1oKt_PRqRYU@}N59MdS{*t!cJYVWCI* zF9c^6X-(t_+j?DRp7z{7=g8|3va6_^sgwU1iz#g&pq;Q8+^)+GE4It>j%ikk9^n_d_Aq>YuL*p+vpGdtZxhiT- zAh)HI&qUsJ4y=#U_aUOZQGm&b1#jc@w;0@z(pvwvF17qeOQy47LY%(qqp0!J^1-d9 zx(Ra~u_l<{vvhniQ}~^aos34tm6Vg>(tA89{7}MjS{-J81q=rLUH-J8mql~)f&zNl zYd+F8h8z9x;%+Tg2WOpfS)gnch>aU+|(g}d3^8P@DzP6l3tbdmhiory(ur?U44e{(>~kK zhVWs#^X}O0QjcAP7{Z2FNk@pM0B<`x;{$u3(n+8zqqW7v?QqHu+1T?>P(ljT_W*#z zVt^=xVz8;T=^F*TKbrMV9gK>sa(NKp4cf7k8J2A72S8#|LA8N*18`j#=4-L93}r-% zilb#jU8boYGOD(89dCJxrX*OS&b)(PGf=m%1E54-r-6>3I8r{gj`F(gExD3;o6v&Q zzkD++S-tUk`XPPrrs1QThn`4v^>vy(9q*OGkhfy zX_94S1K&xZGNyB^fv%j|2ghU_zy3lvUUHUhFF)pZO!oQ0ih=>oLEw?0b|E)|93J(d z>MwmX zRNBa%cH)icJ!W6*4VL{69tLqVM=45_ zw+!|yCa-;t<#{Ih*|1MYo?_IO^t1wzlZM Date: Thu, 8 Oct 2015 23:53:57 +0200 Subject: [PATCH 14/21] Smaller image --- dev/cliparts/commons.svg | 15 ++++++++++++--- htdocs/public/theme/common/nophoto.png | Bin 75936 -> 10127 bytes 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dev/cliparts/commons.svg b/dev/cliparts/commons.svg index 4b8820d06f5..1abca065694 100644 --- a/dev/cliparts/commons.svg +++ b/dev/cliparts/commons.svg @@ -1773,7 +1773,10 @@ + transform="matrix(0.99771798,0,0,1.0176646,-1.1510876,-0.81544515)" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879"> + sodipodi:type="arc" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879" /> + style="fill:none;stroke:#dbdbdb;stroke-width:5.06745768;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:export-filename="/home/ldestailleur/git/dolibarr/htdocs/public/theme/common/nophoto.png" + inkscape:export-xdpi="76.774879" + inkscape:export-ydpi="76.774879" /> diff --git a/htdocs/public/theme/common/nophoto.png b/htdocs/public/theme/common/nophoto.png index c3989b59135510003b18afc6081242646afdbc74..bce088ef784902b7f05b0a8fdcc9c141ab5a2341 100644 GIT binary patch literal 10127 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 literal 75936 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

kIj(P1~WfHB(&<V4)a0>X*t}n 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 Date: Fri, 9 Oct 2015 00:30:02 +0200 Subject: [PATCH 15/21] When there is no contact, no need to show filters --- htdocs/core/lib/company.lib.php | 67 ++++++++++++++++----------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 9a67065fe64..ce5345854f0 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -632,40 +632,6 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') print "\n"; - print ''; - // Name - Position - print ''; - print ''; - print ''; - - // Address / Phone - print ''; - //print ''; - print ''; - - // Email - print ' '; - - // Status - print ''; - print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0,1),'1'=>$contactstatic->LibStatut(1,1)),$search_status); - print ''; - - // Add to agenda - if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) - { - $colspan++; - print ' '; - } - - // Edit - print ''; - print ''; - print ''; - - print ""; - - $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.civility, p.poste, p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut "; $sql .= ", p.civility as civility_id, p.address, p.zip, p.town"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p"; @@ -683,6 +649,39 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') $var=true; if ($num) { + print ''; + // Name - Position + print ''; + print ''; + print ''; + + // Address / Phone + print ''; + //print ''; + print ''; + + // Email + print ' '; + + // Status + print ''; + print $form->selectarray('search_status', array('-1'=>'','0'=>$contactstatic->LibStatut(0,1),'1'=>$contactstatic->LibStatut(1,1)),$search_status); + print ''; + + // Add to agenda + if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) + { + $colspan++; + print ' '; + } + + // Edit + print ''; + print ''; + print ''; + + print ""; + $i=0; while ($i < $num) From 61d739635e862b462d16ed450bd614b2264692af Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Oct 2015 12:30:16 +0200 Subject: [PATCH 16/21] Uniformize code and css for tables. Filters must be implemented following example in test_arrays.php. --- htdocs/adherents/list.php | 5 +- htdocs/adherents/type.php | 4 +- htdocs/comm/askpricesupplier/list.php | 26 +++--- htdocs/comm/list.php | 7 +- htdocs/comm/propal/list.php | 8 +- htdocs/comm/prospect/list.php | 7 +- htdocs/commande/list.php | 2 +- htdocs/compta/facture/list.php | 11 ++- htdocs/compta/facture/mergepdftool.php | 20 +++-- htdocs/compta/paiement/cheque/list.php | 86 +++++++++++-------- .../compta/paiement/class/paiement.class.php | 2 +- htdocs/compta/paiement/list.php | 3 +- htdocs/contact/list.php | 7 +- htdocs/contrat/list.php | 17 ++-- htdocs/fourn/list.php | 7 +- htdocs/product/list.php | 16 ++-- htdocs/product/reassort.php | 30 ++++--- htdocs/product/reassortlot.php | 25 +++--- htdocs/projet/list.php | 9 +- htdocs/projet/tasks/index.php | 2 +- htdocs/public/test/test_arrays.php | 18 ++-- htdocs/societe/list.php | 9 +- htdocs/theme/eldy/style.css.php | 72 ++++++---------- 23 files changed, 215 insertions(+), 178 deletions(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 2f495e60bf7..d89360631db 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -195,9 +195,10 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='

'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_MEMBER,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } if (! empty($moreforfilter)) { @@ -209,7 +210,7 @@ if ($resql) print '
'; } - print ''; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Name")." / ".$langs->trans("Company"),$_SERVER["PHP_SELF"],"d.lastname",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index 75102ed9f50..b2fe0ac404b 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -168,7 +168,7 @@ if (! $rowid && $action != 'create' && $action != 'edit') print load_fiche_titre($langs->trans("MembersTypes")); - dol_fiche_head(''); + //dol_fiche_head(''); $sql = "SELECT d.rowid, d.libelle, d.cotisation, d.vote"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; @@ -211,7 +211,7 @@ if (! $rowid && $action != 'create' && $action != 'edit') dol_print_error($db); } - dol_fiche_end(); + //dol_fiche_end(); /* * Hotbar diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php index 2e78045b308..ae7ed58b29c 100644 --- a/htdocs/comm/askpricesupplier/list.php +++ b/htdocs/comm/askpricesupplier/list.php @@ -242,7 +242,6 @@ if ($result) print ''; $i = 0; - print '
'; $moreforfilter=''; @@ -250,25 +249,32 @@ if ($result) if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='
'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.='       '; + $moreforfilter.='
'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.='
'; } - if (! empty($moreforfilter)) - { - print ''; - print ''; - } + if (! empty($moreforfilter)) + { + print '
'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
'; + } + - print ''; + print '
'; - print $moreforfilter; - print '
'; + print ''; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Company'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AskPriceSupplierDate'),$_SERVER["PHP_SELF"],'p.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); diff --git a/htdocs/comm/list.php b/htdocs/comm/list.php index fcc1783daf5..1cc0f2fa968 100644 --- a/htdocs/comm/list.php +++ b/htdocs/comm/list.php @@ -193,15 +193,18 @@ if ($result) $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(2,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='
'; } if ($moreforfilter) { @@ -213,7 +216,7 @@ if ($result) print ''; } - print '
'."\n"; + print '
'; print ''; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index f595ad8aec0..7d1539ff0f5 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -265,7 +265,6 @@ if ($result) if ($optioncss != '') print ''; $i = 0; - print '
'; $moreforfilter=''; @@ -298,12 +297,13 @@ if ($result) } if (! empty($moreforfilter)) { - print ''; - print ''; + print ''; } + print '
'; + print '
'; print $moreforfilter; - print '
'; + print ''; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'p.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 670d170de97..2282b39420e 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -359,15 +359,18 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_CUSTOMER,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='
'; } if ($moreforfilter) { @@ -379,7 +382,7 @@ if ($resql) print ''; } - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,'',$sortfield,$sortorder); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index c4ea9cbf838..200f9e66362 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -301,7 +301,7 @@ if ($resql) print ''; } - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomerOrder'),$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index b507f5284dd..e4993eacb88 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -275,7 +275,6 @@ if ($resql) $i = 0; print ''."\n"; - print '
'; // If the user can view prospects other than his' $moreforfilter=''; @@ -308,12 +307,16 @@ if ($resql) if ($moreforfilter) { - print ''; - print ''; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; } + print '
'; + print '
'; print $moreforfilter; - print '
'; + print ''; print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'f.facnumber','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php index 72276b77069..b78b31d1a02 100644 --- a/htdocs/compta/facture/mergepdftool.php +++ b/htdocs/compta/facture/mergepdftool.php @@ -616,32 +616,38 @@ if ($resql) } $i = 0; - print '
'; // If the user can view prospects other than his' $moreforfilter=''; if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='
'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.='       '; + $moreforfilter.='
'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + $moreforfilter.='
'; } - if ($moreforfilter) + if (! empty($moreforfilter)) { - print ''; - print ''; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; } - print ''; + print '
'; + print '
'; print $moreforfilter; - print '
'; + + print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","",$param,'align="center"',$sortfield,$sortorder); diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index d44aef51dce..c322863efc1 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -117,7 +117,7 @@ if ($resql) print_barre_liste($langs->trans("MenuChequeDeposits"), $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num); print ''; - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"bc.number","",$params,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"dp","",$params,'align="center"',$sortfield,$sortorder); @@ -148,42 +148,52 @@ if ($resql) print ''; print "\n"; - $var=true; - while ($i < min($num,$limit)) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print ""; - - // Num ref cheque - print ''; - - // Date - print ''; // TODO Use date hour - - // Bank - print ''; - - // Number of cheques - print ''; - - // Amount - print ''; - - // Statut - print '\n"; - $i++; - } + if ($num > 0) + { + $var=true; + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print ""; + + // Num ref cheque + print ''; + + // Date + print ''; // TODO Use date hour + + // Bank + print ''; + + // Number of cheques + print ''; + + // Amount + print ''; + + // Statut + print '\n"; + $i++; + } + } + else + { + $var=!$var; + print ""; + print '"; + print ''; + } print "
'; - $checkdepositstatic->id=$objp->rowid; - $checkdepositstatic->ref=($objp->ref?$objp->ref:$objp->rowid); - $checkdepositstatic->statut=$objp->statut; - print $checkdepositstatic->getNomUrl(1); - print ''.dol_print_date($db->jdate($objp->dp),'day').''; - if ($objp->bid) print ''.img_object($langs->trans("ShowAccount"),'account').' '.$objp->label.''; - else print ' '; - print ''.$objp->nbcheque.''.price($objp->amount).''; - print $checkdepositstatic->LibStatut($objp->statut,5); - print "
'; + $checkdepositstatic->id=$objp->rowid; + $checkdepositstatic->ref=($objp->ref?$objp->ref:$objp->rowid); + $checkdepositstatic->statut=$objp->statut; + print $checkdepositstatic->getNomUrl(1); + print ''.dol_print_date($db->jdate($objp->dp),'day').''; + if ($objp->bid) print ''.img_object($langs->trans("ShowAccount"),'account').' '.$objp->label.''; + else print ' '; + print ''.$objp->nbcheque.''.price($objp->amount).''; + print $checkdepositstatic->LibStatut($objp->statut,5); + print "
'.$langs->trans("None")."
"; print "\n"; } @@ -192,6 +202,6 @@ else dol_print_error($db); } -$db->close(); llxFooter(); +$db->close(); diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 45c9d0b526b..35d0f838ff9 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -906,7 +906,7 @@ class Paiement extends CommonObject if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.$this->ref.$linkend; + if ($withpicto != 2) $result.=$link.($this->ref?$this->ref:$this->id).$linkend; return $result; } diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 8231f607ef7..6e3d31364ce 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -305,6 +305,5 @@ else dol_print_error($db); } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 649179c1082..4082ebbae80 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -288,9 +288,10 @@ if ($result) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; - $moreforfilter.=$langs->trans('Categories'). ': '; + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$formother->select_categories(Categorie::TYPE_CONTACT,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } if ($moreforfilter) { @@ -299,7 +300,7 @@ if ($result) print ''; } - print ''; + print '
'; // Ligne des titres print ''; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 97d20e2acb1..a4f719cf7f5 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -136,26 +136,29 @@ if ($resql) print ''; if ($optioncss != '') print ''; - print '
'; // If the user can view prospects other than his' $moreforfilter=''; if ($user->rights->societe->client->voir || $socid) { $langs->load("commercial"); + $moreforfilter.='
'; $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); - $moreforfilter.='       '; + $moreforfilter.='
'; } - if ($moreforfilter) + if (! empty($moreforfilter)) { - print ''; - print ''; + print '
'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
'; } + print '
'; - print $moreforfilter; - print '
'; print ''; $param='&search_contract='.$search_contract; diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php index 5693031c630..8fb33850919 100644 --- a/htdocs/fourn/list.php +++ b/htdocs/fourn/list.php @@ -195,9 +195,10 @@ if ($resql) if (! empty($conf->categorie->enabled)) { require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php'; + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_SUPPLIER,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } if ($moreforfilter) { @@ -209,8 +210,8 @@ if ($resql) print ''; } - print '
'; - + print '
'; + print ''; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,'valign="middle"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Zip"),$_SERVER["PHP_SELF"],"s.zip","",$param,'valign="middle"',$sortfield,$sortorder); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 68e6143c48c..d973a3d41ef 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -281,8 +281,6 @@ else print ''; print ''; - print '
'; - // Filter on categories $moreforfilter=''; $colspan=6; @@ -294,19 +292,23 @@ else if (! empty($conf->categorie->enabled)) { - $moreforfilter.=$langs->trans('Categories'). ': '; + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ',1); - $moreforfilter.='       '; + $moreforfilter.='
'; } if ($moreforfilter) { - print ''; - print ''; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; } // Lignes des titres + print '
'; + print '
'; print $moreforfilter; - print '
'; print ''; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "p.label",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index 8bd2096af69..cee05f69340 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -215,27 +215,35 @@ if ($resql) print ''; print ''; - print '
'; - // Filter on categories $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ'); - $moreforfilter.='           '; + $moreforfilter.='
'; } + + $moreforfilter.='
'; $moreforfilter.=$langs->trans("StockTooLow").' '; - if ($moreforfilter) - { - print '
'; - print ''; - } + $moreforfilter.=''; + + if (! empty($moreforfilter)) + { + print '
'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
'; + } + $param="&tosell=$tosell&tobuy=$tobuy".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref"; - + + print '
'; - print $moreforfilter; - print '
'; + // Lignes des titres print ""; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/product/reassortlot.php b/htdocs/product/reassortlot.php index 86410df8a00..d7f5905fbd3 100644 --- a/htdocs/product/reassortlot.php +++ b/htdocs/product/reassortlot.php @@ -227,27 +227,32 @@ if ($resql) print ''; print ''; - print '
'; - // Filter on categories $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categorie::TYPE_PRODUCT,$search_categ,'search_categ'); - $moreforfilter.='           '; + $moreforfilter.='
'; } //$moreforfilter.=$langs->trans("StockTooLow").' '; - if ($moreforfilter) - { - print ''; - print ''; - } + + if (! empty($moreforfilter)) + { + print '
'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
'; + } + $param="&tosell=$tosell&tobuy=$tobuy".(isset($type)?"&type=$type":"")."&fourn_id=$fourn_id&snom=$snom&sref=$sref&batch=$batch&eatby=$eatby&sellby=$sellby"; + print '
'; - print $moreforfilter; - print '
'; + // Lignes des titres print ""; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.ref",$param,"","",$sortfield,$sortorder); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 8e98bf9e93f..16fac9bb1bd 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -274,15 +274,18 @@ if ($resql) if (! empty($moreforfilter)) { print '
'; + //print '
'; + //print ''; + } - print '
'; print $moreforfilter; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print ''; - } + //print '
'; - + print '
'; + print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php index 082fbdd8d7b..39484f05014 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/index.php @@ -141,7 +141,7 @@ if (! empty($moreforfilter)) print ''; } -print '
'; +print '
'; print ''; print ''; print ''; diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index d31b10ff5ef..2801ebb8855 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -146,9 +146,7 @@ $nav.=''; print_barre_liste('Title of my list', 3, $_SERVER["PHP_SELF"], '', '', '', 'Text in middle', 20, 5000, '', 0, $nav); -?> -
'.$langs->trans("Project").''.$langs->trans("ProjectStatus").'
-'; $moreforfilter.=$langs->trans('This is a select list for a filter A'). ': '; $cate_arbo = array('field1'=>'value1a into the select list A','field2'=>'value2a'); @@ -175,11 +173,15 @@ $moreforfilter.=''; if (! empty($moreforfilter)) { - print ''; - print ''; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; } + +print '
'; + print '
'; print $moreforfilter; - print '
'; ?> trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> @@ -188,7 +190,9 @@ if (! empty($moreforfilter)) -
getNomUrl(1); ?>b1c1
a2b2c2
+'; +?>
diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index a5792642a64..5e73552e231 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -321,15 +321,18 @@ if ($resql) $moreforfilter=''; if (! empty($conf->categorie->enabled)) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('Categories'). ': '; $moreforfilter.=$htmlother->select_categories(Categories::TYPE_CUSTOMER,$search_categ,'search_categ'); - $moreforfilter.='       '; + $moreforfilter.='
'; } // If the user can view prospects other than his' if ($user->rights->societe->client->voir || $socid) { + $moreforfilter.='
'; $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$htmlother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='
'; } if ($moreforfilter) { @@ -349,8 +352,8 @@ if ($resql) print ''; } - print ''; - + print '
'; + // Lines of titles print ''; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b6987ed42cc..9f5376947da 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -452,8 +452,10 @@ textarea.centpercent { div.divsearchfield { float: ; margin-: 12px; - margin-top: 1px; - margin-bottom: 2px; + margin-: 2px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 2px; } div.confirmmessage { padding-top: 6px; @@ -1934,7 +1936,7 @@ td.border, div.tagtable div div.border { /* Main boxes */ -table.noborder, table.formdoc, div.noborder { +table.liste, table.noborder, table.formdoc, div.noborder { width: 100%; border-collapse: separate !important; @@ -1962,25 +1964,28 @@ table.noborder, table.formdoc, div.noborder { -webkit-box-shadow: 2px 2px 4px #CCC; box-shadow: 2px 2px 4px #CCC; - -moz-border-radius: 0.2em; +/* -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; - border-radius: 0.2em; + border-radius: 0.2em;*/ } -table.noborder tr, div.noborder form { +table.liste tr, table.noborder tr, div.noborder form { border-top-color: #FEFEFE; border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; - border-left-color: #BBBBBB; + border-left-color: #BBB; border-left-style: solid; min-height: 20px; } -table.noborder th, table.noborder td, div.noborder form, div.noborder form div { +table.liste th, table.noborder th { + padding: 10px 2px 10px 3px; /* t r b l */ +} +table.liste td, table.noborder td, div.noborder form, div.noborder form div { padding: 5px 2px 5px 3px; /* t r b l */ } @@ -2008,42 +2013,12 @@ td.borderright { } -/* For lists */ - -table.liste { - width: 100%; - - border-collapse: collapse; -/* border-top-color: #FEFEFE; - border-top-width: 1px; - border-top-color: #CCC; - border-top-style: solid; -*/ - - border-right-width: 1px; - border-right-color: #CCC; - border-right-style: solid; - -/* - border-bottom-width: 1px; - border-bottom-color: #BBBBBB; - border-bottom-style: solid; -*/ - border-left-width: 1px; - border-left-color: #CCC; - border-left-style: solid; - - margin-bottom: 2px; - margin-top: 0px; - - -moz-box-shadow: 0px 3px 4px #CCC; - -webkit-box-shadow: 0px 3px 4px #CC; - box-shadow: 0px 3px 4px #CCC; -} -table.liste td { - padding-right: 2px; +/* For table with no filter before */ +table.listwithfilterbefore { + border-top: none !important; } + .tagtable, .table-border { display: table; } .tagtr, .table-border-row { display: table-row; } .tagtd, .table-border-col, .table-key-border-col, .table-val-border-col { display: table-cell; } @@ -2285,27 +2260,28 @@ div.liste_titre { div.liste_titre { min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height does not work either for div */ - padding-left: 3px; padding-top: 2px; padding-bottom: 2px; border-right-width: 1px; - border-right-color: #CCC; + border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; - border-left-color: #CCC; + border-left-color: #BBB; border-left-style: solid; border-top-width: 1px; - border-top-color: #CCC; + border-top-color: #BBB; border-top-style: solid; } div.liste_titre_bydiv { box-shadow: none; border-collapse: collapse; display: table; - padding: 2px 2px 2px 0; + padding: 2px 0px 2px 0; + box-shadow: 2px 2px 4px #CCC; + width: calc(100% - 1px); /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { From 82428fea689b7ad20d0700447b0ebdd15fbe6d21 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Oct 2015 13:01:50 +0200 Subject: [PATCH 17/21] NEW: Only arrow of current sorted field is visible into table views. This save a lot of spaces. You can click on the column title to sort. This make clickable area larger and click to sort is easier. --- htdocs/core/lib/functions.lib.php | 43 +++++++++++++++++++++---------- htdocs/societe/list.php | 7 ----- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 81f14683383..faa7c5ee6c2 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2669,7 +2669,8 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m $sortorder=strtoupper($sortorder); $out=''; - + $sortimg=''; + $tag='th'; if ($thead==2) $tag='div'; @@ -2678,25 +2679,33 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="'.$prefix.'liste_titre_sel" '. $moreattrib.'>'; else $out.= '<'.$tag.' class="'.$prefix.'liste_titre" '. $moreattrib.'>'; - if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $options=preg_replace('/sortfield=([a-zA-Z0-9,\s\.]+)/i','',$moreparam); $options=preg_replace('/sortorder=([a-zA-Z0-9,\s\.]+)/i','',$options); $options=preg_replace('/&+/i','&',$options); if (! preg_match('/^&/',$options)) $options='&'.$options; - if ($sortorder == 'DESC' ) $out.= ''; - if ($sortorder == 'ASC' ) $out.= ''; + if ($field != $sortfield) + { + if ($sortorder == 'DESC') $out.= ''; + if ($sortorder == 'ASC' || ! $sortorder) $out.= ''; + } + else + { + if ($sortorder == 'DESC' || ! $sortorder) $out.= ''; + if ($sortorder == 'ASC') $out.= ''; + } } $out.=$name; - if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $out.=''; } - if (empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field + if (empty($thead) && $field) // If this is a sort field { $options=preg_replace('/sortfield=([a-zA-Z0-9,\s\.]+)/i','',$moreparam); $options=preg_replace('/sortorder=([a-zA-Z0-9,\s\.]+)/i','',$options); @@ -2704,27 +2713,33 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if (! preg_match('/^&/',$options)) $options='&'.$options; //print " "; - $out.= ''; + $sortimg.= ''; + $sortimg.= ''; if (! $sortorder || $field != $sortfield) { - $out.= ''.img_down("A-Z",0).''; - $out.= ''.img_up("Z-A",0).''; + //$out.= ''.img_down("A-Z",0).''; + //$out.= ''.img_up("Z-A",0).''; } else { if ($sortorder == 'DESC' ) { - $out.= ''.img_down("A-Z",0).''; - $out.= ''.img_up("Z-A",1).''; + //$out.= ''.img_down("A-Z",0).''; + //$out.= ''.img_up("Z-A",1).''; + $sortimg.= img_up("Z-A",0); } if ($sortorder == 'ASC' ) { - $out.= ''.img_down("A-Z",1).''; - $out.= ''.img_up("Z-A",0).''; + //$out.= ''.img_down("A-Z",1).''; + //$out.= ''.img_up("Z-A",0).''; + $sortimg.= img_down("A-Z",0); } } - $out.= ''; + $sortimg.= ''; } + + $out.=$sortimg; + $out.=''; return $out; diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 5e73552e231..80e4c553dc1 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -333,13 +333,6 @@ if ($resql) $moreforfilter.=$langs->trans('SalesRepresentatives'). ': '; $moreforfilter.=$htmlother->select_salesrepresentatives($search_sale,'search_sale',$user); $moreforfilter.=''; - } - if ($moreforfilter) - { - print ''; - print ''; } */ if (! empty($moreforfilter)) From f29c03c9223592bfb7b6869b54f919d12a36577e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Oct 2015 16:35:14 +0200 Subject: [PATCH 18/21] Start to work on a multiselect component to select which fields to show into dolibarr lists. --- htdocs/core/class/html.form.class.php | 96 +++++++++++++++++++++++--- htdocs/societe/list.php | 48 +++++++++---- htdocs/theme/eldy/img/list.png | Bin 0 -> 83 bytes htdocs/theme/eldy/style.css.php | 55 +++++++++++++++ htdocs/theme/md/img/list.png | Bin 0 -> 83 bytes 5 files changed, 177 insertions(+), 22 deletions(-) create mode 100644 htdocs/theme/eldy/img/list.png create mode 100644 htdocs/theme/md/img/list.png diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 61afec22569..52b4290e83d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4591,34 +4591,36 @@ class Form { global $conf, $langs; + $out = ''; + // Add code for jquery to use multiselect if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; - print ' + $out.=' + + '; + return $out; + } /** * Render list of categories linked to object with id $id and type $type diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 80e4c553dc1..501e54cce11 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -208,9 +208,9 @@ $title=$langs->trans("ListOfThirdParties"); $sql = "SELECT s.rowid, s.nom as name, s.barcode, s.town, s.datec, s.code_client, s.code_fournisseur, "; $sql.= " st.libelle as stcomm, s.prefix_comm, s.client, s.fournisseur, s.canvas, s.status as status,"; -$sql.= " s.siren as idprof1, s.siret as idprof2, ape as idprof3, idprof4 as idprof4"; -$sql.= ",s.fk_pays"; -$sql.= ",typent.code as typent_code"; +$sql.= " s.siren as idprof1, s.siret as idprof2, ape as idprof3, idprof4 as idprof4,"; +$sql.= " s.fk_pays, s.tms as date_update, s.datec as date_creation,"; +$sql.= " typent.code as typent_code"; // We'll need these fields in order to filter by sale (including the case where the user can only see his prospects) if ($search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We'll need these fields in order to filter by categ @@ -345,10 +345,29 @@ if ($resql) print ''; } + // Define list of fields to show into list + $arrayfields=array( + 's.nom'=>array('label'=>$langs->trans("Company"), 'checked'=>1), + 's.barcode'=>array('label'=>$langs->trans("BarCode"), 'checked'=>1, 'cond'=>(! empty($conf->barcode->enabled))), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>1), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>1), + 's.siren'=>array('label'=>$langs->trans("ProfId1Short"), 'checked'=>1), + 's.siret'=>array('label'=>$langs->trans("ProfId2Short"), 'checked'=>1), + 's.ape'=>array('label'=>$langs->trans("ProfId3Short"), 'checked'=>1), + 's.idprof4'=>array('label'=>$langs->trans("ProfId4Short"), 'checked'=>1), + 's.status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>200), + 's.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 's.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + ); + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) + { + $selectotherfields=$form->multiSelectArrayWithCheckbox('selectotherfields', $arrayfields); + } + print '
'; - print $moreforfilter; - print '
'; - - // Lines of titles - print ''; + + print ''; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); if (! empty($conf->barcode->enabled)) print_liste_field_titre($langs->trans("BarCode"), $_SERVER["PHP_SELF"], "s.barcode",$param,'','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Town"),$_SERVER["PHP_SELF"],"s.town","",$param,'',$sortfield,$sortorder); @@ -363,7 +382,7 @@ if ($resql) $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($selectotherfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; // Fields title search @@ -372,18 +391,19 @@ if ($resql) print ''; print ''; if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only; - print ''; + + print ''; print ''; // Barcode if (! empty($conf->barcode->enabled)) { print ''; } // Town print ''; //Country print ''; // IdProf1 print ''; // IdProf2 print ''; // IdProf3 print ''; // IdProf4 print ''; // Type (customer/prospect/supplier) print '
'; - print ''; + print ''; print ''; - print ''; + print ''; print ''; @@ -395,19 +415,19 @@ if ($resql) print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; diff --git a/htdocs/theme/eldy/img/list.png b/htdocs/theme/eldy/img/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f5df34a3bc9f8393c23f35e25fb7b18b4b51654b GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mq&!_5Ln;`PC2l1!2{fHxmMCBf f>~dQxy@i3{%~LbRV2?L>KvfK$u6{1-oD!M<+N2cH literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 9f5376947da..2eddc0eba23 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -3487,6 +3487,61 @@ a span.select2-chosen } +/* ============================================================================== */ +/* Multiselect with checkbox */ +/* ============================================================================== */ + +dl.dropdown { + margin:0px; + padding:0px; +} +.dropdown dd, .dropdown dt { + margin:0px; + padding:0px; +} +.dropdown ul { + margin: -1px 0 0 0; + text-align: left; +} +.dropdown dd { + position:relative; +} +.dropdown dt a { + display:block; + overflow: hidden; + border:0; +} +.dropdown dt a span, .multiSel span { + cursor:pointer; + display:inline-block; + padding: 0 3px 2px 0; +} +.dropdown dd ul { + background-color: #FFF; + border: 1px solid #888; + display:none; + right:0px; /* pop is align on right */ + padding: 2px 15px 2px 5px; + position:absolute; + top:2px; + list-style:none; + max-height: 200px; + overflow: auto; +} +.dropdown span.value { + display:none; +} +.dropdown dd ul li { + white-space: nowrap; +} +.dropdown dd ul li a { + padding:5px; + display:block; +} +.dropdown dd ul li a:hover { + background-color:#fff; +} + /* ============================================================================== */ /* JMobile */ diff --git a/htdocs/theme/md/img/list.png b/htdocs/theme/md/img/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f5df34a3bc9f8393c23f35e25fb7b18b4b51654b GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mq&!_5Ln;`PC2l1!2{fHxmMCBf f>~dQxy@i3{%~LbRV2?L>KvfK$u6{1-oD!M<+N2cH literal 0 HcmV?d00001 From 53e4cb3af926bf52c06bf3a2faee75346ae270b7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Oct 2015 17:21:38 +0200 Subject: [PATCH 19/21] Several fix in CSS --- htdocs/theme/eldy/img/sort_asc.png | Bin 256 -> 248 bytes htdocs/theme/eldy/img/sort_desc.png | Bin 264 -> 260 bytes htdocs/theme/eldy/style.css.php | 10 +- htdocs/theme/md/style.css.php | 150 ++++++++++++++++++++++------ 4 files changed, 123 insertions(+), 37 deletions(-) diff --git a/htdocs/theme/eldy/img/sort_asc.png b/htdocs/theme/eldy/img/sort_asc.png index aca0f6eb77aa8b601a073daa9a94bfa9bd5cc7e8..82b250c72bd73cedf7196138285647383a216300 100644 GIT binary patch delta 177 zcmV;i08ama0{8)tB#|*Le+mf>G6?Z8qBsBm0EJ0JK~y-)?b4wQ!cY{3(Q^@ykT3;~ z88D22M5EaQ24D{qiy-j`3@PSfsA(Er+SHKrPd@kVQ7+Inu)wte)m<>_CxY!z;nh-wZQEV^ f@24HH5gTA1#Wet2_%IXM00000NkvXXu0mjf_YO-w delta 183 zcmV;o07(D%0e}LKBnkm@Qb$4nuFf3kks&dE1p^K=E9l_^c>n+afJsC_R5;7+(lHJ} zK@fo9Sp|v2DRj=DaSWwe?H lro}RMm;UG8zJi({KO)0Fg;VK~y-)?bIO-gFq04;r}7pgoIPn z^$ayV2C}-Ed(Z>)9#vcfiAU5BFoRh|rwdI;ieQpwcHew*WM-^22`kQy?bzQiNx7t6 zQs<+=u3vW|n1IIwdjk3yGYjAer~}jh=V(9n r8NfR*0L5%~0d@dNAf4-Kv&V4+V3ZPE5OdhM00000NkvXXu0mjf9C=JO delta 191 zcmV;w06_nQ0*C^TBnkm@Qb$4nuFf3kks&dE1p^K>AJ9(5jQ{`uh)G02R5;7+)G-bL zQ5Xc^Sp|v2DRj=DaSWwe?H(M!Jyb5D)GIWynoqNpJeFh=ik;+dUS_`XRY+GEq{H-B zkNpx`CaII$3Rfpt6;~+T2nXdHF)8g{VZj{NC+LF3tIa#C!tM#%H}79#!4#(kI%D=K tuHS|QYuvGE>wba_vBkKpTm9|l_yFr5ciURC7Lxz~002ovPDHLkV1mzcQkDP! diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 2eddc0eba23..62707beec64 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -537,7 +537,7 @@ td.showDragHandle { float: none; vertical-align: top; } -#id-right { /* This must stay id-right ant not be replaced with echo $right */ +#id-right { /* This must stay id-right and not be replaced with echo $right */ width: 100%; } #id-left { @@ -1894,7 +1894,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { border: 1px solid #E0E0E0; - border-collapse: collapse; + border-collapse: collapse !important; padding: 1px 2px 1px 3px; /* t r b l */ } @@ -3362,7 +3362,7 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-color: #FFF !important; border-radius: inherit !important; } -.paging_full_numbers a.paginate_button_disabled:hover { +.paging_full_numbers a.paginate_button_disabled:hover, .paging_full_numbers a.disabled:hover { background-color: #FFF !important; } .paginate_button, .paginate_active { @@ -3390,7 +3390,9 @@ div.dataTables_length { div.dataTables_length select { background: #fff; } - +.dataTables_wrapper .dataTables_paginate { + padding-top: 0px !important; +} /* ============================================================================== */ /* Select2 */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 0db79b5470a..336505215b5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -456,6 +456,10 @@ textarea.centpercent { div.divsearchfield { float: ; margin-: 12px; + margin-: 2px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 2px; } div.confirmmessage { padding-top: 6px; @@ -1788,7 +1792,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { border: 1px solid #f4f4f4; - border-collapse: collapse; + border-collapse: collapse !important; padding: 1px 2px 1px 3px; /* t r b l */ } @@ -1822,7 +1826,7 @@ td.border, div.tagtable div div.border { /* Main boxes */ -table.noborder, table.formdoc, div.noborder { +table.liste, table.noborder, table.formdoc, div.noborder { width: 100%; border-collapse: separate !important; @@ -1856,6 +1860,9 @@ table.noborder tr, div.noborder form { height: 26px; } +table.liste th, table.noborder th { + padding: 5px 2px 5px 3px; /* t r b l */ +} table.noborder th, table.noborder td, div.noborder form, div.noborder form div { padding: 1px 2px 1px 3px; /* t r b l */ } @@ -1883,35 +1890,9 @@ td.borderright { border-right-style: solid !important; } -/* For lists */ - -table.liste { - width: 100%; - border-collapse: collapse; - border-top-color: #FEFEFE; - - border-right-width: 1px; - border-right-color: #CCC; - border-right-style: solid; - -/* - border-bottom-width: 1px; - border-bottom-color: #BBBBBB; - border-bottom-style: solid; -*/ - border-left-width: 1px; - border-left-color: #CCC; - border-left-style: solid; - - margin-bottom: 2px; - margin-top: 0px; - - -moz-box-shadow: 0px 3px 4px #CCC; - -webkit-box-shadow: 0px 3px 4px #CC; - box-shadow: 0px 3px 4px #CCC; -} -table.liste td { - padding-right: 2px; +/* For table with no filter before */ +table.listwithfilterbefore { + border-top: none !important; } .tagtable, .table-border { display: table; } @@ -2050,6 +2031,9 @@ div.pagination li.pagination .active { div.pagination li.paginationafterarrows { margin-left: 10px; } +.paginationatbottom { + margin-top: 9px; +} /* Prepare to remove class pair - impair .noborder > tbody > tr:nth-child(even) td { @@ -2139,6 +2123,29 @@ div.liste_titre .tagtd { } div.liste_titre { min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height doe not work either for div */ + + padding-top: 2px; + padding-bottom: 2px; + + border-right-width: 1px; + border-right-color: #BBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #BBB; + border-left-style: solid; + + border-top-width: 1px; + border-top-color: #BBB; + border-top-style: solid; +} +div.liste_titre_bydiv { + box-shadow: none; + border-collapse: collapse; + display: table; + padding: 2px 0px 2px 0; + box-shadow: 2px 2px 4px #CCC; + width: calc(100% - 1px); /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { @@ -2425,7 +2432,12 @@ td.legendLabel { padding: 2px 2px 2px 0 !important; } margin-bottom: 2px; margin-top: 2px; } -.photointooltip { +.photowithmargin { +/* -webkit-box-shadow: 0px 0px 3px #777; + -moz-box-shadow: 0px 0px 3px #777; + box-shadow: 0px 0px 3px #777;*/ +} +.photointoolitp { margin-top: 8px; float: left; /*text-align: center; */ @@ -3221,7 +3233,7 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-color: #FFF !important; border-radius: inherit !important; } -.paging_full_numbers a.paginate_button_disabled:hover { +.paging_full_numbers a.paginate_button_disabled:hover, .paging_full_numbers a.disabled:hover { background-color: #FFF !important; } .paginate_button, .paginate_active { @@ -3242,10 +3254,26 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 { background-image: none; } +div.dataTables_length { + float: right !important; + padding-left: 8px; +} +div.dataTables_length select { + background: #fff; +} +.dataTables_wrapper .dataTables_paginate { + padding-top: 0px !important; +} + + /* ============================================================================== */ /* Select2 */ /* ============================================================================== */ +.selectoptiondisabledwhite { + background: #FFFFFF !important; +} + .select2-choice, .select2-drop.select2-drop-above.select2-drop-active, .select2-container-active .select2-choice, @@ -3333,6 +3361,62 @@ a span.select2-chosen } +/* ============================================================================== */ +/* Multiselect with checkbox */ +/* ============================================================================== */ + +dl.dropdown { + margin:0px; + padding:0px; +} +.dropdown dd, .dropdown dt { + margin:0px; + padding:0px; +} +.dropdown ul { + margin: -1px 0 0 0; + text-align: left; +} +.dropdown dd { + position:relative; +} +.dropdown dt a { + display:block; + overflow: hidden; + border:0; +} +.dropdown dt a span, .multiSel span { + cursor:pointer; + display:inline-block; + padding: 0 3px 2px 0; +} +.dropdown dd ul { + background-color: #FFF; + border: 1px solid #888; + display:none; + right:0px; /* pop is align on right */ + padding: 2px 15px 2px 5px; + position:absolute; + top:2px; + list-style:none; + max-height: 200px; + overflow: auto; +} +.dropdown span.value { + display:none; +} +.dropdown dd ul li { + white-space: nowrap; +} +.dropdown dd ul li a { + padding:5px; + display:block; +} +.dropdown dd ul li a:hover { + background-color:#fff; +} + + /* ============================================================================== */ /* JMobile */ /* ============================================================================== */ From b785db86a8c5ed58fec47dcc24dedf0d34eb2a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Fri, 9 Oct 2015 19:00:50 +0200 Subject: [PATCH 20/21] Fix unittests regression Introduced by incomplete renaming of modSyncSupplierWebServices to modWebServicesClient in 4b103ba8ce6c2da955ab8ecb17258b5ba0f52b40 --- htdocs/core/modules/modWebServicesClient.class.php | 2 +- htdocs/install/filelist.xml | 2 +- test/phpunit/ModulesTest.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modWebServicesClient.class.php b/htdocs/core/modules/modWebServicesClient.class.php index dd13d8920db..307f3420640 100644 --- a/htdocs/core/modules/modWebServicesClient.class.php +++ b/htdocs/core/modules/modWebServicesClient.class.php @@ -18,7 +18,7 @@ /** * \defgroup webservices Module webservices * \brief Module to enable client for supplier WebServices - * \file htdocs/core/modules/modSyncSupplierWebServices.class.php + * \file htdocs/core/modules/modWebServicesClient.class.php * \ingroup webservices * \brief File to describe client for supplier webservices module */ diff --git a/htdocs/install/filelist.xml b/htdocs/install/filelist.xml index fb931f9fcdc..6e5416e2481 100644 --- a/htdocs/install/filelist.xml +++ b/htdocs/install/filelist.xml @@ -6873,7 +6873,7 @@ 69982f8171837cd8669bfe9c2f08dc8f ddf6dfeb77c98411b4d5434f20c24483 c23010fa68c5996cb5977f84a6bb7ceb -90a300e9bd857966226c68dca8660456 +822961d86ae558588632b3b08c085b89 d41d8cd98f00b204e9800998ecf8427e b4e9f07aa5268af49d3bb9429719b201 8293bd60fe13ac64c22f8500b346821c diff --git a/test/phpunit/ModulesTest.php b/test/phpunit/ModulesTest.php index 3c8b96ffe2a..9210ae1a46a 100755 --- a/test/phpunit/ModulesTest.php +++ b/test/phpunit/ModulesTest.php @@ -133,7 +133,7 @@ class ModulesTest extends PHPUnit_Framework_TestCase 'Facture','Fckeditor','Ficheinter','Fournisseur','FTP','GeoIPMaxmind','Gravatar','Holiday','Import','Label','Ldap', 'Mailing','MailmanSpip','Margin', 'Notification','OpenSurvey','Paybox','Paypal','Prelevement','Product','ProductBatch','Projet','Propale', - 'Salaries','Service','Skype','Societe','Stock','SyncSupplierWebServices','Syslog','Tax','User','WebServices','Workflow'); + 'Salaries','Service','Skype','Societe','Stock','WebServicesClient','Syslog','Tax','User','WebServices','Workflow'); foreach($modulelist as $modlabel) { require_once(DOL_DOCUMENT_ROOT.'/core/modules/mod'.$modlabel.'.class.php'); From a1d37f92cbfd399045814af5bff71099c03fe26d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 9 Oct 2015 20:00:43 +0200 Subject: [PATCH 21/21] Several fix in CSS --- htdocs/adherents/stats/byproperties.php | 2 +- htdocs/adherents/stats/geo.php | 2 +- htdocs/adherents/stats/index.php | 12 +++-- htdocs/comm/propal/stats/index.php | 12 +++-- htdocs/commande/list.php | 6 +-- htdocs/commande/stats/index.php | 13 +++-- htdocs/compta/facture.php | 14 ++--- htdocs/compta/facture/stats/index.php | 13 +++-- htdocs/contrat/card.php | 13 ++--- htdocs/contrat/list.php | 52 +++++++++++++++---- htdocs/product/stats/commande.php | 6 ++- htdocs/product/stats/commande_fournisseur.php | 6 ++- htdocs/product/stats/contrat.php | 8 +-- htdocs/product/stats/facture.php | 11 ++-- htdocs/product/stats/facture_fournisseur.php | 6 ++- htdocs/product/stats/propal.php | 6 ++- htdocs/projet/stats/index.php | 14 +++-- htdocs/theme/eldy/style.css.php | 11 +++- htdocs/theme/md/style.css.php | 12 +++-- 19 files changed, 143 insertions(+), 76 deletions(-) diff --git a/htdocs/adherents/stats/byproperties.php b/htdocs/adherents/stats/byproperties.php index 6f5edf529d9..dcf77a2dbad 100644 --- a/htdocs/adherents/stats/byproperties.php +++ b/htdocs/adherents/stats/byproperties.php @@ -116,7 +116,7 @@ else } // Print array -print ''; +print '
'; print ''; print ''; print ''; diff --git a/htdocs/adherents/stats/geo.php b/htdocs/adherents/stats/geo.php index 3b2ca4c3ecd..f8b6a54f7b7 100644 --- a/htdocs/adherents/stats/geo.php +++ b/htdocs/adherents/stats/geo.php @@ -282,7 +282,7 @@ if (count($arrayjs) && $mode == 'memberbycountry') if ($mode) { // Print array / Affiche le tableau - print '
'.$langs->trans("Nature").''.$langs->trans("NbOfMembers").'
'; + print '
'; print ''; print ''; if ($label2) print ''; diff --git a/htdocs/adherents/stats/index.php b/htdocs/adherents/stats/index.php index a3c8fd69aad..43b994adafe 100644 --- a/htdocs/adherents/stats/index.php +++ b/htdocs/adherents/stats/index.php @@ -167,8 +167,8 @@ print '

'; $data = $stats->getAllByYear(); -print '
'.$label.''.$label2.'
'; -print ''; +print '
'; +print ''; print ''; print ''; print ''; @@ -176,14 +176,15 @@ print ''; print ''; $oldyear=0; +$var=false; foreach ($data as $val) { $year = $val['year']; - print $avg; while ($oldyear > $year+1) { // If we have empty year $oldyear--; - print ''; + $var=!$var; + print ''; print ''; print ''; } - print ''; + $var=!$var; + print ''; print '
'.$langs->trans("Year").''.$langs->trans("NbOfSubscriptions").''.$langs->trans("AmountTotal").''.$langs->trans("AmountAverage").'
'; print ''; print $oldyear; @@ -194,7 +195,8 @@ foreach ($data as $val) print '0
'; //print ''; print $year; diff --git a/htdocs/comm/propal/stats/index.php b/htdocs/comm/propal/stats/index.php index e99c7122a10..5b45020b7e1 100644 --- a/htdocs/comm/propal/stats/index.php +++ b/htdocs/comm/propal/stats/index.php @@ -234,7 +234,7 @@ print '
'; // Show filter box print '
'; print ''; - print ''; + print '
'; print ''; // Company print '
'.$langs->trans("Filter").'
'.$langs->trans("ThirdParty").''; @@ -262,8 +262,8 @@ print '
'; print '

'; //} -print ''; -print ''; +print '
'; +print ''; print ''; print ''; print ''; @@ -274,13 +274,15 @@ print ''; print ''; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while (! empty($year) && $oldyear > $year+1) { // If we have empty year $oldyear--; - print ''; + $var=!$var; + print ''; print ''; print ''; print ''; @@ -290,7 +292,7 @@ foreach ($data as $val) print ''; print ''; } - print ''; + print ''; print ''; print ''; print ''; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 200f9e66362..29d58eaf467 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -273,15 +273,15 @@ if ($resql) $moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300'); $moreforfilter.=''; } - // If the user can view prospects other than his' - if ($user->rights->societe->client->voir || $socid) + // If the user can view other users + if ($user->rights->user->user->lire) { $moreforfilter.='
'; $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='
'; } - // If the user can view prospects other than his' + // If the user can view categories or products if ($conf->categorie->enabled && $user->rights->produit->lire) { include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; diff --git a/htdocs/commande/stats/index.php b/htdocs/commande/stats/index.php index c4d48d8f72e..04cfad1732d 100644 --- a/htdocs/commande/stats/index.php +++ b/htdocs/commande/stats/index.php @@ -250,7 +250,7 @@ print '
'; // Show filter box print ''; print ''; - print '
'.$langs->trans("Year").''.$langs->trans("NbOfProposals").'%%
0?'&userid='.$userid:'').'">'.$oldyear.'0
0?'&userid='.$userid:'').'">'.$year.''.$val['nb'].''.round($val['nb_diff']).'
'; + print '
'; print ''; // Company print '
'.$langs->trans("Filter").'
'.$langs->trans("ThirdParty").''; @@ -275,8 +275,8 @@ print '
'; print '

'; //} -print ''; -print ''; +print '
'; +print ''; print ''; print ''; print ''; @@ -287,13 +287,15 @@ print ''; print ''; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while (! empty($year) && $oldyear > $year+1) { // If we have empty year $oldyear--; - print ''; + $var=!$var; + print ''; print ''; print ''; @@ -305,7 +307,8 @@ foreach ($data as $val) print ''; } - print ''; + $var=!$var; + print ''; print ''; print ''; print ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 5c19e054fd0..c736d4cd003 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2973,16 +2973,16 @@ else if ($id > 0 || ! empty($ref)) print '
'.$langs->trans("Year").''.$langs->trans("NbOfOrders").'%%
0?'&userid='.$userid:'').'">'.$oldyear.'0
0?'&userid='.$userid:'').'">'.$year.''.$val['nb'].''.round($val['nb_diff']).''; - print ''; + print '
'; // List of payments already done print ''; - print ''; - print ''; + print ''; + print ''; if (! empty($conf->banque->enabled)) - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; $var = true; @@ -3033,7 +3033,7 @@ else if ($id > 0 || ! empty($ref)) $i ++; } } else { - print ''; + print ''; } // } $db->free($result); diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index f61e92687f6..2b7e17d9369 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -234,7 +234,7 @@ print '
'; // Show filter box print ''; print ''; - print '
' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '' . $langs->trans('Type') . '' . ($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')) . '' . $langs->trans('Type') . '' . $langs->trans('BankAccount') . '' . $langs->trans('Amount') . ' ' . $langs->trans('BankAccount') . '' . $langs->trans('Amount') . ' 
' . $langs->trans("None") . '
' . $langs->trans("None") . '
'; + print '
'; print ''; // Company print '
'.$langs->trans("Filter").'
'.$langs->trans("ThirdParty").''; @@ -259,8 +259,8 @@ print '
'; print '

'; //} -print ''; -print ''; +print '
'; +print ''; print ''; print ''; print ''; @@ -271,13 +271,15 @@ print ''; print ''; $oldyear=0; +$var=true; foreach ($data as $val) { $year = $val['year']; while ($year && $oldyear > $year+1) { // If we have empty year $oldyear--; - print ''; + $var=!$var; + print ''; print ''; print ''; print ''; @@ -287,7 +289,8 @@ foreach ($data as $val) print ''; print ''; } - print ''; + $var=!$var; + print ''; print ''; print ''; print ''; diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 5615eaf76a4..f7363984fb8 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1407,26 +1407,19 @@ else print ''; - print ''; - print ''; - print ''; + print_liste_field_titre($staticcontratligne->LibStatut(0,3), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(4,3,0), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(4,3,1), '', '', '', '', 'width="16"'); + print_liste_field_titre($staticcontratligne->LibStatut(5,3), '', '', '', '', 'width="16"'); + print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; print ''; @@ -193,7 +225,8 @@ if ($resql) print ''; print ''; //print ''; - print ''; + print '\n"; @@ -253,6 +286,7 @@ if ($resql) print ''; print ''; print ''; + print ''; print "\n"; $i++; } diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index 9491b18da1e..f90235a143f 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -188,7 +188,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("CustomersOrders"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,$totalrecords,''); - print '
'; + print '
'; + print '
'; print $langs->trans('Period').' ('.$langs->trans("OrderDate") .') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -197,9 +198,10 @@ if ($id > 0 || ! empty($ref)) print ''; print '
'; print '
'; + print '
'; $i = 0; - print '
'.$langs->trans("Year").''.$langs->trans("NumberOfBills").'%%
0?'&userid='.$userid:'').'">'.$oldyear.'0
0?'&userid='.$userid:'').'">'.$year.''.$val['nb'].''.round($val['nb_diff']).''; if ($user->rights->contrat->creer && count($arrayothercontracts) && ($object->statut >= 0)) { - print ''; + print ''; print img_picto($langs->trans("MoveToAnotherContract"),'uparrow'); print ''; } - else { - print ' '; - } if ($user->rights->contrat->creer && ($object->statut >= 0)) { - print ''; + print ''; print img_edit(); print ''; } - else { - print ' '; - } if ( $user->rights->contrat->creer && ($object->statut >= 0)) { - print ' '; - print ''; + print ''; print img_delete(); print ''; } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index a4f719cf7f5..9619713859a 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -49,8 +49,10 @@ $search_ref_supplier=GETPOST('search_ref_supplier','alpha'); $sall=GETPOST('sall'); $search_status=GETPOST('search_status'); $socid=GETPOST('socid'); +$search_user=GETPOST('search_user','int'); +$search_sale=GETPOST('search_sale','int'); +$search_product_category=GETPOST('search_product_category','int'); -$search_sale = GETPOST('search_sale','int'); $optioncss = GETPOST('optioncss','alpha'); if (! $sortfield) $sortfield="c.rowid"; @@ -69,7 +71,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_name=""; $search_contract=""; $search_ref_supplier=""; - $search_sale=""; + $search_user=''; + $search_sale=''; + $search_product_category=''; $sall=""; $search_status=""; } @@ -82,6 +86,7 @@ if ($search_status == '') $search_status=1; */ $now=dol_now(); +$form=new Form($db); $formother = new FormOther($db); $socstatic = new Societe($db); @@ -99,8 +104,15 @@ $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= ", ".MAIN_DB_PREFIX."contrat as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat"; +if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=cd.fk_product'; +if ($search_user > 0) +{ + $sql.=", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.=", ".MAIN_DB_PREFIX."c_type_contact as tc"; +} $sql.= " WHERE c.fk_soc = s.rowid "; -$sql.= " AND c.entity = ".$conf->entity; +$sql.= ' AND c.entity IN ('.getEntity('contract', 1).')'; +if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category; if ($socid) $sql.= " AND s.rowid = ".$db->escape($socid); if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -122,6 +134,7 @@ if ($search_sale > 0) if ($sall) { $sql .= natural_search(array('s.nom', 'cd.label', 'cd.description'), $sall); } +if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='contrat' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; $sql.= " GROUP BY c.rowid, c.ref, c.datec, c.date_contrat, c.statut, c.ref_supplier, s.nom, s.rowid"; $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($conf->liste_limit + 1, $offset); @@ -147,7 +160,25 @@ if ($resql) $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); $moreforfilter.=''; } - + // If the user can view other users + if ($user->rights->user->user->lire) + { + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; + $moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); + $moreforfilter.='
'; + } + // If the user can view categories of products + if ($conf->categorie->enabled && $user->rights->produit->lire) + { + include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $moreforfilter.='
'; + $moreforfilter.=$langs->trans('IncludingProductWithTag'). ': '; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); + $moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1); + $moreforfilter.='
'; + } + if (! empty($moreforfilter)) { print '
'; @@ -174,10 +205,11 @@ if ($resql) //print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","$param",'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateContract"), $_SERVER["PHP_SELF"], "c.date_contrat","","$param",'align="center"',$sortfield,$sortorder); //print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","$param",'align="center"',$sortfield,$sortorder); - print '
'.$staticcontratligne->LibStatut(0,3).''.$staticcontratligne->LibStatut(4,3,0).''.$staticcontratligne->LibStatut(4,3,1).''.$staticcontratligne->LibStatut(5,3).'
  '; + print ''; print ''; print "
'.($obj->nb_running>0?$obj->nb_running:'').''.($obj->nb_expired>0?$obj->nb_expired:'').''.($obj->nb_closed>0 ?$obj->nb_closed:'').'
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"c.rowid","",$option,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$option,'',$sortfield,$sortorder); diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index e7a803c299c..3d117a7f40a 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -198,7 +198,8 @@ if ($id > 0 || ! empty($ref)) { } print_barre_liste($langs->trans("SuppliersOrders"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '
'; + print '
'; + print '
'; print $langs->trans('Period') . ' (' . $langs->trans("OrderDate") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -207,9 +208,10 @@ if ($id > 0 || ! empty($ref)) { print ''; print '
'; print '
'; + print '
'; $i = 0; - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/product/stats/contrat.php b/htdocs/product/stats/contrat.php index 84417c013b7..9d4d7d53abc 100644 --- a/htdocs/product/stats/contrat.php +++ b/htdocs/product/stats/contrat.php @@ -147,7 +147,7 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("Contrats"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,0,''); $i = 0; - print "
"; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"c.rowid","","&id=".$product->id,'',$sortfield,$sortorder); @@ -155,9 +155,9 @@ if ($id > 0 || ! empty($ref)) print_liste_field_titre($langs->trans("CustomerCode"),$_SERVER["PHP_SELF"],"s.code_client","","&id=".$product->id,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"c.date_contrat","","&id=".$product->id,'align="center"',$sortfield,$sortorder); //print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"c.amount","","&id=".$product->id,'align="right"',$sortfield,$sortorder); - print ''; - print ''; - print ''; + print_liste_field_titre($staticcontratligne->LibStatut(0,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($staticcontratligne->LibStatut(4,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); + print_liste_field_titre($staticcontratligne->LibStatut(5,3),$_SERVER["PHP_SELF"],"",'','','width="16"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; $contratstatic=new Contrat($db); diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index 2a79b97e399..6fb09bffa8b 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -22,7 +22,7 @@ /** * \file htdocs/product/stats/facture.php * \ingroup product service facture - * \brief Page des stats des factures clients pour un produit + * \brief Page of invoice statistics for a product */ require '../../main.inc.php'; @@ -128,7 +128,8 @@ if ($id > 0 || ! empty($ref)) print ''; - if ($user->rights->facture->lire) { + if ($user->rights->facture->lire) + { $sql = "SELECT distinct s.nom as name, s.rowid as socid, s.code_client,"; $sql.= " f.facnumber, d.total_ht as total_ht,"; $sql.= " f.datef, f.paye, f.fk_statut as statut, f.rowid as facid, d.qty"; @@ -189,7 +190,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("CustomersInvoices"),$page,$_SERVER["PHP_SELF"],"&id=".$product->id,$sortfield,$sortorder,'',$num,$totalrecords,''); - print '
'; + print '
'; + print '
'; print $langs->trans('Period').' ('.$langs->trans("DateInvoice") .') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -198,9 +200,10 @@ if ($id > 0 || ! empty($ref)) print ''; print '
'; print '
'; + print '
'; $i = 0; - print '
'.$staticcontratligne->LibStatut(0,3).''.$staticcontratligne->LibStatut(4,3).''.$staticcontratligne->LibStatut(5,3).'
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"s.rowid","",$option,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$option,'',$sortfield,$sortorder); diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index 9b56cee7552..677bff934a7 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -190,7 +190,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("SuppliersInvoices"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '
'; + print '
'; + print '
'; print $langs->trans('Period') . ' (' . $langs->trans("DateInvoice") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -199,9 +200,10 @@ if ($id > 0 || ! empty($ref)) print ''; print '
'; print '
'; + print '
'; $i = 0; - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "s.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index 690f9c8c421..295487344fd 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -191,7 +191,8 @@ if ($id > 0 || ! empty($ref)) } print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); - print '
'; + print '
'; + print '
'; print $langs->trans('Period') . ' (' . $langs->trans("DatePropal") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); @@ -200,9 +201,10 @@ if ($id > 0 || ! empty($ref)) print ''; print '
'; print '
'; + print '
'; $i = 0; - print '
'; + print '
'; print ''; print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "p.rowid", "", $option, '', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom", "", $option, '', $sortfield, $sortorder); diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index 42d367ce833..d28d7d6f14a 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -269,7 +269,8 @@ dol_fiche_head($head,'byyear',$langs->trans("Statistics"), 0, ''); print '
'; print ''; -print '
'; + +print '
'; print ''; // Company print '
'.$langs->trans("Filter").'
'.$langs->trans("ThirdParty").''; @@ -293,8 +294,8 @@ print '
'; print ''; print '

'; -print ''; -print ''; +print '
'; +print ''; print ''; print ''; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) @@ -305,13 +306,15 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) print ''; $oldyear=0; +$var=true; foreach ($data_all_year as $val) { $year = $val['year']; while ($year && $oldyear > $year+1) { // If we have empty year $oldyear--; - print ''; + $var=!$var; + print ''; print ''; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { @@ -321,7 +324,8 @@ foreach ($data_all_year as $val) print ''; print ''; } - print ''; + $var=!$var; + print ''; print ''; print ''; if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 62707beec64..5a163d0bbd2 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1562,9 +1562,11 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); margin-bottom: 0 0.2em 0 0.2em !important; + border-right: 1px solid #AAA !important; border-left: 1px solid #AAA !important; border-top: 1px solid #BBB !important; + -moz-border-radius:4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; @@ -1897,7 +1899,9 @@ table.border, table.dataTable, .table-border, .table-border-col, .table-key-bord border-collapse: collapse !important; padding: 1px 2px 1px 3px; /* t r b l */ } - +table.borderplus { + border: 1px solid #BBB; +} .border tbody tr, .border tbody tr td { height: 20px; } @@ -2374,6 +2378,10 @@ div.tabBar .noborder { box-shadow: 0px 0px 0px #DDD !important; } +#tablelines tr.liste_titre td, .paymenttable tr.liste_titre td, .margintable tr.liste_titre td, .tableforservicepart1 tr.liste_titre td { + border-bottom: 1px solid #AAA !important; +} + /* * Boxes @@ -3535,6 +3543,7 @@ dl.dropdown { } .dropdown dd ul li { white-space: nowrap; + font-weight: normal; } .dropdown dd ul li a { padding:5px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 336505215b5..4210804ce7d 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -251,6 +251,7 @@ input, textarea, select { border:solid 1px rgba(0,0,0,.3); border-top:solid 1px rgba(0,0,0,.3); border-bottom:solid 1px rgba(0,0,0,.2); + background-color: #FFF; /* box-shadow: 1px 1px 1px rgba(0,0,0,.2) inset;*/ padding:4px; margin-left:1px; @@ -1555,9 +1556,9 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); - border-right: 1px solid #CCCCCC; - border-left: 1px solid #f4f4f4; - border-top: 1px solid #D8D8D8; + border-right: 1px solid #AAA !important; + border-left: 1px solid #AAA !important; + border-top: 1px solid #BBB !important; -moz-border-radius:3px 3px 0px 0px; -webkit-border-radius:3px 3px 0px 0px; @@ -2243,6 +2244,10 @@ div.tabBar .noborder { box-shadow: 0px 0px 0px #f4f4f4 !important; } +#tablelines tr.liste_titre td, .paymenttable tr.liste_titre td, .margintable tr.liste_titre td, .tableforservicepart1 tr.liste_titre td { + border-bottom: 1px solid #AAA !important; +} + /* * Boxes @@ -3407,6 +3412,7 @@ dl.dropdown { } .dropdown dd ul li { white-space: nowrap; + font-weight: normal; } .dropdown dd ul li a { padding:5px;
'.$langs->trans("Year").''.$langs->trans("NbOfProjects").'
0?'&userid='.$userid:'').'">'.$oldyear.'0
0?'&userid='.$userid:'').'">'.$year.''.$val['nb'].'