+package RT::Template;
+
+=item LoadByName
+
+Takes Name and Queue arguments. Tries to load queue specific template
+first, then global. If Queue argument is omitted then global template
+is tried, not template with the name in any queue.
+
+=cut
+
+sub LoadByName {
+ my $self = shift;
+ my %args = (
+ Queue => undef,
+ Name => undef,
+ @_
+ );
+ my $queue = $args{'Queue'};
+ if ( blessed $queue ) {
+ $queue = $queue->id;
+ } elsif ( defined $queue and $queue =~ /\D/ ) {
+ my $tmp = RT::Queue->new( $self->CurrentUser );
+ $tmp->Load($queue);
+ $queue = $tmp->id;
+ }
+
+ return $self->LoadGlobalTemplate( $args{'Name'} ) unless $queue;
+
+ $self->LoadQueueTemplate( Queue => $queue, Name => $args{'Name'} );
+ return $self->id if $self->id;
+ return $self->LoadGlobalTemplate( $args{'Name'} );
+}
+
+1;