diff options
author | Ivan Kohler <ivan@freeside.biz> | 2017-08-06 10:11:28 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2017-08-06 10:11:28 -0700 |
commit | de9d037528895f7151a9aead6724ce2df95f9586 (patch) | |
tree | 3ba47a923a1d6033605ffc5586ed1af439d8c141 /rt/lib/RT/Interface/Web | |
parent | b226bc6bd81f999176cdbfa53a799033ff0a0307 (diff) |
rt 4.2.14 (#13852)
Diffstat (limited to 'rt/lib/RT/Interface/Web')
-rw-r--r-- | rt/lib/RT/Interface/Web/Handler.pm | 2 | ||||
-rw-r--r-- | rt/lib/RT/Interface/Web/Menu.pm | 50 | ||||
-rw-r--r-- | rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm | 2 | ||||
-rwxr-xr-x | rt/lib/RT/Interface/Web/QueryBuilder.pm | 2 | ||||
-rwxr-xr-x | rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm | 2 | ||||
-rw-r--r-- | rt/lib/RT/Interface/Web/Request.pm | 2 | ||||
-rw-r--r-- | rt/lib/RT/Interface/Web/Session.pm | 2 |
7 files changed, 55 insertions, 7 deletions
diff --git a/rt/lib/RT/Interface/Web/Handler.pm b/rt/lib/RT/Interface/Web/Handler.pm index ad1068bac..3355d297c 100644 --- a/rt/lib/RT/Interface/Web/Handler.pm +++ b/rt/lib/RT/Interface/Web/Handler.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) diff --git a/rt/lib/RT/Interface/Web/Menu.pm b/rt/lib/RT/Interface/Web/Menu.pm index 3d22a15de..0c1683d4a 100644 --- a/rt/lib/RT/Interface/Web/Menu.pm +++ b/rt/lib/RT/Interface/Web/Menu.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) @@ -375,4 +375,52 @@ sub _insert_sibling { $parent->child( @_, sort_order => $sort_order ); } +=head2 RemoveDashboardMenuItems + +Remove dashboards from individual user and system dash menus. + +Requires a hash with DashboardId and CurrentUser object. + + $menu->RemoveDashboardMenuItem( DashboardId => $id, CurrentUser => $session{CurrentUser}->UserObj ); + +=cut + +sub RemoveDashboardMenuItem { + my $self = shift; + my %args = @_; + + return unless $args{'DashboardId'} and $args{'CurrentUser'}; + my $dashboard_id = $args{'DashboardId'}; + my $current_user = $args{'CurrentUser'}; + + # First clear from user's dashboards + my $dashboards_in_menu = $current_user->Preferences('DashboardsInMenu', {} ); + + my @dashboards = grep { $_ != $dashboard_id } @{$dashboards_in_menu->{'dashboards'}}; + $dashboards_in_menu->{'dashboards'} = \@dashboards || []; + + my ($ret, $msg) = $current_user->SetPreferences('DashboardsInMenu', $dashboards_in_menu); + RT::Logger->warn("Unable to update dashboard for user " . $current_user->Name . ": $msg") + unless $ret; + + # Now update the system dashboard + my $system = RT::System->new( $current_user ); + my ($default_dashboards) = $system->Attributes->Named('DashboardsInMenu'); + + if ($default_dashboards) { + $dashboards_in_menu = $default_dashboards->Content; + my @dashboards = grep { $_ != $dashboard_id } @{$dashboards_in_menu->{'dashboards'}}; + + # Update only if we removed one + if ( @{$dashboards_in_menu->{'dashboards'}} > @dashboards ){ + $dashboards_in_menu->{'dashboards'} = \@dashboards || []; + + ($ret, $msg) = $default_dashboards->SetContent($dashboards_in_menu); + RT::Logger->warn("Unable to update system dashboard menu: $msg") + unless $ret; + } + } + return; +} + 1; diff --git a/rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm b/rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm index 22047782d..8f4b00fff 100644 --- a/rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm +++ b/rt/lib/RT/Interface/Web/Middleware/StaticHeaders.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) diff --git a/rt/lib/RT/Interface/Web/QueryBuilder.pm b/rt/lib/RT/Interface/Web/QueryBuilder.pm index 057835393..eaa584ba1 100755 --- a/rt/lib/RT/Interface/Web/QueryBuilder.pm +++ b/rt/lib/RT/Interface/Web/QueryBuilder.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) diff --git a/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm b/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm index efcc43f15..f12c478da 100755 --- a/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm +++ b/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) diff --git a/rt/lib/RT/Interface/Web/Request.pm b/rt/lib/RT/Interface/Web/Request.pm index a1520e026..1cd08df3e 100644 --- a/rt/lib/RT/Interface/Web/Request.pm +++ b/rt/lib/RT/Interface/Web/Request.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) diff --git a/rt/lib/RT/Interface/Web/Session.pm b/rt/lib/RT/Interface/Web/Session.pm index 027662a46..03cc325cd 100644 --- a/rt/lib/RT/Interface/Web/Session.pm +++ b/rt/lib/RT/Interface/Web/Session.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) |