[Rt-commit] rt branch, 4.4/include-article-queue, created. rt-4.4.2-71-g3d7995ee4
Craig Kaiser
craig at bestpractical.com
Wed Jan 31 10:56:38 EST 2018
The branch, 4.4/include-article-queue has been created
at 3d7995ee4a9f674ae0b7108d49eac9299dab041d (commit)
- Log -----------------------------------------------------------------
commit 1f7048ba5bf933b8e5b50a5905882e5e92b9bb83
Author: Craig Kaiser <craig at bestpractical.com>
Date: Wed Jan 31 10:46:02 2018 -0500
Add Default Article option for Queues
Currently there is not a simple way to apply boilerplate text to
tickets automatically on initial create. By selecting a Default Article for a Queue, any
ticket created in that Queue will automatically have the Article content
added to the Ticket create page message box.
diff --git a/lib/RT/Queue.pm b/lib/RT/Queue.pm
index 4c2f5fb62..814f09710 100644
--- a/lib/RT/Queue.pm
+++ b/lib/RT/Queue.pm
@@ -155,6 +155,7 @@ sub Create {
CorrespondAddress => '',
CommentAddress => '',
Lifecycle => 'default',
+ QueueDefaultArticle => undef,
SubjectTag => undef,
Sign => undef,
SignAuto => undef,
@@ -199,7 +200,7 @@ sub Create {
}
$RT::Handle->Commit;
- for my $attr (qw/Sign SignAuto Encrypt SLA/) {
+ for my $attr (qw/Sign SignAuto Encrypt SLA QueueDefaultArticle/) {
next unless defined $args{$attr};
my $set = "Set" . $attr;
my ($status, $msg) = $self->$set( $args{$attr} );
@@ -212,7 +213,48 @@ sub Create {
return ( $id, $self->loc("Queue created") );
}
+=head2 QueueDefaultArticle
+Returns ID for Default Article for Queue.
+
+=cut
+
+sub QueueDefaultArticle {
+ my $self = shift;
+
+ my $attr = $self->FirstAttribute('QueueDefaultArticle') ;
+ my $content = $attr ? $attr->Content : undef;
+ return $content;
+ }
+
+=head2 SetQueueDefaultArticle
+
+Takes ID value for Article and sets Queue attribute QueueDefaultArticle to that
+ID.
+
+=cut
+
+sub SetQueueDefaultArticle{
+ my $self = shift;
+ my $value = shift;
+
+ my $article = RT::Article->new( RT->SystemUser );
+
+ if ( $value ne "undef" ){
+ my ($ret, $msg) = $article->Load( $value );
+ return (0, $msg) unless ($ret);
+ }
+
+ my ($status, $msg) = $self->SetAttribute(
+ Name => 'QueueDefaultArticle',
+ Content => $value,
+ );
+ return ($status, $msg) unless $status;
+
+ # If Default Article set to none we expect 'undef' as value
+ my $ret_val = $value ne 'undef' ? 'updated to ' . $article->Name : 'removed';
+ return (1, $self->loc("Default Article [_1]", $ret_val));
+}
sub Delete {
my $self = shift;
diff --git a/share/html/Admin/Queues/Modify.html b/share/html/Admin/Queues/Modify.html
index 75b0e658a..98d89e176 100644
--- a/share/html/Admin/Queues/Modify.html
+++ b/share/html/Admin/Queues/Modify.html
@@ -80,6 +80,10 @@
% }
</td></tr>
+<tr><td align="right"><&|/l&>Default Article</&>:</td><td colspan="3">
+<& /Elements/ArticleSelect, QueueObj => $QueueObj &>
+</td></tr>
+
<tr><td align="right"><&|/l&>Subject Tag</&>:</td>
<td colspan="3"><input name="SubjectTag" value="<% $ARGS{'SubjectTag'} || ($Create ? "" : $QueueObj->SubjectTag || '' ) %>" size="60" /></td>
</tr>
@@ -189,7 +193,7 @@ unless ($Create) {
if ( $QueueObj->Id ) {
$title = loc('Configuration for queue [_1]', $QueueObj->Name );
my @attribs= qw(Description CorrespondAddress CommentAddress Name SortOrder
- Sign SignAuto Encrypt Lifecycle SubjectTag SLADisabled Disabled);
+ Sign SignAuto Encrypt Lifecycle QueueDefaultArticle SubjectTag SLADisabled Disabled);
# we're asking about enabled on the web page but really care about disabled
if ( $SetEnabled ) {
@@ -210,12 +214,14 @@ if ( $QueueObj->Id ) {
ARGSRef => \%ARGS,
);
+
push @results, UpdateRecordObject(
AttributesRef => \@attribs,
Object => $QueueObj,
ARGSRef => \%ARGS
);
+
$Disabled = $ARGS{'Disabled'} = $Enabled? 0: 1;
$EnabledChecked = "" if $QueueObj->Disabled;
@@ -265,6 +271,7 @@ $CorrespondAddress => undef
$CommentAddress => undef
$SetSLAEnabled => undef
$SetEnabled => undef
+$QueueDefaultArticle => undef
$SetCrypt => undef
$SLAEnabled => undef
$Enabled => undef
commit 11e7e03a47963564f65320314841f301ee361517
Author: Craig Kaiser <craig at bestpractical.com>
Date: Wed Jan 31 10:49:35 2018 -0500
Make default Article content show on Ticket create
It is important that, if a default Article is selected for a Queue. Then
on Create.html, the content of the Article should be shown in the
message box.
diff --git a/share/html/Articles/Elements/IncludeArticle b/share/html/Articles/Elements/IncludeArticle
index 5307875cf..dcc57e2fb 100644
--- a/share/html/Articles/Elements/IncludeArticle
+++ b/share/html/Articles/Elements/IncludeArticle
@@ -78,6 +78,19 @@ foreach my $arg ( keys %$parent_args ) {
Value => $parent_args->{$arg},
Queue => $Queue->Id,
);
+
+ if ( $m->request_path =~ 'Create' ){
+ my %args = %$parent_args;
+ my $queue_id = $args{'Queue'};
+
+ my $QueueObj = RT::Queue->new($session{'CurrentUser'});
+ $QueueObj->Load( $queue_id );
+
+ if ($QueueObj->QueueDefaultArticle){
+ $article->Load( $QueueObj->QueueDefaultArticle );
+ }
+ }
+
next unless $article && $article->id;
my $formatted_article = $m->scomp('/Articles/Article/Elements/Preformatted',
commit 3d7995ee4a9f674ae0b7108d49eac9299dab041d
Author: Craig Kaiser <craig at bestpractical.com>
Date: Wed Jan 31 10:52:16 2018 -0500
Add test for default Article content on create.html
Test to ensure that the default Articles content is rendered on
Create.html for Tickets in that Queue.
diff --git a/t/ticket/queue-default-article.t b/t/ticket/queue-default-article.t
new file mode 100644
index 000000000..5804e4b07
--- /dev/null
+++ b/t/ticket/queue-default-article.t
@@ -0,0 +1,30 @@
+use strict;
+use warnings;
+
+use RT::Test tests => undef;
+
+my $m = RT::Test->started_ok;
+my $url = $m->rt_base_url;
+diag('Started server at ' . $url);
+
+my $article = RT::Article->new($RT::SystemUser);
+my ( $id, $msg ) = $article->Create(
+ Class => 'General',
+ Name => 'My Article',
+ 'CustomField-Content' => 'My Article Test Content',
+);
+ok( $id, $msg );
+(my $ret, $msg) = $article->Load(1);
+ok ($ret, $msg);
+
+my $queue = RT::Queue->new(RT->SystemUser);
+$queue->Load('General');
+ok( $queue, 'Loaded General Queue' );
+($ret, $msg) = $queue->SetQueueDefaultArticle($article->id);
+ok( $ret, $msg );
+
+ok $m->login(root => 'password'), "logged in";
+$m->goto_create_ticket('General');
+$m->scraped_id_is('Content', '#1: My Article <br />-------------- <br />Content: <br />------- <br />My Article Test Content <br />');
+
+done_testing;
-----------------------------------------------------------------------
More information about the rt-commit
mailing list