Skip to content

Commit 5617d62

Browse files
authored
Merge pull request #24 from mapiolca/refactor-setup.php-and-update-readme
Refonte de la configuration TimesheetWeek
2 parents 07595d9 + 2b16aea commit 5617d62

File tree

8 files changed

+631
-322
lines changed

8 files changed

+631
-322
lines changed

ChangeLog.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
# CHANGELOG MODULE TIMESHEETWEEK FOR [DOLIBARR ERP CRM](https://www.dolibarr.org)
22

3-
## Non publié
3+
## 1.0
44

5+
- Ajout du statut "Scellée" / "Sealed" et des permissions associées.
6+
- Initial version.
57
- Ajout des compteurs de zones et de paniers dans l'entête des feuilles hebdomadaires.
68
- Recalcul automatique des compteurs de zones et de paniers à chaque enregistrement d'une feuille hebdomadaire.
79
- Affichage des compteurs de zones et de paniers dans la liste des feuilles hebdomadaires.
10+
- Ligne de total dans la liste hebdomadaire pour additionner heures, heures supplémentaires, zones et paniers, plus affichage de la date de validation.
811
- Affichage du libellé "Zone" devant chaque sélecteur quotidien.
912
- Ajout de la traduction "Meals" en "Repas".
1013
- Ajout du script de mise à jour SQL (`sql/update_all.sql`) pour créer les compteurs hebdomadaires sur les données existantes.
@@ -19,8 +22,8 @@
1922
- Filtre Multicompany de l'environnement aligné sur le multiselect natif dans la liste / Multicompany environment filter aligned with the native multiselect in the list.
2023
- Réorganisation des options de partage Multicompany pour séparer les feuilles et la numérotation avec les pictogrammes adaptés / Reorganised Multicompany sharing options to separate sheets and numbering with suitable pictograms.
2124
- Inversion des couleurs des statuts "Scellée" et "Refusée" pour reprendre les repères Dolibarr / Swapped colors of "Sealed" and "Refused" statuses to match Dolibarr visual cues.
22-
23-
## 1.0
24-
25-
- Ajout du statut "Scellée" / "Sealed" et des permissions associées.
26-
- Initial version
25+
- Refonte de la page de configuration en suivant le modèle DiffusionPlans pour harmoniser la gestion des masques de numérotation et des modèles PDF avec Dolibarr / Setup page redesigned following the DiffusionPlans template to align numbering masks and PDF templates with Dolibarr standards.
26+
- Activation des masques de numérotation via des commutateurs Dolibarr natifs / Numbering masks activated through native Dolibarr switches.
27+
- Ajout d'un onglet « À propos » récapitulant version, éditeur et ressources du module / Added an « À propos » tab listing version, publisher and module resources.
28+
- README bilingue (FR/EN) entièrement mis à jour / Fully refreshed bilingual (FR/EN) README.
29+
- Notification d'approbation en français corrigée pour utiliser l'accent « approuvée » sans entité HTML / French approval notification updated to use the plain "approuvée" accent instead of an HTML entity.

README.md

Lines changed: 60 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,84 @@
11
# TIMESHEETWEEK FOR [DOLIBARR ERP & CRM](https://www.dolibarr.org)
22

