From 52360059f2b525024d9c3e5cfd205004d00ad328 Mon Sep 17 00:00:00 2001 From: Mitch Jackson Date: Sun, 31 Mar 2019 12:26:28 -0400 Subject: [PATCH] RT# 81692 Update use of deprecated callback element in RT --- rt/lib/RT/Interface/Web/Request.pm | 17 +++++++++++++++-- rt/share/html/Elements/Header | 7 +++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/rt/lib/RT/Interface/Web/Request.pm b/rt/lib/RT/Interface/Web/Request.pm index 1cd08df3e..9ed7610ba 100644 --- a/rt/lib/RT/Interface/Web/Request.pm +++ b/rt/lib/RT/Interface/Web/Request.pm @@ -85,6 +85,12 @@ By default is false, otherwise runs callbacks only once per process of the server. Such callbacks can be used to fill structures. +=item ReturnComponentOutput + +By default, callback returns the status codes of all rendered components, and +prints the rendered components to STDOUT. If this argument is true, callback +returns the rendered components instead of printing them to STDOUT. + =back Searches for callback components in @@ -102,6 +108,7 @@ sub callback { my $name = delete $args{'CallbackName'} || 'Default'; my $page = delete $args{'CallbackPage'} || $self->callers(0)->path; + my $use_scomp = delete $args{'ReturnComponentOutput'} ? 1 : 0; unless ( $page ) { $RT::Logger->error("Couldn't get a page name for callbacks"); return; @@ -134,10 +141,16 @@ sub callback { } my @rv; + my $scomp_out; foreach my $cb ( @$callbacks ) { - push @rv, scalar $self->comp( $cb, %args ); + if ( $use_scomp ) { + no warnings 'uninitialized'; + $scomp_out .= $self->scomp( $cb, %args ); + } else { + push @rv, scalar $self->comp( $cb, %args ); + } } - return @rv; + return $use_scomp ? $scomp_out : @rv; } sub clear_callback_cache { diff --git a/rt/share/html/Elements/Header b/rt/share/html/Elements/Header index 23007ddd1..58136c584 100755 --- a/rt/share/html/Elements/Header +++ b/rt/share/html/Elements/Header @@ -148,8 +148,11 @@ jQuery(document).ready(function(){ } -# $m->callback( %ARGS, CallbackName => 'Head' ); -$head .= $m->scomp( '/Elements/Callback', _CallbackName => 'Head', %ARGS ); +$head .= $m->callback( + %ARGS, + CallbackName => 'Head', + ReturnComponentOutput => 1, +); #XXX $head .= <& /Elements/Framekiller &>; -- 2.11.0