diff options
Diffstat (limited to 'rt/etc/upgrade/3.8.2/content')
-rw-r--r-- | rt/etc/upgrade/3.8.2/content | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/rt/etc/upgrade/3.8.2/content b/rt/etc/upgrade/3.8.2/content new file mode 100644 index 0000000..9bd92be --- /dev/null +++ b/rt/etc/upgrade/3.8.2/content @@ -0,0 +1,186 @@ +@Initial = ( + sub { + $RT::Logger->warning( + "Going to add [OLD] prefix to all temlates in approvals queue." + ." If you never used approvals then you can delete all these" + ." templates with [OLD] prefix. Leave new there may be you will" + ." want to use approvals some time." + ); + + my $approvals_q = RT::Queue->new( $RT::SystemUser ); + $approvals_q->Load('___Approvals'); + unless ( $approvals_q->id ) { + $RT::Logger->error("You have no approvals queue."); + return 1; + } + + my $templates = RT::Templates->new( $RT::SystemUser ); + $templates->LimitToQueue( $approvals_q->id ); + while ( my $tmpl = $templates->Next ) { + my ($status, $msg) = $tmpl->SetName( "[OLD] ". $tmpl->Name ); + unless ( $status ) { + $RT::Logger->error("Couldn't rename template #". $tmpl->id .": $msg"); + } + } + return 1; + }, +); +@ACL = ( + { GroupDomain => 'SystemInternal', + GroupType => 'privileged', + Right => 'ShowApprovalsTab', }, +); + +@Templates = ( + { Queue => '___Approvals', + Name => "New Pending Approval", # loc + Description => + "Notify Owners and AdminCcs of new items pending their approval", # loc + Content => 'Subject: New Pending Approval: {$Ticket->Subject} + +Greetings, + +There is a new item pending your approval: "{$Ticket->Subject()}", +a summary of which appears below. + +Please visit {RT->Config->Get(\'WebURL\')}Approvals/Display.html?id={$Ticket->id} +to approve or reject this ticket, or {RT->Config->Get(\'WebURL\')}Approvals/ to +batch-process all your pending approvals. + +------------------------------------------------------------------------- +{$Transaction->Content()} +' + }, + { Queue => '___Approvals', + Name => "Approval Passed", # loc + Description => + "Notify Requestor of their ticket has been approved by some approver", # loc + Content => 'Subject: Ticket Approved: {$Ticket->Subject} + +Greetings, + +Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }. +Other approvals may be pending. + +Approver\'s notes: { $Notes } +' + }, + { Queue => '___Approvals', + Name => "All Approvals Passed", # loc + Description => + "Notify Requestor of their ticket has been approved by all approvers", # loc + Content => 'Subject: Ticket Approved: {$Ticket->Subject} + +Greetings, + +Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }. +Its Owner may now start to act on it. + +Approver\'s notes: { $Notes } +' + }, + { Queue => '___Approvals', + Name => "Approval Rejected", # loc + Description => + "Notify Owner of their rejected ticket", # loc + Content => 'Subject: Ticket Rejected: {$Ticket->Subject} + +Greetings, + +Your ticket has been rejected by { eval { $Approval->OwnerObj->Name } }. + +Approver\'s notes: { $Notes } +' + }, + { Queue => '___Approvals', + Name => "Approval Ready for Owner", # loc + Description => + "Notify Owner of their ticket has been approved and is ready to be acted on", # loc + Content => 'Subject: Ticket Approved: {$Ticket->Subject} + +Greetings, + +The ticket has been approved, you may now start to act on it. + +' + }, +); + +@Final = ( + sub { + $RT::Logger->debug("Going to adjust dashboards"); + my $sys = RT::System->new($RT::SystemUser); + + my $attrs = RT::Attributes->new( $RT::SystemUser ); + $attrs->UnLimit; + my @dashboards = $attrs->Named('Dashboard'); + + if (@dashboards == 0) { + $RT::Logger->debug("You have no dashboards. Skipped."); + return 1; + } + + for my $attr (@dashboards) { + my $props = $attr->Content; + if (exists $props->{Searches}) { + $props->{Panes} = { + body => [ + map { + my ($privacy, $id, $desc) = @$_; + + { + portlet_type => 'search', + privacy => $privacy, + id => $id, + description => $desc, + pane => 'body', + } + } @{ delete $props->{Searches} } + ], + }; + } + my ($status, $msg) = $attr->SetContent( $props ); + $RT::Logger->error($msg) unless $status; + } + + $RT::Logger->debug("Fixed."); + return 1; + }, + sub { + my $approvals_q = RT::Queue->new( $RT::SystemUser ); + $approvals_q->Load('___Approvals'); + unless ( $approvals_q->id ) { + $RT::Logger->error("You have no approvals queue."); + return 1; + } + + require File::Temp; + my ($tmp_fh, $tmp_fn) = File::Temp::tempfile( 'rt-approvals-scrips-XXXX', CLEANUP => 0 ); + unless ( $tmp_fh ) { + $RT::Logger->error("Couldn't create temporary file."); + return 0; + } + + $RT::Logger->warning( + "IMPORTANT: We're going to delete all scrips in Approvals queue" + ." and save them in '$tmp_fn' file." + ); + + require Data::Dumper; + + my $scrips = RT::Scrips->new( $RT::SystemUser ); + $scrips->LimitToQueue( $approvals_q->id ); + while ( my $scrip = $scrips->Next ) { + my %tmp = + map { $tmp->{ $_ } = $scrip->_Value( $_ ) } + $scrip->ReadableAttributes; + + print $tmp_fh Data::Dumper::Dumper( \%tmp ); + + my ($status, $msg) = $scrip->Delete; + unless ( $status ) { + $RT::Logger->error( "Couldn't delete scrip: $msg"); + } + } + }, +); |