3-
## Features
4-
5-
- Statut "Scellée" / "Sealed" pour verrouiller les feuilles approuvées.
6-
- Redirection automatique vers la feuille existante en cas de doublon / Automatic redirect to the existing sheet when a duplicate is requested.
7-
8-
Description of the module...
9-
10-
- Suivi des compteurs hebdomadaires de zones et de paniers pour chaque feuille de temps.
11-
- Recalcul automatique des compteurs de zones et de paniers lors de chaque enregistrement.
12-
- Affichage des compteurs de zones et de paniers dans la liste des feuilles hebdomadaires.
13-
- Création rapide d'une feuille d'heures depuis le raccourci "Ajouter" du menu supérieur.
14-
- Compatibilité Multicompany pour partager les feuilles de temps et leur numérotation / Multicompany compatibility to share weekly timesheets and their numbering.
15-
- Inscription automatique de la configuration Multicompany lors de l'activation et nettoyage lors de la désactivation / Automatic registration of the Multicompany configuration on activation and cleanup on deactivation.
16-
- Affichage de l'entité dans la liste et la fiche lorsqu'on utilise Multicompany, avec badge natif sous la référence lorsque l'entité diffère / Display entity information in list and card when using Multicompany, with a native badge under the reference when the entity differs.
17-
- Sécurisation des requêtes SQL sur les feuilles et lignes par entité pour Multicompany / Secured SQL queries on sheets and lines with entity scoping for Multicompany.
18-
- Filtre multisélection de l'environnement respectant l'interface native de Dolibarr en Multicompany / Multiselect environment filter following Dolibarr native Multicompany interface.
19-
- Réorganisation des options Multicompany pour distinguer partage et numérotation avec les pictogrammes natifs / Reorganised Multicompany sharing options to split sharing and numbering with native pictograms.
20-
- Inversion des couleurs des statuts "Scellée" et "Refusée" pour correspondre au code couleur Dolibarr / Swapped colors of "Sealed" and "Refused" statuses to follow Dolibarr color codes.
21-
- Harmonisation du filtre de semaine de la liste avec la fiche via le sélecteur ISO / Harmonized week filter between list and card using the ISO selector.
22-
- Filtre de semaine en multi-sélection pour combiner plusieurs périodes directement depuis la liste / Multi-select week filter to combine several periods directly from the list.
23-
24-
<!--
25-
![Screenshot timesheetweek](img/screenshot_timesheetweek.png?raw=true "TimesheetWeek"){imgmd}
26-
-->
3+
## 🇫🇷 Présentation
274

