From: Bradley Bell <btb@debian.org>
Date: Thu, 25 Oct 2012 15:37:09 -0800
Subject: [PATCH] Various bugfixes from upstream respository
Origin: upstream, https://github.com/chakatodd/rt-extension-assettracker/compare/8eff3c3...93e141c

diff --git a/etc/schema.mysql b/etc/schema.mysql
index 8a90897..dd10279 100755
--- a/etc/schema.mysql
+++ b/etc/schema.mysql
@@ -10,7 +10,7 @@ CREATE TABLE AT_Types (
   LastUpdated DATETIME NULL  ,
   Disabled int2 NOT NULL DEFAULT 0 ,
   PRIMARY KEY (id)
-) TYPE=InnoDB;
+) ENGINE=InnoDB;
 CREATE UNIQUE INDEX AT_Types1 ON AT_Types (Name) ;
 CREATE INDEX AT_Types2 ON AT_Types (Disabled) ;
 
@@ -31,7 +31,7 @@ CREATE TABLE AT_Assets (
   Creator integer NOT NULL DEFAULT 0  ,
   Created DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB;
+) ENGINE=InnoDB;
 
 CREATE INDEX AT_Assets1 ON AT_Assets (Type, Status) ;
 CREATE INDEX AT_Assets2 ON AT_Assets (Name, Type, Status) ;
@@ -51,7 +51,7 @@ CREATE TABLE AT_IPs (
   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB;
+) ENGINE=InnoDB;
 CREATE UNIQUE INDEX AT_IPs1 ON AT_IPs (IP) ;
 CREATE INDEX AT_IPs2 ON AT_IPs (Asset) ;
 
@@ -69,7 +69,7 @@ CREATE TABLE AT_Ports (
   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB;
+) ENGINE=InnoDB;
 CREATE INDEX AT_Ports1 ON AT_Ports (Port) ;
 CREATE UNIQUE INDEX AT_Ports2 ON AT_Ports (Transport,Port,IP) ;
 CREATE INDEX AT_Ports3 ON AT_Ports (IP) ;
@@ -92,7 +92,7 @@ CREATE TABLE AT_ScripConditions (
   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB CHARACTER SET utf8;
+) ENGINE=InnoDB CHARACTER SET utf8;
 
 # }}}
 
@@ -116,7 +116,7 @@ CREATE TABLE AT_Scrips (
   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB CHARACTER SET utf8;
+) ENGINE=InnoDB CHARACTER SET utf8;
 
 # }}}
 
@@ -133,7 +133,7 @@ CREATE TABLE AT_ScripActions (
   LastUpdatedBy integer NOT NULL DEFAULT 0  ,
   LastUpdated DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB CHARACTER SET utf8;
+) ENGINE=InnoDB CHARACTER SET utf8;
 
 # }}}
 
@@ -153,7 +153,7 @@ CREATE TABLE AT_Templates (
   Creator integer NOT NULL DEFAULT 0  ,
   Created DATETIME NULL  ,
   PRIMARY KEY (id)
-) TYPE=InnoDB CHARACTER SET utf8;
+) ENGINE=InnoDB CHARACTER SET utf8;
 
 # }}}
 
diff --git a/html/AssetTracker/Admin/Elements/ObjectCustomFields b/html/AssetTracker/Admin/Elements/ObjectCustomFields
index 019eb42..8a258db 100644
--- a/html/AssetTracker/Admin/Elements/ObjectCustomFields
+++ b/html/AssetTracker/Admin/Elements/ObjectCustomFields
@@ -90,15 +90,14 @@ if ($RT::VERSION =~ /^4/) {
     $ObjectTabs = "/Elements/Tabs";
 }
 elsif ($id) { 
-    $Object->Load($id) || Abort(loc("Couldn't load object [_1]", $id));
     $ObjectTabs = "/AssetTracker/Admin/Elements/${Type}Tabs";
 } else {
     $ObjectTabs = "/Admin/Elements/GlobalCustomFieldTabs";
-
 } 
 
 my $title; 
 if ($id) {
+$Object->Load($id) || Abort(loc("Couldn't load object [_1]", $id));
 $title =  loc('Edit Custom Fields for [_1]', $Object->Name);
 }
 elsif ($SubType) {
diff --git a/html/AssetTracker/Elements/AddLinks b/html/AssetTracker/Elements/AddLinks
index 909a91d..279a1be 100644
--- a/html/AssetTracker/Elements/AddLinks
+++ b/html/AssetTracker/Elements/AddLinks
@@ -45,9 +45,12 @@ if ($AssetString) {
             $Assets->Limit(FIELD => 'Type', VALUE => $type->Id) if $type->Id;
         }
     }
