[Rt-commit] rt branch, admin_ui, updated. 439846633052b607db99ce33dccb559d08b88265
sunnavy at bestpractical.com
sunnavy at bestpractical.com
Tue Dec 15 06:53:44 EST 2009
The branch, admin_ui has been updated
via 439846633052b607db99ce33dccb559d08b88265 (commit)
from 28a49dfe490a421c7749ff083c85041eddeefbe4 (commit)
Summary of changes:
lib/RT/Action/EditWorkflowTransitions.pm | 82 ++++++++++++++++++++++++++++++
1 files changed, 82 insertions(+), 0 deletions(-)
create mode 100644 lib/RT/Action/EditWorkflowTransitions.pm
- Log -----------------------------------------------------------------
commit 439846633052b607db99ce33dccb559d08b88265
Author: sunnavy <sunnavy at bestpractical.com>
Date: Tue Dec 15 19:53:16 2009 +0800
add EditWorkflowTransitions action
diff --git a/lib/RT/Action/EditWorkflowTransitions.pm b/lib/RT/Action/EditWorkflowTransitions.pm
new file mode 100644
index 0000000..223cd89
--- /dev/null
+++ b/lib/RT/Action/EditWorkflowTransitions.pm
@@ -0,0 +1,82 @@
+use strict;
+use warnings;
+
+package RT::Action::EditWorkflowTransitions;
+use base qw/RT::Action Jifty::Action/;
+use RT::Workflow;
+use Scalar::Defer;
+
+__PACKAGE__->mk_accessors('name');
+
+sub arguments {
+ my $self = shift;
+ return {} unless $self->name;
+ my $args = {
+ name => {
+ render_as => 'hidden',
+ default_value => $self->name,
+ },
+ };
+
+ my $schema = RT::Workflow->new->load( $self->name );
+ my @valid = $schema->valid;
+
+ for my $from (@valid) {
+ $args->{$from} = {
+ default_value => defer { [ $schema->transitions($from) ] },
+ available_values => [
+ map { { display => _($_), value => $_ } }
+ grep { $_ ne $from } @valid
+ ],
+ render_as => 'Checkboxes',
+ label => '',
+ };
+ }
+
+ return $args;
+}
+
+=head2 take_action
+
+=cut
+
+sub take_action {
+ my $self = shift;
+
+ my $name = $self->argument_value('name');
+ return unless $name;
+
+ my $schema = RT::Workflow->new->load($name);
+ my %tmp = ();
+ my @valid = $schema->valid;
+ for my $status (@valid) {
+ my $v = $self->argument_value($status);
+ my @list = grep $schema->is_valid($_),
+ $v ? ( ref $v ? @{$v} : ($v) ) : ();
+ $tmp{$status} = \@list;
+ }
+ my ( $status, $msg ) = $schema->set_transitions(%tmp);
+
+ unless ($status) {
+ Jifty->log->error(
+ 'failed to set transitions for workflow ' . $name . ': ' . $msg );
+ return;
+ }
+
+ $self->report_success;
+ return 1;
+}
+
+=head2 report_success
+
+=cut
+
+sub report_success {
+ my $self = shift;
+
+ # Your success message here
+ $self->result->message('Success');
+}
+
+1;
+
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list