[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-cd' - wsd/DocumentBroker.cpp wsd/reference.txt wsd/Storage.cpp wsd/Storage.hpp

Jan Holesovsky kendy at collabora.com
Wed Sep 27 13:45:16 UTC 2017


 wsd/DocumentBroker.cpp |    3 +++
 wsd/Storage.cpp        |    2 ++
 wsd/Storage.hpp        |    9 ++++++++-
 wsd/reference.txt      |   11 +++++++++++
 4 files changed, 24 insertions(+), 1 deletion(-)

New commits:
commit 97109d44021c94db0fe2ef5b67844baf2f5e1902
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Sep 25 19:16:48 2017 +0200

    PutFile ext: X-LOOL-WOPI-IsModifiedByUser header to indicate modifications.
    
    Change-Id: I5d69903211045969d678df695717eae7452e7f04
    Reviewed-on: https://gerrit.libreoffice.org/42856
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 9d6bff46..884e132b 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -774,6 +774,9 @@ bool DocumentBroker::sendUnoSave(const std::string& sessionId, bool dontTerminat
         // arguments end
         oss << "}";
 
+        assert(_storage);
+        _storage->setUserModified(_isModified);
+
         const auto saveArgs = oss.str();
         LOG_TRC(".uno:Save arguments: " << saveArgs);
         const auto command = "uno .uno:Save " + saveArgs;
diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp
index afe69a87..eab3db3c 100644
--- a/wsd/Storage.cpp
+++ b/wsd/Storage.cpp
@@ -643,6 +643,8 @@ StorageBase::SaveResult WopiStorage::saveLocalFileToStorage(const std::string& a
 
         Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST, uriObject.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1);
         request.set("X-WOPI-Override", "PUT");
+        request.set("X-LOOL-WOPI-IsModifiedByUser", _isUserModified? "true": "false");
+
         request.setContentType("application/octet-stream");
         request.setContentLength(size);
         addStorageDebugCookie(request);
diff --git a/wsd/Storage.hpp b/wsd/Storage.hpp
index a3fbe637..58cb0545 100644
--- a/wsd/Storage.hpp
+++ b/wsd/Storage.hpp
@@ -70,7 +70,8 @@ public:
         _localStorePath(localStorePath),
         _jailPath(jailPath),
         _fileInfo("", "lool", Poco::Timestamp::fromEpochTime(0), 0),
-        _isLoaded(false)
+        _isLoaded(false),
+        _isUserModified(false)
     {
         LOG_DBG("Storage ctor: " << uri.toString());
     }
@@ -82,6 +83,9 @@ public:
 
     bool isLoaded() const { return _isLoaded; }
 
+    /// To be able to set the WOPI extension header appropriately.
+    void setUserModified(bool isUserModified) { _isUserModified = isUserModified; }
+
     /// Returns the basic information about the file.
     const FileInfo& getFileInfo() const { return _fileInfo; }
 
@@ -116,6 +120,9 @@ protected:
     FileInfo _fileInfo;
     bool _isLoaded;
 
+    /// The document has been modified by the user.
+    bool _isUserModified;
+
     static bool FilesystemEnabled;
     static bool WopiEnabled;
     /// Allowed/denied WOPI hosts, if any and if WOPI is enabled.
diff --git a/wsd/reference.txt b/wsd/reference.txt
index f6ad3985..1137bff6 100644
--- a/wsd/reference.txt
+++ b/wsd/reference.txt
@@ -61,3 +61,14 @@ WatermarkText
 
 Note that it is possible to just hide print,save,export options while still
 being able to access them from WOPI hosts using PostMessage API (see loleaflet/reference.html)
+
+PutFile headers
+---------------
+
+PutFile additionally indicates whether the user has modified the document
+before the save, or if they just pressed the Save button without any
+modification.  The following header:
+
+   X-LOOL-WOPI-IsModifiedByUser
+
+will have the value 'true' or 'false' accordingly.


More information about the Libreoffice-commits mailing list