[Rt-commit] rt branch, master, updated. rt-4.2.11-216-gd50c26c

Shawn Moore shawn at bestpractical.com
Tue Sep 29 15:22:50 EDT 2015


The branch, master has been updated
       via  d50c26c52c29c22cc384d1c604065ade73d1bda5 (commit)
       via  3886fde716c87c25a5b15403d8c3f4c3ef97dec5 (commit)
      from  28f43bc03a3e6a75082f7696ef01ceb64bb2da66 (commit)

Summary of changes:
 etc/upgrade/4.3.10/content                  | 41 +++++++++++++++++++++++++++++
 lib/RT/Dashboard/Mailer.pm                  | 23 +++++++++-------
 share/html/Dashboards/Subscription.html     | 25 +++++++++++++-----
 share/html/Elements/RT__Dashboard/ColumnMap |  3 ---
 share/static/css/base/misc.css              |  4 +++
 t/mail/dashboards.t                         | 13 ++++++---
 6 files changed, 85 insertions(+), 24 deletions(-)
 create mode 100644 etc/upgrade/4.3.10/content

- Log -----------------------------------------------------------------
commit 3886fde716c87c25a5b15403d8c3f4c3ef97dec5
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Sat Jun 6 00:19:23 2015 +0000

    Weekday checkboxes for daily dashboard subscriptions
    
        This migrates M-F subscriptions to be daily with Saturday and Sunday
        unchecked, and makes sure all seven days are checked for the
        frequency that used to be called "daily" (which meant every single day).
    
        New subscriptions are initially set to a frequency of daily with
        M-F checked and weekend days unchecked.

