[Rt-commit] r19547 - in rt/3.999/trunk: .
sunnavy at bestpractical.com
sunnavy at bestpractical.com
Thu May 7 03:32:18 EDT 2009
Author: sunnavy
Date: Thu May 7 03:32:18 2009
New Revision: 19547
Added:
rt/3.999/trunk/lib/RT/Action/ConfigSystem.pm
Modified:
rt/3.999/trunk/ (props changed)
Log:
r20888 at sunnavys-mb (orig r19335): sunnavy | 2009-04-23 13:40:11 +0800
add ConfigSystem action
Added: rt/3.999/trunk/lib/RT/Action/ConfigSystem.pm
==============================================================================
--- (empty file)
+++ rt/3.999/trunk/lib/RT/Action/ConfigSystem.pm Thu May 7 03:32:18 2009
@@ -0,0 +1,83 @@
+use strict;
+use warnings;
+
+package RT::Action::ConfigSystem;
+use base qw/RT::Action Jifty::Action/;
+use Scalar::Defer;
+
+# TODO XXX
+# section support
+# doc support
+
+sub arguments {
+ my $self = shift;
+ return $self->{__cached_arguments} if ( $self->{__cached_arguments} );
+ my $args = { };
+
+ my $configs = RT::Model::ConfigCollection->new;
+ $configs->unlimit;
+ while ( my $config = $configs->next ) {
+ $args->{ $config->name } = {
+ default_value => defer {
+ my $value = $config->value;
+ $value = ''
+ if defined $value && $value eq $config->_empty_string;
+ if ( ref $value eq 'ARRAY' ) {
+ return '[' . join( ', ', @$value ) . ']';
+ }
+ elsif ( ref $value eq 'HASH' ) {
+ my $str = '{';
+ for my $key ( keys %$value ) {
+ $str .= qq{$key => $value->{$key},};
+ }
+ $str .= '}';
+ return $str;
+ }
+ else {
+ return $value;
+ }
+ }
+ };
+ }
+# require Pod::POM;
+ return $self->{__cached_arguments} = $args;
+}
+
+=head2 take_action
+
+=cut
+
+sub take_action {
+ my $self = shift;
+
+ Jifty->log->error( 'ok' );
+ for my $arg ( $self->argument_names ) {
+ if ( $self->has_argument($arg) ) {
+ my $value = $self->argument_value( $arg );
+ if ( $value =~ /^\[\s*(.*)\s*$\]/ ) {
+ $value = [ split /\s*,\s*/, $1 ];
+ }
+ elsif ( $value =~ /^{\s*(.*)\s*$}/ ) {
+ $value = { split /\s*(?:,|=>)\s*/, $1 };
+ }
+
+ RT->config->set( $arg, $value );
+ }
+ }
+
+ 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