certificates ala communigate, RT#7515
[freeside.git] / FS / FS / Mason.pm
index 2a4b42f..d3c04db 100644 (file)
@@ -3,6 +3,7 @@ package FS::Mason;
 use strict;
 use vars qw( @ISA @EXPORT_OK $addl_handler_use );
 use Exporter;
+use Carp;
 use File::Slurp qw( slurp );
 use HTML::Mason 1.27; #http://www.masonhq.com/?ApacheModPerl2Redirect
 use HTML::Mason::Interp;
@@ -70,6 +71,7 @@ if ( -e $addl_handler_use_file ) {
   use URI::Escape;
   use HTML::Entities;
   use HTML::TreeBuilder;
+  use HTML::TableExtract qw(tree);
   use HTML::FormatText;
   use HTML::Defang;
   use JSON;
@@ -87,6 +89,7 @@ if ( -e $addl_handler_use_file ) {
   }
   use Text::CSV_XS;
   use Spreadsheet::WriteExcel;
+  use Spreadsheet::WriteExcel::Utility;
   use Business::CreditCard 0.30; #for mask-aware cardtype()
   use NetAddr::IP;
   use Net::Ping;
@@ -112,6 +115,7 @@ if ( -e $addl_handler_use_file ) {
   use Locale::Country;
   use Business::US::USPS::WebTools::AddressStandardization;
   use LWP::UserAgent;
+  use Storable qw( nfreeze thaw );
   use FS;
   use FS::UID qw( getotaker dbh datasrc driver_name );
   use FS::Record qw( qsearch qsearchs fields dbdef
@@ -124,7 +128,7 @@ if ( -e $addl_handler_use_file ) {
   use FS::UI::Web::small_custview qw(small_custview);
   use FS::UI::bytecount;
   use FS::Msgcat qw(gettext geterror);
-  use FS::Misc qw( send_email send_fax
+  use FS::Misc qw( send_email send_fax ocr_image
                    states_hash counties cities state_label
                  );
   use FS::Misc::eps2png qw( eps2png );
@@ -140,12 +144,14 @@ if ( -e $addl_handler_use_file ) {
   use FS::cust_bill_pay;
   use FS::cust_credit;
   use FS::cust_credit_bill;
-  use FS::cust_main qw(smart_search);
+  use FS::cust_main;
+  use FS::cust_main::Search qw(smart_search);
   use FS::cust_main::Import;
   use FS::cust_main_county;
   use FS::cust_location;
   use FS::cust_pay;
   use FS::cust_pkg;
+  use FS::cust_pkg::Import;
   use FS::part_pkg_taxclass;
   use FS::cust_pkg_reason;
   use FS::cust_refund;
@@ -250,6 +256,8 @@ if ( -e $addl_handler_use_file ) {
   use FS::msg_template;
   use FS::part_tag;
   use FS::acct_snarf;
+  use FS::part_pkg_discount;
+  use FS::svc_cert;
   # Sammath Naur
 
   if ( $FS::Mason::addl_handler_use ) {
@@ -361,6 +369,7 @@ if ( -e $addl_handler_use_file ) {
   
   sub include {
     use vars qw($m);
+    #carp #should just switch to <& &> syntax
     $m->scomp(@_);
   }
 
@@ -450,7 +459,7 @@ sub mason_interps {
     RT::LoadConfig();
   }
 
-  # A hook supporting strange legacy ways people have added stuff on
+  # A hook supporting strange legacy ways people (well, SG) have added stuff on
 
   my @addl_comp_root = ();
   my $addl_comp_root_file = '%%%FREESIDE_CONF%%%/addl_comp_root.pl';
@@ -465,17 +474,20 @@ sub mason_interps {
     }
   }
 
+  my $fs_comp_root =
+    scalar(@addl_comp_root)
+      ? [
+          [ 'freeside'=>'%%%FREESIDE_DOCUMENT_ROOT%%%' ],
+          @addl_comp_root,
+        ]
+      : '%%%FREESIDE_DOCUMENT_ROOT%%%';
+
   my %interp = (
     request_class        => $request_class,
     data_dir             => '%%%MASONDATA%%%',
     error_mode           => 'output',
     error_format         => 'html',
     ignore_warnings_expr => '.',
-    comp_root            => [
-                              [ 'freeside'=>'%%%FREESIDE_DOCUMENT_ROOT%%%'    ],
-                              [ 'rt'      =>'%%%FREESIDE_DOCUMENT_ROOT%%%/rt' ],
-                              @addl_comp_root,
-                            ],
   );
 
   $interp{out_method} = $opt{outbuf} if $mode eq 'standalone' && $opt{outbuf};
@@ -492,6 +504,7 @@ sub mason_interps {
 
   my $fs_interp = new HTML::Mason::Interp (
     %interp,
+    comp_root    => $fs_comp_root,
     escape_flags => { 'js_string' => $js_string_sub,
                       'defang'    => sub {
                         ${$_[0]} = $html_defang->defang(${$_[0]});
@@ -504,6 +517,10 @@ sub mason_interps {
 
   my $rt_interp = new HTML::Mason::Interp (
     %interp,
+    comp_root    => [
+                      [ 'rt'       => '%%%FREESIDE_DOCUMENT_ROOT%%%/rt' ],
+                      [ 'freeside' => '%%%FREESIDE_DOCUMENT_ROOT%%%'    ],
+                    ],
     escape_flags => { 'h'         => \&RT::Interface::Web::EscapeUTF8,
                       'js_string' => $js_string_sub,
                     },