Moxy::Plugin::ControlPanel - control panel for moxy


Moxy documentation Contained in the Moxy distribution.

Index


Code Index:

NAME

Top

Moxy::Plugin::ControlPanel - control panel for moxy

SYNOPSIS

Top

  - module: ControlPanel

DESCRIPTION

Top

Moxy's control panel.

A lot of plugins depend to this plugin.We recommends you enable this plugin.

AUTHOR

Top

    Kan Fushihara
    Tokuhiro Matsuno

SEE ALSO

Top

Moxy


Moxy documentation Contained in the Moxy distribution.

package Moxy::Plugin::ControlPanel;
use strict;
use warnings;
use base qw/Moxy::Plugin/;
use Moxy::Util;

sub response_filter: Hook {
    my ($self, $context, $args) = @_;

    return unless (($args->{response}->header('Content-Type')||'') =~ /html/);

    $context->log("debug" => "generate ControlPanel");

    my @parts = do {
        my @r;
        for my $hook (@{$context->class_component_hooks->{'control_panel'}}) {
            my ($plugin, $method) = ($hook->{plugin}, $hook->{method});
            push @r, { title => sub { (my $x = ref $plugin) =~ s/.+:://; $x }->(), body => $plugin->$method($context, $args) };
        }
        @r;
    };

    my $output = $self->render_template(
        $context,
        'panelcontainer.tt' => {
            parts => \@parts, 
        }
    );

    # convert html charset to response charset.
    my $charset = $args->{response}->charset;
    my $enc = Encode::find_encoding($charset);
    $output = Encode::encode(($enc ? $enc->name : 'utf-8'), $output);

    # insert control panel to html response.
    my $content = $args->{response}->content;
    $content =~ s!(</body>)!$output$1!i;
    $args->{response}->content($content);
}

1;
__END__