[Jifty-commit] r4341 - jifty/trunk/lib/Jifty/Plugin/I18N/Action
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Wed Oct 31 05:03:14 EDT 2007
Author: clkao
Date: Wed Oct 31 05:03:02 2007
New Revision: 4341
Modified:
jifty/trunk/lib/Jifty/Plugin/I18N/Action/SetLang.pm
Log:
* I18N::Action::SetLang: scalar::defer is trigger some oddness,
rewrite available languages as normal runtime code, and cached.
Modified: jifty/trunk/lib/Jifty/Plugin/I18N/Action/SetLang.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/I18N/Action/SetLang.pm (original)
+++ jifty/trunk/lib/Jifty/Plugin/I18N/Action/SetLang.pm Wed Oct 31 05:03:02 2007
@@ -2,17 +2,38 @@
use strict;
use DateTime::Locale ();
+use base 'Class::Data::Inheritable';
+__PACKAGE__->mk_classdata(_available_languages => undef);
+
use Jifty::Param::Schema;
use Jifty::Action schema {
-param lang =>
- label is _('Language'),
+param
+ lang => label is _('Language'),
render as 'select',
- # XXX: complete_native_name is way too long
- valid are defer {[ map { { display => DateTime::Locale->load($_)->native_name, value => $_ } } Jifty::I18N->available_languages ]},
default is defer { Jifty::I18N->get_current_language };
};
+sub available_languages {
+ my $class = shift;
+ return $class->_available_languages if $class->_available_languages;
+
+ $class->_available_languages(
+ [ map { { display => DateTime::Locale->load($_)->native_name,
+ value => $_ } } Jifty::I18N->available_languages ] );
+ return $class->_available_languages;
+}
+
+sub arguments {
+ my $self = shift;
+ my $args = $self->SUPER::arguments;
+
+ # XXX: complete_native_name is way too long
+ $args->{lang}->{valid_values} = $self->available_languages;
+
+ return $args;
+}
+
sub take_action {
my $self = shift;
my $lang = $self->argument_value('lang');
More information about the Jifty-commit
mailing list