[Rt-commit] rtir branch, 5.0/restore-incidents-and-investigations-on-create, created. 4.0.1rc1-122-gcfdf08ed
Blaine Motsinger
blaine at bestpractical.com
Wed May 20 19:22:41 EDT 2020
The branch, 5.0/restore-incidents-and-investigations-on-create has been created
at cfdf08ed77c990bdaad44a6a9044a488994b86c1 (commit)
- Log -----------------------------------------------------------------
commit 18fbd7842fe240aa4a2a7df408ea71f5e984192f
Author: Blaine Motsinger <blaine at bestpractical.com>
Date: Mon May 18 14:26:14 2020 -0500
Core RT::Extension::CreateIncidentAndInvestigation
This commit moves the RT::Extension::CreateIncidentAndInvestigation
extension back to core RTIR.
The code was removed in commit 5f72e57 due to complexity which has
since been solved by moving the dropdown to the create pages.
diff --git a/html/RTIR/Incident/Create.html b/html/RTIR/Incident/Create.html
index 186c9e08..3723c80c 100644
--- a/html/RTIR/Incident/Create.html
+++ b/html/RTIR/Incident/Create.html
@@ -311,6 +311,19 @@ if ( $ChildObj && $ChildObj->id && !$ChildObj->CurrentUserHasRight('ModifyTicket
</div> <!-- end ticket-create-incident -->
+<div id="ticket-create-investigation">
+<a name="investigation"></a>
+<& /RTIR/Investigation/Elements/Create,
+ %ARGS,
+ NamePrefix => 'Investigation',
+ QueueObj => $InvestigationsQueueObj,
+ Lifecycle => RT::IR->lifecycle_investigation,
+ Constituency => $constituency,
+ SkipField => { Owner => 1, Attachments => 1, DateFields => 1 },
+ IncludeSignature => (exists $ARGS{'InvestigationContent'} ? 0 : 1),
+&>
+</div>
+
% $m->callback( CallbackName => 'FormEnd', QueueObj => $QueueObj, Constituency => $constituency,
% ChildObj => $ChildObj, SplitObj => $SplitObj, ARGSRef => \%ARGS );
@@ -363,7 +376,6 @@ for my $related_ticket ($ChildObj, $SplitObj) {
last;
}
-
my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load( $ARGS{Queue} );
@@ -371,6 +383,18 @@ if (!$QueueObj->Name) {
Abort( loc("Queue '[_1]' could not be loaded.", $ARGS{Queue}) );
}
+# Ensure the consistuency is set based on the incident queue.
+# The investigations queue needs to correspond to the selected incidents queue not just the default one.
+unless ($constituency) {
+ $constituency = RT::IR->ConstituencyFor($QueueObj);
+}
+
+# Load appropriate Investigations queue
+my $InvestigationsQueue = 'Investigations' . ( $constituency ? ' - ' . $constituency : '' );
+my $InvestigationsQueueObj = RT::Queue->new( $session{'CurrentUser'} );
+my ($ret, $msg) = $InvestigationsQueueObj->Load( $InvestigationsQueue );
+RT->Logger->error("Unable to load $InvestigationsQueue : $msg") unless $ret;
+
if( !RT::IR->IsIncidentQueue($QueueObj) ) {
RT::Interface::Web::Redirect(RT::IR->HREFTo( '/Create.html?' . $m->comp('/Elements/QueryString', %ARGS )));
}
@@ -421,6 +445,23 @@ if ( $CreateIncident ) {
);
}
+if ( $CreateWithInvestigation ) {
+ $checks_failure += RT::IR->FilterRTAddresses(
+ ARGSRef => \%ARGS,
+ Fields => {
+ InvestigationRequestors => 'Requestor',
+ InvestigationCc => 'Cc',
+ InvestigationAdminCc => 'AdminCc',
+ },
+ results => @results,
+ );
+}
+
+if ( $CreateWithInvestigation && !$InvestigationRequestors ) {
+ push @results, loc( "You must enter a correspondent for the investigation" );
+ $checks_failure = 1;
+}
+
$m->callback( CallbackName => 'BeforeCreateRedirect', ARGSRef => \%ARGS,
Child => $ChildObj, results => \@results, checks_failure => \$checks_failure );
@@ -436,6 +477,26 @@ if ( !$checks_failure && $CreateIncident ) {
push @results, @tmp;
if( $inc_obj ) {
+ my $inv_obj;
+ if ( $CreateWithInvestigation ) {
+ my (@tmp);
+ ($inv_obj, @tmp) = $m->comp(
+ '/RTIR/Investigation/Elements/Create:Process',
+ %ARGS,
+ NamePrefix => 'Investigation',
+ DefaultsNamePrefix => '',
+ );
+ push @results, @tmp;
+ if ( $inv_obj ) {
+ my($id, $msg) = $inv_obj->AddLink(
+ Type => 'MemberOf',
+ Target => $inc_obj->id
+ );
+ #XXX: correct message on success
+ push @results, $msg if !$id || $msg;
+ }
+ }
+
$m->callback(CallbackName => 'BeforeDisplay', ARGSRef => \%ARGS, Child => $ChildObj, TicketObj => $inc_obj,
results => \@results );
@@ -477,7 +538,9 @@ unless ( exists $ARGS{'Content'} ) {
$Title => loc("Create a new Incident")
$QuoteTransaction => undef
-$CreateIncident => 0
+$CreateWithInvestigation => 0
+$CreateIncident => $CreateWithInvestigation
+$InvestigationRequestors => 0
$Split => undef
diff --git a/html/RTIR/Investigation/Elements/Create b/html/RTIR/Investigation/Elements/Create
index 69d5680b..351668c1 100644
--- a/html/RTIR/Investigation/Elements/Create
+++ b/html/RTIR/Investigation/Elements/Create
@@ -212,6 +212,13 @@ email addresses. These people <b>will</b> receive future updates.)</&></font></i
% }
</table></&>
+
+<& /Elements/Submit,
+ Name => 'CreateWithInvestigation',
+ Label => loc("Create Incident and run Investigation"),
+ SubmitId => 'create-ticket-with-investigation'
+&>
+
% $m->callback( CallbackName => 'AfterTable', ARGSRef => \%ARGS, TicketObj => $ticket,
% QueueObj => $QueueObj, DefaultsFrom => $TicketObj );
</div>
commit c62411be0c18bbe565b633f3546eb2899947a1c4
Author: Blaine Motsinger <blaine at bestpractical.com>
Date: Mon May 18 19:05:39 2020 -0500
Migrate Investigation/Elements/Create to elevator themes
diff --git a/html/RTIR/Investigation/Elements/Create b/html/RTIR/Investigation/Elements/Create
index 351668c1..f0cb7d37 100644
--- a/html/RTIR/Investigation/Elements/Create
+++ b/html/RTIR/Investigation/Elements/Create
@@ -50,60 +50,95 @@
<div class="ticket-create-basics">
<&| /Widgets/TitleBox, title => loc("Basics"), class => 'ticket-info-basics' &>
-<table width="100%" border="0">
-% if($Constituency) {
-%
-<tr class="constituency">
- <td class="label"><%loc('Constituency') %>:</td>
- <td><% $Constituency %></td>
-</tr>
+
+% if ($Constituency) {
+ <div class="form-row">
+ <div class="label col-3">
+ <% loc('Constituency') %>:
+ </div>
+ <div class="value col-9">
+ <span class="current-value"><% $Constituency %></span>
+ </div>
+ </div>
% }
-<tr class="queue">
- <td class="label"><&|/l&>Queue</&>:</td>
- <td>
+
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Queue</&>:
+ </div>
+ <div class="value col-9">
<& /Ticket/Elements/ShowQueue, QueueObj => $QueueObj &>
- </td>
-</tr>
+ </div>
+ </div>
+
% unless ( $SkipField{'Owner'} || $HideField{'Owner'} ) {
-<tr>
- <td class="label"><&|/l&>Owner</&>:</td>
- <td class="value"><& /Elements/SelectOwner,
- Name => $NamePrefix ."Owner",
- QueueObj => $QueueObj,
- Default => $value_cb->('Owner') || $session{'CurrentUser'}->Id,
-&></td></tr>
+ <div class="form-row owner">
+ <div class="label col-3">
+ <&|/l&>Owner</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/SelectOwner,
+ Name => $NamePrefix ."Owner",
+ QueueObj => $QueueObj,
+ Default => $value_cb->('Owner') || $session{'CurrentUser'}->Id,
+ &>
+ </div>
+ </div>
% }
% unless ( $SkipField{'TimeFields'} ) {
-<tr class="time-worked">
- <td class="label"><&|/l&>Time Worked</&>:</td>
- <td class="value"><& /Elements/EditTimeValue,
- Name => $NamePrefix .'TimeWorked',
+<div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Time Worked</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/EditTimeValue,
+ Name => $NamePrefix . 'TimeWorked',
Default => $value_cb->('TimeWorked') || '',
- &></td>
- </tr>
-<tr class="time-left">
- <td class="label"><&|/l&>Time Left</&>:</td>
- <td class="value"><& /Elements/EditTimeValue,
- Name => $NamePrefix .'TimeLeft',
+ &>
+ </div>
+</div>
+<div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Time Left</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/EditTimeValue,
+ Name => $NamePrefix . 'TimeLeft',
Default => $value_cb->('TimeLeft') || '',
- &></td>
-</tr>
+ &>
+ </div>
+</div>
% }
% unless ( $SkipField{'DateFields'} ) {
-<tr><td> </td><td valign="top"><&| /Widgets/TitleBox,
- title => loc("Dates"),
- class=> 'ticket-info-dates',
-&><table>
-
-<tr><td class="label"><&|/l&>Starts</&>:</td>
-<td class="value"><& /Elements/SelectDate, Name => $NamePrefix .'Starts', Default => $value_cb->('Starts') || '' &></td></tr>
+<&| /Widgets/TitleBox, title => loc("Dates"), class => 'ticket-info-dates' &>
+
+<div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Starts</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/SelectDate,
+ Name => $NamePrefix . 'Starts',
+ Default => $value_cb->('Starts') || '',
+ &>
+ </div>
+</div>
-<tr><td class="label"><&|/l&>Due</&>:</td>
-<td class="value"><& /Elements/SelectDate, Name => $NamePrefix .'Due', Default => $value_cb->('Due') || '' &></td></tr>
+<div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Due</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/SelectDate,
+ Name => $NamePrefix . 'Due',
+ Default => $value_cb->('Due') || '',
+ &>
+ </div>
+</div>
-</table></&></td></tr>
+</&>
% }
% if ( ($QueueObj || $TicketObj) && !$SkipField{'CustomFields'} ) {
@@ -118,7 +153,7 @@
&>
% }
-</table></&>
+</&>
% if ( ($QueueObj || $TicketObj) && !$SkipField{'CustomFields'} ) {
<& /Elements/EditCustomFieldCustomGroupings,
@@ -134,90 +169,141 @@
<div class="ticket-create-details">
<&| /Widgets/TitleBox,
- title => loc("Launch Investigation"),
+ title => loc("Launch a new investigation"),
class => 'ticket-info-message',
&>
-<table width="100%" border="0">
% unless ( $SkipField{'Requestors'} || $HideField{'Requestors'} ) {
-<tr><td class="label"><&|/l&>Correspondents</&>:</td>
-<td class="value"><& /Elements/EmailInput,
- Name => $NamePrefix .'Requestors', Default => $value_cb->('Requestors'), Size => undef,
-&></td></tr>
+<div class="form-row">
+ <div class="label col-2">
+ <&|/l&>Correspondents</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/EmailInput,
+ Name => $NamePrefix . 'Requestors',
+ Default => $value_cb->('Requestors'),
+ Size => undef,
+ &>
+ </div>
+</div>
% $m->callback( CallbackName => 'AfterRequestors', ARGSRef => \%ARGS );
% }
% unless ( $SkipField{'Cc'} || $HideField{'Cc'} ) {
-<tr><td class="label"><&|/l&>Cc</&>:</td>
-<td class="value"><& /Elements/EmailInput,
- Name => $NamePrefix .'Cc', Default => $value_cb->('Cc'), Size => undef,
-&></td></tr>
-<tr><td> </td><td class="comment">
-<i><font size="-2"><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of
-email addresses. These people <b>will</b> receive future updates.)</&></font></i>
-</td></tr>
+<div class="form-row">
+ <div class="label col-2">
+ <&|/l&>Cc</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/EmailInput,
+ Name => $NamePrefix . 'Cc',
+ Default => $value_cb->('Cc'),
+ Size => undef,
+ &>
+ </div>
+</div>
+
+<div class="form-row">
+ <div class="label col-2"></div>
+ <div class="value col-9">
+ <i><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)</&></i>
+ </div>
+</div>
% }
% unless ( $SkipField{'AdminCc'} && $HideField{'AdminCc'} ) {
-<tr><td class="label"><&|/l&>Admin Cc</&>:</td>
-<td class="value"><& /Elements/EmailInput,
- Name => $NamePrefix .'AdminCc', Default => $value_cb->('AdminCc'), Size => undef,
-&></td></tr>
-<tr><td> </td><td class="comment">
-<i><font size="-2"><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of administrative
-email addresses. These people <b>will</b> receive future updates.)</&></font></i>
-</td></tr>
+<div class="form-row">
+ <div class="label col-2">
+ <&|/l&>Admin Cc</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/EmailInput,
+ Name => $NamePrefix . 'AdminCc',
+ Default => $value_cb->('AdminCc'),
+ Size => undef,
+ &>
+ </div>
+</div>
+
+<div class="form-row">
+ <div class="label col-2"></div>
+ <div class="value col-9">
+ <i><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)</&></i>
+ </div>
+</div>
% }
% unless ( $SkipField{'Subject'} || $HideField{'Subject'} ) {
-<tr><td class="label"><&|/l&>Subject</&>:</td>
-<td class="value">
-<input type="text" name="<% $NamePrefix %>Subject" size="60" maxsize="100" value="<% $value_cb->('Subject') %>" />
-</td></tr>
+<div class="form-row">
+ <div class="form-group label col-2">
+ <&|/l&>Subject</&>:
+ </div>
+ <div class="form-group value col-9">
+ <input class="form-control" type="text" name="<% $NamePrefix %>Subject" value="<% $value_cb->('Subject') %>" />
+ </div>
+</div>
% }
% if ( !$SkipField{'SignEncrypt'} && RT->Config->Get('GnuPG')->{'Enable'} ) {
-<tr><td> </td><td>
-<% loc('Sign')%> <& /Widgets/Form/Boolean:InputOnly,
- Name => $NamePrefix .'Sign',
- CurrentValue => $ARGS{ $NamePrefix .'Sign' },
-&>
-
-<% loc('Encrypt')%> <& /Widgets/Form/Boolean:InputOnly,
- Name => $NamePrefix .'Encrypt',
- CurrentValue => $ARGS{ $NamePrefix .'Encrypt' },
-&>
-</td></tr>
+<div class="form-row">
+ <div class="label col-2">
+
+ </div>
+ <div class="value col-9">
+ <div>
+ <% loc('Sign')%>
+ <& /Widgets/Form/Boolean:InputOnly,
+ Name => $NamePrefix . 'Sign',
+ CurrentValue => $ARGS{ $NamePrefix . 'Sign' },
+ &>
+ </div>
+ <div>
+ <% loc('Encrypt')%>
+ <& /Widgets/Form/Boolean:InputOnly,
+ Name => $NamePrefix . 'Encrypt',
+ CurrentValue => $ARGS{ $NamePrefix . 'Encrypt' },
+ &>
+ </div>
+ </div>
+</div>
% }
% unless ( $SkipField{'Content'} || $HideField{'Content'} ) {
-<tr><td class="labeltop"><&|/l&>Message</&>:</td>
-<td>
+<div class="form-group">
% if ( RT->Config->Get('ArticleOnTicketCreate')) {
-<& /Articles/Elements/BeforeMessageBox, %ARGS, QueueObj => $QueueObj, MessageBoxName => $NamePrefix .'Content' &>
+ <& /Articles/Elements/BeforeMessageBox,
+ %ARGS,
+ QueueObj => $QueueObj,
+ MessageBoxName => $NamePrefix . 'Content',
+ &>
% }
-% $m->callback( %ARGS, MessageBoxName => $NamePrefix .'Content',
+% $m->callback( %ARGS, MessageBoxName => $NamePrefix . 'Content',
% CallbackPage => '/Ticket/Create.html', CallbackName => 'BeforeMessageBox' );
% my $content = $value_cb->('Content');
-<& /Elements/MessageBox,
- Name => $NamePrefix .'Content',
- Default => $content,
- IncludeSignature => exists $ARGS{'IncludeSignature'} ? $ARGS{'IncludeSignature'} : !$content,
- QuoteTransaction => $value_cb->('QuoteTransaction'),
-&></td></tr>
+ <& /Elements/MessageBox,
+ Name => $NamePrefix . 'Content',
+ Default => $content,
+ IncludeSignature => exists $ARGS{'IncludeSignature'} ? $ARGS{'IncludeSignature'} : !$content,
+ QuoteTransaction => $value_cb->('QuoteTransaction'),
+ &>
+</div>
% }
% unless ( $SkipField{'Attachments'} ) {
<& /RTIR/Create.html:AttachmentsForm &>
% }
-</table></&>
+</&>
-<& /Elements/Submit,
- Name => 'CreateWithInvestigation',
- Label => loc("Create Incident and run Investigation"),
- SubmitId => 'create-ticket-with-investigation'
-&>
+<div class="form-row">
+ <div class="col-12">
+ <& /Elements/Submit,
+ Name => 'CreateWithInvestigation',
+ Label => loc("Create Incident and run Investigation"),
+ SubmitId => 'create-ticket-with-investigation'
+ &>
+ </div>
+</div>
% $m->callback( CallbackName => 'AfterTable', ARGSRef => \%ARGS, TicketObj => $ticket,
% QueueObj => $QueueObj, DefaultsFrom => $TicketObj );
commit cfdf08ed77c990bdaad44a6a9044a488994b86c1
Author: Blaine Motsinger <blaine at bestpractical.com>
Date: Wed May 20 17:47:16 2020 -0500
Replace Cc and AdminCc helper text with tooltips
This commit replaces the Cc and AdminCc helper text on the
create investigation element with fontawesome icons and
bootstrap tooltips.
diff --git a/html/RTIR/Investigation/Elements/Create b/html/RTIR/Investigation/Elements/Create
index f0cb7d37..c918b87a 100644
--- a/html/RTIR/Investigation/Elements/Create
+++ b/html/RTIR/Investigation/Elements/Create
@@ -193,6 +193,7 @@
<div class="form-row">
<div class="label col-2">
<&|/l&>Cc</&>:
+ <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<&|/l&>Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people will receive future updates.</&>"></span>
</div>
<div class="value col-9">
<& /Elements/EmailInput,
@@ -202,19 +203,13 @@
&>
</div>
</div>
-
-<div class="form-row">
- <div class="label col-2"></div>
- <div class="value col-9">
- <i><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)</&></i>
- </div>
-</div>
% }
% unless ( $SkipField{'AdminCc'} && $HideField{'AdminCc'} ) {
<div class="form-row">
<div class="label col-2">
<&|/l&>Admin Cc</&>:
+ <span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="<&|/l&>Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people will receive future updates.</&>"></span>
</div>
<div class="value col-9">
<& /Elements/EmailInput,
@@ -224,13 +219,6 @@
&>
</div>
</div>
-
-<div class="form-row">
- <div class="label col-2"></div>
- <div class="value col-9">
- <i><&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)</&></i>
- </div>
-</div>
% }
% unless ( $SkipField{'Subject'} || $HideField{'Subject'} ) {
-----------------------------------------------------------------------
More information about the rt-commit
mailing list