-    else {
+    elseif (($AssetField eq 'Name') or ($AssetField eq 'Description') or ($AssetField eq 'Status') ) {
         $Assets->Limit(FIELD => $AssetField, VALUE => $AssetString, OPERATOR => $AssetOp);
     }
+    else {
+        $Assets->LimitCustomField(CUSTOMFIELD => $AssetField, VALUE => $AssetString, OPERATOR => $AssetOp );
+    }
     $Assets->Limit(FIELD => 'Status', VALUE => 'retired', OPERATOR => '!=') unless $AllowRetired;
     #eliminate the assets own id
     $Assets->Limit(FIELD => 'id', VALUE => $AssetObj->Id, OPERATOR => '!=') if ref $AssetObj;
diff --git a/html/AssetTracker/Elements/SelectAssets b/html/AssetTracker/Elements/SelectAssets
index 8569213..5bcb67a 100755
--- a/html/AssetTracker/Elements/SelectAssets
+++ b/html/AssetTracker/Elements/SelectAssets
@@ -48,7 +48,7 @@
 <option value="<% $col->[0] %>"><% loc($col->[1]) %>
 % }
 % while (my $CF = $CFs->Next) {
-<option value="CustomField-<% $CF->Id %>"><&|/l&>CustomField</&>: <% $CF->Name %>
+<option value="<% $CF->Id %>"><&|/l&>CustomField</&>: <% $CF->Name %>
 % }
 </select>
 <& /Elements/SelectMatch, Name=> 'AssetOp' &>
diff --git a/html/AssetTracker/Elements/SelectType b/html/AssetTracker/Elements/SelectType
index 0c5e9ec..0d13549 100755
--- a/html/AssetTracker/Elements/SelectType
+++ b/html/AssetTracker/Elements/SelectType
@@ -62,8 +62,6 @@
 </LABEL>
 
 <%INIT>
-unless ($session{'see_in_types'}) { 
-
 @{$session{'see_in_types'}} = ();
 my $t=new RTx::AssetTracker::Types($session{'CurrentUser'});
 $t->UnLimit;
@@ -73,7 +71,6 @@ while (my $type=$t->Next) {
                 push (@{$session{'see_in_types'}}, $ds);
         }        
 }
-}
 </%INIT>
 
 
diff --git a/html/AssetTracker/Search/Bulk.html b/html/AssetTracker/Search/Bulk.html
index 1b65cc4..915a6bf 100755
--- a/html/AssetTracker/Search/Bulk.html
+++ b/html/AssetTracker/Search/Bulk.html
@@ -117,7 +117,7 @@
 <TD VALIGN=TOP>
 <table>
 <tr><td class=label> <&|/l&>Make Description</&>: </td>
-<td class=value> <INPUT Name="Subject" SIZE=50> </td></tr>
+<td class=value> <INPUT Name="Description" SIZE=50> </td></tr>
 <tr><td class=label> <&|/l&>Make Type</&>: </td>
 <td class=value> <& /AssetTracker/Elements/SelectType, Name => "Type" &> </td></tr>
 <tr><td class=label> <&|/l&>Make Status</&>: </td>
diff --git a/html/AssetTracker/Search/Results.html b/html/AssetTracker/Search/Results.html
index b146ebb..69d7bbc 100755
--- a/html/AssetTracker/Search/Results.html
+++ b/html/AssetTracker/Search/Results.html
@@ -87,6 +87,9 @@
 <& /Elements/Callback, _CallbackName => 'SearchActions', QueryString => $QueryString&>
 </div>
 <%INIT>
