CreateChildTicket

From Request Tracker Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Add this to /opt/rt3/local/html/Callbacks/SA/Ticket/Display.html/BeforeShowHistory and it will create ugly button to create a child ticke in another queue

<FORM ACTION="<% $RT::WebPath %>/Ticket/Create.html" NAME="CreateTicketInQueue">
  <input type="submit" value="Create child request in">
  <& /Elements/SelectQueue, Name => 'Queue', %ARGS, ShowNullOption => 0, ShowAllQueues => 0 &>
  <input type="hidden" name="new-MemberOf" value="<%$Ticket->Id%>">
  <input type="hidden" name="Subject" value="Child of: <%$Ticket->Subject%>">
</FORM>

<%INIT>
</%INIT>

<%ARGS>
$Ticket => undef
$Verbose =>  0
$Default => 0
</%ARGS>

I improved this a bit. Put into /usr/local/share/request-tracker3.6/html/Callbacks/LOCAL/Ticket/Elements/ShowTransaction

% if ($Transaction->Type =~ /^(Create|Correspond|Comment)$/) {

<form action="<% $RT::WebPath %>/Ticket/Create.html"
     name="CreateTicketInQueue">

<script type="text/javascript">
 function setrelationship (select) {
   var wert = select.options[select.options.selectedIndex].value;
   select.form.elements["new-MemberOf"].value = "";
   select.form.elements["new-DependsOn"].value = "";
   select.form.elements["new-RefersTo"].value = "";
   select.form.elements["MemberOf-new"].value = "";
   select.form.elements["DependsOn-new"].value = "";
   select.form.elements["RefersTo-new"].value = "";

   select.form.elements[wert].value = "<%$Ticket->Id%>";
 }
</script>


<input type="hidden" name="new-MemberOf" value="">
<input type="hidden" name="new-DependsOn" value="">
<input type="hidden" name="new-RefersTo" value="">
<input type="hidden" name="MemberOf-new" value="">
<input type="hidden" name="DependsOn-new" value="<%$Ticket->Id%>">
<input type="hidden" name="RefersTo-new" value="">

<p align="right">
Create new
<select name="how-depends" onchange="setrelationship(this)">
<option value="new-DependsOn">Parent (dependent)</option>
<option selected value="DependsOn-new">Child (dependent)</option>
<option value="MemberOf-new">Parent (independent)</option>
<option value="new-MemberOf">Child (independent)</option>
<option value="new-RefersTo">Refers to</option>
<option value="RefersTo-new">Refered to by</option>
</select>

<input type="submit" value="Ticket"> in
<& /Elements/SelectQueue, Name => 'Queue', %ARGS, ShowNullOption => 0, ShowAllQueues => 0 &>
</p>
</form>


% }

<%ARGS>
$Ticket => undef
$Transaction => undef
$Verbose => 0
$Default => 0
</%ARGS>


This doesn't work and results in the following:<br /><br />

Error during compilation of /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction:<br /> Global symbol "%if" requires explicit package name at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 197.<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 197, near "% if ("<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 205, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 206, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 207, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 208, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 209, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 210, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 212, near "elements["<br /> syntax error at /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction line 214, near "}<br /> </script>"<br /> /usr/local/rt3/local/html/Ticket/Elements/ShowTransaction has too many errors.<br /> <br /><br /> ...<br /> 193: }<br /> 194: }<br /> 195: }<br /> 196: <br /> 197: % if ($Transaction->Type =~ /^(Create|Correspond|Comment)$/) {<br /> 198: <br /> 199: <form action="<% $RT::WebPath %>/Ticket/Create.html"<br /> 200: name="CreateTicketInQueue"><br /> 201: <br /> 202: <script type="text/javascript"><br /> 203: function setrelationship (select) {<br /> 204: var wert = select.options[select.options.selectedIndex].value;<br /> 205: select.form.elements["new-MemberOf"].value = "";<br /> 206: select.form.elements["new-DependsOn"].value = "";<br /> 207: select.form.elements["new-RefersTo"].value = "";<br /> 208: select.form.elements["MemberOf-new"].value = "";<br /> 209: select.form.elements["DependsOn-new"].value = "";<br /> 210: select.form.elements["RefersTo-new"].value = "";<br /> 211: <br /> 212: select.form.elementswert.value = "<%$Ticket->Id%>";<br /> 213: }<br /> 214: </script><br /> 215: <br /> 216: <input type="hidden" name="new-MemberOf" value=""><br /> 217: <input type="hidden" name="new-DependsOn" value=""><br /> 218: <input type="hidden" name="new-RefersTo" value=""><br /><br />

... <br /> /usr/lib/perl5/vendor_perl/5.8.7/HTML/Mason/Interp.pm:454<br /> /usr/lib/perl5/vendor_perl/5.8.7/HTML/Mason/Request.pm:1088<br /> /usr/lib/perl5/vendor_perl/5.8.7/HTML/Mason/Request.pm:1002<br /> /usr/lib/perl5/vendor_perl/5.8.7/HTML/Mason/Request.pm:1197<br /> /usr/local/rt3/share/html/Ticket/Elements/ShowHistory:104<br /> /usr/local/rt3/share/html/Ticket/Display.html:65<br /> /usr/local/rt3/share/html/autohandler:291<br />


The above works for me, with Minor changes. (RT 3.6.6)

1) Copied /opt/rt3/share/html/Ticket/Elements/ShowTransaction to /opt/rt3/local/html/Ticket/Elements/ShowTransaction.

