[Rt-commit] rt branch, create-action, updated. 64a664e9c397083808239253ef73573eb309836a

sartak at bestpractical.com sartak at bestpractical.com
Thu Sep 3 08:18:37 EDT 2009


The branch, create-action has been updated
       via  64a664e9c397083808239253ef73573eb309836a (commit)
      from  827641ab25126c554020c09fb06706544e418129 (commit)

Summary of changes:
 lib/RT/Action/CreateTicket.pm |   44 +++++++++++++++++++++++++++++++++++++++++
 lib/RT/View/Ticket/Create.pm  |    1 +
 2 files changed, 45 insertions(+), 0 deletions(-)

- Log -----------------------------------------------------------------
commit 64a664e9c397083808239253ef73573eb309836a
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Thu Sep 3 08:18:19 2009 -0400

    Most of the way to the owner dropdown

diff --git a/lib/RT/Action/CreateTicket.pm b/lib/RT/Action/CreateTicket.pm
index fc16db2..c34da8b 100644
--- a/lib/RT/Action/CreateTicket.pm
+++ b/lib/RT/Action/CreateTicket.pm
@@ -11,6 +11,10 @@ use Jifty::Action schema {
     param status =>
         render as 'select',
         valid_values are 'new', 'open'; # XXX
+
+    param owner =>
+        render as 'select',
+        valid_values are RT->nobody;
 };
 
 sub after_set_queue {
@@ -18,9 +22,49 @@ sub after_set_queue {
     my $queue = shift;
     $self->SUPER::after_set_queue(@_);
 
+    $self->set_valid_statuses($queue);
+    $self->set_valid_owners($queue);
+}
+
+sub set_valid_statuses {
+    my $self  = shift;
+    my $queue = shift;
+
     my @valid_statuses = $queue->status_schema->valid;
     $self->{_cached_arguments}{status}{valid_values} = \@valid_statuses;
 }
 
+sub set_valid_owners {
+    my $self  = shift;
+    my $queue = shift;
+
+    my $isSU = Jifty->web->current_user->has_right(
+        right => 'SuperUser',
+        object => RT->system,
+    );
+
+    my $users = RT::Model::UserCollection->new;
+    $users->who_have_right(
+        right               => 'OwnTicket',
+        object              => $queue,
+        include_system_rights => 1,
+        include_superusers   => $isSU,
+    );
+
+    my %user_uniq_hash;
+    while (my $user = $users->next) {
+        # skip nobody here, so we can make them first later
+        next if $user->id == RT->nobody->id;
+
+        $user_uniq_hash{ $user->id } = $user;
+    }
+
+    my @valid_owners = sort { uc( $a->name ) cmp uc( $b->name ) }
+                       values %user_uniq_hash;
+    unshift @valid_owners, RT->nobody;
+
+    $self->{_cached_arguments}{status}{valid_values} = \@valid_owners;
+}
+
 1;
 
diff --git a/lib/RT/View/Ticket/Create.pm b/lib/RT/View/Ticket/Create.pm
index 8c7db57..b2651d9 100644
--- a/lib/RT/View/Ticket/Create.pm
+++ b/lib/RT/View/Ticket/Create.pm
@@ -105,6 +105,7 @@ sub show_basics {
         render_hidden($create, 'queue', $queue);
 
         render_param($create, 'status');
+        render_param($create, 'owner');
 
         $create->button(label => _('Create'));
     };

-----------------------------------------------------------------------


More information about the Rt-commit mailing list