diff options
| -rw-r--r-- | FS/FS/Mason.pm | 20 | ||||
| -rwxr-xr-x | rt/share/html/Elements/SelectDate | 4 | 
2 files changed, 14 insertions, 10 deletions
diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index 5d860f2de..0f1415009 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -480,15 +480,17 @@ sub mason_interps {    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/\r/\\r/g; -                        ${$_[0]} =~ s/\n/\\n/g; -                        ${$_[0]} = "'". ${$_[0]}. "'"; -                      }, +    escape_flags => { 'js_string' => $js_string_sub,                        'defang'    => sub {                          ${$_[0]} = $html_defang->defang(${$_[0]});                        }, @@ -500,7 +502,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)], diff --git a/rt/share/html/Elements/SelectDate b/rt/share/html/Elements/SelectDate index 183086f3d..46092ce23 100755 --- a/rt/share/html/Elements/SelectDate +++ b/rt/share/html/Elements/SelectDate @@ -50,14 +50,14 @@  <IMG SRC="<%$fsurl%>images/calendar.png" ID="<% $Name %>_date_button" STYLE="cursor: pointer" TITLE="Select date">  <script type="text/javascript">  Calendar.setup({ -    inputField: "<%$Name%>", +    inputField: <% $Name |n,js_string %>,  % if ( defined($ShowTime) && $ShowTime ) {      ifFormat:   "%Y-%m-%d %H:%M",      showsTime:  true,  % } else {      ifFormat:   "%Y-%m-%d",  % } -    button:     "<%$Name%>_date_button", +    button:     <% $Name.'_date_button' |n,js_string %>,  });  </script>  <%init>  | 
