diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php
index 5b532a3822f..f757663b6d5 100644
--- a/htdocs/admin/dav.php
+++ b/htdocs/admin/dav.php
@@ -25,41 +25,27 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/dav/dav.lib.php';
+$langs->loadLangs(array("admin","other","agenda"));
if (!$user->admin)
accessforbidden();
-$langs->load("admin");
-$langs->load("other");
-$langs->load("agenda");
+// Parameters
+$action = GETPOST('action', 'alpha');
+$backtopage = GETPOST('backtopage', 'alpha');
-$def = array();
-$actionsave=GETPOST('save','alpha');
+$arrayofparameters=array('DAV_ALLOW_PUBLIC_DIR'=>array('css'=>'minwidth200'));
-// Sauvegardes parametres
-if ($actionsave)
-{
- $i=0;
- $db->begin();
+/*
+ * Actions
+ */
- $i+=dolibarr_set_const($db,'XXX',trim(GETPOST('XXX','alpha')),'chaine',0,'',$conf->entity);
-
- if ($i >= 4)
- {
- $db->commit();
- setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
- }
- else
- {
- $db->rollback();
- setEventMessages($langs->trans("SaveFailed"), null, 'errors');
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
-/**
+/*
* View
*/
@@ -77,30 +63,51 @@ $head=dav_admin_prepare_head();
dol_fiche_head($head, 'webdav', '', -1, 'action');
-print $langs->trans("WebDAVSetupDesc")."
\n";
-print "
\n";
-/*
-print '
';
+if ($action == 'edit')
+{
+ print '';
+ print '
';
+}
+else
+{
+ print '';
+ print '| '.$langs->trans("Parameter").' | '.$langs->trans("Value").' |
';
+
+ foreach($arrayofparameters as $key => $val)
+ {
+ print '| ';
+ print $form->textwithpicto($langs->trans($key),$langs->trans($key.'Tooltip'));
+ print ' | ' . $conf->global->$key . ' |
';
+ }
+
+ print '
';
+
+ print '';
+}
-print '
';
-*/
dol_fiche_end();
@@ -113,7 +120,7 @@ print "\n";
clearstatcache();
-//if ($mesg) print "
$mesg
";
+print $langs->trans("WebDAVSetupDesc")."
\n";
print "
";
@@ -130,34 +137,6 @@ $message.=img_picto('','object_globe.png').' '.$langs->trans("WebDavServer",'Web
$message.='
';
print $message;
-/*$message =$langs->trans("AgendaUrlOptions1",$user->login,$user->login).'
';
-$message.=$langs->trans("AgendaUrlOptions3",$user->login,$user->login).'
';
-$message.=$langs->trans("AgendaUrlOptionsNotAdmin",$user->login,$user->login).'
';
-$message.=$langs->trans("AgendaUrlOptions4",$user->login,$user->login).'
';
-$message.=$langs->trans("AgendaUrlOptionsProject",$user->login,$user->login).'
';
-$message.=$langs->trans("AgendaUrlOptionsNotAutoEvent",'systemauto','systemauto').'
';
-
-print info_admin($message);
-*/
-
-/*
-if (! empty($conf->use_javascript_ajax))
-{
- print "\n".'';
-}
-*/
llxFooter();
$db->close();
diff --git a/htdocs/core/modules/modDav.class.php b/htdocs/core/modules/modDav.class.php
index cede86796a0..77525a0b0d1 100644
--- a/htdocs/core/modules/modDav.class.php
+++ b/htdocs/core/modules/modDav.class.php
@@ -96,7 +96,7 @@ class modDav extends DolibarrModules
// Data directories to create when module is enabled.
// Example: this->dirs = array("/dav/temp","/dav/subdir");
- $this->dirs = array("/dav/temp","/dav/public");
+ $this->dirs = array("/dav/temp","/dav/public","/dav/private");
// Config pages. Put here list of php page, stored into dav/admin directory, to use to setup module.
$this->config_page_url = array("dav.php");
diff --git a/htdocs/dav/fileserver.php b/htdocs/dav/fileserver.php
index a785fac0ab9..cd19fc294ec 100644
--- a/htdocs/dav/fileserver.php
+++ b/htdocs/dav/fileserver.php
@@ -52,7 +52,9 @@ if(empty($conf->dav->enabled))
// settings
$publicDir = $conf->dav->dir_output.'/public';
-$tmpDir = $conf->dav->dir_output.'/tmp';
+$privateDir = $conf->dav->dir_output.'/private';
+$tmpDir = $conf->dav->dir_temp;
+//var_dump($tmpDir);exit;
// Authentication callback function
$authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function ($username, $password)
@@ -96,7 +98,8 @@ $nodes = array();
// Enable directories and features according to DAV setup
// / Public docs
-$nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/public');
+if (!empty($conf->global->DAV_ALLOW_PUBLIC_DIR)) $nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/public');
+$nodes[] = new \Sabre\DAV\FS\Directory($dolibarr_main_data_root. '/dav/private');
// Principals Backend
//$principalBackend = new \Sabre\DAVACL\PrincipalBackend\Dolibarr($user,$db);
@@ -120,8 +123,14 @@ $baseUri = DOL_URL_ROOT.'/dav/fileserver.php/';
if (isset($baseUri)) $server->setBaseUri($baseUri);
// Add authentication function
-$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend));
-
+if ((empty($conf->global->DAV_ALLOW_PUBLIC_DIR)
+ || ! preg_match('/'.preg_quote(DOL_URL_ROOT.'/dav/fileserver.php/public','/').'/', $_SERVER["PHP_SELF"]))
+ && ! preg_match('/^sabreAction=asset&assetName=[a-zA-Z0-9%\-\/]+\.(png|css|woff|ico|ttf)$/', $_SERVER["QUERY_STRING"]) // URL for Sabre browser resources
+ )
+{
+ //var_dump($_SERVER["QUERY_STRING"]);exit;
+ $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend));
+}
// Support for LOCK and UNLOCK
$lockBackend = new \Sabre\DAV\Locks\Backend\File($tmpDir . '/.locksdb');
$lockPlugin = new \Sabre\DAV\Locks\Plugin($lockBackend);
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 1927008bad1..f8bae299f17 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -1206,6 +1206,9 @@ MustBeUnique=Must be unique?
MustBeMandatory=Mandatory to create third parties?
MustBeInvoiceMandatory=Mandatory to validate invoices?
TechnicalServicesProvided=Technical services provided
+#####DAV #####
+WebDAVSetupDesc=This is the links to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory accessis allowed) and a "private" directory that need an existing login account/password to access to.
+WebDavServer=Root URL of %s server : %s
##### Webcal setup #####
WebCalUrlForVCalExport=An export link to %s format is available at following link: %s
##### Invoices #####
@@ -1784,7 +1787,6 @@ MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF
SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups
EnterCalculationRuleIfPreviousFieldIsYes=Enter calculcation rule if previous field was set to Yes (For example 'CODEGRP1+CODEGRP2')
SeveralLangugeVariatFound=Several language variants found
-WebDavServer=URL of %s server : %s
COMPANY_AQUARIUM_REMOVE_SPECIAL=Remove special characters
COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX)
##### Resource ####