[Bps-public-commit] rt-extension-repeatticket branch, rt5, created. 1.11-9-gcdba1e1
? sunnavy
sunnavy at bestpractical.com
Tue Jul 28 18:16:16 EDT 2020
The branch, rt5 has been created
at cdba1e11f46f476ae3f50db31120c59757788a2d (commit)
- Log -----------------------------------------------------------------
commit 8cec6039bc4bc9386d15fc59d62a5c5f1f63127d
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 03:13:53 2020 +0800
Migrate to elevator themes for RT 5
diff --git a/html/Callbacks/RepeatTicket/Ticket/Create.html/AfterBasics b/html/Callbacks/RepeatTicket/Ticket/Create.html/AfterBasics
index 73faca6..a8cbcaa 100644
--- a/html/Callbacks/RepeatTicket/Ticket/Create.html/AfterBasics
+++ b/html/Callbacks/RepeatTicket/Ticket/Create.html/AfterBasics
@@ -1,4 +1,4 @@
-<&| /Widgets/TitleBox, title => loc("Recurrence"), class=>'ticket-info-repeat-recurrence', title_class => 'inverse' &>
+<&| /Widgets/TitleBox, title => loc("Recurrence"), class=>'ticket-info-repeat' &>
<& /Ticket/Elements/EditRecurrence, ARGSRef => $ARGSRef, Initial => 1 &>
</&>
<%init>
diff --git a/html/Callbacks/RepeatTicket/Ticket/Elements/ShowSummary/LeftColumn b/html/Callbacks/RepeatTicket/Ticket/Elements/ShowSummary/LeftColumn
index 06f2ee4..62c70b5 100644
--- a/html/Callbacks/RepeatTicket/Ticket/Elements/ShowSummary/LeftColumn
+++ b/html/Callbacks/RepeatTicket/Ticket/Elements/ShowSummary/LeftColumn
@@ -1,4 +1,4 @@
-<&| /Widgets/TitleBox, title => loc("Recurrence"), class=>'ticket-info-repeat-recurrence', title_class => 'inverse',
+<&| /Widgets/TitleBox, title => loc("Recurrence"), class=>'ticket-info-repeat',
($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyRecurrence.html?id=".$Ticket->Id) : ()) &>
<& /Ticket/Elements/EditRecurrence, Ticket => $Ticket, ReadOnly => 1 &>
</&>
diff --git a/html/Ticket/Elements/EditRecurrence b/html/Ticket/Elements/EditRecurrence
index 480c70f..3cc61bb 100644
--- a/html/Ticket/Elements/EditRecurrence
+++ b/html/Ticket/Elements/EditRecurrence
@@ -12,8 +12,8 @@ jQuery( function () {
jQuery('div.repeat input[name=repeat-type]').change( function () {
var val = jQuery(this).val();
- jQuery('div.repeat td.repeat-details:not(.repeat-details-'+val+')').addClass('hidden');
- jQuery('div.repeat td.repeat-details-' +val ).removeClass('hidden');
+ jQuery('div.repeat .repeat-details:not(.repeat-details-'+val+')').addClass('hidden');
+ jQuery('div.repeat .repeat-details-' +val ).removeClass('hidden');
} );
% if ( $ReadOnly ) {
@@ -22,190 +22,204 @@ jQuery( function () {
} );
</script>
<div class="repeat">
-<label><input name="repeat-enabled" type="checkbox" value="1" <% $ARGSRef->{'repeat-enabled'} ? 'checked="checked"' : '' |n %>/> <&|/l&>Enable Recurrence?</&></label>
-
-<div class="repeat-toggle <% $ARGSRef->{'repeat-enabled'} ? '' : 'hidden' %> ">
-
-<label><&|/l&>Ticket lead time (days)</&>:
-<input size="3" name="repeat-lead-time" type="text" value="<% $ARGSRef->{'repeat-lead-time'} %>" /></label>
-<label><&|/l&>Concurrent active tickets</&>:
-<input size="3" name="repeat-coexistent-number" type="text" value="<% $ARGSRef->{'repeat-coexistent-number'} %>" /></label>
-
-<fieldset>
-<legend><&|/l&>Recurrence pattern</&></legend>
-<table width="100%" border="0">
-<tr>
-<td width="100px">
- <table border="0">
- <tr>
- <td width="100px">
- <label><input name="repeat-type" type="radio" value="daily" <% ($ARGSRef->{'repeat-type'} || '') eq 'daily' ? 'checked="checked"' : '' |n %> /> <&|/l&>Daily</&></label>
- </td>
- <td width="1" rowspan="4" bgcolor="#aaa"><br></td>
- </tr>
- <tr>
- <td width="100px">
- <label><input name="repeat-type" type="radio" value="weekly" <% ($ARGSRef->{'repeat-type'} || '') eq 'weekly' ? 'checked="checked"' : '' |n %>/> <&|/l&>Weekly</&></label>
- </td>
- </tr>
- <tr>
- <td width="100px">
- <label><input name="repeat-type" type="radio" value="monthly" <% ($ARGSRef->{'repeat-type'} || '') eq 'monthly' ? 'checked="checked"' : '' |n %>/> <&|/l&>Monthly</&></label>
- </td>
- </tr>
- <tr>
- <td width="100px">
- <label><input name="repeat-type" type="radio" value="yearly" <% ($ARGSRef->{'repeat-type'} || '') eq 'yearly' ? 'checked="checked"' : '' |n %>/> <&|/l&>Yearly</&></label>
- </td>
- </tr>
- </table>
-</td>
-<td class="repeat-details repeat-details-daily <% ($ARGSRef->{'repeat-type'} || '' ) eq 'daily' ? '' : 'hidden' %>">
- <table border="0">
- <tr>
- <td>
- <label><input name="repeat-details-daily" type="radio" value="day" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'day' ? 'checked="checked"' : '' |n %>/>
- <&|/l_unsafe, $input->("repeat-details-daily-day") &>Every [_1] Day(s)</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-daily" type="radio" value="weekday" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'weekday' ? 'checked="checked"' : '' |n %>/>
- <&|/l&>Every Weekday</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-daily" type="radio" value="complete" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'complete' ? 'checked="checked"' : '' |n %>/>
- <&|/l_unsafe, $input->("repeat-details-daily-complete") &>Create new task [_1] day(s) after each task is completed</&></label>
- </td>
- </tr>
- </table>
-</td>
-
-<td class="repeat-details repeat-details-weekly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'weekly' ? '' : 'hidden' %>">
- <table border="0">
- <tr>
- <td colspan="5">
- <label><input name="repeat-details-weekly" type="radio" value="week" <% ($ARGSRef->{'repeat-details-weekly'} || '') eq 'week' ? 'checked="checked"' : '' |n %> />
- <&|/l_unsafe, $input->("repeat-details-weekly-week") &>Recur every [_1] week(s) on</&>:</label>
- </td>
- </tr>
- <tr>
- <td width="10px" />
-% for my $number ( 0 .. 6 ) {
- <td>
- <label><input name="repeat-details-weekly-weeks" type="checkbox" value="<% $week_values[$number] %>"
-% if ( defined $ARGSRef->{'repeat-details-weekly-weeks'} && (
-% ( ref $ARGSRef->{'repeat-details-weekly-weeks'} && grep { $_ eq $week_values[$number] }
-% @{$ARGSRef->{'repeat-details-weekly-weeks'}} ) ||
-% ( $ARGSRef->{'repeat-details-weekly-weeks'} eq $week_values[$number] ) ) ) {
- checked="checked"
-% }
-/><% loc($week_labels[$number]) %></label>
- </td>
-% if ( $number == 3 ) {
- </tr>
- <tr>
- <td width="10px" />
-% }
-% }
- </tr>
- <tr>
- <td colspan="5">
- <label><input name="repeat-details-weekly" type="radio" value="complete" <% ($ARGSRef->{'repeat-details-weekly'} || '') eq 'complete' ? 'checked="checked"' : '' |n%>/>
- <&|/l_unsafe, $input->("repeat-details-weekly-complete") &>Create new task [_1] week(s) after each task is completed</&></label>
- </td>
- </tr>
- </table>
-</td>
-
-<td class="repeat-details repeat-details-monthly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'monthly' ? '' : 'hidden' %>">
- <table border="0">
- <tr>
- <td>
- <label><input name="repeat-details-monthly" type="radio" value="day" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'day' ? 'checked="checked"' : '' |n %> /><&|/l_unsafe, $input->("repeat-details-monthly-day-day"), $input->("repeat-details-monthly-day-month") &>Day [_1] of every [_2] month(s)</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-monthly" type="radio" value="week" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'week' ? 'checked="checked"' : '' |n %> /><&|/l_unsafe, $nth->("repeat-details-monthly-week-number"), $wday->("repeat-details-monthly-week-week"), $input->("repeat-details-monthly-week-month") &>The [_1] [_2] of every [_3] month(s)</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-monthly" type="radio" value="complete" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'complete' ? 'checked="checked"' : '' |n %> />
- <&|/l_unsafe, $input->("repeat-details-monthly-complete") &>Create new task [_1] month(s) after each task is completed</&></label>
- </td>
- </tr>
- </table>
-</td>
-
-<td class="repeat-details repeat-details-yearly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'yearly' ? '' : 'hidden' %>">
- <table border="0">
- <tr>
- <td>
- <label><input name="repeat-details-yearly" type="radio" value="day" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'day' ? 'checked="checked"' : '' |n %> /><&|/l_unsafe, $month->("repeat-details-yearly-day-month"), $input->("repeat-details-yearly-day-day") &>Every [_1] [_2]</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-yearly" type="radio" value="week" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'week' ? 'checked="checked"' : '' |n %> /><&|/l_unsafe, $nth->("repeat-details-yearly-week-number"), $wday->("repeat-details-yearly-week-week"), $month->("repeat-details-yearly-week-month") &>The [_1] [_2] of [_3]</&></label>
- </td>
- </tr>
- <tr>
- <td>
- <label><input name="repeat-details-yearly" type="radio" value="complete" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'complete' ? 'checked="checked"' : '' |n %> />
- <&|/l_unsafe, $input->("repeat-details-yearly-complete") &>Create new task [_1] year(s) after each task is completed</&></label>
- </td>
- </tr>
- </table>
-</td>
-
-</tr>
-</table>
-</fieldset>
-
-
-<fieldset>
-<legend><&|/l&>Range of recurrence</&></legend>
-<table width="100%" border="0">
-<tr>
- <td rowspan="3">
- <label>
- <&|/l&>Start</&>:
+ <div class="form-row">
+ <div class="label col-4"></div>
+ <div class="value col-auto">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" id="repeat-enabled" name="repeat-enabled" class="custom-control-input" value="1" <% $ARGSRef->{'repeat-enabled'} ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-enabled"><&|/l&>Enable Recurrence?</&></label>
+ </div>
+ </div>
+ </div>
+
+ <div class="repeat-toggle <% $ARGSRef->{'repeat-enabled'} ? '' : 'hidden' %> ">
+
+ <div class="form-row">
+ <div class="label input col-4">
+ <&|/l&>Ticket lead time (days)</&>:
+ </div>
+ <div class="value col-auto">
+ <input class="form-control" size="3" name="repeat-lead-time" type="text" value="<% $ARGSRef->{'repeat-lead-time'} %>" />
+ </div>
+ </div>
+
+ <div class="form-row">
+ <div class="label input col-4">
+ <&|/l&>Concurrent active tickets</&>:
+ </div>
+ <div class="value col-auto">
+ <input class="form-control" size="3" name="repeat-coexistent-number" type="text" value="<% $ARGSRef->{'repeat-coexistent-number'} %>" />
+ </div>
+ </div>
+
+ <div class="form-row">
+ <div class="label input col-4">
+ <&|/l&>Recurrence pattern</&>:
+ </div>
+ <div class="value col-auto">
+
+ <div class="form-check form-check-inline">
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-type-daily" name="repeat-type" class="custom-control-input" value="daily" <% ($ARGSRef->{'repeat-type'} || '') eq 'daily' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-type-daily"><&|/l&>Daily</&></label>
+ </div>
+ </div>
+
+ <div class="form-check form-check-inline">
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-type-weekly" name="repeat-type" class="custom-control-input" value="weekly" <% ($ARGSRef->{'repeat-type'} || '') eq 'weekly' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-type-weekly"><&|/l&>Weekly</&></label>
+ </div>
+ </div>
+
+ <div class="form-check form-check-inline">
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-type-monthly" name="repeat-type" class="custom-control-input" value="monthly" <% ($ARGSRef->{'repeat-type'} || '') eq 'monthly' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-type-monthly"><&|/l&>Monthly</&></label>
+ </div>
+ </div>
+
+ <div class="form-check form-check-inline">
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-type-yearly" name="repeat-type" class="custom-control-input" value="yearly" <% ($ARGSRef->{'repeat-type'} || '') eq 'yearly' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-type-yearly"><&|/l&>Yearly</&></label>
+ </div>
+
+ </div>
+
+ <div class="mt-3 repeat-details repeat-details-daily <% ($ARGSRef->{'repeat-type'} || '' ) eq 'daily' ? '' : 'hidden' %>">
+
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-details-daily-day" name="repeat-details-daily" class="custom-control-input" value="day" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'day' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-daily-day"><&|/l_unsafe, $input->("repeat-details-daily-day") &>Every [_1] Day(s)</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-daily-weekday" name="repeat-details-daily" class="custom-control-input" value="weekday" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'weekday' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-details-daily-weekday"><&|/l&>Every Weekday</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-daily-complete" name="repeat-details-daily" class="custom-control-input" value="complete" <% ($ARGSRef->{'repeat-details-daily'} || '') eq 'complete' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-daily-complete"><&|/l_unsafe, $input->("repeat-details-daily-complete") &>Create new task [_1] day(s) after each task is completed</&></label>
+ </div>
+
+ </div>
+
+ <div class="mt-3 repeat-details repeat-details-weekly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'weekly' ? '' : 'hidden' %>">
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-details-weekly-week" name="repeat-details-weekly" class="custom-control-input" value="week" <% ($ARGSRef->{'repeat-details-weekly'} || '') eq 'week' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-weekly-week"><&|/l_unsafe, $input->("repeat-details-weekly-week") &>Recur every [_1] week(s) on</&>:</label>
+ </div>
+
+ <div class="ml-4">
+% for my $number ( 0 .. 6 ) {
+ <div class="form-check form-check-inline">
+ <div class="custom-control custom-checkbox">
+ <input id="name=repeat-details-weekly-weeks-<% $week_values[$number] %>" name="repeat-details-weekly-weeks" type="checkbox" class="custom-control-input" value="<% $week_values[$number] %>"
+% if ( defined $ARGSRef->{'repeat-details-weekly-weeks'} && (
+% ( ref $ARGSRef->{'repeat-details-weekly-weeks'} && grep { $_ eq $week_values[$number] }
+% @{$ARGSRef->{'repeat-details-weekly-weeks'}} ) ||
+% ( $ARGSRef->{'repeat-details-weekly-weeks'} eq $week_values[$number] ) ) ) {
+ checked="checked"
+% }
+ />
+ <label class="custom-control-label" for="name=repeat-details-weekly-weeks-<% $week_values[$number] %>"><% loc($week_labels[$number]) %></label>
+ </div>
+ </div>
+% }
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-weekly-complete" name="repeat-details-weekly" class="custom-control-input" value="complete" <% ($ARGSRef->{'repeat-details-weekly'} || '') eq 'complete' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-weekly-complete"><&|/l_unsafe, $input->("repeat-details-weekly-complete") &>Create new task [_1] week(s) after each task is completed</&></label>
+ </div>
+
+ </div>
+
+ <div class="mt-3 repeat-details repeat-details-monthly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'monthly' ? '' : 'hidden' %>">
+
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-details-monthly-day" name="repeat-details-monthly" class="custom-control-input" value="day" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'day' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-monthly-day"><&|/l_unsafe, $input->("repeat-details-monthly-day-day"), $input->("repeat-details-monthly-day-month") &>Day [_1] of every [_2] month(s)</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-monthly-week" name="repeat-details-monthly" class="custom-control-input" value="week" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'week' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-monthly-week"><&|/l_unsafe, $nth->("repeat-details-monthly-week-number"), $wday->("repeat-details-monthly-week-week"), $input->("repeat-details-monthly-week-month") &>The [_1] [_2] of every [_3] month(s)</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-monthly-complete" name="repeat-details-monthly" class="custom-control-input" value="complete" <% ($ARGSRef->{'repeat-details-monthly'} || '') eq 'complete' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-monthly-complete"><&|/l_unsafe, $input->("repeat-details-monthly-complete") &>Create new task [_1] month(s) after each task is completed</&></label>
+ </div>
+
+ </div>
+
+ <div class="mt-3 repeat-details repeat-details-yearly <% ($ARGSRef->{'repeat-type'} || '' ) eq 'yearly' ? '' : 'hidden' %>">
+
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-details-yearly-day" name="repeat-details-yearly" class="custom-control-input" value="day" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'day' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-yearly-day"><&|/l_unsafe, $month->("repeat-details-yearly-day-month"), $input->("repeat-details-yearly-day-day") &>Every [_1] [_2]</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-yearly-week" name="repeat-details-yearly" class="custom-control-input" value="week" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'week' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-yearly-week"><&|/l_unsafe, $nth->("repeat-details-yearly-week-number"), $wday->("repeat-details-yearly-week-week"), $month->("repeat-details-yearly-week-month") &>The [_1] [_2] of [_3]</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-details-yearly-complete" name="repeat-details-yearly" class="custom-control-input" value="complete" <% ($ARGSRef->{'repeat-details-yearly'} || '') eq 'complete' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-details-yearly-complete"><&|/l_unsafe, $input->("repeat-details-yearly-complete") &>Create new task [_1] year(s) after each task is completed</&></label>
+ </div>
+
+ </div>
+
+ </div>
+ </div>
+
+ <div class="form-row mt-2">
+ <div class="label input col-4">
+ <&|/l&>Start of recurrence</&>:
+ </div>
+ <div class="value col-auto">
<& /Elements/SelectDate, Name => 'repeat-start-date', ShowTime => 0, Default => $ARGSRef->{'repeat-start-date'} || '' &>
- </label>
- </td>
- <td>
- <label>
- <input type="radio" name="repeat-end" value="none" <% ($ARGSRef->{'repeat-end'} || '') eq 'none' ? 'checked="checked"' : '' |n %>> <&|/l&>No end date</&>
- </label>
- </td>
-</tr>
-<tr>
- <td>
- <label><input type="radio" name="repeat-end" value="number" <% ($ARGSRef->{'repeat-end'} || '') eq 'number' ? 'checked="checked"' : '' |n %>>
- <&|/l_unsafe, $input->("repeat-end-number",6,10) &>End after [_1] occurrence(s)</&>
-% if ( $Initial ) {
- <input name="repeat-occurrences" type="hidden" value="1">
-% } else {
- <&|/l&>Current</&>: <input size="6" type="text" name="repeat-occurrences" readonly="readonly" value="<% $ARGSRef->{'repeat-occurrences'} %>"></label>
-% }
- </td>
-</tr>
-<tr>
- <td>
- <label><input type="radio" name="repeat-end" value="date" <% ($ARGSRef->{'repeat-end'} || '') eq 'date' ? 'checked="checked"' : '' |n %>> <&|/l&>End by</&>:
- <& /Elements/SelectDate, Name => 'repeat-end-date', ShowTime => 0, Default => $ARGSRef->{'repeat-end-date'} || '' &></label>
- </td>
-</tr>
-</table>
-</fieldset>
+ </div>
+ </div>
-</div>
+ <div class="form-row">
+ <div class="label input col-4">
+ <&|/l&>End of recurrence</&>:
+ </div>
+ <div class="value col-auto form-check">
+
+ <div class="custom-control custom-radio">
+ <input type="radio" id="repeat-end-none" name="repeat-end" class="custom-control-input" value="none" <% ($ARGSRef->{'repeat-end'} || '') eq 'none' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label" for="repeat-end-none"><&|/l&>No end date</&></label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-end-number" name="repeat-end" class="custom-control-input" value="number" <% ($ARGSRef->{'repeat-end'} || '') eq 'number' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-end-number"><&|/l_unsafe, $input->("repeat-end-number",6,10) &>End after [_1] occurrence(s)</&>
+% if ( $Initial ) {
+ <input name="repeat-occurrences" type="hidden" value="1">
+% } else {
+ <&|/l&>Current</&>: <input size="6" type="text" name="repeat-occurrences" readonly="readonly" value="<% $ARGSRef->{'repeat-occurrences'} %>">
+% }
+ </label>
+ </div>
+
+ <div class="mt-1 custom-control custom-radio">
+ <input type="radio" id="repeat-end-date" name="repeat-end" class="custom-control-input" value="number" <% ($ARGSRef->{'repeat-end'} || '') eq 'date' ? ' checked="checked"': '' |n %>>
+ <label class="custom-control-label has-text-input" for="repeat-end-date">
+ <&|/l&>End by</&>: <& /Elements/SelectDate, Name => 'repeat-end-date', ShowTime => 0, Default => $ARGSRef->{'repeat-end-date'} || '' &>
+ </label>
+ </div>
+ </div>
+ </div>
+ </div>
</div>
<%init>
@@ -242,7 +256,7 @@ my $input = sub {
my ($name, $width, $default) = (@_);
$width ||= 4; $default ||= 1;
my $escaped = $m->interp->apply_escapes($name, "h");
- return qq|<input name="$escaped" type="text" size="$width" value="|
+ return qq|<input name="$escaped" type="text" size="$width" class="form-control" value="|
. $m->interp->apply_escapes($ARGSRef->{$name} || $default, "h")
. qq|" />|;
};
@@ -250,7 +264,7 @@ my $input = sub {
my $nth = sub {
my ($name) = @_;
my $escaped = $m->interp->apply_escapes($name, "h");
- my $str = qq|<select name="$escaped">|;
+ my $str = qq|<select class="form-control selectpicker" name="$escaped">|;
for my $number ( 1 .. 4, -1 ) {
$str .= qq|<option value="$number" |
. (($ARGSRef->{$name} || '') eq $number ? 'selected="selected"' : '') . ">"
@@ -263,7 +277,7 @@ my $nth = sub {
my $wday = sub {
my ($name) = @_;
my $escaped = $m->interp->apply_escapes($name, "h");
- my $str = qq|<select name="$escaped">|;
+ my $str = qq|<select class="form-control selectpicker" name="$escaped">|;
for my $number ( 0 .. 6 ) {
$str .= qq|<option value="$week_values[$number]" |
. (($ARGSRef->{$name} || '') eq $week_values[$number] ? 'selected="selected"' : '' ) . ">"
@@ -276,7 +290,7 @@ my $wday = sub {
my $month = sub {
my ($name) = @_;
my $escaped = $m->interp->apply_escapes($name, "h");
- my $str = qq|<select name="$escaped">|;
+ my $str = qq|<select class="form-control selectpicker" name="$escaped">|;
for my $number ( 1 .. 12 ) {
$str .= qq|<option value="$number" |
. (($ARGSRef->{$name} || '') eq $number ? 'selected="selected"' : '') . ">"
diff --git a/html/Ticket/ModifyRecurrence.html b/html/Ticket/ModifyRecurrence.html
index de8e100..9821c63 100644
--- a/html/Ticket/ModifyRecurrence.html
+++ b/html/Ticket/ModifyRecurrence.html
@@ -4,12 +4,17 @@
<& /Elements/ListActions, actions => \@results &>
% unless ( $skip ) {
-<form method="post" name="ModifyRecurrence" action="ModifyRecurrence.html">
+<form method="post" name="ModifyRecurrence" action="ModifyRecurrence.html" class="mx-auto max-width-lg">
<input type="hidden" class="hidden" name="id" value="<%$TicketObj->Id%>" />
<&| /Widgets/TitleBox,title => loc('Modify recurrence for ticket # [_1]', $TicketObj->Id), class=> 'ticket-info-repeat' &>
<& Elements/EditRecurrence, Ticket => $TicketObj, ARGSRef => $ARGSRef &>
</&>
-<& /Elements/Submit, Name => 'SubmitTicket', Label => loc('Save Changes') &>
+
+ <div class="form-row">
+ <div class="col-12">
+ <& /Elements/Submit, Name => 'SubmitTicket', Label => loc('Save Changes') &>
+ </div>
+ </div>
</form>
% }
diff --git a/static/css/repeat-ticket.css b/static/css/repeat-ticket.css
index b8d1460..4d17888 100644
--- a/static/css/repeat-ticket.css
+++ b/static/css/repeat-ticket.css
@@ -1 +1,22 @@
-.ticket-info-repeat-recurrence .titlebox .titlebox-title .left { background-color: #B23 }
+.ticket-info-repeat-recurrence .titlebox.card {
+ border-top: 3px solid #B23;
+}
+
+.ticket-info-repeat .form-row .form-check {
+ margin-top: 5px;
+}
+
+
+.ticket-info-repeat .custom-control-label.has-text-input::before,
+.ticket-info-repeat .custom-control-label.has-text-input::after {
+ top: 0.5rem;
+}
+
+.ticket-info-repeat .form-control {
+ display: inline;
+ width: auto;
+}
+
+.ticket-info-repeat .bootstrap-select > .dropdown-toggle {
+ width: auto;
+}
commit d7805514afcd86a662358521c604f34cdb730fc6
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 05:53:01 2020 +0800
Update tests to make them pass on RT 5
diff --git a/xt/cf.t b/xt/cf.t
index ea291f2..3b2308f 100644
--- a/xt/cf.t
+++ b/xt/cf.t
@@ -13,11 +13,7 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue' }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
@@ -38,6 +34,7 @@ $m->submit_form_ok(
'repeat-details-daily' => 'day',
'repeat-details-daily-day' => 1,
},
+ button => 'SubmitTicket',
},
'Create'
);
diff --git a/xt/daily.t b/xt/daily.t
index 862cb71..061b17e 100644
--- a/xt/daily.t
+++ b/xt/daily.t
@@ -79,26 +79,26 @@ sub run_tests{
ok( $m->login( 'root', 'password' ), 'logged in' );
- $m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+ $m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a ticket with a recurrence in the General queue.";
- $m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up recurring aperture maintenance',
- 'Content' => 'Perform work on portals once per day',
- 'repeat-enabled' => 1,
- 'repeat-type' => 'daily',
- 'repeat-details-daily' => 'day',
- 'repeat-details-daily-day' => 1,
- },}, 'Create');
+ $m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up recurring aperture maintenance',
+ 'Content' => 'Perform work on portals once per day',
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'daily',
+ 'repeat-details-daily' => 'day',
+ 'repeat-details-daily-day' => 1,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+ );
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/end_conditions.t b/xt/end_conditions.t
index cae27a9..7f66a7a 100644
--- a/xt/end_conditions.t
+++ b/xt/end_conditions.t
@@ -101,26 +101,26 @@ sub run_tests{
ok( $m->login( 'root', 'password' ), 'logged in' );
- $m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+ $m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a ticket with a recurrence in the General queue.";
- $m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up recurring aperture maintenance',
- 'Content' => 'Perform work on portals once per day',
- 'repeat-enabled' => 1,
- 'repeat-type' => 'daily',
- 'repeat-details-daily' => 'day',
- 'repeat-details-daily-day' => 1,
- },}, 'Create');
+ $m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up recurring aperture maintenance',
+ 'Content' => 'Perform work on portals once per day',
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'daily',
+ 'repeat-details-daily' => 'day',
+ 'repeat-details-daily-day' => 1,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+ );
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/monthly.t b/xt/monthly.t
index 33ec223..78548aa 100644
--- a/xt/monthly.t
+++ b/xt/monthly.t
@@ -12,29 +12,29 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a ticket with a recurrence in the General queue.";
my $day = DateTime->now;
-$m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up monthly aperture maintenance',
- 'Content' => 'Perform work on portals on the first of each month',
- 'repeat-lead-time' => 14,
- 'repeat-coexistent-number' => 1,
- 'repeat-enabled' => 1,
- 'repeat-type' => 'monthly',
- 'repeat-details-monthly-day-day' => $day->day,
- 'repeat-details-monthly-day-month' => 1,
- },}, 'Create');
+$m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up monthly aperture maintenance',
+ 'Content' => 'Perform work on portals on the first of each month',
+ 'repeat-lead-time' => 14,
+ 'repeat-coexistent-number' => 1,
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'monthly',
+ 'repeat-details-monthly-day-day' => $day->day,
+ 'repeat-details-monthly-day-month' => 1,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+);
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/on_complete.t b/xt/on_complete.t
index 04bc090..cd97521 100644
--- a/xt/on_complete.t
+++ b/xt/on_complete.t
@@ -10,27 +10,27 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a recurrence that starts based on completion of previous ticket.";
my $day = DateTime->now;
-$m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up monthly aperture maintenance',
- 'Content' => 'Perform work on portals on the first of each month',
- 'repeat-enabled' => 1,
- 'repeat-type' => 'monthly',
- 'repeat-details-monthly' => 'complete',
- 'repeat-details-monthly-complete' => 0,
- },}, 'Create');
+$m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up monthly aperture maintenance',
+ 'Content' => 'Perform work on portals on the first of each month',
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'monthly',
+ 'repeat-details-monthly' => 'complete',
+ 'repeat-details-monthly-complete' => 0,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+);
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/start_date.t b/xt/start_date.t
index 69476e8..c85620d 100644
--- a/xt/start_date.t
+++ b/xt/start_date.t
@@ -10,11 +10,7 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
@@ -23,20 +19,24 @@ diag "Create a ticket with a recurrence in the General queue.";
my $day = DateTime->now->add( days => 14 ); # Start in two weeks
diag "Repeat start date is: " . $day->ymd;
-$m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up recurring aperture maintenance',
- 'Content' => 'Perform work on portals on Thursday',
- 'repeat-lead-time' => 7,
- 'repeat-coexistent-number' => 2,
- 'repeat-enabled' => 1,
- 'repeat-type' => 'weekly',
- 'repeat-details-weekly' => 'week',
- 'repeat-details-weekly-week' => 1,
- 'repeat-details-weekly-weeks' => 'th',
- 'repeat-start-date' => $day->ymd,
- },}, 'Create');
+$m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up recurring aperture maintenance',
+ 'Content' => 'Perform work on portals on Thursday',
+ 'repeat-lead-time' => 7,
+ 'repeat-coexistent-number' => 2,
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'weekly',
+ 'repeat-details-weekly' => 'week',
+ 'repeat-details-weekly-week' => 1,
+ 'repeat-details-weekly-weeks' => 'th',
+ 'repeat-start-date' => $day->ymd,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+);
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/weekly.t b/xt/weekly.t
index 8767b65..51790db 100644
--- a/xt/weekly.t
+++ b/xt/weekly.t
@@ -10,29 +10,29 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a ticket with a recurrence in the General queue.";
-$m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up recurring aperture maintenance',
- 'Content' => 'Perform work on portals on Tuesday and Thursday',
- 'repeat-lead-time' => 7,
- 'repeat-coexistent-number' => 2,
- 'repeat-enabled' => 1,
- 'repeat-type' => 'weekly',
- 'repeat-details-weekly' => 'week',
- 'repeat-details-weekly-week' => 1,
- 'repeat-details-weekly-weeks' => 'th',
- },}, 'Create');
+$m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up recurring aperture maintenance',
+ 'Content' => 'Perform work on portals on Tuesday and Thursday',
+ 'repeat-lead-time' => 7,
+ 'repeat-coexistent-number' => 2,
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'weekly',
+ 'repeat-details-weekly' => 'week',
+ 'repeat-details-weekly-week' => 1,
+ 'repeat-details-weekly-weeks' => 'th',
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+);
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
diff --git a/xt/yearly.t b/xt/yearly.t
index ff3ed94..0d65f6a 100644
--- a/xt/yearly.t
+++ b/xt/yearly.t
@@ -10,29 +10,29 @@ my ( $baseurl, $m ) = RT::Test->started_ok();
ok( $m->login( 'root', 'password' ), 'logged in' );
-$m->submit_form_ok({
- form_name => 'CreateTicketInQueue',
- fields => {
- 'Queue' => 'General' },
- }, 'Click to create ticket');
+$m->submit_form_ok( { form_name => 'CreateTicketInQueue', }, 'Click to create ticket' );
$m->content_contains('Enable Recurrence');
diag "Create a ticket with a recurrence in the General queue.";
my $day = DateTime->now;
-$m->submit_form_ok({
- form_name => 'TicketCreate',
- fields => {
- 'Subject' => 'Set up monthly aperture maintenance',
- 'Content' => 'Perform work on portals on the first of each month',
- 'repeat-lead-time' => 21,
- 'repeat-coexistent-number' => 1,
- 'repeat-enabled' => 1,
- 'repeat-type' => 'yearly',
- 'repeat-details-yearly-day-month' => $day->month,
- 'repeat-details-yearly-day-day' => $day->day,
- },}, 'Create');
+$m->submit_form_ok(
+ { form_name => 'TicketCreate',
+ fields => {
+ 'Subject' => 'Set up monthly aperture maintenance',
+ 'Content' => 'Perform work on portals on the first of each month',
+ 'repeat-lead-time' => 21,
+ 'repeat-coexistent-number' => 1,
+ 'repeat-enabled' => 1,
+ 'repeat-type' => 'yearly',
+ 'repeat-details-yearly-day-month' => $day->month,
+ 'repeat-details-yearly-day-day' => $day->day,
+ },
+ button => 'SubmitTicket',
+ },
+ 'Create'
+);
$m->text_like( qr/Ticket\s(\d+)\screated in queue/);
commit 55b26b2333dcad67a9979460b1d9ef7173467fa4
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 05:54:47 2020 +0800
Remove unnecessary "undef $m"
diff --git a/xt/cf.t b/xt/cf.t
index 3b2308f..7bb9ab0 100644
--- a/xt/cf.t
+++ b/xt/cf.t
@@ -70,5 +70,4 @@ ok( RT::Extension::RepeatTicket::SetRepeatAttribute(
is( $ticket->FirstCustomFieldValue('Original Ticket'),
undef, 'Original Ticket is unset' );
-undef $m;
done_testing;
diff --git a/xt/daily.t b/xt/daily.t
index 061b17e..e220327 100644
--- a/xt/daily.t
+++ b/xt/daily.t
@@ -112,5 +112,4 @@ sub run_tests{
return $daily_id;
}
-undef $m;
done_testing;
diff --git a/xt/monthly.t b/xt/monthly.t
index 78548aa..be27f1b 100644
--- a/xt/monthly.t
+++ b/xt/monthly.t
@@ -64,5 +64,4 @@ is( $ticket2->DueObj->ISO(Time => 0), $day->ymd, 'Due on: ' . $day->ymd);
is( $ticket2->Subject, $ticket2->DueObj->AsString . ' Set up monthly aperture maintenance',
'Ticket subject matches subject configuration: ' . $ticket2->Subject);
-undef $m;
done_testing;
commit 09a10f8551e542f6da575c73b5baabd82516cff8
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 06:26:35 2020 +0800
Bump version to 2.0 for RT 5
This big version bump makes it more notable that it's not a back
compatible version.
diff --git a/META.yml b/META.yml
index 63b3997..e099972 100644
--- a/META.yml
+++ b/META.yml
@@ -27,6 +27,6 @@ requires:
perl: 5.8.3
resources:
license: http://opensource.org/licenses/gpl-license.php
-version: '1.11'
+version: '2.00'
x_module_install_rtx_version: '0.39'
x_requires_rt: 4.0.6
diff --git a/lib/RT/Extension/RepeatTicket.pm b/lib/RT/Extension/RepeatTicket.pm
index 7d1dec7..04bc8d5 100644
--- a/lib/RT/Extension/RepeatTicket.pm
+++ b/lib/RT/Extension/RepeatTicket.pm
@@ -3,7 +3,7 @@ use strict;
package RT::Extension::RepeatTicket;
-our $VERSION = "1.11";
+our $VERSION = "2.00";
use RT::Interface::Web;
use DateTime;
commit 8dba083011fc817961a2e2a0c894bf75f6dc880d
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 06:25:12 2020 +0800
Support RT 5.0 and update docs accordingly
diff --git a/META.yml b/META.yml
index e099972..82ad80c 100644
--- a/META.yml
+++ b/META.yml
@@ -24,9 +24,9 @@ no_index:
- xt
requires:
DateTime::Event::ICal: 0
- perl: 5.8.3
+ perl: 5.10.1
resources:
license: http://opensource.org/licenses/gpl-license.php
version: '2.00'
x_module_install_rtx_version: '0.39'
-x_requires_rt: 4.0.6
+x_requires_rt: 5.0.0
diff --git a/Makefile.PL b/Makefile.PL
index ccf3d68..fce17aa 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -3,11 +3,11 @@ RTx('RT-Extension-RepeatTicket');
requires('DateTime::Event::ICal');
-requires_rt('4.0.6');
+requires_rt('5.0.0');
my ($lp) = ($INC{'RT.pm'} =~ /^(.*)[\\\/]/);
my $lib_path = join( ' ', "$RT::LocalPath/lib", $lp );
-my $bin_path = $RT::BinPath || "$RT::BasePath/bin" || "/opt/rt4/bin";
+my $bin_path = $RT::BinPath || "$RT::BasePath/bin" || "/opt/rt5/bin";
# Straight from perldoc perlvar
use Config;
diff --git a/README b/README
index 7fbf9c4..a075562 100644
--- a/README
+++ b/README
@@ -16,6 +16,9 @@ DESCRIPTION
tickets are needed, and when your daily cron job runs the
rt-repeat-ticket script.
+RT VERSION
+ Works with RT 5.0. Check out 1.* versions if you are still using RT 4.
+
INSTALLATION
perl Makefile.PL
make
@@ -31,19 +34,13 @@ INSTALLATION
If you are upgrading this module, check for upgrading instructions
in case changes need to be made to your database.
- Edit your /opt/rt4/etc/RT_SiteConfig.pm
- If you are using RT 4.2 or greater, add this line:
+ Edit your /opt/rt5/etc/RT_SiteConfig.pm
+ Add this line:
Plugin('RT::Extension::RepeatTicket');
- For RT 4.0, add this line:
-
- Set(@Plugins, qw(RT::Extension::RepeatTicket));
-
- or add RT::Extension::RepeatTicket to your existing @Plugins line.
-
Clear your mason cache
- rm -rf /opt/rt4/var/mason_data/obj
+ rm -rf /opt/rt5/var/mason_data/obj
Add bin/rt-repeat-ticket to the daily cron job.
Restart your webserver
diff --git a/bin/rt-repeat-ticket.in b/bin/rt-repeat-ticket.in
index 87b132f..7832924 100755
--- a/bin/rt-repeat-ticket.in
+++ b/bin/rt-repeat-ticket.in
@@ -8,7 +8,7 @@ package RT::Repeat::Ticket::Run;
BEGIN {
### after: use lib qw(@RT_LIB_PATH@);
-use lib '/opt/rt4/local/lib /opt/rt4/lib';
+use lib '/opt/rt5/local/lib /opt/rt5/lib';
use RT;
RT::LoadConfig;
RT::Init;
diff --git a/lib/RT/Extension/RepeatTicket.pm b/lib/RT/Extension/RepeatTicket.pm
index 04bc8d5..b95b0ad 100644
--- a/lib/RT/Extension/RepeatTicket.pm
+++ b/lib/RT/Extension/RepeatTicket.pm
@@ -782,6 +782,10 @@ New tickets are created when you initially save the recurrence, if new
tickets are needed, and when your daily cron job runs the rt-repeat-ticket
script.
+=head1 RT VERSION
+
+Works with RT 5.0. Check out 1.* versions if you are still using RT 4.
+
=head1 INSTALLATION
=over
@@ -804,21 +808,15 @@ in your database.
If you are upgrading this module, check for upgrading instructions
in case changes need to be made to your database.
-=item Edit your F</opt/rt4/etc/RT_SiteConfig.pm>
+=item Edit your F</opt/rt5/etc/RT_SiteConfig.pm>
-If you are using RT 4.2 or greater, add this line:
+Add this line:
Plugin('RT::Extension::RepeatTicket');
-For RT 4.0, add this line:
-
- Set(@Plugins, qw(RT::Extension::RepeatTicket));
-
-or add C<RT::Extension::RepeatTicket> to your existing C<@Plugins> line.
-
=item Clear your mason cache
- rm -rf /opt/rt4/var/mason_data/obj
+ rm -rf /opt/rt5/var/mason_data/obj
=item Add F<bin/rt-repeat-ticket> to the daily cron job.
diff --git a/lib/RT/Extension/RepeatTicket/Test.pm.in b/lib/RT/Extension/RepeatTicket/Test.pm.in
index 0f4ef53..f994543 100644
--- a/lib/RT/Extension/RepeatTicket/Test.pm.in
+++ b/lib/RT/Extension/RepeatTicket/Test.pm.in
@@ -2,7 +2,7 @@ use strict;
use warnings;
### after: use lib qw(@RT_LIB_PATH@);
-use lib qw(/opt/rt4/local/lib /opt/rt4/lib);
+use lib qw(/opt/rt5/local/lib /opt/rt5/lib);
package RT::Extension::RepeatTicket::Test;
commit 9317e2a51ff30654622ca4f07358c6520a75327c
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jul 10 06:22:38 2020 +0800
Update M:I
diff --git a/META.yml b/META.yml
index 82ad80c..eafebb8 100644
--- a/META.yml
+++ b/META.yml
@@ -8,7 +8,7 @@ configure_requires:
ExtUtils::MakeMaker: 6.59
distribution_type: module
dynamic_config: 1
-generated_by: 'Module::Install version 1.18'
+generated_by: 'Module::Install version 1.19'
license: gpl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -28,5 +28,5 @@ requires:
resources:
license: http://opensource.org/licenses/gpl-license.php
version: '2.00'
-x_module_install_rtx_version: '0.39'
+x_module_install_rtx_version: '0.42'
x_requires_rt: 5.0.0
diff --git a/inc/Module/AutoInstall.pm b/inc/Module/AutoInstall.pm
index 51e7e97..8852e0b 100644
--- a/inc/Module/AutoInstall.pm
+++ b/inc/Module/AutoInstall.pm
@@ -8,7 +8,7 @@ use ExtUtils::MakeMaker ();
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
}
# special map on pre-defined feature sets
diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
index 07525c5..7ba98c2 100644
--- a/inc/Module/Install.pm
+++ b/inc/Module/Install.pm
@@ -31,7 +31,7 @@ BEGIN {
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
- $VERSION = '1.18';
+ $VERSION = '1.19';
# Storage for the pseudo-singleton
$MAIN = undef;
diff --git a/inc/Module/Install/AutoInstall.pm b/inc/Module/Install/AutoInstall.pm
index 75f61e8..0e3dada 100644
--- a/inc/Module/Install/AutoInstall.pm
+++ b/inc/Module/Install/AutoInstall.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
index b61d424..9fa42c2 100644
--- a/inc/Module/Install/Base.pm
+++ b/inc/Module/Install/Base.pm
@@ -4,7 +4,7 @@ package Module::Install::Base;
use strict 'vars';
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
}
# Suspend handler for "redefined" warnings
diff --git a/inc/Module/Install/Can.pm b/inc/Module/Install/Can.pm
index 1de368c..d65c753 100644
--- a/inc/Module/Install/Can.pm
+++ b/inc/Module/Install/Can.pm
@@ -8,7 +8,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/Fetch.pm b/inc/Module/Install/Fetch.pm
index 54b52cb..3072b08 100644
--- a/inc/Module/Install/Fetch.pm
+++ b/inc/Module/Install/Fetch.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/Include.pm b/inc/Module/Install/Include.pm
index 087da8d..13fdcd0 100644
--- a/inc/Module/Install/Include.pm
+++ b/inc/Module/Install/Include.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/Makefile.pm b/inc/Module/Install/Makefile.pm
index 8ba3d88..13a4464 100644
--- a/inc/Module/Install/Makefile.pm
+++ b/inc/Module/Install/Makefile.pm
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
index 692ce71..11bf971 100644
--- a/inc/Module/Install/Metadata.pm
+++ b/inc/Module/Install/Metadata.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/RTx.pm b/inc/Module/Install/RTx.pm
index 3268e7e..2dd9489 100644
--- a/inc/Module/Install/RTx.pm
+++ b/inc/Module/Install/RTx.pm
@@ -6,9 +6,10 @@ use strict;
use warnings;
no warnings 'once';
+use Term::ANSIColor qw(:constants);
use Module::Install::Base;
use base 'Module::Install::Base';
-our $VERSION = '0.39';
+our $VERSION = '0.42';
use FindBin;
use File::Glob ();
@@ -53,7 +54,7 @@ sub RTx {
my @look = @INC;
unshift @look, grep {defined and -d $_} @try;
push @look, grep {defined and -d $_}
- map { ( "$_/rt4/lib", "$_/lib/rt4", "$_/lib" ) } @prefixes;
+ map { ( "$_/rt5/lib", "$_/lib/rt5", "$_/rt4/lib", "$_/lib/rt4", "$_/lib" ) } @prefixes;
last if eval {local @INC = @look; require RT; $RT::LocalLibPath};
warn
@@ -76,6 +77,22 @@ sub RTx {
$self->requires_rt('4.0.0');
}
+ my $package = $name;
+ $package =~ s/-/::/g;
+ if ( $RT::CORED_PLUGINS{$package} ) {
+ my ($base_version) = $RT::VERSION =~ /(\d+\.\d+\.\d+)/;
+ die RED, <<"EOT";
+
+**** Error: Your installed version of RT ($RT::VERSION) already
+ contains this extension in core, so you don't need to
+ install it.
+
+ Check https://docs.bestpractical.com/rt/$base_version/RT_Config.html
+ to configure it.
+
+EOT
+ }
+
# Installation locations
my %path;
my $plugin_path;
@@ -223,7 +240,7 @@ sub requires_rt {
my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
if ($sorted[-1] eq $version) {
- die <<"EOT";
+ die RED, <<"EOT";
**** Error: This extension requires RT $version. Your installed version
of RT ($RT::VERSION) is too old.
@@ -249,12 +266,12 @@ sub requires_rt_plugin {
unshift @INC, $path;
} else {
my $name = $self->name;
- warn <<"EOT";
+ my $msg = <<"EOT";
**** Warning: $name requires that the $plugin plugin be installed and
enabled; it does not appear to be installed.
-
EOT
+ warn RED, $msg, RESET, "\n";
}
$self->requires(@_);
}
@@ -264,9 +281,8 @@ sub rt_too_new {
my $name = $self->name;
$msg ||= <<EOT;
-**** Error: Your installed version of RT (%s) is too new; this extension
- only works with versions older than %s.
-
+**** Warning: Your installed version of RT (%s) is too new; this extension
+ has not been tested on your version of RT and may not work as expected.
EOT
$self->add_metadata("x_rt_too_new", $version) if $self->is_admin;
@@ -274,7 +290,7 @@ EOT
my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
if ($sorted[0] eq $version) {
- die sprintf($msg,$RT::VERSION,$version);
+ warn RED, sprintf($msg,$RT::VERSION), RESET, "\n";
}
}
@@ -297,4 +313,4 @@ sub _load_rt_handle {
__END__
-#line 468
+#line 484
diff --git a/inc/Module/Install/RTx/Runtime.pm b/inc/Module/Install/RTx/Runtime.pm
index 937949f..ae07502 100644
--- a/inc/Module/Install/RTx/Runtime.pm
+++ b/inc/Module/Install/RTx/Runtime.pm
@@ -33,6 +33,7 @@ sub RTxDatabase {
my $lib_path = File::Basename::dirname($INC{'RT.pm'});
my @args = (
+ "-I.",
"-Ilib",
"-I$RT::LocalLibPath",
"-I$lib_path",
diff --git a/inc/Module/Install/Win32.pm b/inc/Module/Install/Win32.pm
index b80c900..f7aa615 100644
--- a/inc/Module/Install/Win32.pm
+++ b/inc/Module/Install/Win32.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
diff --git a/inc/Module/Install/WriteAll.pm b/inc/Module/Install/WriteAll.pm
index da279c7..2db861a 100644
--- a/inc/Module/Install/WriteAll.pm
+++ b/inc/Module/Install/WriteAll.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.18';
+ $VERSION = '1.19';
@ISA = qw{Module::Install::Base};
$ISCORE = 1;
}
diff --git a/inc/YAML/Tiny.pm b/inc/YAML/Tiny.pm
index 4fd023d..fb157a6 100644
--- a/inc/YAML/Tiny.pm
+++ b/inc/YAML/Tiny.pm
@@ -2,12 +2,12 @@
use 5.008001; # sane UTF-8 support
use strict;
use warnings;
-package YAML::Tiny; # git description: v1.69-8-g2c1e266
+package YAML::Tiny; # git description: v1.72-7-g8682f63
# XXX-INGY is 5.8.1 too old/broken for utf8?
# XXX-XDG Lancaster consensus was that it was sufficient until
# proven otherwise
-our $VERSION = '1.70';
+our $VERSION = '1.73';
#####################################################################
# The YAML::Tiny API.
@@ -374,7 +374,7 @@ sub _load_scalar {
while ( @$lines ) {
$lines->[0] =~ /^(\s*)/;
last unless length($1) >= $indent->[-1];
- push @multiline, substr(shift(@$lines), length($1));
+ push @multiline, substr(shift(@$lines), $indent->[-1]);
}
my $j = (substr($string, 0, 1) eq '>') ? ' ' : "\n";
commit 73abd2ff11b1f7863af0d01cc7b3e74f76b54ab2
Author: sunnavy <sunnavy at bestpractical.com>
Date: Thu Jul 16 02:27:00 2020 +0800
Add "." to @INC for perl 5.26+
diff --git a/Makefile.PL b/Makefile.PL
index fce17aa..453caea 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,3 +1,4 @@
+use lib '.';
use inc::Module::Install;
RTx('RT-Extension-RepeatTicket');
commit 669dd311eba479b417b72a4b737cac3b398aa825
Author: sunnavy <sunnavy at bestpractical.com>
Date: Wed Jul 29 06:02:03 2020 +0800
Update copyright year to 2020
diff --git a/README b/README
index a075562..2874254 100644
--- a/README
+++ b/README
@@ -197,7 +197,7 @@ BUGS
L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-RepeatTicket>.
LICENSE AND COPYRIGHT
- This software is Copyright (c) 2014 by Best Practical Solutions
+ This software is Copyright (c) 2014-2020 by Best Practical Solutions
This is free software, licensed under:
diff --git a/lib/RT/Extension/RepeatTicket.pm b/lib/RT/Extension/RepeatTicket.pm
index b95b0ad..7e51768 100644
--- a/lib/RT/Extension/RepeatTicket.pm
+++ b/lib/RT/Extension/RepeatTicket.pm
@@ -1019,7 +1019,7 @@ or via the web at
=head1 LICENSE AND COPYRIGHT
-This software is Copyright (c) 2014 by Best Practical Solutions
+This software is Copyright (c) 2014-2020 by Best Practical Solutions
This is free software, licensed under:
commit cdba1e11f46f476ae3f50db31120c59757788a2d
Author: sunnavy <sunnavy at bestpractical.com>
Date: Wed Jul 29 06:09:08 2020 +0800
Prep 2.00
diff --git a/Changes b/Changes
index a215aea..589ca3e 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
Revision history for RT-Extension-RepeatTicket
+2.00 2020-07-28
+ - Add RT 5 Support(RT 4 users need to use 1.* versions)
+
1.11 2017-11-07
- Correctly display concurrent ticket number of 0
-----------------------------------------------------------------------
More information about the Bps-public-commit
mailing list