X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FMason.pm;h=2a4b42ffedab0efeada27f76c8d6bc56682a753e;hb=b3205ddf480401284a5fc4ccbcb45d9c42b0bcf9;hp=eb26dde5d3d82072bb1352a3f7543c613ede8304;hpb=d0221fabd4656b3a04251ca6168cc45f54d23574;p=freeside.git diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index eb26dde5d..2a4b42ffe 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -57,20 +57,24 @@ if ( -e $addl_handler_use_file ) { use List::Util qw( max min ); use Data::Dumper; use Date::Format; - use Date::Parse; use Time::Local; use Time::HiRes; use Time::Duration; use DateTime; 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; use HTML::Entities; use HTML::TreeBuilder; 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; @@ -101,11 +105,13 @@ if ( -e $addl_handler_use_file ) { use String::Approx qw(amatch); use Chart::LinesPoints; use Chart::Mountain; + use Chart::Bars; use Color::Scheme; use HTML::Widgets::SelectLayers 0.07; #should go away in favor of #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 @@ -122,6 +128,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 ); @@ -213,6 +220,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; @@ -231,6 +239,17 @@ if ( -e $addl_handler_use_file ) { use FS::discount; use FS::cust_pkg_discount; 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 ) { @@ -243,6 +262,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; @@ -273,6 +293,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; @@ -346,6 +369,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); @@ -407,6 +435,8 @@ I should be set to a scalar reference in standalone mode. =cut +my %defang_opts = ( attribs_to_callback => ['src'], attribs_callback => sub { 1 }); + sub mason_interps { my $mode = shift || 'apache'; my %opt = @_; @@ -450,14 +480,22 @@ sub mason_interps { $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]}. "'"; - } + escape_flags => { 'js_string' => $js_string_sub, + 'defang' => sub { + ${$_[0]} = $html_defang->defang(${$_[0]}); + }, }, compiler => HTML::Mason::Compiler::ToObject->new( allow_globals => [qw(%session)], @@ -466,7 +504,9 @@ sub mason_interps { my $rt_interp = new HTML::Mason::Interp ( %interp, - escape_flags => { 'h' => \&RT::Interface::Web::EscapeUTF8 }, + 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)],