+
+$Page = 1 unless $Page && $Page > 0;
+
 my ($title, $assetcount);
 $session{'i'}++;
 $session{'assets'} = RTx::AssetTracker::Assets->new($session{'CurrentUser'}) ;
@@ -97,6 +100,7 @@
 $session{'CurrentAssetSearchHash'} = {
     Format      => $Format,
     Query       => $Query,
+    Page        => $Page,
     Order       => $Order,
     OrderBy     => $OrderBy,
     RowsPerPage => $Rows,
diff --git a/html/Callbacks/AssetTracker/Elements/Tabs/Privileged b/html/Callbacks/AssetTracker/Elements/Tabs/Privileged
index 159c729..fb7ab3e 100644
--- a/html/Callbacks/AssetTracker/Elements/Tabs/Privileged
+++ b/html/Callbacks/AssetTracker/Elements/Tabs/Privileged
@@ -99,7 +99,7 @@ $assets->child( new => title => loc('New Search') => path => "/AssetTracker/Sear
         my $search = $assets; #->child('search');
         my $args      = '';
         my $has_query = '';
-        my $current_search = $session{"CurrentSearchHash"} || {};
+        my $current_search = $session{"CurrentAssetSearchHash"} || {};
         my $search_id = $m->request_args->{'SavedSearchLoad'} || $m->request_args->{'SavedSearchId'} || $search->{'SearchId'} || '';
 
         $has_query = 1 if ( $m->request_args->{'Query'} or $current_search->{'Query'} );
@@ -183,7 +183,7 @@ $assets->child( new => title => loc('New Search') => path => "/AssetTracker/Sear
 
         } else {
             $section = $tabs->child( select => title => loc('Asset Types'),
-                                     path => "/Admin/$type/" );
+                                     path => "/AssetTracker/Admin/$type/" );
         }
 
         $section->child( select => title => loc('Select'),
@@ -208,12 +208,12 @@ $assets->child( new => title => loc('New Search') => path => "/AssetTracker/Sear
                               path => "/AssetTracker/Admin/Types/Templates.html?id=" . $id);
 
             $templates->child(select => title => loc('Select'), path => "/AssetTracker/Admin/Types/Templates.html?id=".$id);
-            $templates->child( create => title => loc('Create'), path => "/AssetTracker/Admin/Types/Template.html?Create=1;Queue=".$id);
+            $templates->child( create => title => loc('Create'), path => "/AssetTracker/Admin/Types/Template.html?Create=1;AssetType=".$id);
 
             my $scrips = $type->child( scrips => title => loc('Scrips'), path => "/AssetTracker/Admin/Types/Scrips.html?id=" . $id);
 
             $scrips->child( select => title => loc('Select'), path => "/AssetTracker/Admin/Types/Scrips.html?id=" . $id );
-            $scrips->child( create => title => loc('Create'), path => "/AssetTracker/Admin/Types/Scrip.html?Create=1;Queue=" . $id);
+            $scrips->child( create => title => loc('Create'), path => "/AssetTracker/Admin/Types/Scrip.html?Create=1;AssetType=" . $id);
 
             my $ticket_cfs = $type->child( 'ticket-custom-fields' => title => loc('Asset Custom Fields'),
                   path => '/AssetTracker/Admin/Types/CustomFields.html?SubType=RTx::AssetTracker::Asset&id=' . $id );
diff --git a/html/Search/Asset.html b/html/Search/Asset.html
index 55ab6e2..1b4e528 100755
--- a/html/Search/Asset.html
+++ b/html/Search/Asset.html
@@ -1 +1,5 @@
-<& /AssetTracker/Search/Results.html, %ARGS &>
+<%init>
+RT::Interface::Web::Redirect(RT->Config->Get('WebURL').
+        'AssetTracker/Search/Results.html?' . $m->comp( '/Elements/QueryString',
+            %ARGS, Load => 'Load', CurrentSearch => $ARGS{LoadSavedSearch} ) );
+</%init>
diff --git a/lib/RTx/AssetTracker/Assets_Overlay.pm b/lib/RTx/AssetTracker/Assets_Overlay.pm
index 9b80d31..ca5493e 100755
--- a/lib/RTx/AssetTracker/Assets_Overlay.pm
+++ b/lib/RTx/AssetTracker/Assets_Overlay.pm
@@ -1442,6 +1442,26 @@ sub LimitStatus {
 
 # }}}
 
+=head2 IgnoreType
+
+Stub. AT doesn't use this flag because assets don't have an equivalent
+to "ticket types")
+
+=cut
+
+sub IgnoreType {
+    my $self = shift;
+
+    # Instead of faking a Limit that later gets ignored, fake up the
+    # fact that we're already looking at type, so that the check in
+    # Tickets_SQL/FromSQL goes down the right branch
+
+    #  $self->LimitType(VALUE => '__any');
+    #$self->{looking_at_type} = 1;
+}
+
+
+
 # {{{ sub LimitDescription
 
 =head2 LimitDescription
diff --git a/lib/RTx/AssetTracker/Transaction_Overlay.pm b/lib/RTx/AssetTracker/Transaction_Overlay.pm
index 5405add..7288e78 100755
--- a/lib/RTx/AssetTracker/Transaction_Overlay.pm
+++ b/lib/RTx/AssetTracker/Transaction_Overlay.pm
@@ -725,8 +725,9 @@ sub AssetObj {
 
 sub OldValue {
     my $self = shift;
-    if (my $type = $self->__Value('ReferenceType')) {
-	my $Object = $type->new($self->CurrentUser);
+    if (my $type = $self->__Value('ReferenceType')
+       and my $id = $self->__Value('OldReference')) {
+ 	my $Object = $type->new($self->CurrentUser);
 	$Object->Load($self->__Value('OldReference'));
 	return $Object->Content;
     }
@@ -737,10 +738,11 @@ sub OldValue {
 
 sub NewValue {
     my $self = shift;
-    if (my $type = $self->__Value('ReferenceType')) {
-	my $Object = $type->new($self->CurrentUser);
-	$Object->Load($self->__Value('NewReference'));
-	return $Object->Content;
+    if (my $type = $self->__Value('ReferenceType')
+       and my $id = $self->__Value('NewReference') ) {
+        my $Object = $type->new($self->CurrentUser);
+        $Object->Load($self->__Value('NewReference'));
+        return $Object->Content;
     }
     else {
 	return $self->__Value('NewValue');
@@ -995,21 +997,25 @@ $_BriefDescriptions{CustomField} = sub {
         my $self = shift;
         my $field = $self->loc('CustomField');
 
+	$field = $self->loc('a custom field') if !defined($field);
+
         if ( $self->Field ) {
             my $cf = RT::CustomField->new( $self->CurrentUser );
             $cf->Load( $self->Field );
             $field = $cf->Name();
         }
 
-        if ( (not defined $self->OldValue) or ($self->OldValue eq '') ) {
-            return ( $self->loc("[_1] [_2] added", $field, $self->NewValue) );
-        }
-        elsif ( (not defined $self->NewValue) or ($self->NewValue eq '') ) {
-            return ( $self->loc("[_1] [_2] deleted", $field, $self->OldValue) );
+        my $new = $self->NewValue;
+        my $old = $self->OldValue;
 
+        if ( !defined($old) || $old eq '' ) {
+            return $self->loc("[_1] [_2] added", $field, $new);
+        }
+        elsif ( !defined($new) || $new eq '' ) {
+            return $self->loc("[_1] [_2] deleted", $field, $old);
         }
         else {
-            return $self->loc("[_1] [_2] changed to [_3]", $field, $self->OldValue, $self->NewValue );
+            return $self->loc("[_1] [_2] changed to [_3]", $field, $old, $new);
         }
     };
 
