Skip to content

Commit

Permalink
fixed url_for support for absolute URLs without authority
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Jun 8, 2013
1 parent b203cae commit 26730f0
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 5 deletions.
3 changes: 2 additions & 1 deletion Changes
@@ -1,6 +1,7 @@

4.13 2013-06-08
- Fixed url_for to accept absolute URLs without scheme. (bduggan)
- Fixed url_for support for absolute URLs without scheme or authority.
(bduggan, sri)

4.12 2013-06-07
- Improved Mojo::Message::Request to allow a few more ASCII characters in
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojolicious/Controller.pm
Expand Up @@ -382,7 +382,7 @@ sub url_for {

# Absolute URL
return $target if Scalar::Util::blessed $target && $target->isa('Mojo::URL');
return Mojo::URL->new($target) if $target =~ m!^(?:\w+:)?//!;
return Mojo::URL->new($target) if $target =~ m!^(?:([^:/?#]+:)|//)!;

# Base
my $url = Mojo::URL->new;
Expand Down Expand Up @@ -902,6 +902,7 @@ Get L<Mojo::UserAgent> object from L<Mojo/"ua">.
my $url = $c->url_for('/perldoc');
my $url = $c->url_for('http://mojolicio.us/perldoc');
my $url = $c->url_for('//mojolicio.us/perldoc');
my $url = $c->url_for('mailto:sri@example.com');
Generate a portable L<Mojo::URL> object with base for a route, path or URL.
Expand Down
2 changes: 1 addition & 1 deletion lib/Mojolicious/Plugin/TagHelpers.pm
Expand Up @@ -432,7 +432,7 @@ Generate portable script tag for C<Javascript> asset.
%= link_to index => {format => 'txt'} => (class => 'links') => begin
Home
% end
%= link_to Contact => Mojo::URL->new('mailto:sri@example.com')
%= link_to Contact => 'mailto:sri@example.com'
<%= link_to index => begin %>Home<% end %>
<%= link_to '/path/to/file' => begin %>File<% end %>
<%= link_to 'http://mojolicio.us' => begin %>Mojolicious<% end %>
Expand Down
7 changes: 5 additions & 2 deletions t/mojolicious/rebased_lite_app.t
Expand Up @@ -43,11 +43,12 @@ my $t = Test::Mojo->new;

# Rebased root
$t->get_ok('/')->status_is(200)->header_is('X-Route' => 'root')
->content_is(<<EOF);
->content_is(<<'EOF');
http://example.com/rebased/
<script src="/rebased/mojo/jquery/jquery.js"></script>
<img src="/rebased/images/test.png" />
<link href="//example.com/base.css" media="screen" rel="stylesheet" />
<a href="mailto:sri@example.com">Contact</a>
http://example.com/rebased
http://example.com/rebased/foo
/rebased/foo
Expand Down Expand Up @@ -90,11 +91,12 @@ EOF

# Rebased route sharing a template
$t->get_ok('/baz')->status_is(200)->header_is('X-Route' => 'baz')
->content_is(<<EOF);
->content_is(<<'EOF');
http://example.com/rebased/
<script src="/rebased/mojo/jquery/jquery.js"></script>
<img src="/rebased/images/test.png" />
<link href="//example.com/base.css" media="screen" rel="stylesheet" />
<a href="mailto:sri@example.com">Contact</a>
http://example.com/rebased/baz
http://example.com/rebased/foo
/rebased/foo
Expand All @@ -113,6 +115,7 @@ __DATA__
%= javascript '/mojo/jquery/jquery.js'
%= image '/images/test.png'
%= stylesheet '//example.com/base.css'
%= link_to Contact => 'mailto:sri@example.com'
%= $self->req->url->to_abs
%= url_for('foo')->to_abs
%= url_for 'foo'
Expand Down
3 changes: 3 additions & 0 deletions t/mojolicious/tag_helper_lite_app.t
Expand Up @@ -66,6 +66,7 @@ $t->get_ok('/links')->status_is(200)->content_is(<<'EOF');
<a href="http://example.com/" title="Foo">Foo</a>
<a href="//example.com/"><foo>Example</foo></a>
<a href="mailto:sri@example.com">Contact</a>
<a href="mailto:sri@example.com">Contact</a>
<a href="/links">Home</a>
<a href="/form/23" title="Foo">Foo</a>
<a href="/form/23" title="Foo">Foo</a>
Expand All @@ -75,6 +76,7 @@ $t->post_ok('/links')->status_is(200)->content_is(<<'EOF');
<a href="http://example.com/" title="Foo">Foo</a>
<a href="//example.com/"><foo>Example</foo></a>
<a href="mailto:sri@example.com">Contact</a>
<a href="mailto:sri@example.com">Contact</a>
<a href="/links">Home</a>
<a href="/form/23" title="Foo">Foo</a>
<a href="/form/23" title="Foo">Foo</a>
Expand Down Expand Up @@ -441,6 +443,7 @@ __DATA__
<%= link_to 'http://example.com/', title => 'Foo', sub { 'Foo' } %>
<%= link_to '//example.com/' => begin %><foo>Example</foo><% end %>
<%= link_to Contact => Mojo::URL->new('mailto:sri@example.com') %>
<%= link_to Contact => 'mailto:sri@example.com' %>
<%= link_to Home => 'links' %>
<%= link_to Foo => 'form', {test => 23}, title => 'Foo' %>
<%= link_to form => {test => 23} => (title => 'Foo') => begin %>Foo<% end %>
Expand Down

0 comments on commit 26730f0

Please sign in to comment.