68 lines
1.7 KiB
Perl
68 lines
1.7 KiB
Perl
package WebGUI::Content::AjaxI18N;
|
|
|
|
=head1 LEGAL
|
|
|
|
-------------------------------------------------------------------
|
|
WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
|
-------------------------------------------------------------------
|
|
Please read the legal notices (docs/legal.txt) and the license
|
|
(docs/license.txt) that came with this distribution before using
|
|
this software.
|
|
-------------------------------------------------------------------
|
|
http://www.plainblack.com info@plainblack.com
|
|
-------------------------------------------------------------------
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use JSON ();
|
|
|
|
=head1 NAME
|
|
|
|
Package WebGUI::Content::AjaxI18N
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
A content handler to get i18n data using the WebGUI.i18n JavaScript object.
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use WebGUI::Content::AjaxI18N
|
|
my $output = WebGUI::Content::AjaxI18N::handler($session);
|
|
|
|
=head1 SUBROUTINES
|
|
|
|
These subroutines are available from this package:
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------
|
|
|
|
=head2 handler ( session )
|
|
|
|
The content handler for this package.
|
|
|
|
=cut
|
|
|
|
sub handler {
|
|
my ( $session ) = @_;
|
|
# Only handle op=ajaxGetI18N
|
|
return undef unless ( $session->form->get( "op" ) eq "ajaxGetI18N" );
|
|
|
|
my $json = $session->form->get( "request" );
|
|
my $namespaces = JSON->new->decode( $json );
|
|
my $i18n = WebGUI::International->new( $session );
|
|
my $response = {};
|
|
|
|
for my $ns ( keys %{ $namespaces } ) {
|
|
for my $key ( @{ $namespaces->{ $ns } } ) {
|
|
$response->{ $ns }->{ $key } = $i18n->get( $key, $ns );
|
|
}
|
|
}
|
|
|
|
$session->http->setMimeType( "application/json" );
|
|
return JSON->new->encode( $response );
|
|
}
|
|
|
|
1;
|
|
|