3 # This is a basic, fairly fuctional Mason handler.pl.
5 # For something a little more involved, check out session_handler.pl
9 # Bring in main Mason package.
12 # Bring in ApacheHandler, necessary for mod_perl integration.
13 # Uncomment the second line (and comment the first) to use
14 # Apache::Request instead of CGI.pm to parse arguments.
15 use HTML::Mason::ApacheHandler;
16 # use HTML::Mason::ApacheHandler (args_method=>'mod_perl');
18 # Uncomment the next line if you plan to use the Mason previewer.
19 #use HTML::Mason::Preview;
23 # List of modules that you want to use from components (see Admin
25 #{ package HTML::Mason::Commands;
29 # Create Mason objects
32 #my $parser = new HTML::Mason::Parser;
33 #my $interp = new HTML::Mason::Interp (parser=>$parser,
34 # comp_root=>'/var/www/masondocs',
35 # data_dir=>'/usr/local/etc/freeside/masondata',
38 my $ah = new HTML::Mason::ApacheHandler (
40 #auto_send_headers => 0,
41 comp_root=>'%%%FREESIDE_DOCUMENT_ROOT%%%',
42 data_dir=>'/usr/local/etc/freeside/masondata',
46 # Activate the following if running httpd as root (the normal case).
47 # Resets ownership of all files created by Mason at startup.
49 #chown (Apache->server->uid, Apache->server->gid, $interp->files_written);
55 # If you plan to intermix images in the same directory as
56 # components, activate the following to prevent Mason from
57 # evaluating image files as components.
59 #return -1 if $r->content_type && $r->content_type !~ m|^text/|i;
62 { package HTML::Mason::Commands;
64 use vars qw( $cgi $p );
66 #use CGI::Carp qw(fatalsToBrowser);
74 use Business::CreditCard;
75 use String::Approx qw(amatch);
76 use Chart::LinesPoints;
77 use HTML::Widgets::SelectLayers 0.03;
78 use FS::UID qw(cgisuidsetup dbh getotaker datasrc driver_name);
79 use FS::Record qw(qsearch qsearchs fields dbdef);
81 use FS::CGI qw(header menubar popurl table itable ntable idiot eidiot
82 small_custview myexit http_header);
83 use FS::Msgcat qw(gettext geterror);
84 use FS::Misc qw( send_email );
85 use FS::Report::Table::Monthly;
89 use FS::domain_record;
91 use FS::cust_bill_pay;
93 use FS::cust_credit_bill;
95 use FS::cust_main_county;
101 use FS::part_bill_event;
103 use FS::part_referral;
105 use FS::part_svc_router;
106 use FS::part_virtual_field;
109 use FS::queue qw(joblisting);
113 use FS::svc_acct_pop qw(popselector);
119 use FS::svc_broadband;
120 use FS::svc_external;
123 use FS::part_export_option;
127 *CGI::redirect = sub {
128 my( $self, $location ) = @_;
131 if ( defined(@DBIx::Profile::ISA) ) { #profiling redirect
134 qq!<HTML><BODY>Redirect to <A HREF="$location">$location</A>!.
136 ( UNIVERSAL::can(dbh, 'sprintProfile')
137 ? encode_entities(dbh->sprintProfile())
138 : 'DBIx::Profile missing sprintProfile method;'.
139 'unpatched or too old?' ).
140 #"\n\n". &sprintAutoProfile(). '</PRE>'.
143 dbh->{'private_profile'} = {};
146 } else { #normal redirect
148 $m->redirect($location);
166 my( $location ) = @_;
169 #false laziness w/above
170 if ( defined(@DBIx::Profile::ISA) ) { #profiling redirect
173 qq!<HTML><BODY>Redirect to <A HREF="$location">$location</A>!.
175 ( UNIVERSAL::can(dbh, 'sprintProfile')
176 ? encode_entities(dbh->sprintProfile())
177 : 'DBIx::Profile missing sprintProfile method;'.
178 'unpatched or too old?' ).
179 #"\n\n". &sprintAutoProfile(). '</PRE>'.
183 dbh->{'private_profile'} = {};
187 } else { #normal redirect
189 $m->redirect($location);
195 } # end package HTML::Mason::Commands;
197 $r->content_type('text/html');
200 my $headers = $r->headers_out;
201 $headers->{'Cache-control'} = 'no-cache';
203 $headers->{'Expires'} = '0';
205 # $r->send_http_header;
207 my $status = $ah->handle_request($r);