2) Pasted the code in after <%/INIT>

3) Changed the <%ARGS>...<%/ARGS> Section to this:

<%ARGS>
$Verbose => 0
$Default => 0
</%ARGS>

4) Restart Web Server

5) Now after each comment or reply we get a small form that gives the option of Creating a Child Ticket of the current ticket<br />


Quick and dirty callback that gives you a 'Split' function for splitting one ticket into another (keeping the subject, requestor etc). I put the following in html/Callbacks/WHATEVER/Ticket/Elements/Tabs/Defaults

<%init>
if ($Ticket) {
$actions->{'split-ticket'} = { title => loc('Split'),
                                        path =>   'Ticket/Create.html?Queue=1&Subject='.$Ticket->Subject.'&new-MemberOf='.$Ticket->Id.'&Requestors='.$Ticket->RequestorAddresses
};
}
</%init>
<%args>
$Ticket =>undef
$tabs => undef
$actions => undef
</%args>

That's it. Remember to restart webserver.

^^^ Doesn't seem to work as written?


Here's another improved version for RT 3.6.6. The new ticket will be opened with most fields already populated.

1) Copy /opt/rt3/share/html/Ticket/Elements/ShowTransaction to /opt/rt3/local/html/Ticket/Elements/ShowTransaction.

2) Add this code after the </%INIT> tag and restart the your web server. You may want to change the "Approval" queue name to suit your approval queue name.

% if ( $Transaction->Type =~ /^(Create|Correspond|Comment)$/ && $Ticket->QueueObj->Name !~ /^(Approval)$/) {

<form action="<% $RT::WebPath %>/Ticket/Create.html" name="CreateTicketInQueue">

<script type="text/javascript">
       function setrelationship (select) {
               var wert = select.options[select.options.selectedIndex].value;
               select.form.elements["new-MemberOf"].value = "";
               select.form.elements["new-DependsOn"].value = "";
               select.form.elements["new-RefersTo"].value = "";
               select.form.elements["MemberOf-new"].value = "";
               select.form.elements["DependsOn-new"].value = "";
               select.form.elements["RefersTo-new"].value = "";
               select.form.elements[wert].value = "<%$Ticket->Id%>";

               if (wert == "DependsOn-new") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Dep. Child of <%$Ticket->Id%>)";
               } else if (wert == "new-MemberOf") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Child of <%$Ticket->Id%>)";
               } else if (wert == "new-DependsOn") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Depends on <%$Ticket->Id%>)";
               } else if (wert == "MemberOf-new") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Parent of <%$Ticket->Id%>)";
               } else if (wert == "new-RefersTo") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Refers to <%$Ticket->Id%>)";
               } else if (wert == "RefersTo-new") {
                       select.form.elements["Subject"].value = "<%$Ticket->Subject%> (Refered to by <%$Ticket->Id%>)";
               } else {
                       select.form.elements["Subject"].value = "";
               }
       }
</script>

<input type="hidden" name="new-MemberOf" value="">
<input type="hidden" name="MemberOf-new" value="">
<input type="hidden" name="new-DependsOn" value="">
<input type="hidden" name="DependsOn-new" value="<%$Ticket->Id%>">
<input type="hidden" name="new-RefersTo" value="">
<input type="hidden" name="RefersTo-new" value="">
<input type="hidden" name="id" value="<%$desc%>">
<input type="hidden" name="CloneTicket" value="<%$Ticket->Id%>">
<input type="hidden" name="Subject" value="<%$Ticket->Subject%> (Dep. Child of <%$Ticket->Id%>)">
<input type="hidden" name="QuoteTransaction" value="<%$Transaction->Id%>">
<input type="hidden" name="Status" value="new">
<input type="hidden" name="Requestors" value="">
<input type="hidden" name="Cc" value="<%$Ticket->Requestors->MemberEmailAddressesAsString%>,<%$Ticket->Cc->MemberEmailAddressesAsString%>">

<p align="right">
Create new
<select name="how-depends" onchange="setrelationship(this)">
       <option value="DependsOn-new" selected>Child (dependent)</option>
       <option value="new-MemberOf">Child (independent)</option>
       <option value="new-DependsOn">Parent (dependent)</option>
       <option value="MemberOf-new">Parent (independent)</option>
       <option value="new-RefersTo">Refers to</option>
       <option value="RefersTo-new">Refered to by</option>
</select>

<input type="submit" value="Ticket"> in
       <& /Elements/SelectQueue, Name => 'Queue', %ARGS, ShowNullOption => 0, ShowAllQueues => 0 &>
</p>
</form>

% }