X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FCGI.pm;h=5ac31dbecd3385f2b9a862b454cc8c41fa9195fe;hb=c422010521a7c09673a8d4d0068d3fd482dd2dbc;hp=1ddc62c7a55641ea3f212300234312abdce0cedb;hpb=3913f6d159b5b8110061690b7c97642c27abf7eb;p=freeside.git
diff --git a/FS/FS/CGI.pm b/FS/FS/CGI.pm
index 1ddc62c7a..5ac31dbec 100644
--- a/FS/FS/CGI.pm
+++ b/FS/FS/CGI.pm
@@ -6,11 +6,11 @@ use Exporter;
use CGI;
use URI::URL;
#use CGI::Carp qw(fatalsToBrowser);
-use FS::UID;
+use FS::UID qw( cgi );
@ISA = qw(Exporter);
-@EXPORT_OK = qw(header menubar idiot eidiot popurl table itable ntable
- small_custview myexit http_header);
+@EXPORT_OK = qw( header menubar idiot eidiot popurl rooturl table itable ntable
+ myexit http_header);
=head1 NAME
@@ -62,9 +62,9 @@ sub header {
- $title
+ $title
-
+
END
$x .= $menubar. "
" if $menubar;
$x;
@@ -79,14 +79,7 @@ Sets an http header.
sub http_header {
my ( $header, $value ) = @_;
if (exists $ENV{MOD_PERL}) {
- if ( defined $main::Response
- && $main::Response->isa('Apache::ASP::Response') ) { #Apache::ASP
- if ( $header =~ /^Content-Type$/ ) {
- $main::Response->{ContentType} = $value;
- } else {
- $main::Response->AddHeader( $header => $value );
- }
- } elsif ( defined $HTML::Mason::Commands::r ) { #Mason
+ if ( defined $HTML::Mason::Commands::r ) { #Mason
## is this the correct pacakge for $r ??? for 1.0x and 1.1x ?
if ( $header =~ /^Content-Type$/ ) {
$HTML::Mason::Commands::r->content_type($value);
@@ -115,6 +108,7 @@ sub menubar { #$menubar=menubar('Main Menu', '../', 'Item', 'url', ... );
my($item,$url,@html);
while (@_) {
($item,$url)=splice(@_,0,2);
+ next if $item =~ /^\s*Main\s+Menu\s*$/i;
push @html, qq!$item!;
}
join(' | ',@html);
@@ -185,12 +179,7 @@ If running under mod_perl, calles Apache::exit, otherwise, calls exit.
sub myexit {
if (exists $ENV{MOD_PERL}) {
- if ( defined $main::Response
- && $main::Response->isa('Apache::ASP::Response') ) { #Apache::ASP
- $main::Response->End();
- require Apache;
- Apache::exit();
- } elsif ( defined $HTML::Mason::Commands::m ) { #Mason
+ if ( defined $HTML::Mason::Commands::m ) { #Mason
#$HTML::Mason::Commands::m->flush_buffer();
$HTML::Mason::Commands::m->abort();
die "shouldn't fall through to here (mason \$m->abort didn't)";
@@ -205,16 +194,24 @@ sub myexit {
}
}
-=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;
@@ -225,6 +222,45 @@ sub popurl {
$x;
}
+=item rooturl
+
+=cut
+
+sub rooturl {
+ my $url_string;
+ if ( scalar(@_) ) {
+ $url_string = shift;
+ } else {
+ # better to start with the client-provided URL
+ my $cgi = cgi;
+ $url_string = $cgi->isa('Apache') ? $cgi->uri : $cgi->url;
+ }
+
+ $url_string =~ s/\?.*//;
+
+ #even though this is kludgy
+ $url_string =~ s{ / index\.html /? $ }
+ {/}x;
+ $url_string =~
+ s{
+ /
+ (browse|config|docs|edit|graph|misc|search|view|loginout|pref|elements|rt|torrus)
+ (/process)?
+ ([\w\-\.\/]*)
+ $
+ }
+ {}x;
+
+ #elements because of progress-popup.html...
+ #XXX remove anything from elements that is called directly & prevent
+ #those pages from being served up
+
+ $url_string .= '/' unless $url_string =~ /\/$/;
+
+ $url_string;
+
+}
+
=item table
Returns HTML tag for beginning a table.
@@ -252,10 +288,11 @@ Returns HTML tag for beginning an (invisible) table.
sub itable {
my $col = shift;
my $cellspacing = shift || 0;
+ my $width = ( scalar(@_) && shift ) ? '' : 'WIDTH="100%"'; #bah
if ( $col ) {
- qq!!;
+ qq!!;
} else {
- qq!!;
+ qq!!;
}
}
@@ -276,102 +313,6 @@ sub ntable {
}
-=item small_custview CUSTNUM || CUST_MAIN_OBJECT, COUNTRYDEFAULT
-
-Sheesh. I should just switch to Mason.
-
-=cut
-
-sub small_custview {
- use FS::Record qw(qsearchs);
- use FS::cust_main;
-
- my $arg = shift;
- my $countrydefault = shift || 'US';
-
- my $cust_main = ref($arg) ? $arg
- : qsearchs('cust_main', { 'custnum' => $arg } )
- or die "unknown custnum $arg";
-
- my $html = 'Customer #'. $cust_main->custnum. ''.
- ' - '.
- ucfirst($cust_main->status). ''.
- ntable('#e8e8e8'). ''. ntable("#cccccc",2).
- ' |
Billing Address | '.
- $cust_main->getfield('last'). ', '. $cust_main->first. ' ';
-
- $html .= $cust_main->company. ' ' if $cust_main->company;
- $html .= $cust_main->address1. ' ';
- $html .= $cust_main->address2. ' ' if $cust_main->address2;
- $html .= $cust_main->city. ', '. $cust_main->state. ' '. $cust_main->zip. ' ';
- $html .= $cust_main->country. ' '
- if $cust_main->country && $cust_main->country ne $countrydefault;
-
- $html .= ' |
| ';
- if ( $cust_main->daytime && $cust_main->night ) {
- use FS::Msgcat;
- $html .= ( FS::Msgcat::_gettext('daytime') || 'Day' ).
- ' '. $cust_main->daytime.
- ' '. ( FS::Msgcat::_gettext('night') || 'Night' ).
- ' '. $cust_main->night;
- } elsif ( $cust_main->daytime || $cust_main->night ) {
- $html .= $cust_main->daytime || $cust_main->night;
- }
- if ( $cust_main->fax ) {
- $html .= ' Fax '. $cust_main->fax;
- }
-
- $html .= ' |
';
-
- if ( defined $cust_main->dbdef_table->column('ship_last') ) {
-
- my $pre = $cust_main->ship_last ? 'ship_' : '';
-
- $html .= ''. ntable("#cccccc",2).
- ' | Service Address | '.
- $cust_main->get("${pre}last"). ', '.
- $cust_main->get("${pre}first"). ' ';
- $html .= $cust_main->get("${pre}company"). ' '
- if $cust_main->get("${pre}company");
- $html .= $cust_main->get("${pre}address1"). ' ';
- $html .= $cust_main->get("${pre}address2"). ' '
- if $cust_main->get("${pre}address2");
- $html .= $cust_main->get("${pre}city"). ', '.
- $cust_main->get("${pre}state"). ' '.
- $cust_main->get("${pre}ship_zip"). ' ';
- $html .= $cust_main->get("${pre}country"). ' '
- if $cust_main->get("${pre}country")
- && $cust_main->get("${pre}country") ne $countrydefault;
-
- $html .= ' |
| ';
-
- if ( $cust_main->get("${pre}daytime") && $cust_main->get("${pre}night") ) {
- use FS::Msgcat;
- $html .= ( FS::Msgcat::_gettext('daytime') || 'Day' ).
- ' '. $cust_main->get("${pre}daytime").
- ' '. ( FS::Msgcat::_gettext('night') || 'Night' ).
- ' '. $cust_main->get("${pre}night");
- } elsif ( $cust_main->get("${pre}daytime")
- || $cust_main->get("${pre}night") ) {
- $html .= $cust_main->get("${pre}daytime")
- || $cust_main->get("${pre}night");
- }
- if ( $cust_main->get("${pre}fax") ) {
- $html .= ' Fax '. $cust_main->get("${pre}fax");
- }
-
- $html .= ' |
';
- }
-
- $html .= '
';
-
- $html .= '
Balance: $'. $cust_main->balance. '
';
-
- # last payment might be good here too?
-
- $html;
-}
-
=back
=head1 BUGS
@@ -380,8 +321,6 @@ Not OO.
Not complete.
-small_custview sooooo doesn't belong here. i should just switch to Mason.
-
=head1 SEE ALSO
L, L