rt 4.2.16
[freeside.git] / rt / share / html / Search / Elements / EditSearches
index 372a20f..e7de62b 100644 (file)
@@ -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
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
@@ -67,9 +67,9 @@
 % }
 </nobr>
 % }
-% if ( $Object && $Object->Id ) {
+% if ( $Object && $Object->Id && $Object->CurrentUserHasRight('update') ) {
 <input type="submit" class="button" id="SavedSearchSave" name="SavedSearchSave"   value="<%loc('Update')%>" />
-% } else {
+% } elsif ( !$Object ) {
 <input type="submit" class="button" id="SavedSearchSave" name="SavedSearchSave"   value="<%loc('Save')%>" />
 %}
 % }
@@ -146,7 +146,7 @@ $SavedSearch => {}
 
 $SavedSearch->{'Id'}          = ( $ARGS{Type} && $ARGS{Type} eq 'Chart' ?
 $ARGS{'SavedChartSearchId'} : $ARGS{'SavedSearchId'} ) || 'new';
-$SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'} || undef;
+$SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'} || '';
 $SavedSearch->{'Privacy'}     = $ARGS{'SavedSearchOwner'}       || undef;
 
 my @results;
@@ -158,7 +158,8 @@ if ( $ARGS{'SavedSearchRevert'} ) {
 if ( $ARGS{'SavedSearchLoad'} ) {
     my ($container, $id ) = _parse_saved_search ($ARGS{'SavedSearchLoad'});
     if ( $container ) {
-        my $search = $container->Attributes->WithId( $id );
+        my $search = RT::Attribute->new( $session{'CurrentUser'} );
+        $search->Load( $id );
         $SavedSearch->{'Id'}          = $ARGS{'SavedSearchLoad'};
         $SavedSearch->{'Object'}      = $search;
         $SavedSearch->{'Description'} = $search->Description;
@@ -194,7 +195,8 @@ elsif ( $ARGS{'SavedSearchDelete'} ) {
 }
 elsif ( $ARGS{'SavedSearchCopy'} ) {
     my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} );
-    $SavedSearch->{'Object'} = $container->Attributes->WithId( $id );
+    $SavedSearch->{'Object'} = RT::Attribute->new( $session{'CurrentUser'} );
+    $SavedSearch->{'Object'}->Load( $id );
     if ( $ARGS{'SavedSearchDescription'} && $ARGS{'SavedSearchDescription'} ne $SavedSearch->{'Object'}->Description ) {
         $SavedSearch->{'Description'} = $ARGS{'SavedSearchDescription'};
     } else {
@@ -208,7 +210,8 @@ if ( $SavedSearch->{'Id'} && $SavedSearch->{'Id'} ne 'new'
      && !$SavedSearch->{'Object'} )
 {
     my ($container, $id ) = _parse_saved_search( $ARGS{'SavedSearchId'} );
-    $SavedSearch->{'Object'} = $container->Attributes->WithId( $id );
+    $SavedSearch->{'Object'} = RT::Attribute->new( $session{'CurrentUser'} );
+    $SavedSearch->{'Object'}->Load( $id );
     $SavedSearch->{'Description'} ||= $SavedSearch->{'Object'}->Description;
 }
 
@@ -290,7 +293,7 @@ if ( $obj && $obj->id ) {
     }
     push @results, loc('Updated saved search "[_1]"', $desc);
 }
-elsif ( $id eq 'new' ) {
+elsif ( $id eq 'new' and defined $desc and length $desc ) {
     my $saved_search = RT::SavedSearch->new( $session{'CurrentUser'} );
     my ($status, $msg) = $saved_search->Save(
         Privacy      => $privacy,
@@ -300,8 +303,8 @@ elsif ( $id eq 'new' ) {
     );
 
     if ( $status ) {
-        $SavedSearch->{'Object'} =
-            $session{'CurrentUser'}->UserObj->Attributes->WithId( $saved_search->Id );
+        $SavedSearch->{'Object'} = RT::Attribute->new( $session{'CurrentUser'} );
+        $SavedSearch->{'Object'}->Load( $saved_search->Id );
         # Build new SearchId
         $SavedSearch->{'Id'} =
                 ref( $session{'CurrentUser'}->UserObj ) . '-'
@@ -313,6 +316,9 @@ elsif ( $id eq 'new' ) {
         push @results, loc("Can't find a saved search to work with").': '.loc($msg);
     }
 }
+elsif ( $id eq 'new' ) {
+    push @results, loc("Can't save a search without a Description");
+}
 else {
     push @results, loc("Can't save this search");
 }