[Rt-commit] r16216 - in rt/branches/3.999-DANGEROUS: lib/RT/Action
sunnavy at bestpractical.com
sunnavy at bestpractical.com
Mon Oct 6 08:40:53 EDT 2008
Author: sunnavy
Date: Mon Oct 6 08:40:53 2008
New Revision: 16216
Modified:
rt/branches/3.999-DANGEROUS/ (props changed)
rt/branches/3.999-DANGEROUS/lib/RT/Action/UpdateTicket.pm
Log:
r17030 at sunnavys-mb: sunnavy | 2008-10-06 20:38:13 +0800
added basics fields
Modified: rt/branches/3.999-DANGEROUS/lib/RT/Action/UpdateTicket.pm
==============================================================================
--- rt/branches/3.999-DANGEROUS/lib/RT/Action/UpdateTicket.pm (original)
+++ rt/branches/3.999-DANGEROUS/lib/RT/Action/UpdateTicket.pm Mon Oct 6 08:40:53 2008
@@ -8,6 +8,16 @@
use constant report_detailed_messages => 1;
+sub arguments {
+ my $self = shift;
+
+ my $args = $self->SUPER::arguments();
+ $args->{status}{valid_values} = $self->_compute_possible_statuses;
+ $args->{queue}{valid_values} = $self->_compute_possible_queues;
+ $args->{owner}{valid_values} = $self->_compute_possible_owners;
+ return $args;
+}
+
=head2 take_action
=cut
@@ -19,6 +29,7 @@
foreach my $field (@date_fields) {
my $value = $self->argument_value($field);
if ( defined $value ) {
+
# convert date to be as utc
my $date = RT::Date->new();
$date->set(
@@ -30,8 +41,86 @@
}
}
+ my @time_fields = qw/time_left time_estimated time_worked/;
+
+ foreach my $field (@time_fields) {
+ my $value = $self->argument_value($field);
+ if ( defined $value ) {
+ if ( $value =~ /([\d.]+)h(our)?/ ) {
+ $value = int $1 * 60;
+ }
+ elsif ( $value =~ /(\d+)/ ) {
+ $value = $1;
+ }
+ $self->argument_value( $field, $value );
+ }
+ }
+
$self->SUPER::take_action;
return 1;
}
+sub _compute_possible_owners {
+ my $self = shift;
+
+ my @objects = ( $self->record, $self->record->queue );
+
+ my %user_uniq_hash;
+
+ my $isSU = Jifty->web->current_user->has_right(
+ right => 'SuperUser',
+ object => RT->system
+ );
+
+ foreach my $object (@objects) {
+ my $Users = RT::Model::UserCollection->new;
+ $Users->who_have_right(
+ right => 'OwnTicket',
+ object => $object,
+ include_system_rights => 1,
+ include_superusers => $isSU
+ );
+ while ( my $user = $Users->next() ) {
+ next
+ if ( $user->id == $RT::nobody->id )
+ ; # skip nobody here, so we can make them first later
+ $user_uniq_hash{ $user->id() } = $user;
+ }
+ }
+
+ my $owners = [
+ map { { display => $_->name, value => $_->id } }
+ sort { uc( $a->name ) cmp uc( $b->name ) } values %user_uniq_hash
+ ];
+ unshift @$owners, { display => 'Nobody', value => $RT::nobody->id };
+
+ return $owners;
+}
+
+sub _compute_possible_queues {
+ my $self = shift;
+
+ my $q = RT::Model::QueueCollection->new();
+ $q->find_all_rows;
+
+ my $queues;
+ while (my $queue = $q->next) {
+ if ($queue->current_user_has_right('CreateTicket')) {
+ push @$queues, { display => $queue->name, value => $queue->id };
+ }
+ }
+
+ return $queues;
+}
+
+sub _compute_possible_statuses {
+ my $self = shift;
+
+ return [
+ map { { display => $_, value => $_ } }
+ RT::Model::Queue->active_status_array,
+ RT::Model::Queue->inactive_status_array
+ ];
+}
+
1;
More information about the Rt-commit
mailing list