}
}
-=item popurl LEVEL
+=item popurl LEVEL [URL]
-Returns current URL with LEVEL levels of path removed from the end (default 0).
+Returns current (or, optionally, passed) URL with LEVEL levels of path removed
+from the end (default 0).
=cut
sub popurl {
- my($up)=@_;
- my $cgi = &FS::UID::cgi;
- my $url_string = $cgi->isa('Apache') ? $cgi->uri : $cgi->url;
+ my $up = shift;
+
+ my $url_string;
+ if ( scalar(@_) ) {
+ $url_string = shift;
+ } else {
+ my $cgi = &FS::UID::cgi;
+ $url_string = $cgi->isa('Apache') ? $cgi->uri : $cgi->url;
+ }
+
$url_string =~ s/\?.*//;
my $url = new URI::URL ( $url_string );
my(@path)=$url->path_components;
=cut
sub rooturl {
- # better to start with the client-provided URL
- my $cgi = &FS::UID::cgi;
- my $url_string = $cgi->isa('Apache') ? $cgi->uri : $cgi->url;
+ my $url_string;
+ if ( scalar(@_) ) {
+ $url_string = shift;
+ } else {
+ # better to start with the client-provided URL
+ my $cgi = &FS::UID::cgi;
+ $url_string = $cgi->isa('Apache') ? $cgi->uri : $cgi->url;
+ }
+
$url_string =~ s/\?.*//;
#even though this is kludgy
$url_string =~
s{
/
- (browse|config|docs|edit|graph|misc|search|view|pref|rt|elements)
- /
- (process/)?
- ([\w\-\.\/]+)
+ (browse|config|docs|edit|graph|misc|search|view|pref|elements|rt|torrus)
+ (/process)?
+ ([\w\-\.\/]*)
$
}
{}x;