X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FMason.pm;h=550ea1a451363bf302911217de376efb6bab34d9;hb=387c96b0d8f224f3ade27bed9348f37b432bbb8a;hp=f1e5c7de5b184f0f6da47d410138bb46df5dcf3d;hpb=de3bf373e97f6875e09fc17d99068a2716bf3b2d;p=freeside.git diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index f1e5c7de5..550ea1a45 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -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; @@ -111,6 +112,8 @@ if ( -e $addl_handler_use_file ) { #selectlayers.html 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 @@ -123,7 +126,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 ); @@ -139,12 +142,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; @@ -246,6 +251,10 @@ if ( -e $addl_handler_use_file ) { use FS::cust_bill_batch; use FS::rate_time; use FS::rate_time_interval; + use FS::msg_template; + use FS::part_tag; + use FS::acct_snarf; + use FS::part_pkg_discount; # Sammath Naur if ( $FS::Mason::addl_handler_use ) { @@ -357,6 +366,7 @@ if ( -e $addl_handler_use_file ) { sub include { use vars qw($m); + #carp #should just switch to <& &> syntax $m->scomp(@_); } @@ -446,7 +456,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'; @@ -461,31 +471,38 @@ 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}; my $html_defang = new HTML::Defang (%defang_opts); + my $js_string_sub = sub { + #${$_[0]} =~ s/(['\\\n])/'\\'.($1 eq "\n" ? 'n' : $1)/ge; + ${$_[0]} =~ s/(['\\])/\\$1/g; + ${$_[0]} =~ s/\r/\\r/g; + ${$_[0]} =~ s/\n/\\n/g; + ${$_[0]} = "'". ${$_[0]}. "'"; + }; + my $fs_interp = new HTML::Mason::Interp ( %interp, - escape_flags => { 'js_string' => sub { - #${$_[0]} =~ s/(['\\\n])/'\\'.($1 eq "\n" ? 'n' : $1)/ge; - ${$_[0]} =~ s/(['\\])/\\$1/g; - ${$_[0]} =~ s/\n/\\n/g; - ${$_[0]} = "'". ${$_[0]}. "'"; - }, + comp_root => $fs_comp_root, + escape_flags => { 'js_string' => $js_string_sub, 'defang' => sub { ${$_[0]} = $html_defang->defang(${$_[0]}); }, @@ -497,7 +514,13 @@ sub mason_interps { my $rt_interp = new HTML::Mason::Interp ( %interp, - escape_flags => { 'h' => \&RT::Interface::Web::EscapeUTF8 }, + comp_root => [ + [ 'rt' => '%%%FREESIDE_DOCUMENT_ROOT%%%/rt' ], + [ 'freeside' => '%%%FREESIDE_DOCUMENT_ROOT%%%' ], + ], + escape_flags => { 'h' => \&RT::Interface::Web::EscapeUTF8, + 'js_string' => $js_string_sub, + }, compiler => HTML::Mason::Compiler::ToObject->new( default_escape_flags => 'h', allow_globals => [qw(%session)],