/usr/local/CPAN/Moxy/Moxy/Plugin/LocationBar.pm


package Moxy::Plugin::LocationBar;
use strict;
use warnings;
use base qw/Moxy::Plugin/;
use Carp;
use HTML::Entities;

sub render_location_bar : Hook {
    my ($self, $context, $args) = @_;
    croak "invalid args" if ref $args ne 'HASH';
    return unless (($args->{response}->header('Content-Type')||'') =~ /html/);

    my $content = $args->{response}->content;
    my $bar = render_control_panel($args->{response}->request->uri);
    $content =~ s!(<body.*?>)!"$1$bar"!ie;
    $args->{response}->content( $content );
}

sub render_control_panel {
    my $current_url = shift;

    return sprintf(<<"...", encode_entities($current_url));
    <script>
        var moxy_base = location.protocol.replace(':', '') + '://' + location.host;
    </script>
    <form method="get" onsubmit="location.href=moxy_base +'/'+encodeURIComponent(document.getElementById('moxy_url').value);return false;">
        <input type="text" value="\%s" size="40" id="moxy_url" style="width:90%%;" />
        <input type="submit" value="go" />
    </form>
...
}

1;