the Slash_gatewayUrl and PageUrl macros now accept optional URL arguments

This commit is contained in:
Colin Kuskie 2007-01-23 21:49:34 +00:00
parent dfb19389a7
commit 66b59adde8
7 changed files with 121 additions and 15 deletions

View file

@ -11,6 +11,7 @@
- fix: Fixed a bug where the isCurrentPost tmpl_var would always be set to the - fix: Fixed a bug where the isCurrentPost tmpl_var would always be set to the
first post of the thread in stead of the current post. (Martin Kamerbeek / Oqapi) first post of the thread in stead of the current post. (Martin Kamerbeek / Oqapi)
- fix: Non-existant variables in CS templates (perlDreamer Consulting, LLC) - fix: Non-existant variables in CS templates (perlDreamer Consulting, LLC)
- fix: Slash_Gateway macro (perlDreamer Consulting, LLC)
7.3.5 7.3.5

View file

@ -11,6 +11,7 @@ package WebGUI::Macro::PageUrl;
#------------------------------------------------------------------- #-------------------------------------------------------------------
use strict; use strict;
use URI;
=head1 NAME =head1 NAME
@ -20,16 +21,33 @@ Package WebGUI::Macro::Page
Macro for displaying the url for the current asset. Macro for displaying the url for the current asset.
=head2 process ( ) =head2 process ( $session, $url )
process is really a wrapper around $session->url->page(); process is really a wrapper around $session->url->page();
=head3 $session
The current WebGUI session variable.
=head3 $url
A URL to safely append to the end of the page URL.
=cut =cut
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub process { sub process {
my $session = shift; my $session = shift;
return $session->url->page(); my $url = shift;
my $pageUrl = $session->url->page();
if ($url) {
my $uri = URI->new($pageUrl);
##Append the requested URL to the path part of the URL
$uri->path(join "/", $uri->path, $url);
$pageUrl = $uri->as_string;
}
$pageUrl =~ tr{/}{/}s; ##Remove duplicate slashes.
return $pageUrl;
} }

View file

@ -20,16 +20,25 @@ Package WebGUI::Macro::Slash_gatewayUrl
Macro for returning the gateway URL (defined in the WebGUI config file) to the site. Macro for returning the gateway URL (defined in the WebGUI config file) to the site.
=head2 process ( ) =head2 process ( $session, $url )
process is really a wrapper around $session->url->gateway(); process is really a wrapper around $session->url->gateway();
=head3 $session
A WebGUI session variable.
=head3 $url
A url which will be passed to $session->url->gateway().
=cut =cut
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub process { sub process {
my $session = shift; my $session = shift;
return $session->url->gateway(); my $url = shift;
return $session->url->gateway($url);
} }

View file

@ -15,11 +15,17 @@ our $I18N = {
'page url body' => { 'page url body' => {
message => q| message => q|
<p><b>&#94;PageUrl;</b><br /> <p><b>&#94;PageUrl;</b><br />
<b>&#94;PageUrl(/sub/page);</b><br />
The URL to the current page (example: <i>/index.pl/pagename</i>). The URL to the current page (example: <i>/index.pl/pagename</i>).
</p> </p>
<p>The macro takes a single, optional argument; a URL. The URL will be appended to
the end of the page's URL. This is mainly useful when you enable Prevent Proxy Caching
in the WebGUI settings.</p>
<p>This Macro may be nested inside other Macros.</p> <p>This Macro may be nested inside other Macros.</p>
|, |,
lastUpdated => 1168622829, lastUpdated => 1169588703,
}, },
}; };

View file

@ -15,11 +15,21 @@ our $I18N = {
'gateway url body' => { 'gateway url body' => {
message => q| message => q|
<p><b>&#94;/; - System URL</b><br /> <p><b>&#94;/; - System URL</b><br />
The URL to the gateway script (example: <i>/index.pl/</i>). <b>&#94;/(/home/page); - System URL</b><br />
</p> The URL to the gateway script (example: <i>/</i>).</p>
<p>The macro takes a single, optional argument; a URL. The URL will be appended to
the end of the gateway URL. This is mainly useful when you enable Prevent Proxy Caching
in the WebGUI settings.</p>
<p>&#94;/;home/page will break with Prevent Proxy Caching set because the URL that is made
will look like this: /?noCache=37,1127808995home/page. By passing the URL directly to the
macro, &#94;/(home/page);, the special param for disabling caching will be placed on the
end, /home/page?noCache=37,1127808995.
<p>This Macro may be nested inside other Macros.</p> <p>This Macro may be nested inside other Macros.</p>
|, |,
lastUpdated => 1168623028, lastUpdated => 1169584181,
}, },
}; };

View file

