- switch to mason by default
authorivan <ivan>
Thu, 7 Aug 2003 12:47:27 +0000 (12:47 +0000)
committerivan <ivan>
Thu, 7 Aug 2003 12:47:27 +0000 (12:47 +0000)
- minimum mason version 1.1 (and doc)
- evaluate .html files with mason/asp
- turn on profiling with mason like with Apache::ASP (redirects not working)
- (start of) includes

Makefile
htetc/global.asa
htetc/handler.pl
htetc/handler.pl-1.0x [deleted file]
httemplate/autohandler [new file with mode: 0644]
httemplate/docs/install.html
httemplate/docs/upgrade10.html
httemplate/index.html

index 6256ccc..13e8cf0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,8 @@ DATASOURCE = DBI:Pg:dbname=freeside
 DB_USER = freeside
 DB_PASSWORD=
 
 DB_USER = freeside
 DB_PASSWORD=
 
-TEMPLATE = asp
-#TEMPLATE = mason
+#TEMPLATE = asp
+TEMPLATE = mason
 
 ASP_GLOBAL = /usr/local/etc/freeside/asp-global
 MASON_HANDLER = /usr/local/etc/freeside/handler.pl
 
 ASP_GLOBAL = /usr/local/etc/freeside/asp-global
 MASON_HANDLER = /usr/local/etc/freeside/handler.pl
index 6f76fd2..21e112e 100644 (file)
@@ -72,7 +72,8 @@ sub Script_OnStart {
   &cgisuidsetup($cgi);
   $p = popurl(2);
   #print $cgi->header( '-expires' => 'now' );
   &cgisuidsetup($cgi);
   $p = popurl(2);
   #print $cgi->header( '-expires' => 'now' );
-  dbh->{'private_profile'} = {} if dbh->can('sprintProfile');
+  #dbh->{'private_profile'} = {} if dbh->can('sprintProfile');
+  dbh->{'private_profile'} = {} if UNIVERSAL::can(dbh, 'sprintProfile') );
 
   #really should check for FS::Profiler or something
     # Devel::AutoProfiler _our_ VERSION?  thanks a fucking lot
 
   #really should check for FS::Profiler or something
     # Devel::AutoProfiler _our_ VERSION?  thanks a fucking lot
