diff options
-rw-r--r-- | include/unotools/docinfohelper.hxx | 3 | ||||
-rw-r--r-- | oox/source/core/xmlfilterbase.cxx | 5 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf89790.docx | bin | 0 -> 4673 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport5.cxx | 7 | ||||
-rw-r--r-- | unotools/source/config/docinfohelper.cxx | 50 |
5 files changed, 45 insertions, 20 deletions
diff --git a/include/unotools/docinfohelper.hxx b/include/unotools/docinfohelper.hxx index ddc28b05279b..320b3b542d48 100644 --- a/include/unotools/docinfohelper.hxx +++ b/include/unotools/docinfohelper.hxx @@ -29,7 +29,8 @@ class UNOTOOLS_DLLPUBLIC DocInfoHelper { public: static OUString GetGeneratorString(); - + static OUString GetApplicationString(); + static OUString GetVersionString(); }; } // namespace utl diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx index 4ff011aa9161..772142b7bf4c 100644 --- a/oox/source/core/xmlfilterbase.cxx +++ b/oox/source/core/xmlfilterbase.cxx @@ -58,6 +58,7 @@ #include <tools/datetime.hxx> #include <com/sun/star/util/Duration.hpp> #include <sax/tools/converter.hxx> +#include <unotools/configmgr.hxx> using ::com::sun::star::xml::dom::DocumentBuilder; using ::com::sun::star::xml::dom::XDocument; @@ -692,9 +693,9 @@ writeAppProperties( XmlFilterBase& rSelf, Reference< XDocumentProperties > xProp writeElement( pAppProps, XML_HyperlinksChanged, "hyperlinks changed" ); writeElement( pAppProps, XML_DigSig, "digital signature" ); #endif /* def OOXTODO */ - writeElement( pAppProps, XML_Application, utl::DocInfoHelper::GetGeneratorString() ); + writeElement( pAppProps, XML_Application, utl::ConfigManager::getProductName() ); + writeElement( pAppProps, XML_AppVersion, utl::DocInfoHelper::GetVersionString() ); #ifdef OOXTODO - writeElement( pAppProps, XML_AppVersion, "app version" ); writeElement( pAppProps, XML_DocSecurity, "doc security" ); #endif /* def OOXTODO */ diff --git a/sw/qa/extras/ooxmlexport/data/tdf89790.docx b/sw/qa/extras/ooxmlexport/data/tdf89790.docx Binary files differnew file mode 100644 index 000000000000..180951e854e9 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf89790.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx index 6964c90a07aa..89a1502ba6ec 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx @@ -795,6 +795,13 @@ DECLARE_OOXMLEXPORT_TEST(testSectionHeader, "sectionprot.odt") } } +DECLARE_OOXMLEXPORT_TEST(testTdf89790, "tdf89790.docx") +{ + if (xmlDocPtr pXmlDoc = parseExport("docProps/app.xml")) + + assertXPath(pXmlDoc, "/extended-properties:Properties/extended-properties:AppVersion"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/docinfohelper.cxx b/unotools/source/config/docinfohelper.cxx index b5d0cf9aa7b4..0ea143cf89ec 100644 --- a/unotools/source/config/docinfohelper.cxx +++ b/unotools/source/config/docinfohelper.cxx @@ -41,30 +41,45 @@ OUString DocInfoHelper::GetGeneratorString() { aResult.append( aValue.replace( ' ', '_' ) ); aResult.append( '/' ); + } + + aValue = GetVersionString(); + if ( !aValue.isEmpty() ) + { + aResult.append( aValue ); + } + + return aResult.makeStringAndClear(); +} + + +OUString DocInfoHelper::GetVersionString() +{ + OUStringBuffer aResult; - aValue = utl::ConfigManager::getProductVersion(); + // version is <product_versions>_<product_extension>$<platform> + OUString aValue( utl::ConfigManager::getProductVersion() ); + if ( !aValue.isEmpty() ) + { + aResult.append( aValue.replace( ' ', '_' ) ); + + aValue = utl::ConfigManager::getProductExtension(); if ( !aValue.isEmpty() ) { aResult.append( aValue.replace( ' ', '_' ) ); - - aValue = utl::ConfigManager::getProductExtension(); - if ( !aValue.isEmpty() ) - { - aResult.append( aValue.replace( ' ', '_' ) ); - } } - - OUString os( "$_OS" ); - OUString arch( "$_ARCH" ); - ::rtl::Bootstrap::expandMacros(os); - ::rtl::Bootstrap::expandMacros(arch); - aResult.append( '$' ); - aResult.append( os ); - aResult.append( '_' ); - aResult.append( arch ); - aResult.append( ' ' ); } + OUString os( "$_OS" ); + OUString arch( "$_ARCH" ); + ::rtl::Bootstrap::expandMacros(os); + ::rtl::Bootstrap::expandMacros(arch); + aResult.append( '$' ); + aResult.append( os ); + aResult.append( '_' ); + aResult.append( arch ); + aResult.append( ' ' ); + // second product: LibreOffice_project/<build_information> // build_information has '(' and '[' encoded as '$', ')' and ']' ignored // and ':' replaced by '-' @@ -97,6 +112,7 @@ OUString DocInfoHelper::GetGeneratorString() return aResult.makeStringAndClear(); } + } // end of namespace utl /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |