X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FDashboards%2FSubscription.html;h=3a57102c790f084993844a9954a04e60239c1d0c;hb=0bff2e665b3a6389b47510e4c04a5a454f6dd7d4;hp=3de58acddd0b52fb619bcef5364d4354544cd79c;hpb=b4b0c7e72d7eaee2fbfc7022022c9698323203dd;p=freeside.git diff --git a/rt/share/html/Dashboards/Subscription.html b/rt/share/html/Dashboards/Subscription.html index 3de58acdd..3a57102c7 100644 --- a/rt/share/html/Dashboards/Subscription.html +++ b/rt/share/html/Dashboards/Subscription.html @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,18 +43,15 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <& /Elements/Header, Title => $title &> -<& /Dashboards/Elements/Tabs, - current_subtab => $current_subtab, - Title => $title, - DashboardObj => $DashboardObj &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &>
- + @@ -65,13 +62,13 @@ @@ -166,7 +171,7 @@ <&|/l&>Recipient:
<&|/l&>Dashboard: -<% $DashboardObj->Name %> +<% $Dashboard->Name %>
<&|/l&>Queries: -% my @portlets = grep { defined } $DashboardObj->Portlets; +% my @portlets = grep { defined } $Dashboard->Portlets; % if (!@portlets) { (<&|/l&>none) % } else { @@ -95,44 +92,44 @@ <&|/l&>Frequency: -> +> <&|/l&>daily
-> +> <&|/l&>Monday through Friday
-> +> <&|/l&>weekly, <&|/l&>on <&|/l&>every <&|/l&>weeks
-> +> <&|/l&>monthly , <&|/l&>on day
-> +> <&|/l&>never @@ -141,13 +138,21 @@ <&|/l&>Hour:
(<%$timezone%>) @@ -157,7 +162,7 @@
-
<% loc("Leave blank to send to your current email address ([_1])", $session{'CurrentUser'}->UserObj->EmailAddress) %>
+
<% loc("Leave blank to send to your current email address ([_1])", $session{'CurrentUser'}->EmailAddress) %>
@@ -174,7 +179,7 @@ -% if ($SubscriptionObj->Id) { +% if ($SubscriptionObj) { <& /Elements/Submit, Name => "Save", Label => loc('Save Changes') &> % } else { <& /Elements/Submit, Name => "Save", Label => loc('Subscribe') &> @@ -183,34 +188,21 @@ <%INIT> -my $current_subtab = 'Dashboards/Subscription.html?DashboardId=' . $DashboardId; - my ($title, @results); -my ($val, $msg); my $Loaded = 0; my $timezone = $session{'CurrentUser'}->UserObj->Timezone || RT->Config->Get('Timezone'); use RT::Dashboard; -my $DashboardObj = RT::Dashboard->new($session{'CurrentUser'}); - -my $SubscriptionObj = RT::Attribute->new($session{'CurrentUser'}); - -# first let's see if we already have a subscription to this DashboardId -for my $sub ($session{'CurrentUser'}->UserObj->Attributes->Named('Subscription')) { - next unless $sub->SubValue('DashboardId') == $DashboardId; - $SubscriptionObj = $sub; - last; -} +my $Dashboard = RT::Dashboard->new($session{'CurrentUser'}); +my ($ok, $msg) = $Dashboard->LoadById($id); +$ok || Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg)); -$DashboardId = $SubscriptionObj->Id - ? $SubscriptionObj->SubValue('DashboardId') - : $ARGS{'DashboardId'}; +my $SubscriptionObj = $Dashboard->Subscription; -($val, $msg) = $DashboardObj->LoadById($DashboardId); -$val || Abort(loc("Couldn't load dashboard [_1]: [_2].", $DashboardId, $msg)); +$id = $SubscriptionObj ? $SubscriptionObj->SubValue('DashboardId') : $ARGS{'id'}; my %fields = ( - DashboardId => $DashboardId, + DashboardId => $id, Frequency => 'daily', Hour => '06:00', Dow => 'Monday', @@ -222,7 +214,7 @@ my %fields = ( ); # update any fields with the values from the subscription object -if ($SubscriptionObj->Id) { +if ($SubscriptionObj) { for my $field (keys %fields) { $fields{$field} = $SubscriptionObj->SubValue($field); } @@ -234,54 +226,70 @@ for my $field (keys %fields) { $fields{$field} = $ARGS{$field} if defined($ARGS{$field}); } + + # this'll be defined on submit if (defined $ARGS{Save}) { - # update - if ($SubscriptionObj->Id) { - $DashboardId = delete $fields{'DashboardId'}; # immutable - ($val, $msg) = $SubscriptionObj->SetSubValues(%fields); - $fields{'DashboardId'} = $DashboardId; - - # not so good to spew base64-encoded data at the user :) - if ($msg =~ /^Content changed from/) { - $msg = "Subscription updated."; + my $ok = 1; + + # validation + if ($fields{Recipient}) { + my @addresses = Email::Address->parse($fields{Recipient}); + if (@addresses == 0) { + push @results, loc('Recipient must be an email address'); + $ok = 0; } - - push @results, $msg; } - # create - else { - Abort(loc("Unable to subscribe to dashboard [_1]: Permission denied", $DashboardId)) - unless $DashboardObj->CurrentUserCanSubscribe; - - my ($val, $msg) = $SubscriptionObj->Create( - Name => 'Subscription', - Description => 'Subscription to dashboard ' . $DashboardId, - ContentType => 'storable', - Object => $session{'CurrentUser'}->UserObj, - Content => \%fields, - ); - if ($val) { - push @results, loc("Subscribed to dashboard [_1]", $DashboardObj->Name); - push @results, loc("Warning: you have no email address set, so you will not receive this dashboard until you have it set") - unless $session{'CurrentUser'}->EmailAddress || $fields{Recipient}; + + if ($ok) { + # update + if ($SubscriptionObj) { + $id = delete $fields{'DashboardId'}; # immutable + ($ok, $msg) = $SubscriptionObj->SetSubValues(%fields); + $fields{'DashboardId'} = $id; + + # not so good to spew base64-encoded data at the user :) + if ($msg =~ /^Content changed from/) { + $msg = "Subscription updated."; + } + + push @results, $msg; } + # create else { - push @results, loc('Subscription could not be created: [_1]', $msg); + Abort(loc("Unable to subscribe to dashboard [_1]: Permission denied", $id)) + unless $Dashboard->CurrentUserCanSubscribe; + + $SubscriptionObj = RT::Attribute->new($session{CurrentUser}); + ($ok, $msg) = $SubscriptionObj->Create( + Name => 'Subscription', + Description => 'Subscription to dashboard ' . $id, + ContentType => 'storable', + Object => $session{'CurrentUser'}->UserObj, + Content => \%fields, + ); + if ($ok) { + push @results, loc("Subscribed to dashboard [_1]", $Dashboard->Name); + push @results, loc("Warning: you have no email address set, so you will not receive this dashboard until you have it set") + unless $session{'CurrentUser'}->EmailAddress || $fields{Recipient}; + } + else { + push @results, loc('Subscription could not be created: [_1]', $msg); + } } } } -if ($SubscriptionObj->Id) { - $title = loc("Modify the subscription to dashboard [_1]", $DashboardObj->Name); +if ($SubscriptionObj) { + $title = loc("Modify the subscription to dashboard [_1]", $Dashboard->Name); } else { - $title = loc("Subscribe to dashboard [_1]", $DashboardObj->Name); + $title = loc("Subscribe to dashboard [_1]", $Dashboard->Name); } <%ARGS> -$DashboardId => undef +$id => undef $Frequency => undef $Hour => undef $Dow => undef