use warnings;
use strict;
package RT::Extension::MobileUI;
our $VERSION = "1.03";
sub _encode_surrogates {
my $uni = $_[0] - 0x10000;
return ($uni / 0x400 + 0xD800, $uni % 0x400 + 0xDC00);
}
sub EscapeJS {
my $val = shift;
return unless defined $val;
return "'" . join('',
map {
chr($_) =~ /[a-zA-Z0-9]/ ? chr($_) :
$_ <= 255 ? sprintf("\\x%02X", $_) :
$_ <= 65535 ? sprintf("\\u%04X", $_) :
sprintf("\\u%X\\u%X", _encode_surrogates($_))
} unpack('U*', $val))
. "'";
}
=head1 NAME
RT::Extension::MobileUI - A phone friendly web interface for RT
=head1 DESCRIPTION
This RT extension adds a mobile interface for RT.
=head1 INSTALLATION
# perl Makefile.PL
# make
# make install
Add RT::Extension::MobileUI to your /opt/rt3/etc/RT_SiteConfig.pm file
Set(@Plugins, qw(RT::Extension::MobileUI));
If you have more than one Plugin enabled, you must enable them as one
Set(@Plugins, qw(Foo Bar)); command
# restart apache
=cut
sub MobileClient {
my $self = shift;
if (($ENV{'HTTP_USER_AGENT'} || '') =~ /(?:hiptop|Blazer|Novarra|Vagabond|SonyEricsson|Symbian|NetFront|UP.Browser|UP.Link|Windows CE|MIDP|J2ME|DoCoMo|J-PHONE|PalmOS|PalmSource|iPhone|iPod|AvantGo|Nokia|Android|WebOS|S60)/io && !$HTML::Mason::Commands::session{'NotMobile'}) {
return 1;
} else {
return undef;
}
}
# while /m/tickets/search could be used to run a denial-of-service
# attack against RT by tricking your browser into running inefficient
# searches, it's really useful to be able to bookmark search results
# so we allow direct access to it.
$RT::Interface::Web::is_whitelisted_component{'/m/tickets/search'} = 1;
=head1 AUTHOR
Jesse Vincent E<lt>jesse@bestpractical.comE<gt>
=head1 LICENSE
GPL version 2.
=cut
1;