diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php
index 8d5bcfc0492..8678ba3aeb3 100644
--- a/htdocs/admin/ihm.php
+++ b/htdocs/admin/ihm.php
@@ -104,6 +104,16 @@ if ($action == 'update') {
dolibarr_set_const($db, "MAIN_THEME", GETPOST("main_theme", 'aZ09'), 'chaine', 0, '', $conf->entity);
dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
+ if (GETPOSTISSET('THEME_DARKMODEENABLED')) {
+ $val = GETPOST('THEME_DARKMODEENABLED');
+ if (!$val) {
+ dolibarr_del_const($db, "THEME_DARKMODEENABLED", $conf->entity);
+ }
+ if ($val) {
+ dolibarr_set_const($db, "THEME_DARKMODEENABLED", $val, 'chaine', 0, '', $conf->entity);
+ }
+ }
+
if (GETPOSTISSET('THEME_TOPMENU_DISABLE_IMAGE')) {
$val=GETPOST('THEME_TOPMENU_DISABLE_IMAGE');
if (!$val) {
diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php
index 538fc299564..4aa2942884d 100644
--- a/htdocs/core/lib/usergroups.lib.php
+++ b/htdocs/core/lib/usergroups.lib.php
@@ -455,6 +455,28 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
}
+ //Dark mode
+ if ($foruserprofile) {
+ //Nothing
+ } else {
+ $listofdarkmodes = array(
+ '0' => $langs->trans("AlwaysDisabled"),
+ '1' => $langs->trans("AccordingToBrowser"),
+ '2' => $langs->trans("AlwaysEnabled")
+ );
+ print '
';
+ print '| '.$langs->trans("DarkThemeMode").' | ';
+ print '';
+ if ($edit) {
+ print $form->selectarray('THEME_DARKMODEENABLED', $listofdarkmodes, isset($conf->global->THEME_DARKMODEENABLED) ? $conf->global->THEME_DARKMODEENABLED : 0);
+ } else {
+ print $listofdarkmodes[isset($conf->global->THEME_DARKMODEENABLED) ? $conf->global->THEME_DARKMODEENABLED : 0];
+ }
+ print $form->textwithpicto('', $langs->trans("DoesNotWorkWithAllThemes"));
+ print ' |
';
+ }
+
+
// TopMenuDisableImages
if ($foruserprofile) {
/*
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 698ade8b8d1..6b48c8f5787 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -897,7 +897,7 @@ Permission701=Read donations
Permission702=Create/modify donations
Permission703=Delete donations
Permission771=Read expense reports (yours and your subordinates)
-Permission772=Create/modify expense reports (for you and your subordinates)
+Permission772=Create/modify expense reports (for you and your subordinates)
Permission773=Delete expense reports
Permission775=Approve expense reports
Permission776=Pay expense reports
@@ -2169,7 +2169,7 @@ EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax
PDF_SHOW_PROJECT=Show project on document
ShowProjectLabel=Project Label
PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name
-THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty
+THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty
ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty
PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF.
PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF
@@ -2277,4 +2277,9 @@ INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their i
INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices
UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID.
IfThisCategoryIsChildOfAnother=If this category is a child of another one
+DarkThemeMode=Dark theme mode
+AlwaysDisabled=Always disabled
+AccordingToBrowser=According to browser
+AlwaysEnabled=Always Enabled
+DoesNotWorkWithAllThemes=Will not work with all themes
NoName=No name
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 7ac18213e1e..3c653717801 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -190,7 +190,7 @@ Compression=Compression
CommandsToDisableForeignKeysForImport=Commande pour désactiver les clés étrangères à l'importation
CommandsToDisableForeignKeysForImportWarning=Requis si vous voulez être en mesure de restaurer votre « dump » SQL plus tard
ExportCompatibility=Compatibilité du fichier d'exportation généré
-ExportUseMySQLQuickParameter=Utiliser le paramètre --quick
+ExportUseMySQLQuickParameter=Utiliser le paramètre --quick
ExportUseMySQLQuickParameterHelp=Le paramètre '--quick' aide à réduire la consommation de RAM pour les longues listes
MySqlExportParameters=Paramètres de l'exportation MySQL
PostgreSqlExportParameters= Paramètres de l'exportation PostgreSQL
@@ -338,7 +338,7 @@ MenuHandlers=Gestionnaires de menu
MenuAdmin=Édition menu
DoNotUseInProduction=Ne pas utiliser en production
ThisIsProcessToFollow=Procédure de mise à jour:
-ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative
+ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative
StepNb=Étape %s
FindPackageFromWebSite=Rechercher le paquet qui répond à votre besoin (par exemple sur le site web %s).
DownloadPackageFromWebSite=Télécharger le package (par exemple depuis le site web officiel %s)
@@ -1377,7 +1377,7 @@ NumberingModules=Modèles de numérotation
DocumentModules=Modèles de documents
##### Module password generation
PasswordGenerationStandard=Renvoie un mot de passe généré selon l'algorythme interne de Dolibarr :%s caractères contenant chiffres et minuscules
-PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement.
+PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement.
PasswordGenerationPerso=Renvoie un mot de passe en fonction d'une configuration personnalisée.
SetupPerso=Selon votre configuration
PasswordPatternDesc=Description du masque du mot de passe
@@ -1455,7 +1455,7 @@ OrdersNumberingModules=Modèles de numérotation des commandes
OrdersModelModule=Modèles de document des commandes
FreeLegalTextOnOrders=Mention complémentaire sur les commandes
WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide)
-ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable.
+ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable.
BANK_ASK_PAYMENT_BANK_DURING_ORDER=Demander le compte bancaire cible durant la commande
##### Interventions #####
InterventionsSetup=Configuration du module Interventions
@@ -1645,7 +1645,7 @@ TestNotPossibleWithCurrentBrowsers=Une détection automatique n'est pas possible
DefaultValuesDesc=Vous pouvez définir/forcer ici la valeur par défaut que vous voulez obtenir lorsque vous créez un nouvel enregistrement, et/ou les filtres par défaut ou ordre de tri des listes.
DefaultCreateForm=Valeurs par défaut (sur les formulaires de création)
DefaultSearchFilters=Filtres de recherche par défaut
-DefaultSortOrder=Ordre de tri par défaut
+DefaultSortOrder=Ordre de tri par défaut
DefaultFocus=Champs par défaut ayant le focus
DefaultMandatory=Champs de formulaire obligatoires
##### Products #####
@@ -1864,7 +1864,7 @@ ChequeReceiptsNumberingModule=Module de numérotation des bordereaux de remises
MultiCompanySetup=Configuration du module Multi-société
##### Suppliers #####
SuppliersSetup=Configuration du module Fournisseurs
-SuppliersCommandModel=Modèle de commande fournisseur complet
+SuppliersCommandModel=Modèle de commande fournisseur complet
SuppliersCommandModelMuscadet=Modèle de commande fournisseur complet (ancienne implémentation du modèle Cornas)
SuppliersInvoiceModel=Modèle de facture fournisseur complet
SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur
@@ -1899,7 +1899,7 @@ NbMajMin=Nombre minimal de caractères majuscules
NbNumMin=Nombre minimal de caractères numériques
NbSpeMin=Nombre minimal de caractères spéciaux
NbIteConsecutive=Nombre maximal de répétition des mêmes caractères
-NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique
+NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique
SalariesSetup=Configuration du module salaires
SortOrder=Ordre de tri
Format=Format
@@ -1920,7 +1920,7 @@ GoOntoContactCardToAddMore=Rendez-vous sur l'onglet "Notifications" d'un tiers p
Threshold=Seuil
BackupDumpWizard=Assistant pour créer le fichier dump de la base de données
BackupZipWizard=Assistant pour générer l'archive du répertoire documents
-SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante :
+SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante :
SomethingMakeInstallFromWebNotPossible2=Pour cette raison, le processus de mise à jour décrit ici est une processus manuel que seul un utilisateur ayant des droits privilégiés peut réaliser.
InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier %s pour permettre cette fonctionnalité.
ConfFileMustContainCustom=Installer ou créer un module externe à partir de l'application nécessite de sauvegarder les fichiers du module dans le répertoire %s. Pour que ce répertoire soit reconnu par Dolibarr, vous devez paramétrer le fichier de configuration conf/conf.php en ajoutant les 2 lignes suivantes :
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='%s/custom';
@@ -2263,3 +2263,8 @@ IconOnly=Icon only - Text on tooltip only
INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices
INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices
UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID.
+DarkThemeMode=Mode thème sombre
+AlwaysDisabled=Toujours désactivé
+AccordingToBrowser=Selon le navigateur
+AlwaysEnabled=Toujours activé
+DoesNotWorkWithAllThemes=Ne fonctionne pas avec tous les thèmes
\ No newline at end of file