diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 359108fba..51b7db24a 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -5,6 +5,7 @@ - fixed #11782: Attachments all showing duplicated first thumbnail - fixed #11777: Thingy search on yes no field fails - fixed #11787: Gallery resolutions wrongly ordered + - fixed #11785: Article title / URL with äÄöÖüÜ (reopen #11683) 7.9.12 - webgui.org homepage gives 404 (#11778) diff --git a/lib/WebGUI/Content/Asset.pm b/lib/WebGUI/Content/Asset.pm index dff7f50b5..400682475 100644 --- a/lib/WebGUI/Content/Asset.pm +++ b/lib/WebGUI/Content/Asset.pm @@ -19,7 +19,6 @@ use LWP::MediaTypes qw(guess_media_type); use Time::HiRes; use WebGUI::Asset; use WebGUI::PassiveAnalytics::Logging; -use URI; use Apache2::Const -compile => qw(OK); @@ -146,9 +145,7 @@ sub getUrlPermutations { push @permutations, $url; $url =~ s/\.\w+$//; } - my $uri = URI->new($url); - my @fragments = $uri->path_segments(); - use Data::Dumper; + my @fragments = split /\//, $url; FRAG: while (@fragments) { last FRAG if $fragments[-1] eq ''; push @permutations, join "/", @fragments; diff --git a/t/Content/Asset.t b/t/Content/Asset.t index c746df170..75c5fbd6c 100644 --- a/t/Content/Asset.t +++ b/t/Content/Asset.t @@ -18,9 +18,11 @@ use strict; use lib "$FindBin::Bin/../lib"; use Test::More; use Test::Deep; +use Data::Dumper; use WebGUI::Test; # Must use this before any other WebGUI modules use WebGUI::Session; use WebGUI::Content::Asset; +use Encode; my $output; @@ -76,13 +78,21 @@ my $td url => 'testdispatch', } ); -diag $td->getId; +my $utf8_url = "viel-spa\x{00DF}"; +utf8::upgrade $utf8_url; +my $utf8 + = WebGUI::Asset->getImportNode( $session )->addChild( { + title => "utf8", + className => 'WebGUI::Asset::TestDispatch', + url => $utf8_url, + } ); + WebGUI::Test->addToCleanup( WebGUI::VersionTag->getWorking( $session ) ); #---------------------------------------------------------------------------- # Tests -plan tests => 17; # Increment this number for each test you create +plan tests => 20; # Increment this number for each test you create #---------------------------------------------------------------------------- # test getUrlPermutation( url ) method @@ -122,7 +132,11 @@ cmp_deeply( [ '/one/two/three.rss', '/one/two/three', '/one/two', '/one', ], ".ext is a seperate URL permutation", ); - +cmp_deeply( + WebGUI::Content::Asset::getUrlPermutations( $utf8_url ), + [ $utf8_url ], + "UTF-8 handling for URLs", +); #---------------------------------------------------------------------------- # test dispatch( session, url ) method @@ -132,6 +146,12 @@ is $output, "www_view one", "Regular www_view"; is $session->asset && $session->asset->getId, $td->getId, 'dispatch set the session asset'; +my $_asset = WebGUI::Asset->newByUrl($session, $utf8_url); +isa_ok $_asset, 'WebGUI::Asset::TestDispatch'; + +$output = WebGUI::Content::Asset::dispatch( $session, $utf8_url ); +is $output, "www_view utf8", "dispatch for utf8 urls"; + $output = WebGUI::Content::Asset::dispatch( $session, "testdispatch/foo" ); is $output, "bar", "special /foo handler";