sc/qa/unit/data/ods/change-tracking.ods |binary sc/qa/unit/subsequent_export_test4.cxx | 23 +++++++++++++++++ sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx | 19 ++++++++++---- 3 files changed, 37 insertions(+), 5 deletions(-)
New commits: commit 2d60017a66cca4668c87f64f6d048566656b3b1c Author: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> AuthorDate: Thu Jun 20 10:51:11 2024 +0200 Commit: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> CommitDate: Mon Jun 24 07:51:52 2024 +0200 ods: Don't export changes author/date when in privacy mode Change-Id: I8c542f398bb70da96a64b61a9931398b6a78ea72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169258 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> diff --git a/sc/qa/unit/data/ods/change-tracking.ods b/sc/qa/unit/data/ods/change-tracking.ods new file mode 100644 index 000000000000..01077fffc749 Binary files /dev/null and b/sc/qa/unit/data/ods/change-tracking.ods differ diff --git a/sc/qa/unit/subsequent_export_test4.cxx b/sc/qa/unit/subsequent_export_test4.cxx index 041a7b0bb9cf..0814c915d81b 100644 --- a/sc/qa/unit/subsequent_export_test4.cxx +++ b/sc/qa/unit/subsequent_export_test4.cxx @@ -1868,6 +1868,29 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf157318) static_cast<sal_uInt16>(pDoc->GetRangeName(0)->size())); } +CPPUNIT_TEST_FIXTURE(ScExportTest4, testChangesAuthorDate) +{ + createScDoc("ods/change-tracking.ods"); + + auto pBatch(comphelper::ConfigurationChanges::create()); + // Remove all personal info + officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch); + pBatch->commit(); + + save(u"calc8"_ustr); + xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPathContent( + pXmlDoc, + "/office:document-content/office:body/office:spreadsheet/table:tracked-changes/table:cell-content-change[1]/office:change-info/dc:creator"_ostr, + u"Author1"_ustr); + assertXPathContent( + pXmlDoc, + "/office:document-content/office:body/office:spreadsheet/table:tracked-changes/table:cell-content-change[1]/office:change-info/dc:date"_ostr, + u"1970-01-01T12:00:00"_ustr); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx index 1a3b22e6aad0..80f70da9f53e 100644 --- a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx @@ -37,6 +37,8 @@ #include <svl/sharedstring.hxx> #include <sal/log.hxx> +#include <com/sun/star/util/DateTime.hpp> + using namespace ::com::sun::star; using namespace xmloff::token; @@ -94,21 +96,28 @@ void ScChangeTrackingExportHelper::WriteBigRange(const ScBigRange& rBigRange, XM void ScChangeTrackingExportHelper::WriteChangeInfo(const ScChangeAction* pAction) { + bool bRemovePersonalInfo + = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) + && !SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo); + SvXMLElementExport aElemInfo (rExport, XML_NAMESPACE_OFFICE, XML_CHANGE_INFO, true, true); { SvXMLElementExport aCreatorElem( rExport, XML_NAMESPACE_DC, XML_CREATOR, true, false ); - rExport.Characters(pAction->GetUser()); + rExport.Characters(bRemovePersonalInfo + ? "Author" + OUString::number(rExport.GetInfoID(pAction->GetUser())) + : pAction->GetUser()); } { OUStringBuffer sDate; - ScXMLConverter::ConvertDateTimeToString(pAction->GetDateTimeUTC(), sDate); - SvXMLElementExport aDateElem( rExport, XML_NAMESPACE_DC, - XML_DATE, true, - false ); + ScXMLConverter::ConvertDateTimeToString(bRemovePersonalInfo + ? util::DateTime(0, 0, 0, 12, 1, 1, 1970, true) + : pAction->GetDateTimeUTC(), + sDate); + SvXMLElementExport aDateElem(rExport, XML_NAMESPACE_DC, XML_DATE, true, false); rExport.Characters(sDate.makeStringAndClear()); }