[rt-users] [FIXED] deactivate_scrip / QueueDeactivatedScrip functionality in RT 3.8?
Dominic Hargreaves
dominic.hargreaves at oucs.ox.ac.uk
Thu Nov 13 13:38:04 EST 2008
On Wed, Nov 12, 2008 at 05:56:12PM +0000, Dominic Hargreaves wrote:
> I'm working on upgrading an RT3.4 instance to RT3.8. One of the
> extensions already in use is the above mentioned patch/extension.
>
> The most recent version of this appears to be
>
> http://page.mi.fu-berlin.de/pape/rt3/patches/rt/deactivate_scrip-3.6.patch
>
> and I had a quick go applying the patch to 3.8, but unsurprisingly this
> doesn't work straight off. Before I dive into porting this, has anyone
> already done it?
I've completed this port without too much hassle. Patch against RT
3.8.1, and schema files, here:
http://users.ox.ac.uk/~dom/patches/rt/3.8/deactivate_scrip/
It could probably be cleaned up to be more consistent with modern RT
standards (especially share/html/Admin/Elements/EditScrips) but is
functional.
Cheers,
Dominic.
--
Dominic Hargreaves, Systems Development and Support Team
Computing Services, University of Oxford
-------------- next part --------------
diff -urN request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrip_Overlay.pm request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrip_Overlay.pm
--- request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrip_Overlay.pm 1970-01-01 01:00:00.000000000 +0100
+++ request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrip_Overlay.pm 2008-11-12 16:56:18.000000000 +0000
@@ -0,0 +1,49 @@
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=cut
+
+use strict;
+no warnings qw(redefine);
+
+sub GlobalScripStatus {
+ my $self = shift;
+ my $ScripId = shift;
+
+ $self->LoadByCols( QueueId => 0, ScripId => $ScripId );
+
+ return ( $self->Status || 'active' );
+}
+
+sub QueueScripLocalStatus {
+ my $self = shift;
+ my $QueueId = shift;
+ my $ScripId = shift;
+
+ $self->LoadByCols( QueueId => $QueueId, ScripId => $ScripId );
+
+ return ( $self->Status || 'inherited' );
+}
+
+sub QueueScripStatus {
+ my $self = shift;
+ my $QueueId = shift;
+ my $ScripId = shift;
+
+ $self->LoadByCols( QueueId => $QueueId, ScripId => $ScripId );
+
+ return ( $self->Status || $self->GlobalScripStatus($ScripId) );
+}
+
+sub ScripIsDeactivatedForQueue {
+ my $self = shift;
+ my $QueueId = shift;
+ my $ScripId = shift;
+
+ return ( $self->QueueScripStatus($QueueId, $ScripId) =~ /^(deactivated|inactive)$/ );
+}
+
+1;
diff -urN request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrip.pm request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrip.pm
--- request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrip.pm 1970-01-01 01:00:00.000000000 +0100
+++ request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrip.pm 2007-05-16 16:10:21.000000000 +0100
@@ -0,0 +1,236 @@
+# BEGIN LICENSE BLOCK
+#
+# Copyright (c) 1996-2003 Jesse Vincent <jesse at bestpractical.com>
+#
+# (Except where explictly superceded by other copyright notices)
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# Unless otherwise specified, all modifications, corrections or
+# extensions to this work which alter its source code become the
+# property of Best Practical Solutions, LLC when submitted for
+# inclusion in the work.
+#
+#
+# END LICENSE BLOCK
+
+# Autogenerated by DBIx::SearchBuilder factory (by <jesse at bestpractical.com>)
+# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST.
+#
+# !! DO NOT EDIT THIS FILE !!
+#
+
+use strict;
+
+
+=head1 NAME
+
+RT::QueueDeactivatedScrip
+
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=cut
+
+package RT::QueueDeactivatedScrip;
+use RT::Record;
+
+
+use vars qw( @ISA );
+ at ISA= qw( RT::Record );
+
+sub _Init {
+ my $self = shift;
+
+ $self->Table('QueueDeactivatedScrips');
+ $self->SUPER::_Init(@_);
+}
+
+
+
+
+
+=head2 Create PARAMHASH
+
+Create takes a hash of values and creates a row in the database:
+
+ int(11) 'QueueId'.
+ int(11) 'ScripId'.
+ varchar(15) 'Status' defaults to 'deactivated'.
+ varchar(255) 'Description'.
+
+=cut
+
+
+
+
+sub Create {
+ my $self = shift;
+ my %args = (
+ QueueId => '0',
+ ScripId => '0',
+ Status => 'deactivated',
+ Description => '',
+
+ @_);
+ $self->SUPER::Create(
+ QueueId => $args{'QueueId'},
+ ScripId => $args{'ScripId'},
+ Status => $args{'Status'},
+ Description => $args{'Description'},
+);
+
+}
+
+
+
+=head2 id
+
+Returns the current value of id.
+(In the database, id is stored as int(11).)
+
+
+=cut
+
+
+=head2 QueueId
+
+Returns the current value of QueueId.
+(In the database, QueueId is stored as int(11).)
+
+
+
+=head2 SetQueueId VALUE
+
+
+Set QueueId to VALUE.
+Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
+(In the database, QueueId will be stored as a int(11).)
+
+
+=cut
+
+
+=head2 ScripId
+
+Returns the current value of ScripId.
+(In the database, ScripId is stored as int(11).)
+
+
+
+=head2 SetScripId VALUE
+
+
+Set ScripId to VALUE.
+Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
+(In the database, ScripId will be stored as a int(11).)
+
+
+=cut
+
+
+=head2 Status
+
+Returns the current value of Status.
+(In the database, Status is stored as varchar(15).)
+
+
+
+=head2 SetStatus VALUE
+
+
+Set Status to VALUE.
+Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
+(In the database, Status will be stored as a varchar(15).)
+
+
+=cut
+
+
+=head2 Description
+
+Returns the current value of Description.
+(In the database, Description is stored as varchar(255).)
+
+
+
+=head2 SetDescription VALUE
+
+
+Set Description to VALUE.
+Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
+(In the database, Description will be stored as a varchar(255).)
+
+
+=cut
+
+
+
+sub _ClassAccessible {
+ {
+
+ id =>
+ {read => 1, type => 'int(11)', default => ''},
+ QueueId =>
+ {read => 1, write => 1, type => 'int(11)', default => '0'},
+ ScripId =>
+ {read => 1, write => 1, type => 'int(11)', default => '0'},
+ Status =>
+ {read => 1, write => 1, type => 'varchar(15)', default => 'deactivated'},
+ Description =>
+ {read => 1, write => 1, type => 'varchar(255)', default => ''},
+
+ }
+};
+
+
+ eval "require RT::QueueDeactivatedScrip_Overlay";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrip_Overlay.pm}) {
+ die $@;
+ };
+
+ eval "require RT::QueueDeactivatedScrip_Vendor";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrip_Vendor.pm}) {
+ die $@;
+ };
+
+ eval "require RT::QueueDeactivatedScrip_Local";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrip_Local.pm}) {
+ die $@;
+ };
+
+
+
+
+=head1 SEE ALSO
+
+This class allows "overlay" methods to be placed
+into the following files _Overlay is for a System overlay by the original author,
+_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.
+
+These overlay files can contain new subs or subs to replace existing subs in this module.
+
+If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line
+
+ no warnings qw(redefine);
+
+so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
+
+RT::QueueDeactivatedScrip_Overlay, RT::QueueDeactivatedScrip_Vendor, RT::QueueDeactivatedScrip_Local
+
+=cut
+
+
+1;
diff -urN request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrips.pm request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrips.pm
--- request-tracker3.8-3.8.1.orig/lib/RT/QueueDeactivatedScrips.pm 1970-01-01 01:00:00.000000000 +0100
+++ request-tracker3.8-3.8.1/lib/RT/QueueDeactivatedScrips.pm 2007-05-16 16:10:21.000000000 +0100
@@ -0,0 +1,116 @@
+# BEGIN LICENSE BLOCK
+#
+# Copyright (c) 1996-2003 Jesse Vincent <jesse at bestpractical.com>
+#
+# (Except where explictly superceded by other copyright notices)
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# Unless otherwise specified, all modifications, corrections or
+# extensions to this work which alter its source code become the
+# property of Best Practical Solutions, LLC when submitted for
+# inclusion in the work.
+#
+#
+# END LICENSE BLOCK
+
+# Autogenerated by DBIx::SearchBuilder factory (by <jesse at bestpractical.com>)
+# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST.
+#
+# !! DO NOT EDIT THIS FILE !!
+#
+
+use strict;
+
+
+=head1 NAME
+
+ RT::QueueDeactivatedScrips -- Class Description
+
+=head1 SYNOPSIS
+
+ use RT::QueueDeactivatedScrips
+
+=head1 DESCRIPTION
+
+
+=head1 METHODS
+
+=cut
+
+package RT::QueueDeactivatedScrips;
+
+use RT::SearchBuilder;
+use RT::QueueDeactivatedScrip;
+
+use vars qw( @ISA );
+ at ISA= qw(RT::SearchBuilder);
+
+
+sub _Init {
+ my $self = shift;
+ $self->{'table'} = 'QueueDeactivatedScrips';
+ $self->{'primary_key'} = 'id';
+
+
+ return ( $self->SUPER::_Init(@_) );
+}
+
+
+=head2 NewItem
+
+Returns an empty new RT::QueueDeactivatedScrip item
+
+=cut
+
+sub NewItem {
+ my $self = shift;
+ return(RT::QueueDeactivatedScrip->new($self->CurrentUser));
+}
+
+ eval "require RT::QueueDeactivatedScrips_Overlay";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrips_Overlay.pm}) {
+ die $@;
+ };
+
+ eval "require RT::QueueDeactivatedScrips_Vendor";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrips_Vendor.pm}) {
+ die $@;
+ };
+
+ eval "require RT::QueueDeactivatedScrips_Local";
+ if ($@ && $@ !~ qr{^Can't locate RT/QueueDeactivatedScrips_Local.pm}) {
+ die $@;
+ };
+
+
+
+
+=head1 SEE ALSO
+
+This class allows "overlay" methods to be placed
+into the following files _Overlay is for a System overlay by the original author,
+_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations.
+
+These overlay files can contain new subs or subs to replace existing subs in this module.
+
+If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line
+
+ no warnings qw(redefine);
+
+so that perl does not kick and scream when you redefine a subroutine or variable in your overlay.
+
+RT::QueueDeactivatedScrips_Overlay, RT::QueueDeactivatedScrips_Vendor, RT::QueueDeactivatedScrips_Local
+
+=cut
+
+
+1;
diff -urN request-tracker3.8-3.8.1.orig/lib/RT/Scrip_Overlay.pm request-tracker3.8-3.8.1/lib/RT/Scrip_Overlay.pm
--- request-tracker3.8-3.8.1.orig/lib/RT/Scrip_Overlay.pm 2008-08-18 16:14:11.000000000 +0100
+++ request-tracker3.8-3.8.1/lib/RT/Scrip_Overlay.pm 2008-11-13 12:52:52.000000000 +0000
@@ -364,6 +364,19 @@
@_ );
my $return;
+
+ require RT::QueueDeactivatedScrip;
+ my $info = new RT::QueueDeactivatedScrip( $self->CurrentUser );
+ my $ticket = $args{'TicketObj'};
+ if ( $ticket && $ticket->QueueObj &&
+ $info->ScripIsDeactivatedForQueue( $ticket->QueueObj->Id, $self->Id ) ) {
+ $RT::Logger->info( "Scrip ".$self->Id." has NOT been applied, since it is deactivated for Queue ".$ticket->QueueObj->Name );
+ $self->ConditionObj->DESTROY;
+ return (undef);
+ } else {
+ $RT::Logger->debug( "Scrip ".$self->Id." has been applied, since it is not deactivated for Queue ".$ticket->QueueObj->Name );
+ }
+
eval {
my @Transactions;
diff -urN request-tracker3.8-3.8.1.orig/share/html/Admin/Elements/DeactivateGlobalScrips request-tracker3.8-3.8.1/share/html/Admin/Elements/DeactivateGlobalScrips
--- request-tracker3.8-3.8.1.orig/share/html/Admin/Elements/DeactivateGlobalScrips 1970-01-01 01:00:00.000000000 +0100
+++ request-tracker3.8-3.8.1/share/html/Admin/Elements/DeactivateGlobalScrips 2008-11-13 13:24:11.000000000 +0000
@@ -0,0 +1,109 @@
+%# BEGIN LICENSE BLOCK
+%#
+%# Copyright (c) 1996-2003 Jesse Vincent <jesse at bestpractical.com>
+%#
+%# (Except where explictly superceded by other copyright notices)
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# Unless otherwise specified, all modifications, corrections or
+%# extensions to this work which alter its source code become the
+%# property of Best Practical Solutions, LLC when submitted for
+%# inclusion in the work.
+%#
+%#
+%# END LICENSE BLOCK
+<& /Elements/ListActions, actions => \@actions &>
+<form action="Scrips.html" method="post">
+<input type="hidden" name="id" value="<%$id%>" />
+<p><&|/l&>Scrips which apply to all queues</&>:</p>
+% if ($Scrips->Count == 0 ) {
+<p><i><&|/l&>(No scrips)</&></i></p>
+% } else {
+<table width="100%">
+% if ($QueueId) {
+<tr>
+<td align="center"><i><&|/l&>inherit</&></i></td>
+<td align="center"><i><&|/l&>on</&></i></td>
+<td align="center"><i><&|/l&>off</&></i></td>
+<td><i><&|/l&>(select status for queue: inherited, activated, deactivated)</&></i></td>
+</tr>
+% }
+% while (my $scrip = $Scrips->Next ) {
+<tr>
+% if ($QueueId) {
+% my $status=$info->QueueScripLocalStatus( $QueueId, $scrip->Id);
+<td>
+<input type="radio" name="Status-<%$scrip->Id%>" value="inherited" <% $status eq 'inherited' && "checked"%> /> <i>(<%loc( $info->GlobalScripStatus( $scrip->Id))%>)</i>
+</td>
+<td align="center">
+<input type="radio" name="Status-<%$scrip->Id%>" value="activated" <% $status eq 'activated' && "checked"%> />
+</td>
+<td align="center">
+<input type="radio" name="Status-<%$scrip->Id%>" value="deactivated" <% $status eq 'deactivated' && "checked"%> />
+</td>
+% }
+<td>
+<% $scrip->Description || "<i>(".loc('no value').")</i>" |n %><br />
+<small><&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name) &>[_1] [_2] with template [_3]</&></small>
+</td>
+</tr>
+% }
+</table>
+% }
+<& /Elements/Submit,
+ Caption => loc("Update scrips status for this queue"),
+ Label => loc("Update status") &>
+</form>
+<%init>
+my (@actions);
+my $Scrips = RT::Scrips->new($session{'CurrentUser'});
+$Scrips->LimitToGlobal();
+$Scrips->OrderBy( FIELD => 'description' );
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
+if ($id) {
+ $QueueObj->Load($id);
+}
+my $QueueId = $QueueObj->id;
+
+require RT::QueueDeactivatedScrip;
+my $info = new RT::QueueDeactivatedScrip($session{'CurrentUser'});
+while (my $scrip = $Scrips->Next ) {
+ my $ScripId = $scrip->Id;
+ my $oldstatus = $info->QueueScripLocalStatus( $QueueId, $ScripId );
+ my $status=$ARGS{"Status-$ScripId"};
+
+ if ($status && $status ne $oldstatus) {
+ my ($retval, $msg) = (1,undef);
+ if ($status eq 'inherited') {
+ ($retval, $msg) = $info->Delete();
+ } else {
+ if (! $info->Id) {
+ ($retval, $msg) = $info->Create( QueueId => $QueueId,
+ ScripId => $ScripId,
+ Description => 'by admininterface' );
+ }
+ if ($retval) {
+ ($retval, $msg) = $info->SetStatus( $status );
+ }
+ }
+ if ($retval) {
+ push @actions, loc("Scrip status set to [_1]", loc($status));
+ } else {
+ push @actions, $msg;
+ }
+ }
+}
+
+</%INIT>
+<%ARGS>
+$id => undef
+</%ARGS>
diff -urN request-tracker3.8-3.8.1.orig/share/html/Admin/Elements/EditScrips request-tracker3.8-3.8.1/share/html/Admin/Elements/EditScrips
--- request-tracker3.8-3.8.1.orig/share/html/Admin/Elements/EditScrips 2008-08-18 16:13:59.000000000 +0100
+++ request-tracker3.8-3.8.1/share/html/Admin/Elements/EditScrips 2008-11-13 13:19:14.000000000 +0000
@@ -51,26 +51,42 @@
<input type="hidden" class="hidden" name="id" value="<% $id %>" />
<h2><&|/l&>Current Scrips</&></h2>
-<& /Elements/CollectionList,
- OrderBy => 'Description',
- Order => 'ASC',
- Rows => 100,
- %ARGS,
- Format => $Format,
- DisplayFormat => "__CheckBox.{DeleteScrip}__, $Format",
- Collection => $Scrips,
- AllowSorting => 1,
- PassArguments => [ qw(Query Format Rows Page Order OrderBy id) ],
-&>
-
-% if ( $Scrips->Count ) {
-<p><i><&|/l&>(Check box to delete)</&></i></p>
-% } else {
+% if ( $Scrips->Count == 0 ) {
<p><i><&|/l&>(No scrips)</&></i></p>
+% } else {
+<table width="100%">
+<p><i><&|/l&>(Check box to delete)</&></i></p>
+<tr>
+<td align="center"><&|/l&>delete</&></td>
+<td align="center"><i><&|/l&>on</&></i></td>
+<td align="center"><i><&|/l&>off</&></i></td>
+<td><i><&|/l&>(delete or select status for queue: active, inactive)</&></i></td>
+</tr>
+% while (my $scrip = $Scrips->Next ) {
+% my $status=$info->GlobalScripStatus( $scrip->Id);
+<tr>
+<td>
+<input type="checkbox" class="checkbox" name="DeleteScrip-<%$scrip->Id%>" value="1" />
+</td>
+<td align="center">
+<input type="radio" class=radio name="Status-<%$scrip->Id%>" value="active" <% $status eq 'active' && "checked"%> />
+</td>
+<td align="center">
+<input type="radio" class=radio name="Status-<%$scrip->Id%>" value="inactive" <% $status eq 'inactive' && "checked"%> />
+</td>
+<td>
+<a href="Scrip.html?id=<%$scrip->Id%>&Queue=<%$id%>"><% $scrip->Description || "<i>(".loc('no value').")</i>" |n %></a><br />
+<small><&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name) &>[_1] [_2] with template [_3]</&></small>
+</td>
+</tr>
+% }
+
+</table>
+
% }
<& /Elements/Submit,
- Caption => loc("Delete selected scrips"),
- Label => loc("Delete")
+ Caption => loc("Update status and delete selected scrips"),
+ Label => loc("Update/Delete")
&>
</form>
@@ -94,6 +110,8 @@
$Scrips->LimitToGlobal();
}
+$Scrips->OrderBy( FIELD => 'description' );
+
# {{{ deal with modifying and deleting existing scrips
# we still support DeleteScrip-id format but array is preferred
foreach my $id ( grep $_, @DeleteScrip, map /^DeleteScrip-(\d+)/, keys %ARGS ) {
@@ -109,6 +127,36 @@
}
# }}}
+require RT::QueueDeactivatedScrip;
+my $info = new RT::QueueDeactivatedScrip($session{'CurrentUser'});
+while (my $scrip = $Scrips->Next ) {
+ my $ScripId = $scrip->Id;
+ my $oldstatus = $info->GlobalScripStatus( $ScripId );
+ my $status=$ARGS{"Status-$ScripId"};
+
+ if ($status && $status ne $oldstatus) {
+ my ($retval, $msg) = (1,undef);
+ if ($status eq 'active') {
+ ($retval, $msg) = $info->Delete();
+ } else {
+ if (! $info->Id) {
+ ($retval, $msg) = $info->Create( QueueId => 0,
+ ScripId => $ScripId,
+ Description => 'by admininterface' );
+ }
+ if ($retval) {
+ ($retval, $msg) = $info->SetStatus( $status );
+ }
+ }
+ if ($retval) {
+ push @actions, loc("Scrip status set to [_1]", loc($status));
+ } else {
+ push @actions, $msg;
+ }
+ }
+}
+
+
my $dir_path = $m->request_comp->dir_path;
$Format ||= qq{'<a href="__WebPath__$dir_path/Scrip.html?id=__id__&Queue=$id">__id__</a>/TITLE:#'}
.qq{,'<a href="__WebPath__$dir_path/Scrip.html?id=__id__&Queue=$id">__Description__</a>/TITLE:Description'}
diff -urN request-tracker3.8-3.8.1.orig/share/html/Admin/Queues/Scrips.html request-tracker3.8-3.8.1/share/html/Admin/Queues/Scrips.html
--- request-tracker3.8-3.8.1.orig/share/html/Admin/Queues/Scrips.html 2008-08-18 16:13:59.000000000 +0100
+++ request-tracker3.8-3.8.1/share/html/Admin/Queues/Scrips.html 2008-11-13 13:06:01.000000000 +0000
@@ -54,9 +54,7 @@
Title => $title &>
% unless ( $QueueObj->Disabled ) { # Global scrips does not apply to disabled queues
-<h2><&|/l&>Scrips which apply to all queues</&></h2>
-<& /Admin/Elements/ListGlobalScrips &>
-<br />
+<& /Admin/Elements/DeactivateGlobalScrips, %ARGS &>
% }
<& /Admin/Elements/EditScrips, title => $title, %ARGS &>
<%init>
More information about the rt-users
mailing list