diff --git a/etc/upgrade/4.3.10/content b/etc/upgrade/4.3.10/content
new file mode 100644
index 0000000..8502f00
--- /dev/null
+++ b/etc/upgrade/4.3.10/content
@@ -0,0 +1,41 @@
+use strict;
+use warnings;
+
+our @Initial = (
+    sub {
+        $RT::Logger->info("Going to migrate dashboard subscriptions");
+
+        my $attrs = RT::Attributes->new( RT->SystemUser );
+        $attrs->Limit( FIELD => 'ObjectType', VALUE => 'RT::User' );
+        $attrs->Limit( FIELD => 'Name', VALUE => 'Subscription' );
+
+        while ( my $attr = $attrs->Next ) {
+            my %fields;
+            my $frequency = $attr->SubValue('Frequency');
+
+            if ($frequency eq 'daily') {
+                for my $day (qw/Monday Tuesday Wednesday Thursday Friday Saturday Sunday/) {
+                    $fields{$day} = 1;
+                }
+            }
+            elsif ($frequency eq 'm-f') {
+                $fields{Frequency} = 'daily';
+                for my $day (qw/Monday Tuesday Wednesday Thursday Friday/) {
+                    $fields{$day} = 1;
+                }
+                $fields{Saturday} = $fields{Sunday} = 0;
+            }
+            else {
+                next;
+            }
+
+            my ($ok, $msg) = $attr->SetSubValues(%fields);
+
+            if (!$ok) {
+                $RT::Logger->error("Couldn't update subscription $msg");
+            }
+        }
+        return 1;
+    },
+);
+
diff --git a/lib/RT/Dashboard/Mailer.pm b/lib/RT/Dashboard/Mailer.pm
index f0f14a0..276e93f 100644
--- a/lib/RT/Dashboard/Mailer.pm
+++ b/lib/RT/Dashboard/Mailer.pm
@@ -149,17 +149,27 @@ sub IsSubscriptionReady {
     my $sub_dom       = $subscription->SubValue('Dom');
     my $sub_fow       = $subscription->SubValue('Fow') || 1;
 
+    my $log_frequency = $sub_frequency;
+    if ($log_frequency eq 'daily') {
+        my $days = join ' ', grep { $subscription->SubValue($_) }
+                             qw/Monday Tuesday Wednesday Thursday Friday
+                                Saturday Sunday/;
+
+        $log_frequency = "$log_frequency ($days)";
+    }
+
     my ($hour, $dow, $dom) = @{ $args{LocalTime} };
 
-    $RT::Logger->debug("Checking against subscription " . $subscription->Id . " for " . $args{User}->Name . " with frequency $sub_frequency, hour $sub_hour, dow $sub_dow, dom $sub_dom, fow $sub_fow, counter $counter");
+    $RT::Logger->debug("Checking against subscription " . $subscription->Id . " for " . $args{User}->Name . " with frequency $log_frequency, hour $sub_hour, dow $sub_dow, dom $sub_dom, fow $sub_fow, counter $counter");
 
     return 0 if $sub_frequency eq 'never';
 
     # correct hour?
     return 0 if $sub_hour ne $hour;
 
-    # all we need is the correct hour for daily dashboards
-    return 1 if $sub_frequency eq 'daily';
+    if ($sub_frequency eq 'daily') {
+        return $subscription->SubValue($dow) ? 1 : 0;
+    }
 
     if ($sub_frequency eq 'weekly') {
         # correct day of week?
@@ -178,12 +188,6 @@ sub IsSubscriptionReady {
         return $sub_dom == $dom;
     }
 
-    # monday through friday
-    if ($sub_frequency eq 'm-f') {
-        return 0 if $dow eq 'Sunday' || $dow eq 'Saturday';
-        return 1;
-    }
-
     $RT::Logger->debug("Invalid subscription frequency $sub_frequency for " . $args{User}->Name);
 
     # unknown frequency type, bail out
@@ -323,7 +327,6 @@ sub EmailDashboard {
     my $frequency    = $subscription->SubValue('Frequency');
 
     my %frequency_lookup = (
-        'm-f'     => 'Weekday', # loc
         'daily'   => 'Daily',   # loc
         'weekly'  => 'Weekly',  # loc
         'monthly' => 'Monthly', # loc
diff --git a/share/html/Dashboards/Subscription.html b/share/html/Dashboards/Subscription.html
index 3bf39d0..d55076d 100644
--- a/share/html/Dashboards/Subscription.html
+++ b/share/html/Dashboards/Subscription.html
@@ -87,17 +87,21 @@
 
 <&| /Widgets/TitleBox, title => loc('Subscription') &>
 
-<table>
-<tr><td class="label">
+<table class="dashboard-subscription">
+<tr class="frequency"><td class="label">
 <&|/l&>Frequency</&>:
 </td><td class="value">
 
 <input type="radio" id="Frequency-daily" name="Frequency" value="daily" <% $fields{'Frequency'} eq 'daily' ? 'checked="checked"' : "" |n %>></input>
-<label for="Frequency-daily"><&|/l&>daily</&></label>
-<br />
+<label for="Frequency-daily">
+<&|/l&>daily, on</&>
+</label>
+
+% for my $day ( qw/Monday Tuesday Wednesday Thursday Friday Saturday Sunday/ ) {
+      <label><input name="<% $day %>" value=1 type="checkbox" <% $fields{$day} ? 'checked="checked"' : '' %>> <&|/l&><% $day %></&></label>
+    <input type="hidden"class="hidden" name="<% $day %>-Magic" value=1 />
+% }
 
-<input type="radio" id="Frequency-m-f" name="Frequency" value="m-f" <% $fields{'Frequency'} eq 'm-f' ? 'checked="checked"' : "" |n %>></input>
-<label for="Frequency-m-f"><&|/l&>Monday through Friday</&></label>
 <br />
 
 <input type="radio" id="Frequency-weekly" name="Frequency" value="weekly"<% $fields{'Frequency'} eq 'weekly' ? 'checked="checked"' : "" |n %>></input>
@@ -207,6 +211,13 @@ $id = $SubscriptionObj ? $SubscriptionObj->SubValue('DashboardId') : $ARGS{'id'}
 my %fields = (
     DashboardId => $id,
     Frequency   => 'daily',
+    Monday      => 1,
+    Tuesday     => 1,
+    Wednesday   => 1,
+    Thursday    => 1,
+    Friday      => 1,
+    Saturday    => 0,
+    Sunday      => 0,
     Hour        => '06:00',
     Dow         => 'Monday',
     Dom         => 1,
@@ -227,7 +238,7 @@ if ($SubscriptionObj) {
 for my $field (keys %fields) {
     next if $field eq 'DashboardId'; # but this one is immutable
     $fields{$field} = $ARGS{$field}
-        if defined($ARGS{$field});
+        if defined($ARGS{$field}) || $ARGS{$field.'-Magic'};
 }
 
 
diff --git a/share/html/Elements/RT__Dashboard/ColumnMap b/share/html/Elements/RT__Dashboard/ColumnMap
index e9509a2..3414733 100644
--- a/share/html/Elements/RT__Dashboard/ColumnMap
+++ b/share/html/Elements/RT__Dashboard/ColumnMap
@@ -95,9 +95,6 @@ my $COLUMN_MAP = {
                 elsif ($freq eq 'daily') {
                     $frequency = loc("daily at [_1]", $hour);
                 }
-                elsif ($freq eq 'm-f') {
-                    $frequency = loc("M-F at [_1]", $hour);
-                }
                 elsif ($freq eq 'never') {
                     $frequency = loc("Never");
                 }
diff --git a/share/static/css/base/misc.css b/share/static/css/base/misc.css
index 5e088ff..d42e01e 100644
--- a/share/static/css/base/misc.css
+++ b/share/static/css/base/misc.css
@@ -85,3 +85,7 @@ textarea.messagebox, #cke_Content, #cke_UpdateContent {
     width: 1em;
     border-style: none;
 }
+
+.dashboard-subscription tr.frequency .value input {
+    margin-bottom: 0.75em;
+}
diff --git a/t/mail/dashboards.t b/t/mail/dashboards.t
index 18cfd58..3d004ae 100644
--- a/t/mail/dashboards.t
+++ b/t/mail/dashboards.t
@@ -259,8 +259,13 @@ RT->Config->Set('DashboardAddress' => 'root');
 $m->login;
 create_dashboard($baseurl, $m);
 create_subscription($baseurl, $m,
-    Frequency => 'm-f',
-    Hour => '06:00',
+    Frequency => 'daily',
+    Monday    => 1,
+    Tuesday   => 1,
+    Wednesday => 1,
+    Thursday  => 1,
+    Friday    => 1,
+    Hour      => '06:00',
 );
 
 ($dashboard_id, $subscription_id) = get_dash_sub_ids();
@@ -270,7 +275,7 @@ $bad_time = $good_time - 86400;
 
 produces_dashboard_mail_ok(
     Time    => $good_time,
-    Subject =>  "[example.com] a Weekday b Testing! c\n",
+    Subject =>  "[example.com] a Daily b Testing! c\n",
 );
 
 produces_no_dashboard_mail_ok(
@@ -285,7 +290,7 @@ produces_no_dashboard_mail_ok(
 
 produces_dashboard_mail_ok(
     Time    => $bad_time - 86400 * 2, # friday
-    Subject =>  "[example.com] a Weekday b Testing! c\n",
+    Subject =>  "[example.com] a Daily b Testing! c\n",
 );
 
 

commit d50c26c52c29c22cc384d1c604065ade73d1bda5
Merge: 28f43bc 3886fde
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Tue Sep 29 15:22:42 2015 -0400

    Merge branch '4.4/dashboard-weekdays'


-----------------------------------------------------------------------


More information about the rt-commit mailing list