Kaydet (Commit) 24142b9f authored tarafından Sven Jacobi's avatar Sven Jacobi

#77696# not removing urls that includes charactes in its host part which are not allowed

üst 6d396ff7
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
* *
* $RCSfile: hlinettp.cxx,v $ * $RCSfile: hlinettp.cxx,v $
* *
* $Revision: 1.5 $ * $Revision: 1.6 $
* *
* last change: $Author: ka $ $Date: 2001-07-30 14:46:43 $ * last change: $Author: sj $ $Date: 2001-08-22 09:52:02 $
* *
* The Contents of this file are made available subject to the terms of * The Contents of this file are made available subject to the terms of
* either of the following licenses * either of the following licenses
...@@ -168,6 +168,35 @@ SvxHyperlinkInternetTp::~SvxHyperlinkInternetTp () ...@@ -168,6 +168,35 @@ SvxHyperlinkInternetTp::~SvxHyperlinkInternetTp ()
{ {
} }
static INetProtocol ImplGetProtocol( const String& aStrURL, String& aStrScheme )
{
INetURLObject aURL( aStrURL );
INetProtocol aProtocol = aURL.GetProtocol();
// #77696#
// our new INetUrlObject now has the ability
// to detect if an Url is valid or not :-(
if ( aProtocol == INET_PROT_NOT_VALID )
{
if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTP_SCHEME, 0, 7 ) )
{
aProtocol = INET_PROT_HTTP;
aStrScheme = String( RTL_CONSTASCII_STRINGPARAM( sHTTPScheme ) );
}
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTPS_SCHEME, 0, 8 ) )
{
aProtocol = INET_PROT_HTTPS;
aStrScheme = String( RTL_CONSTASCII_STRINGPARAM( sHTTPSScheme ) );
}
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_FTP_SCHEME, 0, 6 ) )
{
aProtocol = INET_PROT_FTP;
aStrScheme = String( RTL_CONSTASCII_STRINGPARAM( sFTPScheme ) );
}
}
return aProtocol;
}
/************************************************************************* /*************************************************************************
|* |*
|* Fill the all dialog-controls except controls in groupbox "more..." |* Fill the all dialog-controls except controls in groupbox "more..."
...@@ -176,14 +205,16 @@ SvxHyperlinkInternetTp::~SvxHyperlinkInternetTp () ...@@ -176,14 +205,16 @@ SvxHyperlinkInternetTp::~SvxHyperlinkInternetTp ()
void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL ) void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
{ {
INetURLObject aURL ( aStrURL ); INetURLObject aURL( aStrURL );
String aStrScheme; String aStrScheme;
// set protocoll-radiobuttons // set protocoll-radiobuttons
INetProtocol aProtocol = aURL.GetProtocol ();
INetProtocol aProtocol = ImplGetProtocol( aStrURL, aStrScheme );
switch ( aProtocol ) switch ( aProtocol )
{ {
case INET_PROT_HTTP : case INET_PROT_HTTP :
{
maRbtLinktypInternet.Check (); maRbtLinktypInternet.Check ();
maRbtLinktypFTP.Check (FALSE); maRbtLinktypFTP.Check (FALSE);
maRbtLinktypTelnet.Check (FALSE); maRbtLinktypTelnet.Check (FALSE);
...@@ -198,13 +229,12 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL ) ...@@ -198,13 +229,12 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
if ( mbMarkWndOpen ) if ( mbMarkWndOpen )
ShowMarkWnd (); ShowMarkWnd ();
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM( sHTTPScheme ) );
maCbbTarget.SetSmartProtocol( INET_PROT_HTTP ); maCbbTarget.SetSmartProtocol( INET_PROT_HTTP );
}
break;
break;
case INET_PROT_HTTPS : case INET_PROT_HTTPS :
{
maRbtLinktypInternet.Check (); maRbtLinktypInternet.Check ();
maRbtLinktypFTP.Check (FALSE); maRbtLinktypFTP.Check (FALSE);
maRbtLinktypTelnet.Check (FALSE); maRbtLinktypTelnet.Check (FALSE);
...@@ -219,13 +249,12 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL ) ...@@ -219,13 +249,12 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
if ( mbMarkWndOpen ) if ( mbMarkWndOpen )
HideMarkWnd (); HideMarkWnd ();
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM( sHTTPSScheme ) );
maCbbTarget.SetSmartProtocol( INET_PROT_HTTP ); maCbbTarget.SetSmartProtocol( INET_PROT_HTTP );
}
break;
break;
case INET_PROT_FTP : case INET_PROT_FTP :
{
maRbtLinktypInternet.Check (FALSE); maRbtLinktypInternet.Check (FALSE);
maRbtLinktypFTP.Check (); maRbtLinktypFTP.Check ();
maRbtLinktypTelnet.Check (FALSE); maRbtLinktypTelnet.Check (FALSE);
...@@ -240,12 +269,10 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL ) ...@@ -240,12 +269,10 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
if ( mbMarkWndOpen ) if ( mbMarkWndOpen )
HideMarkWnd (); HideMarkWnd ();
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM( sFTPScheme ) );
maCbbTarget.SetSmartProtocol( INET_PROT_FTP ); maCbbTarget.SetSmartProtocol( INET_PROT_FTP );
}
break;
break;
default : default :
String aStrTmp ( aStrURL ); String aStrTmp ( aStrURL );
if ( aStrTmp.ToLowerAscii().SearchAscii( sTelnet ) == 0 ) if ( aStrTmp.ToLowerAscii().SearchAscii( sTelnet ) == 0 )
...@@ -306,7 +333,10 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL ) ...@@ -306,7 +333,10 @@ void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
if ( aStrScheme != aEmptyStr ) if ( aStrScheme != aEmptyStr )
{ {
// Show the scheme, #72740 // Show the scheme, #72740
maCbbTarget.SetText( aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) ); if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
maCbbTarget.SetText( aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) );
else
maCbbTarget.SetText( aStrURL ); // #77696#
} }
else else
maCbbTarget.SetText ( aEmptyStr ); maCbbTarget.SetText ( aEmptyStr );
...@@ -369,10 +399,11 @@ void SvxHyperlinkInternetTp::GetCurentItemData ( String& aStrURL, String& aStrNa ...@@ -369,10 +399,11 @@ void SvxHyperlinkInternetTp::GetCurentItemData ( String& aStrURL, String& aStrNa
aStrName = mpEdIndication->GetText(); aStrName = mpEdIndication->GetText();
aStrFrame = mpCbbFrame->GetText(); aStrFrame = mpCbbFrame->GetText();
eMode = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1); eMode = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1);
if( IsHTMLDoc() ) if( IsHTMLDoc() )
eMode = (SvxLinkInsertMode) ( UINT16(eMode) | HLINK_HTMLMODE ); eMode = (SvxLinkInsertMode) ( UINT16(eMode) | HLINK_HTMLMODE );
if( aStrURL != aEmptyStr ) if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
aStrURL = aURL.GetMainURL( INetURLObject::DECODE_WITH_CHARSET ); aStrURL = aURL.GetMainURL( INetURLObject::DECODE_WITH_CHARSET );
if( aStrName == aEmptyStr ) if( aStrName == aEmptyStr )
...@@ -647,31 +678,25 @@ void SvxHyperlinkInternetTp::ChangeScheme ( String& aStrURL, String aStrNewSchem ...@@ -647,31 +678,25 @@ void SvxHyperlinkInternetTp::ChangeScheme ( String& aStrURL, String aStrNewSchem
{ {
if ( aStrURL != aEmptyStr ) if ( aStrURL != aEmptyStr )
{ {
INetURLObject aURL ( aStrURL );
String aStrScheme; String aStrScheme;
// set protocoll-radiobuttons // set protocoll-radiobuttons
INetProtocol aProtocol = aURL.GetProtocol (); INetProtocol aProtocol = ImplGetProtocol( aStrURL, aStrScheme );
switch ( aProtocol ) switch ( aProtocol )
{ {
case INET_PROT_HTTP : case INET_PROT_HTTP :
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM ( sHTTPScheme ) );
break;
case INET_PROT_HTTPS : case INET_PROT_HTTPS :
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM (sHTTPSScheme ) );
break;
case INET_PROT_FTP : case INET_PROT_FTP :
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM ( sFTPScheme ) ); break;
break;
default : default :
{
String aStrTmp ( aStrURL ); String aStrTmp ( aStrURL );
if ( aStrTmp.ToLowerAscii().SearchAscii( sTelnet ) == 0 ) if ( aStrTmp.ToLowerAscii().SearchAscii( sTelnet ) == 0 )
{ {
aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM ( sTelnetScheme ) ); aStrScheme.AssignAscii( RTL_CONSTASCII_STRINGPARAM ( sTelnetScheme ) );
} }
}
} }
if ( aStrScheme != aEmptyStr ) if ( aStrScheme != aEmptyStr )
{ {
String aStrTmp( aStrURL.Erase ( 0, aStrScheme.Len() ) ); String aStrTmp( aStrURL.Erase ( 0, aStrScheme.Len() ) );
......
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