@ -13,7 +13,6 @@ use strict;
use lib "$FindBin::Bin/../lib"; use lib "$FindBin::Bin/../lib";
use WebGUI::Test; use WebGUI::Test;
use WebGUI::Macro::PageUrl;
use WebGUI::Session; use WebGUI::Session;
use Data::Dumper; use Data::Dumper;
@ -21,16 +20,45 @@ use Test::More; # increment this value for each test you create
my $session = WebGUI::Test->session; my $session = WebGUI::Test->session;
plan tests => 2; my $numTests = 5;
$numTests += 1; #For the use_ok
plan tests => $numTests;
my $preventProxyCache = $session->setting->get('preventProxyCache');
my $macro = 'WebGUI::Macro::PageUrl';
my $loaded = use_ok($macro);
SKIP: {
skip "Unable to load $macro", $numTests-1 unless $loaded;
$session->setting->set('preventProxyCache', 0) if ($preventProxyCache);
my $homeAsset = WebGUI::Asset->getDefault($session); my $homeAsset = WebGUI::Asset->getDefault($session);
##Make the homeAsset the default asset in the session. ##Make the homeAsset the default asset in the session.
$session->asset($homeAsset); $session->asset($homeAsset);
my $output = WebGUI::Macro::PageUrl::process($session); my $output;
$output = WebGUI::Macro::PageUrl::process($session);
is($output, $session->url->gateway.$homeAsset->get('url'), 'fetching url for site default asset'); is($output, $session->url->gateway.$homeAsset->get('url'), 'fetching url for site default asset');
$output = WebGUI::Macro::PageUrl::process($session, '/sub/page');
is($output, $session->url->gateway.$homeAsset->get('url').'/sub/page', 'fetching url for site default asset with sub url');
$session->setting->set('preventProxyCache', 1);
$output = WebGUI::Macro::PageUrl::process($session);
like($output, qr{\?noCache=\d+,\d+$}, 'checking the cache settings in the page URL');
$output = WebGUI::Macro::PageUrl::process($session, '/sub/page');
like($output, qr{/sub/page\?noCache=\d+,\d+$}, 'checking the cache settings in the URL are at the end of the page URL');
}
TODO: { TODO: {
local $TODO = "Tests to make later"; local $TODO = "Tests to make later";
ok(0, 'Fetch url from locally made asset with known url'); ok(0, 'Fetch url from locally made asset with known url');

View file

@ -13,7 +13,6 @@ use strict;
use lib "$FindBin::Bin/../lib"; use lib "$FindBin::Bin/../lib";
use WebGUI::Test; use WebGUI::Test;
use WebGUI::Macro::Slash_gatewayUrl;
use WebGUI::Session; use WebGUI::Session;
use Data::Dumper; use Data::Dumper;
@ -21,11 +20,46 @@ use Test::More; # increment this value for each test you create
my $session = WebGUI::Test->session; my $session = WebGUI::Test->session;
plan tests => 1;
##Note, this is not a test of the gateway method. That is done over ##Note, this is not a test of the gateway method. That is done over
##in t/Session/Url.t All we need to do is make sure that the macro ##in t/Session/Url.t All we need to do is make sure that the macro
##fetches the same thing as the method. ##fetches the same thing as the method.
my $output = WebGUI::Macro::Slash_gatewayUrl::process($session); my $numTests = 4;
$numTests += 1; #For the use_ok
plan tests => $numTests;
my $preventProxyCache = $session->setting->get('preventProxyCache');
my $macro = 'WebGUI::Macro::Slash_gatewayUrl';
my $loaded = use_ok($macro);
SKIP: {
skip "Unable to load $macro", $numTests-1 unless $loaded;
$session->setting->set('preventProxyCache', 0) if ($preventProxyCache);
my $output;
$output = WebGUI::Macro::Slash_gatewayUrl::process($session);
is($output, $session->url->gateway, 'fetching site gateway'); is($output, $session->url->gateway, 'fetching site gateway');
$output = WebGUI::Macro::Slash_gatewayUrl::process($session, '/foo/bar');
is($output, $session->url->gateway('/foo/bar'), 'passing URL through to macro');
$session->setting->set('preventProxyCache', 1);
$output = WebGUI::Macro::Slash_gatewayUrl::process($session);
like($output, qr{/\?noCache=\d+,\d+$}, 'checking the cache settings in the URL');
$output = WebGUI::Macro::Slash_gatewayUrl::process($session, '/foo/bar');
like($output, qr{/foo/bar\?noCache=\d+,\d+$}, 'checking the cache settings in the URL are at the end of the URL');
$session->setting->set('preventProxyCache', 0);
}
END {
$session->setting->set('preventProxyCache', $preventProxyCache);
}