28-
Other external modules are available on [Dolistore.com](https://www.dolistore.com).
29-
30-
## Translations
31-
32-
Translations can be completed manually by editing files in the module directories under `langs`.
33-
34-
<!--
35-
This module contains also a sample configuration for Transifex, under the hidden directory [.tx](.tx), so it is possible to manage translation using this service.
36-
37-
For more information, see the [translator's documentation](https://wiki.dolibarr.org/index.php/Translator_documentation).
38-
39-
There is a [Transifex project](https://transifex.com/projects/p/dolibarr-module-template) for this module.
40-
-->
5+
TimesheetWeek ajoute une gestion hebdomadaire des feuilles de temps fidèle à l'expérience Dolibarr. Le module renforce les cycles de validation, propose des compteurs opérationnels (zones, paniers, heures supplémentaires) et respecte les standards graphiques pour les écrans administratifs et les modèles de documents.
416

7+
### Fonctionnalités principales
428

43-
## Installation
9+
- Statut « Scellée » pour verrouiller les feuilles approuvées et empêcher toute modification ultérieure, avec les permissions associées.
10+
- Redirection automatique vers la feuille existante en cas de tentative de doublon afin d'éviter les saisies multiples.
11+
- Suivi des compteurs hebdomadaires de zones et de paniers directement sur les feuilles et recalcul automatique à chaque enregistrement.
12+
- Affichage des compteurs dans la liste hebdomadaire et ajout du libellé « Zone » sur chaque sélecteur quotidien pour clarifier la saisie.
13+
- Ligne de total en bas de la liste hebdomadaire pour additionner heures, zones, paniers et afficher la colonne de date de validation.
14+
- Création rapide d'une feuille d'heures via le raccourci « Ajouter » du menu supérieur.
15+
- Compatibilité Multicompany pour partager les feuilles et leur numérotation, avec options de partage dédiées et filtres multi-sélection harmonisés à l'interface native.
16+
- Affichage de l'entité dans les listes et fiches en environnement Multicompany, accompagné d'un badge visuel sous la référence lorsque l'entité diffère.
17+
- Sécurisation des requêtes SQL par entité et filtres multi-entités alignés sur les pratiques Dolibarr.
18+
- Harmonisation du filtre de semaine avec un sélecteur ISO multi-sélection permettant de regrouper plusieurs périodes.
19+
- Inversion des couleurs des statuts « Scellée » et « Refusée » pour respecter les codes couleur Dolibarr.
20+
- Refonte complète de la page de configuration inspirée du module DiffusionPlans pour gérer les masques de numérotation et les modèles PDF selon les codes graphiques Dolibarr.
21+
- Sélection du masque de numérotation via des commutateurs natifs directement depuis la configuration Dolibarr.
22+
- Onglet « À propos » dédié pour retrouver la version, l'éditeur et les ressources utiles du module.
23+
- README bilingue (FR/EN) pour faciliter le déploiement et l'adoption.
4424

45-
Prerequisites: You must have Dolibarr ERP & CRM software installed. You can download it from [Dolibarr.org](https://www.dolibarr.org).
46-
You can also get a ready-to-use instance in the cloud from https://saas.dolibarr.org
25+
### Installation
4726

27+
1. **Pré-requis** : disposer d'une instance Dolibarr fonctionnelle. Les versions supportées correspondent à celles indiquées dans le fichier `modTimesheetWeek.class.php`.
28+
2. **Déploiement via l'interface** : depuis `Accueil > Configuration > Modules > Déployer un module externe`, importez l'archive `module_timesheetweek-x.y.z.zip` téléchargée sur [Dolistore](https://www.dolistore.com) ou obtenue via votre circuit de diffusion.
29+
3. **Déploiement manuel** : copiez le répertoire du module dans `htdocs/custom/timesheetweek`, puis purgez le cache des modules depuis l'administration Dolibarr.
30+
4. **Activation** : connectez-vous en tant que super administrateur, activez le module dans `Configuration > Modules > Projets/Temps`, puis exécutez le script `sql/update_all.sql` pour ajouter les compteurs aux données existantes.
4831

49-
### From the ZIP file and GUI interface
32+
### Configuration
5033

51-
If the module is a ready-to-deploy zip file, so with a name `module_xxx-version.zip` (e.g., when downloading it from a marketplace like [Dolistore](https://www.dolistore.com)),
52-
go to menu `Home> Setup> Modules> Deploy external module` and upload the zip file.
34+
- Rendez-vous dans `Configuration > Modules > TimesheetWeek` pour activer le masque de numérotation via les commutateurs natifs et sélectionner les modèles PDF souhaités.
35+
- Ajustez les options Multicompany via les onglets de configuration dédiés si vous partagez les feuilles de temps entre plusieurs entités.
36+
- L'onglet « À propos » récapitule la version du module, l'éditeur et les liens de support.
5337

54-
<!--
38+
### Traductions
5539

56-
Note: If this screen tells you that there is no "custom" directory, check that your setup is correct:
40+
Les fichiers de traduction sont disponibles dans `langs/en_US` et `langs/fr_FR`. Toute nouvelle chaîne doit être renseignée simultanément dans les deux langues conformément aux pratiques Dolibarr.
5741

58-
- In your Dolibarr installation directory, edit the `htdocs/conf/conf.php` file and check that following lines are not commented:
42+
## 🇬🇧 Overview
5943

60-
```php
61-
//$dolibarr_main_url_root_alt ...
62-
//$dolibarr_main_document_root_alt ...
63-
```
44+
TimesheetWeek delivers weekly timesheet management that follows Dolibarr design guidelines. It enhances approval workflows, exposes operational counters (zones, meal allowances, overtime) and keeps the administration area consistent with native modules.
6445

65-
- Uncomment them if necessary (delete the leading `//`) and assign the proper value according to your Dolibarr installation
46+
### Main features
6647

67-
For example :
48+
- Statut « Scellée » (Sealed status) to lock approved timesheets together with the related permissions.
49+
- Automatic redirect to the existing timesheet when a duplicate creation is attempted.
50+
- Weekly counters for zones and meal allowances with automatic recomputation on each save.
51+
- Counter display inside the weekly list plus a « Zone » caption on each daily selector for better input guidance.
52+
- Total row at the bottom of the weekly list to sum hours, zones, meals and expose the validation date column.
53+
- Quick creation shortcut available from the top-right « Add » menu.
54+
- Multicompany compatibility for sharing timesheets and numbering sequences, with dedicated sharing options and native-aligned multi-select filters.
55+
- Entity details shown on lists and cards in Multicompany environments with a badge under the reference when the entity differs.
56+
- Entity-scoped SQL queries and Multicompany filters harmonised with Dolibarr best practices.
57+
- ISO week selector shared between list and card views, now supporting multi-selection to combine several periods.
58+
- Swapped colours for « Scellée » and « Refusée » statuses to match Dolibarr visual cues.
59+
- Fully redesigned setup page inspired by the DiffusionPlans module to drive numbering masks and PDF templates with Dolibarr's graphical and functional patterns.
60+
- Numbering mask selection driven by native toggle switches directly inside Dolibarr's configuration.
61+
- Dedicated « À propos » tab exposing the module version, publisher and handy resources.
62+
- Bilingual (FR/EN) README to streamline rollout and user onboarding.
6863

69-
- UNIX:
70-
```php
71-
$dolibarr_main_url_root_alt = '/custom';
72-
$dolibarr_main_document_root_alt = '/var/www/Dolibarr/htdocs/custom';
73-
```
64+
### Installation
7465

75-
- Windows:
76-
```php
77-
$dolibarr_main_url_root_alt = '/custom';
78-
$dolibarr_main_document_root_alt = 'C:/My Web Sites/Dolibarr/htdocs/custom';
79-
```
80-
-->
66+
1. **Prerequisites**: a running Dolibarr instance that matches the compatibility range declared in `modTimesheetWeek.class.php`.
67+
2. **Deploy from the GUI**: go to `Home > Setup > Modules > Deploy external module` and upload the `module_timesheetweek-x.y.z.zip` archive from [Dolistore](https://www.dolistore.com) or your distribution channel.
68+
3. **Manual deployment**: copy the module directory into `htdocs/custom/timesheetweek`, then refresh the module cache from Dolibarr's administration area.
69+
4. **Activation**: log in as a super administrator, enable the module from `Setup > Modules > Projects/Timesheets`, and run the `sql/update_all.sql` script so legacy timesheets gain the new counters.
8170

82-
<!--
71+
### Configuration
8372

84-
### From a GIT repository
73+
- Visit `Setup > Modules > TimesheetWeek` to switch on the numbering mask and enable the PDF templates you want to expose.
74+
- In Multicompany contexts, tune the sharing preferences through the dedicated configuration tabs.
75+
- The « À propos » tab summarises the module version, publisher and support links.
8576

86-
Clone the repository in `$dolibarr_main_document_root_alt/timesheetweek`
87-
88-
```shell
89-
cd ....../custom
90-
git clone [email protected]:gitlogin/timesheetweek.git timesheetweek
91-
```
92-
93-
-->
94-
95-
### Final steps
96-
97-
Using your browser:
98-
99-
- Log into Dolibarr as a super-administrator
100-
- Go to "Setup"> "Modules"
101-
- You should now be able to find and enable the module
102-
- EN: Run the `sql/update_all.sql` script to ensure older timesheets receive the new counters
103-
- FR: Exécutez le script `sql/update_all.sql` pour que les feuilles existantes profitent des nouveaux compteurs
77+
### Translations
10478

79+
Translation sources are stored under `langs/en_US` and `langs/fr_FR`. Please keep both locales aligned for every new string to stay compatible with Dolibarr's translation workflow.
10580

81+
Other external modules are available on [Dolistore.com](https://www.dolistore.com).
10682

10783
## Licenses
10884

@@ -112,4 +88,4 @@ GPLv3 or (at your option) any later version. See file COPYING for more informati
11288

11389
### Documentation
11490

115-
All texts and readme's are licensed under [GFDL](https://www.gnu.org/licenses/fdl-1.3.en.html).
91+
All texts and README files are licensed under [GFDL](https://www.gnu.org/licenses/fdl-1.3.en.html).

admin/about.php

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
/**
3+
* Page À propos pour le module TimesheetWeek.
4+
*/
5+
6+
// EN: Attempt to load Dolibarr bootstrap from common locations.
7+
// FR: Tente de charger l'amorçage Dolibarr depuis les emplacements courants.
8+
$res = 0;
9+
if (!$res && file_exists(__DIR__.'/../main.inc.php')) {
10+
$res = require_once __DIR__.'/../main.inc.php';
11+
}
12+
if (!$res && file_exists(__DIR__.'/../../main.inc.php')) {
13+
$res = require_once __DIR__.'/../../main.inc.php';
14+
}
15+
if (!$res && file_exists(__DIR__.'/../../../main.inc.php')) {
16+
$res = require_once __DIR__.'/../../../main.inc.php';
17+
}
18+
if (!$res) {
19+
die('Include of main fails');
20+
}
21+
22+
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
23+
dol_include_once('/timesheetweek/lib/timesheetweek.lib.php');
24+
dol_include_once('/timesheetweek/core/modules/modTimesheetWeek.class.php');
25+
26+
// EN: Load admin and module translations for the about page.
27+
// FR: Charge les traductions d'administration et du module pour la page À propos.
28+
$langs->loadLangs(array('admin', 'timesheetweek@timesheetweek'));
29+
30+
// EN: Only Dolibarr administrators can display the about page.
31+
// FR: Seuls les administrateurs Dolibarr peuvent afficher la page À propos.
32+
if (empty($user->admin)) {
33+
accessforbidden();
34+
}
35+
36+
$moduleDescriptor = new modTimesheetWeek($db);
37+
$title = $langs->trans('TimesheetWeekAbout');
38+
$helpurl = '';
39+
40+
llxHeader('', $title, $helpurl);
41+
42+
$head = timesheetweekAdminPrepareHead();
43+
// EN: Render the admin tabs with the bookcal pictogram to stay consistent with the setup header.
44+
// FR: Affiche les onglets d'administration avec le pictogramme bookcal pour rester cohérent avec la configuration.
45+
print dol_get_fiche_head($head, 'about', $title, -1, 'bookcal@timesheetweek');
46+
47+
print load_fiche_titre($langs->trans('TimesheetWeekAbout'), '', 'info');
48+
print '<div class="underbanner opacitymedium">'.$langs->trans('TimesheetWeekAboutPage').'</div>';
49+
print '<br>';
50+
51+
print '<div class="fichecenter">';
52+
53+
// EN: Present core module information in a dedicated summary table.
54+
// FR: Présente les informations principales du module dans un tableau récapitulatif.
55+
print '<div class="fichehalfleft">';
56+
print '<div class="div-table-responsive-no-min">';
57+
print '<table class="noborder centpercent">';
58+
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans('TimesheetWeekAboutGeneral').'</th></tr>';
59+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutVersion').'</td><td>'.dol_escape_htmltag($moduleDescriptor->version).'</td></tr>';
60+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutFamily').'</td><td>'.dol_escape_htmltag($moduleDescriptor->family).'</td></tr>';
61+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutDescription').'</td><td>'.dol_escape_htmltag($langs->trans($moduleDescriptor->description)).'</td></tr>';
62+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutMaintainer').'</td><td>'.dol_escape_htmltag($moduleDescriptor->editor_name).'</td></tr>';
63+
print '</table>';
64+
print '</div>';
65+
print '</div>';
66+
67+
// EN: List documentation and support resources with direct links.
68+
// FR: Liste les ressources de documentation et de support avec des liens directs.
69+
print '<div class="fichehalfright">';
70+
print '<div class="div-table-responsive-no-min">';
71+
print '<table class="noborder centpercent">';
72+
print '<tr class="liste_titre"><th colspan="2">'.$langs->trans('TimesheetWeekAboutResources').'</th></tr>';
73+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutDocumentation').'</td><td><a href="'.dol_buildpath('/timesheetweek/README.md', 1).'" target="_blank" rel="noopener">'.$langs->trans('TimesheetWeekAboutDocumentationLink').'</a></td></tr>';
74+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutSupport').'</td><td>'.dol_escape_htmltag($langs->trans('TimesheetWeekAboutSupportValue')).'</td></tr>';
75+
print '<tr class="oddeven"><td class="titlefield">'.$langs->trans('TimesheetWeekAboutContact').'</td><td><a href="https://'.$moduleDescriptor->editor_url.'" target="_blank" rel="noopener">'.dol_escape_htmltag($moduleDescriptor->editor_url).'</a></td></tr>';
76+
print '</table>';
77+
print '</div>';
78+
print '</div>';
79+
80+
print '</div>';
81+
82+
print dol_get_fiche_end();
83+
84+
llxFooter();
85+
$db->close();

0 commit comments

Comments
 (0)