Skip to content
Closed
109 changes: 109 additions & 0 deletions lib/RT/Interface/Web.pm
Original file line number Diff line number Diff line change
Expand Up @@ -3171,6 +3171,115 @@ sub ProcessCustomFieldUpdates {
return (@results);
}

=head2 ProcessTemplateUpdate ( TemplateObj => $Template, ARGSRef => \%ARGS );

Returns an array of results messages.

=cut

sub ProcessTemplateUpdate {
my %args = (
TemplateObj => undef,
ARGSRef => undef,
@_
);

my @results;
my @FIELDS = qw(
PerlCode
Queue
Subject
Status
SLA
Due
Starts
Started
Resolved
Owner
Requestor
Cc
AdminCc
RequestorGroup
CcGroup
AdminCcGroup
TimeWorked
TimeEstimated
TimeLeft
InitialPriority
FinalPriority
Type
DependsOn
DependedOnBy
RefersTo
ReferredToBy
Members
MemberOf
CustomFields
Content
ContentType
UpdateType
SkipCreate
);

# ensure $args{ARGSRef}{CreateSectionName} is an array ref
# could be undefined (new template), scalar (single section), or an array ref (multiple sections)
if ( $args{ARGSRef}{CreateSectionName} ) {
$args{ARGSRef}{CreateSectionName} = [ $args{ARGSRef}{CreateSectionName} ]
unless ref $args{ARGSRef}{CreateSectionName};
}
else {
$args{ARGSRef}{CreateSectionName} = [];
}

push @{ $args{ARGSRef}{CreateSectionName} }, 'ADD-NEW-SECTION'
if $args{ARGSRef}{AddNewSectionName};

if ( @{ $args{ARGSRef}{CreateSectionName} } ) {
my $new_content = '';
for my $name ( @{ $args{ARGSRef}{CreateSectionName} } ) {
my $template_name = $name eq 'ADD-NEW-SECTION' ? $args{ARGSRef}{AddNewSectionName} : $name;
$new_content .= "===Create-Ticket: $template_name\n";
for my $field ( @FIELDS ) {
if ( $field eq "CustomFields" ) {
while ( my $cf_id = shift @{ $args{ARGSRef}{ $name . "-CustomField-id" } || [] } ) {
my $cf_val = shift @{ $args{ARGSRef}{ $name . "-CustomField-val" } || [] };
$new_content .= "CustomField-$cf_id: $cf_val\n";
}
}
else {
if ( my $val = $args{ARGSRef}{"$name-$field"} ) {
if ( $field eq 'PerlCode' ) {
# trim leading and trailing whitespace
$val =~ s/^\s+//;
$val =~ s/\s+$//;
$new_content .= "{\n$val\n}\n";
}
elsif ( $field eq 'Content' ) {
$new_content .= "Content: $val\nENDOFCONTENT\n"
}
else {
$new_content .= "$field: $val\n";
}
}
}
}
}
$args{ARGSRef}{Content} = $new_content;
}

my @attribs = qw( Name Description Queue Type Content );
my @aresults = UpdateRecordObject(
AttributesRef => \@attribs,
Object => $args{TemplateObj},
ARGSRef => $args{ARGSRef}
);
push @results, @aresults;

my ( $ok, $msg ) = $args{TemplateObj}->CompileCheck;
push @results, $msg if !$ok;

return ( @results );
}


=head2 ProcessTicketBasics ( TicketObj => $Ticket, ARGSRef => \%ARGS );
Expand Down
24 changes: 22 additions & 2 deletions lib/RT/Interface/Web/MenuBuilder.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1430,6 +1430,13 @@ sub _BuildAdminMenu {
$templates->child( select => title => loc('Select'), path => "/Admin/Queues/Templates.html?id=".$id);
$templates->child( create => title => loc('Create'), path => "/Admin/Queues/Template.html?Create=1;Queue=".$id);

if ( $HTML::Mason::Commands::m->request_args->{'Template'} && $HTML::Mason::Commands::m->request_args->{'Template'} =~ /^\d+$/ ) {
my $template_id = $HTML::Mason::Commands::m->request_args->{'Template'};
$templates->child( basics => title => loc('Basics'), path => "/Admin/Queues/Template.html?Queue=$id&Template=$template_id" );
$templates->child( content => title => loc('Content'), path => "/Admin/Queues/Template.html?Queue=$id&ContentTab=1&Template=$template_id" );
$templates->child( advanced => title => loc('Advanced'), path => "/Admin/Queues/Template.html?Queue=$id&AdvancedTab=1&Template=$template_id" );
}

my $scrips = $queue->child( scrips => title => loc('Scrips'), path => "/Admin/Queues/Scrips.html?id=" . $id);
$scrips->child( select => title => loc('Select'), path => "/Admin/Queues/Scrips.html?id=" . $id );
$scrips->child( create => title => loc('Create'), path => "/Admin/Scrips/Create.html?Queue=" . $id);
Expand Down Expand Up @@ -1655,8 +1662,21 @@ sub _BuildAdminMenu {
}

if ( $request_path =~ m{^/Admin/Global/Templates?\.html} ) {
$page->child( select => title => loc('Select'), path => "/Admin/Global/Templates.html" );
$page->child( create => title => loc('Create'), path => "/Admin/Global/Template.html?Create=1" );
if ( $HTML::Mason::Commands::m->request_args->{'Template'} && $HTML::Mason::Commands::m->request_args->{'Template'} =~ /^\d+$/ ) {
my $id = $HTML::Mason::Commands::m->request_args->{'Template'};
my $queue = $HTML::Mason::Commands::m->request_args->{'Queue'} || 0;
my $templates = $page->child( select => title => loc('Templates'),
path => "/Admin/Global/Templates.html" );
$templates->child( select => title => loc('Select'), path => "/Admin/Global/Templates.html" );
$templates->child( create => title => loc('Create'), path => "/Admin/Global/Template.html?Create=1" );
$page->child( basics => title => loc('Basics'), path => "/Admin/Global/Template.html?Queue=$queue&Template=$id" );
$page->child( content => title => loc('Content'), path => "/Admin/Global/Template.html?Queue=$queue&ContentTab=1&Template=$id" );
$page->child( advanced => title => loc('Advanced'), path => "/Admin/Global/Template.html?Queue=$queue&AdvancedTab=1&Template=$id" );
}
else {
$page->child( select => title => loc('Select'), path => "/Admin/Global/Templates.html" );
$page->child( create => title => loc('Create'), path => "/Admin/Global/Template.html?Create=1" );
}
}

if ( $request_path =~ m{^/Admin/Articles/Classes/} ) {
Expand Down
Loading