X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FMason.pm;h=7be78aa038acf8d22e36acb73efe9918302ab060;hb=03eaa0e229c5f5fc68a178d20fb69733db709787;hp=41c472d76eed6340c57c84a48331c81d46d03d7b;hpb=37591b61f8ad6fc5c5acb2fd8f520d2dbe4f1539;p=freeside.git diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index 41c472d76..7be78aa03 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; @@ -64,6 +65,7 @@ if ( -e $addl_handler_use_file ) { use DateTime::Format::Strptime; use FS::Misc::DateTime qw( parse_datetime ); use Lingua::EN::Inflect qw(PL); + Lingua::EN::Inflect::classical names=>0; #Categorys use Tie::IxHash; use URI; use URI::Escape; @@ -72,6 +74,8 @@ if ( -e $addl_handler_use_file ) { use HTML::FormatText; use HTML::Defang; use JSON; +# use XMLRPC::Transport::HTTP; +# use XMLRPC::Lite; # for XMLRPC::Serializer use MIME::Base64; use IO::Handle; use IO::File; @@ -108,6 +112,7 @@ if ( -e $addl_handler_use_file ) { #selectlayers.html use Locale::Country; use Business::US::USPS::WebTools::AddressStandardization; + use LWP::UserAgent; use FS; use FS::UID qw( getotaker dbh datasrc driver_name ); use FS::Record qw( qsearch qsearchs fields dbdef @@ -124,6 +129,7 @@ if ( -e $addl_handler_use_file ) { states_hash counties cities state_label ); use FS::Misc::eps2png qw( eps2png ); + use FS::Report::FCC_477; use FS::Report::Table::Monthly; use FS::TicketSystem; use FS::Tron qw( tron_lint ); @@ -141,6 +147,7 @@ if ( -e $addl_handler_use_file ) { 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; @@ -215,6 +222,7 @@ if ( -e $addl_handler_use_file ) { use FS::part_pkg_report_option; use FS::cust_attachment; use FS::h_cust_pkg; + use FS::h_inventory_item; use FS::h_svc_acct; use FS::h_svc_broadband; use FS::h_svc_domain; @@ -235,6 +243,15 @@ if ( -e $addl_handler_use_file ) { use FS::cust_bill_pkg_discount; use FS::svc_mailinglist; use FS::cgp_rule; + use FS::cgp_rule_condition; + use FS::cgp_rule_action; + use FS::bill_batch; + 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; # Sammath Naur if ( $FS::Mason::addl_handler_use ) { @@ -247,6 +264,7 @@ if ( -e $addl_handler_use_file ) { use lib ( "/opt/rt3/local/lib", "/opt/rt3/lib" ); use vars qw($Nobody $SystemUser); use RT; + use RT::Util; use RT::Tickets; use RT::Transactions; use RT::Users; @@ -277,6 +295,9 @@ if ( -e $addl_handler_use_file ) { use RT::Interface::Web::Request; + #nother undeclared web UI dep (for ticket links graph) + use IPC::Run::SafeHandles; + #slow, unreliable, segfaults and is optional #see rt/html/Ticket/Elements/ShowTransactionAttachments #use Text::Quoted; @@ -342,6 +363,7 @@ if ( -e $addl_handler_use_file ) { sub include { use vars qw($m); + #carp #should just switch to <& &> syntax $m->scomp(@_); } @@ -350,6 +372,11 @@ if ( -e $addl_handler_use_file ) { $m->comp('/elements/errorpage.html', @_); } + sub errorpage_popup { + use vars qw($m); + $m->comp('/elements/errorpage-popup.html', @_); + } + sub redirect { my( $location ) = @_; use vars qw($m); @@ -426,7 +453,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'; @@ -441,31 +468,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]}); }, @@ -477,7 +511,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)],