@@ -109,7 +110,7 @@ sub Script_OnFlush {
   #$$ref = $cgi->header() . $$ref;
   #warn "Script_OnFlush called with dbh ". dbh. "\n";
   #if ( dbh->can('sprintProfile') ) {
   #$$ref = $cgi->header() . $$ref;
   #warn "Script_OnFlush called with dbh ". dbh. "\n";
   #if ( dbh->can('sprintProfile') ) {
-  if ( UNIVERSAL::can(dbh,'sprintProfile') ) {
+  if ( UNIVERSAL::can(dbh, 'sprintProfile') ) {
     #warn "dbh can sprintProfile\n";
     if ( lc($Response->{ContentType}) eq 'text/html' ) { #con
       #warn "contenttype is sprintProfile\n";
     #warn "dbh can sprintProfile\n";
     if ( lc($Response->{ContentType}) eq 'text/html' ) { #con
       #warn "contenttype is sprintProfile\n";
@@ -137,7 +138,11 @@ if ( defined(@DBIx::Profile::ISA) ) {
     my $page =
       $cgi->header.
       qq!<HTML><BODY>Redirect to <A HREF="$location">$location</A><BR><BR>!.
     my $page =
       $cgi->header.
       qq!<HTML><BODY>Redirect to <A HREF="$location">$location</A><BR><BR>!.
-      '<PRE>'. encode_entities(dbh->sprintProfile()).
+      '<PRE>'.
+        ( UNIVERSAL::can(dbh, 'sprintProfile')
+            ? encode_entities(dbh->sprintProfile())
+            : 'DBIx::Profile missing sprintProfile method;'.
+              'unpatched or too old?'                        ).
       "\n\n". &sprintAutoProfile().  '</PRE>'.
       '</BODY></HTML>';
     dbh->{'private_profile'} = {};
       "\n\n". &sprintAutoProfile().  '</PRE>'.
       '</BODY></HTML>';
     dbh->{'private_profile'} = {};
index 2b645ce..b28cfe9 100644 (file)
@@ -7,7 +7,7 @@
 package HTML::Mason;
 
 # Bring in main Mason package.
 package HTML::Mason;
 
 # Bring in main Mason package.
-use HTML::Mason;
+use HTML::Mason 1.1;
 
 # Bring in ApacheHandler, necessary for mod_perl integration.
 # Uncomment the second line (and comment the first) to use
 
 # Bring in ApacheHandler, necessary for mod_perl integration.
 # Uncomment the second line (and comment the first) to use
@@ -120,29 +120,47 @@ sub handler
       use FS::export_svc;
       use FS::msgcat;
 
       use FS::export_svc;
       use FS::msgcat;
 
-      *CGI::redirect = sub {
+      *notCGI::redirect = sub {
         my( $self, $location ) = @_;
         use vars qw($m);
         my( $self, $location ) = @_;
         use vars qw($m);
-        #http://www.masonhq.com/docs/faq/#how_do_i_do_an_external_redirect
-        $m->clear_buffer;
-        # The next two lines are necessary to stop Apache from re-reading
-        # POSTed data.
-        $r->method('GET');
-        $r->headers_in->unset('Content-length');
-        $r->content_type('text/html');
-        #$r->err_header_out('Location' => $location);
-        $r->header_out('Location' => $location);
-         $r->header_out('Content-Type' => 'text/html');
-         $m->abort(302);
-
-        '';
+
+        if ( defined(@DBIx::Profile::ISA) ) { #profiling redirect
+
+       #   my $page =
+
+
+       #   return $page;
+
+        } else { #normal redirect
+
+          #http://www.masonhq.com/docs/faq/#how_do_i_do_an_external_redirect
+          $m->clear_buffer;
+          # The next two lines are necessary to stop Apache from re-reading
+          # POSTed data.
+          $r->method('GET');
+          $r->headers_in->unset('Content-length');
+          $r->content_type('text/html');
+          #$r->err_header_out('Location' => $location);
+          $r->header_out('Location' => $location);
+          $r->header_out('Content-Type' => 'text/html');
+          $m->abort(302);
+
+          '';
+         }
+
       };
 
       $cgi = new CGI;
       &cgisuidsetup($cgi);
       #&cgisuidsetup($r);
       $p = popurl(2);
       };
 
       $cgi = new CGI;
       &cgisuidsetup($cgi);
       #&cgisuidsetup($r);
       $p = popurl(2);
-    }
+
+      sub include {
+        use vars qw($m);
+        $m->scomp(@_);
+      }
+
+    } # end package HTML::Mason::Commands;
 
     $r->content_type('text/html');
     #eorar
 
     $r->content_type('text/html');
     #eorar
diff --git a/htetc/handler.pl-1.0x b/htetc/handler.pl-1.0x
deleted file mode 100644 (file)
index cae5323..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/perl
-#
-# This is a basic, fairly fuctional Mason handler.pl.
-#
-# For something a little more involved, check out session_handler.pl
-
-package HTML::Mason;
-
-# Bring in main Mason package.
-use HTML::Mason;
-
-# Bring in ApacheHandler, necessary for mod_perl integration.
-# Uncomment the second line (and comment the first) to use
-# Apache::Request instead of CGI.pm to parse arguments.
-use HTML::Mason::ApacheHandler;
-# use HTML::Mason::ApacheHandler (args_method=>'mod_perl');
-
-# Uncomment the next line if you plan to use the Mason previewer.
-#use HTML::Mason::Preview;
-
-use strict;
-
-# List of modules that you want to use from components (see Admin
-# manual for details)
-#{  package HTML::Mason::Commands;
-#   use CGI;
-#}
-
-# Create Mason objects
-#
-my $parser = new HTML::Mason::Parser;
-my $interp = new HTML::Mason::Interp (parser=>$parser,
-                                      comp_root=>'/var/www/freeside',
-                                      data_dir=>'/usr/local/etc/freeside/masondata',
-                                      out_mode=>'stream',
-                                     );
-my $ah = new HTML::Mason::ApacheHandler ( interp => $interp,
-                                          #auto_send_headers => 0,
-                                        );
-
-# Activate the following if running httpd as root (the normal case).
-# Resets ownership of all files created by Mason at startup.
-#
-chown (Apache->server->uid, Apache->server->gid, $interp->files_written);
-
-sub handler
-{
-    my ($r) = @_;
-
-    # If you plan to intermix images in the same directory as
-    # components, activate the following to prevent Mason from
-    # evaluating image files as components.
-    #
-    #return -1 if $r->content_type && $r->content_type !~ m|^text/|i;
-
-    #rar
-    { package HTML::Mason::Commands;
-      use strict;
-      use vars qw( $cgi $p );
-      use CGI;
-      #use CGI::Carp qw(fatalsToBrowser);
-      use Date::Format;
-      use Date::Parse;
-      use Time::Local;
-      use Tie::IxHash;
-      use HTML::Entities;
-      use IO::Handle;
-      use IO::File;
-      use String::Approx qw(amatch);
-      use Chart::LinesPoints;
-      use HTML::Widgets::SelectLayers 0.02;
-      use FS::UID qw(cgisuidsetup dbh getotaker datasrc driver_name);
-      use FS::Record qw(qsearch qsearchs fields dbdef);
-      use FS::Conf;
-      use FS::CGI qw(header menubar popurl table itable ntable idiot eidiot
-                     small_custview myexit http_header);
-      use FS::Msgcat qw(gettext geterror);
-
-      use FS::agent;
-      use FS::agent_type;
-      use FS::domain_record;
-      use FS::cust_bill;
-      use FS::cust_bill_pay;
-      use FS::cust_credit;
-      use FS::cust_credit_bill;
-      use FS::cust_main;
-      use FS::cust_main_county;
-      use FS::cust_pay;
-      use FS::cust_pkg;
-      use FS::cust_refund;
-      use FS::cust_svc;
-      use FS::nas;
-      use FS::part_bill_event;
-      use FS::part_pkg;
-      use FS::part_referral;
-      use FS::part_svc;
-      use FS::part_svc_router;
-      use FS::part_virtual_field;
-      use FS::pkg_svc;
-      use FS::port;
-      use FS::queue qw(joblisting);
-      use FS::raddb;
-      use FS::session;
-      use FS::svc_acct;
-      use FS::svc_acct_pop qw(popselector);
-      use FS::svc_domain;
-      use FS::svc_forward;
-      use FS::svc_www;
-      use FS::router;
-      use FS::addr_block;
-      use FS::svc_broadband;
-      use FS::type_pkgs;
-      use FS::part_export;
-      use FS::part_export_option;
-      use FS::export_svc;
-      use FS::msgcat;
-
-      *CGI::redirect = sub {
-        my( $self, $location ) = @_;
-
-        #http://www.masonhq.com/docs/faq/#how_do_i_do_an_external_redirect
-        $m->clear_buffer;
-        # The next two lines are necessary to stop Apache from re-reading
-        # POSTed data.
-        $r->method('GET');
-        $r->headers_in->unset('Content-length');
-        $r->content_type('text/html');
-        #$r->err_header_out('Location' => $location);
-        $r->header_out('Location' => $location);
-         $r->header_out('Content-Type' => 'text/html');
-         $m->abort(302);
-
-        '';
-      };
-
-      $cgi = new CGI;
-      &cgisuidsetup($cgi);
-      #&cgisuidsetup($r);
-      $p = popurl(2);
-    }
-
-    $r->content_type('text/html');
-    #eorar
-
-    my $headers = $r->headers_out;
-    $headers->{'Pragma'} = $headers->{'Cache-control'} = 'no-cache';
-    #$r->no_cache(1);
-    $headers->{'Expires'} = '0';
-
-#    $r->send_http_header;
-
-    my $status = $ah->handle_request($r);
-
-    $status;
-}
-
-1;
diff --git a/httemplate/autohandler b/httemplate/autohandler
new file mode 100644 (file)
index 0000000..e6e50d5
--- /dev/null
@@ -0,0 +1,23 @@
+% $m->call_next;
+
+<%init>
+  dbh->{'private_profile'} = {} if UNIVERSAL::can(dbh, 'sprintProfile');
+</%init>
+
+<%filter>
+
+my $profile = '';
+if ( UNIVERSAL::can(dbh, 'sprintProfile') ) {
+
+  #if contenttype is text/html!!  **FIXME**
+
+    $profile = '<PRE>'. ("\n"x4096). encode_entities(dbh->sprintProfile()).
+               #"\n\n". &sprintAutoProfile(). '</PRE>';
+               "\n\n".                        '</PRE>';
+  #endif
+
+  dbh->{'private_profile'} = {};
+}
+
+s/(<\/BODY>[\s\n]*<\/HTML>[\s\n]*)$/$profile$1/i;
+</%filter>
index 54614cc..463575c 100644 (file)
@@ -130,8 +130,8 @@ cp&nbsp;htetc/global.asa&nbsp;/usr/local/etc/freeside/asp-global/global.asa
 <font size="-1"><pre>
 PerlModule Apache::ASP
 &lt;Directory&nbsp;/usr/local/apache/htdocs/freeside-asp&gt;
 <font size="-1"><pre>
 PerlModule Apache::ASP
 &lt;Directory&nbsp;/usr/local/apache/htdocs/freeside-asp&gt;
-&lt;Files ~ (\.cgi)&gt;
-AddHandler perl-script .cgi
+&lt;Files ~ (\.cgi|\.html)&gt;
+SetHandler perl-script
 PerlHandler Apache::ASP
 &lt;/Files&gt;
 &lt;Perl&gt;
 PerlHandler Apache::ASP
 &lt;/Files&gt;
 &lt;Perl&gt;
@@ -145,7 +145,7 @@ PerlSetVar Debug 2
     <td><ul>
       <li>Run <tt>make masondocs</tt>
       <li>Copy <tt>masondocs/</tt> to your web server's document space. (For example: <tt>/usr/local/apache/htdocs/freeside-mason</tt>)
     <td><ul>
       <li>Run <tt>make masondocs</tt>
       <li>Copy <tt>masondocs/</tt> to your web server's document space. (For example: <tt>/usr/local/apache/htdocs/freeside-mason</tt>)
-      <li>Copy <tt>htetc/handler.pl</tt> to <tt>/usr/local/etc/freeside</tt> (use htetc/handler.pl-1.0x for Mason versions before 1.10).
+      <li>Copy <tt>htetc/handler.pl</tt> to <tt>/usr/local/etc/freeside</tt>
       <li>Edit <tt>handler.pl</tt> and:
       <ul>
         <li> set an appropriate <tt>comp_root</tt>, such as <tt>/usr/local/apache/htdocs/freeside-mason</tt>
       <li>Edit <tt>handler.pl</tt> and:
       <ul>
         <li> set an appropriate <tt>comp_root</tt>, such as <tt>/usr/local/apache/htdocs/freeside-mason</tt>
@@ -156,8 +156,8 @@ PerlSetVar Debug 2
 <font size="-1"><pre>
 PerlModule HTML::Mason
 &lt;Directory&nbsp;/usr/local/apache/htdocs/freeside-mason&gt;
 <font size="-1"><pre>
 PerlModule HTML::Mason
 &lt;Directory&nbsp;/usr/local/apache/htdocs/freeside-mason&gt;
-&lt;Files ~ (\.cgi)&gt;
-AddHandler perl-script .cgi
+&lt;Files ~ (\.cgi|.html)&gt;
+SetHandler perl-script
 PerlHandler HTML::Mason
 &lt;/Files&gt;
 &lt;Perl&gt;
 PerlHandler HTML::Mason
 &lt;/Files&gt;
 &lt;Perl&gt;
index 4c2c17b..d7a8c74 100644 (file)
@@ -99,6 +99,6 @@ dbdef-create username
 create-history-tables username cust_bill_pkg_detail router part_svc_router addr_block svc_broadband
 dbdef-create username
 
 create-history-tables username cust_bill_pkg_detail router part_svc_router addr_block svc_broadband
 dbdef-create username
 
-
+apache - fix <Files> sections to include .html also
 
 </pre>
 
 </pre>
index 3e87af7..99b321f 100644 (file)
@@ -12,7 +12,7 @@
       <font color="#ff0000" size=7>freeside main menu</font>
     </td><td align=right valign=bottom>
        version %%%VERSION%%%
       <font color="#ff0000" size=7>freeside main menu</font>
     </td><td align=right valign=bottom>
        version %%%VERSION%%%
-      <BR><A HREF="http://www.sisd.com/freeside">Freeside home page</A>
+      <BR><A HREF="http://www.sisd.com/freeside">Freeside&nbsp;home&nbsp;page</A>
       <BR><A HREF="docs/">Documentation</A>
     </td></tr>
   </table>
       <BR><A HREF="docs/">Documentation</A>
     </td></tr>
   </table>