X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FArticles%2FArticle%2FSearch.html;h=9ac7d62f713a35b09186c3de77b46c468687dd62;hp=a8c7d8034ac87966d4862add600ad011a33e664d;hb=44dd00a3ff974a17999e86e64488e996edc71e3c;hpb=3d0a1bb06b895c5be6e3f0517d355442a6b1e125 diff --git a/rt/share/html/Articles/Article/Search.html b/rt/share/html/Articles/Article/Search.html index a8c7d8034..9ac7d62f7 100644 --- a/rt/share/html/Articles/Article/Search.html +++ b/rt/share/html/Articles/Article/Search.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -49,24 +49,28 @@ <& /Elements/Tabs &> % unless ( keys %ARGS ) { -% my $Classes = RT::Classes->new($session{'CurrentUser'}); -% $Classes->LimitToEnabled(); @@ -107,6 +111,15 @@ <&|/l&>Bookmarkable link for this search
<%init> +my $Classes = RT::Classes->new($session{'CurrentUser'}); +$Classes->LimitToEnabled(); + +# This is a COUNT(), which doesn't apply ACLs; as such, we don't display +# the warning if there are classes, but the user can't see them. +my $classes_configured = $Classes->Count; +my @classes = @{ $Classes->ItemsArrayRef }; +$ARGS{Class} = $classes[0]->id if @classes == 1; + use RT::SavedSearch; my @results; my $articles = RT::Articles->new( $session{'CurrentUser'} ); @@ -124,7 +137,7 @@ my $format = q{ # If it is a number, load the article with that ID. Otherwise, search # on name and summary. if ($ARGS{'q'} && $ARGS{'q'} =~ /^(\d+)$/) { - return $m->comp("/Articles/Article/Display.html", id => $1); + RT::Interface::Web::Redirect( RT->Config->Get('WebURL') . "Articles/Article/Display.html?id=" . $1 ); } # }}} @@ -146,26 +159,26 @@ if ($CurrentSearch =~ /^(.*-\d+)-SavedSearch-(\d+)$/) { if ($ARGS{'Load'}) { if ($ARGS{'LoadSavedSearch'} =~ /^(.*-\d+)-SavedSearch-(\d+)$/ ) { - my $privacy = $1; - my $search_id = $2; - - $search = RT::SavedSearch->new($session{'CurrentUser'}); - my ($ret, $msg) = $search->Load($privacy, $search_id); - if ($ret) { - my $searchargs = $search->GetParameter('args'); - # Clean out ARGS and fill it in with the saved args from the - # loaded search. - foreach my $key (@metakeys) { - $searchargs->{$key} = $ARGS{$key}; - } - %ARGS = %{$searchargs}; - $CurrentSearch = "$privacy-SavedSearch-$search_id"; - } else { - push(@results, loc("Error: could not load saved search [_1]: [_2]", - $ARGS{'LoadSavedSearch'}, $msg)); - } + my $privacy = $1; + my $search_id = $2; + + $search = RT::SavedSearch->new($session{'CurrentUser'}); + my ($ret, $msg) = $search->Load($privacy, $search_id); + if ($ret) { + my $searchargs = $search->GetParameter('args'); + # Clean out ARGS and fill it in with the saved args from the + # loaded search. + foreach my $key (@metakeys) { + $searchargs->{$key} = $ARGS{$key}; + } + %ARGS = %{$searchargs}; + $CurrentSearch = "$privacy-SavedSearch-$search_id"; + } else { + push(@results, loc("Error: could not load saved search [_1]: [_2]", + $ARGS{'LoadSavedSearch'}, $msg)); + } } else { - push(@results, loc("Invalid [_1] argument", 'LoadSavedSearch')); + push(@results, loc("Invalid [_1] argument", 'LoadSavedSearch')); } } @@ -174,67 +187,67 @@ if ($ARGS{'Load'}) { if ($ARGS{'Save'}) { my %searchargs = %ARGS; foreach my $key (@metakeys) { - delete $searchargs{$key}; + delete $searchargs{$key}; } $search = RT::SavedSearch->new($session{'CurrentUser'}); unless ($ARGS{'SearchPrivacy'} =~ /^(.*)-(\d+)$/) { - # This shouldn't really happen, but hey. - push(@results, loc("WARNING: Saving search to user-level privacy")); - $ARGS{'SearchPrivacy'} = 'RT::User-'.$session{'CurrentUser'}->Id; + # This shouldn't really happen, but hey. + push(@results, loc("WARNING: Saving search to user-level privacy")); + $ARGS{'SearchPrivacy'} = 'RT::User-'.$session{'CurrentUser'}->Id; } - my ($ret, $msg) = $search->Save(Privacy => $ARGS{'SearchPrivacy'}, - Type => 'Article', - Name => $ARGS{'NewSearchName'}, - SearchParams => {'args' => \%searchargs}); + my ($ret, $msg) = $search->Save(Privacy => $ARGS{'SearchPrivacy'}, + Type => 'Article', + Name => $ARGS{'NewSearchName'}, + SearchParams => {'args' => \%searchargs}); if ($ret) { - $CurrentSearch = $ARGS{'SearchPrivacy'} . "-SavedSearch-" . - $search->Id; - push(@results, loc("Created search [_1]", $search->Name)); + $CurrentSearch = $ARGS{'SearchPrivacy'} . "-SavedSearch-" . + $search->Id; + push(@results, loc("Created search [_1]", $search->Name)); } else { undef $search; # if we bomb out creating a search # we don't want to have the empty object hang around - push(@results, loc("Could not create search: [_1]", $msg)); + push(@results, loc("Could not create search: [_1]", $msg)); } } elsif ($ARGS{'Update'}) { if ($ARGS{'SearchPrivacy'} != $search->Privacy) { - push(@results, - loc("Error: cannot change privacy value of existing search")); + push(@results, + loc("Error: cannot change privacy value of existing search")); } else { - my %searchargs = %ARGS; - foreach my $key (@metakeys) { - delete $searchargs{$key}; - } - - # We already have a search loaded, because CurrentSearch is set, - # or else we would not have gotten here. - my ($ret, $msg) = $search->Update(Name => $ARGS{'NewSearchName'}, - SearchParams => \%searchargs); - if ($ret) { - push(@results, loc("Search [_1] updated", $search->Name)); - } else { - push(@results, loc("Error: search [_1] not updated: [_2]", - $search->Name, $msg)); - } + my %searchargs = %ARGS; + foreach my $key (@metakeys) { + delete $searchargs{$key}; + } + + # We already have a search loaded, because CurrentSearch is set, + # or else we would not have gotten here. + my ($ret, $msg) = $search->Update(Name => $ARGS{'NewSearchName'}, + SearchParams => \%searchargs); + if ($ret) { + push(@results, loc("Search [_1] updated", $search->Name)); + } else { + push(@results, loc("Error: search [_1] not updated: [_2]", + $search->Name, $msg)); + } } } elsif ($ARGS{'Delete'}) { # Keep track of this, as we are about to delete the search. my $searchname = $search->Name; my ($ret, $msg) = $search->Delete; if ($ret) { - $ARGS{'CurrentSearch'} = undef; - push(@results, loc("Deleted search [_1]", $searchname)); - # Get rid of all the state. - foreach my $key (keys %ARGS) { - delete $ARGS{$key}; - } - $CurrentSearch = 'new'; - $search = undef; - $RefersTo = undef; - $ReferredToBy = undef; + $ARGS{'CurrentSearch'} = undef; + push(@results, loc("Deleted search [_1]", $searchname)); + # Get rid of all the state. + foreach my $key (keys %ARGS) { + delete $ARGS{$key}; + } + $CurrentSearch = 'new'; + $search = undef; + $RefersTo = undef; + $ReferredToBy = undef; } else { - push(@results, loc("Could not delete search [_1]: [_2]", - $searchname, $msg)); + push(@results, loc("Could not delete search [_1]: [_2]", + $searchname, $msg)); } }
+% if (not $classes_configured) { +<& /Articles/Elements/NeedsSetup &> +% } elsif (not @classes) { +<&|/l&>You don't have permission to view Articles in any Class +% } else { +% }
-<& /Elements/TitleBoxStart, title => loc('Saved searches') &> +<& /Widgets/TitleBoxStart, title => loc('Saved searches') &> <&|/l&>Load saved search:
<& Elements/SelectSavedSearches, Name => 'LoadSavedSearch', Default => $CurrentSearch &> -<& /Elements/TitleBoxEnd &> +<& /Widgets/TitleBoxEnd &>