diff options
Diffstat (limited to 'rt/share/html/Search/Elements/EditSearches')
-rw-r--r-- | rt/share/html/Search/Elements/EditSearches | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/rt/share/html/Search/Elements/EditSearches b/rt/share/html/Search/Elements/EditSearches deleted file mode 100644 index 62871fd..0000000 --- a/rt/share/html/Search/Elements/EditSearches +++ /dev/null @@ -1,296 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (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 -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# 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 }}} -<&| /Widgets/TitleBox, title => loc($Title)&> - -%# Hide all the save functionality if the user shouldn't see it. -% if ( $can_modify ) { -<&|/l&>Privacy:</&> -<& SelectSearchObject, Name => 'SavedSearchOwner', Objects => \@Objects, Object => ( $Object && $Object->id ) ? $Object->Object : '' &> -<br /> -<&|/l&>Description</&>: -<input size="25" name="SavedSearchDescription" value="<% $Description || '' %>" /> - -% if ($Id ne 'new') { -<nobr> -% if ( $Dirty ) { -<input type="submit" class="button" name="SavedSearchRevert" value="<%loc('Revert')%>" /> -% } -<input type="submit" class="button" name="SavedSearchDelete" value="<%loc('Delete')%>" /> -% if ( $AllowCopy ) { -<input type="submit" class="button" name="SavedSearchCopy" value="<%loc('Save as New')%>" /> -% } -</nobr> -% } -% if ( $Object && $Object->Id ) { -<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Update')%>" /> -% } else { -<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Save')%>" /> -%} -% } -<br /> -<hr /> -<&|/l&>Load saved search:</&> -<& SelectSearchesForObjects, Name => 'SavedSearchLoad', Objects => \@Objects, SearchType => $Type &> -<input type="submit" value="<% loc('Load') %>" class="button" /> - -</&> - -<%INIT> -return unless $session{'CurrentUser'}->HasRight( - Right => 'LoadSavedSearch', - Object => $RT::System, -); - -my $can_modify = $session{'CurrentUser'}->HasRight( - Right => 'CreateSavedSearch', - Object => $RT::System, -); - -use RT::SavedSearches; -my @Objects = RT::SavedSearches->new($session{CurrentUser})->_PrivacyObjects; -push @Objects, RT::System->new( $session{'CurrentUser'} ) - if $session{'CurrentUser'}->HasRight( Object=> $RT::System, - Right => 'SuperUser' ); - -my $is_dirty = sub { - my %arg = ( - Query => {}, - SavedSearch => {}, - SearchFields => [qw(Query Format OrderBy Order RowsPerPage)], - @_ - ); - - my $obj = $arg{'SavedSearch'}->{'Object'}; - return 0 unless $obj && $obj->id; - - foreach( @{ $arg{'SearchFields'} } ) { - return 1 if $obj->SubValue( $_ ) ne $arg{'Query'}->{$_}; - } - - return 0; -}; - -# If we're modifying an old query, check if it's been changed -my $Dirty = $is_dirty->( - Query => $CurrentSearch, - SavedSearch => { Id => $Id, Object => $Object, Description => $Description }, - SearchFields => \@SearchFields, -); - -</%INIT> - -<%ARGS> -$Id => 'new' -$Object => undef -$Type => 'Ticket' -$Description => '' -$CurrentSearch => {} -@SearchFields => () -$AllowCopy => 1 -$Title => loc('Saved searches') -</%ARGS> - -<%METHOD Init> -<%ARGS> -$Query => {} -$SavedSearch => {} -@SearchFields => qw(Query Format OrderBy Order RowsPerPage) -</%ARGS> -<%INIT> - -$SavedSearch->{'Id'} = ( $ARGS{Type} && $ARGS{Type} eq 'Chart' ? -$ARGS{'SavedChartSearchId'} : $ARGS{'SavedSearchId'} ) || 'new'; -$SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'} || undef; -$SavedSearch->{'Privacy'} = $ARGS{'SavedSearchOwner'} || undef; - -my @results; - -if ( $ARGS{'SavedSearchRevert'} ) { - $ARGS{'SavedSearchLoad'} = $SavedSearch->{'Id'}; -} - -if ( $ARGS{'SavedSearchLoad'} ) { - my ($container, $id ) = _parse_saved_search ($ARGS{'SavedSearchLoad'}); - if ( $container ) { - my $search = $container->Attributes->WithId( $id ); - $SavedSearch->{'Id'} = $ARGS{'SavedSearchLoad'}; - $SavedSearch->{'Object'} = $search; - $SavedSearch->{'Description'} = $search->Description; - $Query->{$_} = $search->SubValue($_) foreach @SearchFields; - - if ( $ARGS{'SavedSearchRevert'} ) { - push @results, loc('Loaded original "[_1]" saved search', $SavedSearch->{'Description'} ); - } else { - push @results, loc('Loaded saved search "[_1]"', $SavedSearch->{'Description'} ); - } - } - else { - push @results, loc( 'Can not load saved search "[_1]"', - $ARGS{'SavedSearchLoad'} ); - return @results; - } -} -elsif ( $ARGS{'SavedSearchDelete'} ) { - # We set $SearchId to 'new' above already, so peek into the %ARGS - my ($container, $id) = _parse_saved_search( $SavedSearch->{'Id'} ); - if ( $container && $container->id ) { - # We have the object the entry is an attribute on; delete the entry... - $container->Attributes->DeleteEntry( Name => 'SavedSearch', id => $id ); - } - $SavedSearch->{'Id'} = 'new'; - $SavedSearch->{'Object'} = undef; - $SavedSearch->{'Description'} = undef; - push @results, loc("Deleted saved search"); -} -elsif ( $ARGS{'SavedSearchCopy'} ) { - my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} ); - $SavedSearch->{'Object'} = $container->Attributes->WithId( $id ); - if ( $ARGS{'SavedSearchDescription'} && $ARGS{'SavedSearchDescription'} ne $SavedSearch->{'Object'}->Description ) { - $SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'}; - } else { - $SavedSearch->{'Description'} = loc( "[_1] copy", $SavedSearch->{'Object'}->Description ); - } - $SavedSearch->{'Id'} = 'new'; - $SavedSearch->{'Object'} = undef; -} - -if ( $SavedSearch->{'Id'} && $SavedSearch->{'Id'} ne 'new' - && !$SavedSearch->{'Object'} ) -{ - my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} ); - $SavedSearch->{'Object'} = $container->Attributes->WithId( $id ); - $SavedSearch->{'Description'} ||= $SavedSearch->{'Object'}->Description; -} - -return @results; - -</%INIT> -</%METHOD> - -<%METHOD Save> -<%ARGS> -$Query => {} -$SavedSearch => {} -@SearchFields => qw(Query Format OrderBy Order RowsPerPage) -</%ARGS> -<%INIT> - -return unless $ARGS{'SavedSearchSave'} || $ARGS{'SavedSearchCopy'}; - -my @results; -my $obj = $SavedSearch->{'Object'}; -my $id = $SavedSearch->{'Id'}; -my $desc = $SavedSearch->{'Description'}; -my $privacy = $SavedSearch->{'Privacy'}; - -my %params = map { $_ => $Query->{$_} } @SearchFields; -my ($new_obj_type, $new_obj_id) = split(/\-/, ($privacy || '')); - -if ( $obj && $obj->id ) { - # permission check - if ($obj->Object->isa('RT::System')) { - unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser')) { - push @results, loc("No permission to save system-wide searches"); - return @results; - } - } - - $obj->SetSubValues( %params ); - $obj->SetDescription( $desc ); - - my $obj_type = ref($obj->Object); - # We need to get current obj_id now, because when we change obj_type to - # RT::System, $obj->Object->Id returns 1, not the old one :( - my $obj_id = $obj->Object->Id; - - if ( $new_obj_type && $new_obj_id ) { - my ($val, $msg); - if ( $new_obj_type ne $obj_type ) { - ($val, $msg ) = $obj->SetObjectType($new_obj_type); - push @results, loc ('Unable to set privacy object: [_1]', $msg) unless ( $val ); - } - if ( $new_obj_id != $obj_id ) { - ($val, $msg) = $obj->SetObjectId($new_obj_id); - push @results, loc ('Unable to set privacy id: [_1]', $msg) unless ( $val ); - } - } else { - push @results, loc('Unable to determine object type or id'); - } - push @results, loc('Updated saved search "[_1]"', $desc); -} -elsif ( $id eq 'new' ) { - my $saved_search = RT::SavedSearch->new( $session{'CurrentUser'} ); - my ($status, $msg) = $saved_search->Save( - Privacy => $privacy, - Name => $desc, - Type => $SavedSearch->{'Type'}, - SearchParams => \%params, - ); - - if ( $status ) { - $SavedSearch->{'Object'} = - $session{'CurrentUser'}->UserObj->Attributes->WithId( $saved_search->Id ); - # Build new SearchId - $SavedSearch->{'Id'} = - ref( $session{'CurrentUser'}->UserObj ) . '-' - . $session{'CurrentUser'}->UserObj->Id - . '-SavedSearch-' - . $SavedSearch->{'Object'}->Id; - } - else { - push @results, loc("Can't find a saved search to work with").': '.loc($msg); - } -} -else { - push @results, loc("Can't save this search"); -} - -return @results; - -</%INIT> -</%METHOD> |