From 16d6418d10f7b1abcc91fb2238fc29e651efbe29 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Wed, 18 Feb 2015 17:49:07 +0100 Subject: [PATCH] Use a themable WebDAV path all over. This is needed for enterprise#481 --- src/cmd/cmd.cpp | 6 +++--- src/gui/socketapi.cpp | 2 +- src/gui/wizard/owncloudsetuppage.cpp | 12 ++++++++---- src/libsync/account.cpp | 3 ++- src/libsync/account.h | 2 +- src/libsync/discoveryphase.cpp | 2 +- src/libsync/owncloudpropagator.cpp | 2 +- src/libsync/owncloudpropagator.h | 4 ++-- src/libsync/theme.cpp | 4 ++++ src/libsync/theme.h | 8 ++++++++ 10 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp index 73b93c807..d1683d55f 100644 --- a/src/cmd/cmd.cpp +++ b/src/cmd/cmd.cpp @@ -185,12 +185,12 @@ void parseOptions( const QStringList& app_args, CmdOptions *options ) } options->target_url = args.takeLast(); - // check if the remote.php/webdav tail was added and append if not. + // check if the webDAV path was added to the url and append if not. if(!options->target_url.endsWith("/")) { options->target_url.append("/"); } - if( !options->target_url.contains("remote.php/webdav/")) { - options->target_url.append("remote.php/webdav/"); + if( !options->target_url.contains( Theme::instance()->webDavPath() )) { + options->target_url.append(Theme::instance()->webDavPath()); } if (options->target_url.startsWith("http")) options->target_url.replace(0, 4, "owncloud"); diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp index b2387640b..ba18f2cbf 100644 --- a/src/gui/socketapi.cpp +++ b/src/gui/socketapi.cpp @@ -655,7 +655,7 @@ SyncFileStatus SocketApi::fileStatus(Folder *folder, const QString& systemFileNa if (rec._remotePerm.isNull()) { // probably owncloud 6, that does not have permissions flag yet. QString url = folder->remoteUrl().toString() + fileName; - if (url.contains(QLatin1String("/remote.php/webdav/Shared/"))) { + if (url.contains( Theme::instance()->webDavPath() + QLatin1String("Shared/") )) { status.setSharedWithMe(true); } } else if (rec._remotePerm.contains("S")) { diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp index 838ab4bc8..18e9d78a3 100644 --- a/src/gui/wizard/owncloudsetuppage.cpp +++ b/src/gui/wizard/owncloudsetuppage.cpp @@ -106,11 +106,15 @@ void OwncloudSetupPage::slotUrlChanged(const QString& url) if (url.endsWith("index.php")) { newUrl.chop(9); } - if (url.endsWith("remote.php/webdav")) { - newUrl.chop(17); + QString webDavPath = Theme::instance()->webDavPath(); + if (url.endsWith(webDavPath)) { + newUrl.chop( webDavPath.length() ); } - if (url.endsWith("remote.php/webdav/")) { - newUrl.chop(18); + if( webDavPath.endsWith(QLatin1Char('/')) ) { + webDavPath.chop(1); // cut off the slash + if( url.endsWith(webDavPath)) { + newUrl.chop(webDavPath.length()); + } } if (newUrl != url) { _ui.leUrl->setText(newUrl); diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 1c75a08ab..03089800b 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -19,6 +19,7 @@ #include "creds/abstractcredentials.h" #include "../3rdparty/certificates/p12topem.h" #include "capabilities.h" +#include "theme.h" #include #include @@ -40,7 +41,7 @@ Account::Account(QObject *parent) , _am(0) , _credentials(0) , _treatSslErrorsAsFailure(false) - , _davPath("remote.php/webdav/") + , _davPath( Theme::instance()->webDavPath() ) , _wasMigrated(false) { qRegisterMetaType("AccountPtr"); diff --git a/src/libsync/account.h b/src/libsync/account.h index 4f98aa839..986bf85f5 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -193,7 +193,7 @@ private: static QString _configFileName; QByteArray _pemCertificate; QString _pemPrivateKey; - QString _davPath; // default "remote.php/webdav/"; + QString _davPath; // defaults to value from theme, might be overwritten in brandings bool _wasMigrated; friend class AccountManager; }; diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index dd7b45c64..dcf2500ae 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -300,7 +300,7 @@ void DiscoverySingleDirectoryJob::directoryListingIteratedSlot(QString file,QMap } } else { - // Remove /remote.php/webdav/folder/ from /remote.php/webdav/folder/subfile.txt + // Remove /folder/ from /folder/subfile.txt file.remove(0, _lsColJob->reply()->request().url().path().length()); // remove trailing slash while (file.endsWith('/')) { diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index c89cdb5c5..0ba8f4b7c 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -368,7 +368,7 @@ void OwncloudPropagator::start(const SyncFileItemVector& items) bool OwncloudPropagator::isInSharedDirectory(const QString& file) { bool re = false; - if( _remoteDir.contains("remote.php/webdav/Shared") ) { + if( _remoteDir.contains( _account->davPath() + QLatin1String("Shared") ) ) { // The Shared directory is synced as its own sync connection re = true; } else { diff --git a/src/libsync/owncloudpropagator.h b/src/libsync/owncloudpropagator.h index ca22aab7a..564e7a553 100644 --- a/src/libsync/owncloudpropagator.h +++ b/src/libsync/owncloudpropagator.h @@ -249,8 +249,8 @@ public: ne_session_s * const _session; const QString _localDir; // absolute path to the local directory. ends with '/' - const QString _remoteDir; // path to the root of the remote. ends with '/' (include remote.php/webdav) - const QString _remoteFolder; // folder. (same as remoteDir but without remote.php/webdav) + const QString _remoteDir; // path to the root of the remote. ends with '/' (include WebDAV path) + const QString _remoteFolder; // folder. (same as remoteDir but without the WebDAV path) SyncJournalDb * const _journal; bool _finishedEmited; // used to ensure that finished is only emit once diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index 737b304c0..257c05ba1 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -407,6 +407,10 @@ bool Theme::wizardSelectiveSyncDefaultNothing() const return false; } +QString Theme::webDavPath() const +{ + return QLatin1String("remote.php/webdav/"); +} } // end namespace client diff --git a/src/libsync/theme.h b/src/libsync/theme.h index 3836c73c5..05acf80cc 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -219,6 +219,14 @@ public: **/ virtual qint64 newBigFolderSizeLimit() const; + /** + * Alternative path on the server that provides access to the webdav capabilities + * + * Attention: Make sure that this string does NOT have a leading slash and that + * it has a trailing slash, for example "remote.php/webdav/". + */ + virtual QString webDavPath() const; + protected: #ifndef TOKEN_AUTH_ONLY QIcon themeIcon(const QString& name, bool sysTray = false) const; -- 2.30.2