| Moxy documentation | Contained in the Moxy distribution. |
Moxy::Plugin::ControlPanel - control panel for moxy
- module: ControlPanel
Moxy's control panel.
A lot of plugins depend to this plugin.We recommends you enable this plugin.
Kan Fushihara
Tokuhiro Matsuno
| 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__