summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Template_Vendor.pm
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/Template_Vendor.pm')
-rw-r--r--rt/lib/RT/Template_Vendor.pm34
1 files changed, 34 insertions, 0 deletions
diff --git a/rt/lib/RT/Template_Vendor.pm b/rt/lib/RT/Template_Vendor.pm
new file mode 100644
index 000000000..f1a276c3d
--- /dev/null
+++ b/rt/lib/RT/Template_Vendor.pm
@@ -0,0 +1,34 @@
+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;