Kaydet (Commit) 319b1603 authored tarafından Cao Cuong Ngo's avatar Cao Cuong Ngo Kaydeden (comit) Cédric Bosdonnat

CMIS file picker: it really does not like ID Mark

The file picker can't go back folder if we use
ID mark in the URL.

Conflicts:
	ucb/source/ucp/cmis/cmis_content.cxx

Change-Id: I6985feec71dc23848ee022e0bab9e8515a21ffd2
üst 8a8d1e5b
...@@ -484,6 +484,7 @@ sal_Bool MediaDescriptor::impl_addInputStream( sal_Bool bLockFile ) ...@@ -484,6 +484,7 @@ sal_Bool MediaDescriptor::impl_addInputStream( sal_Bool bLockFile )
css::uno::Reference< css::uno::XInterface >()); css::uno::Reference< css::uno::XInterface >());
// Parse URL! Only the main part has to be used further. E.g. a jumpmark can make trouble // Parse URL! Only the main part has to be used further. E.g. a jumpmark can make trouble
OUString sNormalizedURL = impl_normalizeURL( sURL );
return impl_openStreamWithURL( removeFragment(sURL), bLockFile ); return impl_openStreamWithURL( removeFragment(sURL), bLockFile );
} }
catch(const css::uno::Exception& ex) catch(const css::uno::Exception& ex)
...@@ -723,6 +724,40 @@ sal_Bool MediaDescriptor::impl_openStreamWithURL( const OUString& sURL, sal_Bool ...@@ -723,6 +724,40 @@ sal_Bool MediaDescriptor::impl_openStreamWithURL( const OUString& sURL, sal_Bool
return xInputStream.is(); return xInputStream.is();
} }
OUString MediaDescriptor::impl_normalizeURL(const OUString& sURL)
{
/* Remove Jumpmarks (fragments) of an URL only here.
They are not part of any URL and as a result may be
no ucb content can be created then.
On the other side arguments must exists ... because
they are part of an URL.
Do not use the URLTransformer service here. Because
it parses the URL in another way. It's main part isnt enough
and it's complete part contains the jumpmark (fragment) parameter ...
*/
try
{
css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
css::uno::Reference< css::uri::XUriReferenceFactory > xUriFactory = css::uri::UriReferenceFactory::create(xContext);;
css::uno::Reference< css::uri::XUriReference > xUriRef = xUriFactory->parse(sURL);
if (xUriRef.is())
{
xUriRef->clearFragment();
return xUriRef->getUriReference();
}
}
catch(const css::uno::RuntimeException&)
{ throw; }
catch(const css::uno::Exception&)
{}
// If an error ocurred ... return the original URL.
// It's a try .-)
return sURL;
}
} // namespace comphelper } // namespace comphelper
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -289,6 +289,18 @@ class COMPHELPER_DLLPUBLIC MediaDescriptor : public SequenceAsHashMap ...@@ -289,6 +289,18 @@ class COMPHELPER_DLLPUBLIC MediaDescriptor : public SequenceAsHashMap
be created as new item. FALSE otherwise. be created as new item. FALSE otherwise.
*/ */
COMPHELPER_DLLPRIVATE sal_Bool impl_addInputStream( sal_Bool bLockFile ); COMPHELPER_DLLPRIVATE sal_Bool impl_addInputStream( sal_Bool bLockFile );
/** @short some URL parts can make trouble for opening streams (e.g. jumpmarks.)
An URL should be "normalized" before its used.
@param sURL
the original URL (e.g. including a jumpmark)
@return [string]
the "normalized" URL (e.g. without jumpmark)
*/
COMPHELPER_DLLPRIVATE OUString impl_normalizeURL(const OUString& sURL);
}; };
} // namespace comphelper } // namespace comphelper
......
...@@ -994,7 +994,6 @@ void SfxObjectShell::GetState_Impl(SfxItemSet &rSet) ...@@ -994,7 +994,6 @@ void SfxObjectShell::GetState_Impl(SfxItemSet &rSet)
uno::Sequence< sal_Bool > bTmp; uno::Sequence< sal_Bool > bTmp;
aCmisProperties[i].Value >>= bTmp; aCmisProperties[i].Value >>= bTmp;
bCheckedOut = bTmp[0]; bCheckedOut = bTmp[0];
} }
} }
bShow = bCheckedOut; bShow = bCheckedOut;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment