diff --git a/lib/NGCP/Panel/Controller/Dashboard.pm b/lib/NGCP/Panel/Controller/Dashboard.pm index a83aaca423..6733c99d07 100644 --- a/lib/NGCP/Panel/Controller/Dashboard.pm +++ b/lib/NGCP/Panel/Controller/Dashboard.pm @@ -27,13 +27,16 @@ Dashboard index sub index :Path :Args(0) { my ( $self, $c ) = @_; - my $widgets = NGCP::Panel::Widget->widgets($c, '*Overview.pm'); - foreach(@{ $widgets }) { - $_->handle($c); + my $widget_templates = []; + my $finder = NGCP::Panel::Widget->new; + foreach($finder->list_plugins) { + my $widget = NGCP::Panel::Widget->new; + $widget->load_plugin($_); + $widget->handle($c); + push @{ $widget_templates }, $widget->template; } - my @widget_templates = map { $_->template } @{ $widgets }; - $c->stash(widgets => \@widget_templates); + $c->stash(widgets => $widget_templates); $c->stash(template => 'dashboard.tt'); } diff --git a/lib/NGCP/Panel/Widget.pm b/lib/NGCP/Panel/Widget.pm index 3678739f56..2de8f021c7 100644 --- a/lib/NGCP/Panel/Widget.pm +++ b/lib/NGCP/Panel/Widget.pm @@ -1,30 +1,16 @@ package NGCP::Panel::Widget; use Moose; -use File::Find::Rule; +with 'MooseX::Object::Pluggable'; -sub widgets { - my ($self, $c, $filter) = @_; - my $path = - $c->config->{home} . - '/lib/' . - $self->meta->name =~ s/::/\//rg ; - - my @widget_files = File::Find::Rule - ->file() - ->name($filter) - ->relative() - ->in($path); - - my $widgets = []; - foreach(@widget_files) { - my $mpath = $path . '/' . $_; - my $mname = $self->meta->name . '::' . s/\.pm$//r; - require $mpath; - push @{ $widgets }, $mname->new; - } - return $widgets; +sub handle { + my ($self, $c) = @_; + return; } +sub list_plugins { + my ($self) = @_; + return map { $_ = s/^.*:://r } $self->_plugin_locator->plugins; +} no Moose; __PACKAGE__->meta->make_immutable; diff --git a/lib/NGCP/Panel/Widget/BillingOverview.pm b/lib/NGCP/Panel/Widget/BillingOverview.pm deleted file mode 100644 index d9855e27bc..0000000000 --- a/lib/NGCP/Panel/Widget/BillingOverview.pm +++ /dev/null @@ -1,20 +0,0 @@ -package NGCP::Panel::Widget::BillingOverview; -use Moose; - -extends 'NGCP::Panel::Widget'; - -has 'template' => ( - is => 'ro', - default => sub { return 'widgets/billing_overview.tt'; } -); - -sub handle { - my ($c) = @_; - return; -} - -no Moose; -__PACKAGE__->meta->make_immutable; - -1; -# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/PeeringOverview.pm b/lib/NGCP/Panel/Widget/PeeringOverview.pm deleted file mode 100644 index 43c4dc6cb1..0000000000 --- a/lib/NGCP/Panel/Widget/PeeringOverview.pm +++ /dev/null @@ -1,19 +0,0 @@ -package NGCP::Panel::Widget::PeeringOverview; -use Moose; - -extends 'NGCP::Panel::Widget'; - -has 'template' => ( - is => 'ro', - default => sub { return 'widgets/peering_overview.tt'; } -); - -sub handle { - return; -} - -no Moose; -__PACKAGE__->meta->make_immutable; - -1; -# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/Plugin/BillingOverview.pm b/lib/NGCP/Panel/Widget/Plugin/BillingOverview.pm new file mode 100644 index 0000000000..ea307e9579 --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/BillingOverview.pm @@ -0,0 +1,18 @@ +package NGCP::Panel::Widget::Plugin::BillingOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/billing_overview.tt' +); + +around handle => sub { + my ($self, $c) = @_; + + print "++++ BillingOverview::handle\n"; + return; +}; + +1; +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/Plugin/PeeringOverview.pm b/lib/NGCP/Panel/Widget/Plugin/PeeringOverview.pm new file mode 100644 index 0000000000..e24624a6df --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/PeeringOverview.pm @@ -0,0 +1,18 @@ +package NGCP::Panel::Widget::Plugin::PeeringOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/peering_overview.tt' +); + +around handle => sub { + my ($self, $c) = @_; + + print "++++ PeeringOverview::handle\n"; + return; +}; + +1; +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/Plugin/ResellerOverview.pm b/lib/NGCP/Panel/Widget/Plugin/ResellerOverview.pm new file mode 100644 index 0000000000..69576415b4 --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/ResellerOverview.pm @@ -0,0 +1,18 @@ +package NGCP::Panel::Widget::Plugin::ResellerOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/reseller_overview.tt' +); + +around handle => sub { + my ($self, $c) = @_; + + print "++++ ResellerOverview::handle\n"; + return; +}; + +1; +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/Plugin/SystemOverview.pm b/lib/NGCP/Panel/Widget/Plugin/SystemOverview.pm new file mode 100644 index 0000000000..543f9aed3c --- /dev/null +++ b/lib/NGCP/Panel/Widget/Plugin/SystemOverview.pm @@ -0,0 +1,18 @@ +package NGCP::Panel::Widget::Plugin::SystemOverview; +use Moose::Role; + +has 'template' => ( + is => 'ro', + isa => 'Str', + default => 'widgets/system_overview.tt' +); + +around handle => sub { + my ($self, $c) = @_; + + print "++++ SystemOverview::handle\n"; + return; +}; + +1; +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/ResellerOverview.pm b/lib/NGCP/Panel/Widget/ResellerOverview.pm deleted file mode 100644 index 5f59e02e88..0000000000 --- a/lib/NGCP/Panel/Widget/ResellerOverview.pm +++ /dev/null @@ -1,21 +0,0 @@ -package NGCP::Panel::Widget::ResellerOverview; -use Moose; - -extends 'NGCP::Panel::Widget'; - -has 'template' => ( - is => 'ro', - default => sub { return 'widgets/reseller_overview.tt'; } -); - -sub handle { - my ($c) = @_; - $c->stash->{resellers} = $c->model->{Provisioning}->resellers->find(); - return; -} - -no Moose; -__PACKAGE__->meta->make_immutable; - -1; -# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Widget/SystemOverview.pm b/lib/NGCP/Panel/Widget/SystemOverview.pm deleted file mode 100644 index 5ed27f28c5..0000000000 --- a/lib/NGCP/Panel/Widget/SystemOverview.pm +++ /dev/null @@ -1,19 +0,0 @@ -package NGCP::Panel::Widget::SystemOverview; -use Moose; - -extends 'NGCP::Panel::Widget'; - -has 'template' => ( - is => 'ro', - default => sub { return 'widgets/system_overview.tt'; } -); - -sub handle { - return; -} - -no Moose; -__PACKAGE__->meta->make_immutable; - -1; -# vim: set tabstop=4 expandtab: diff --git a/share/templates/widgets/reseller_overview.tt b/share/templates/widgets/reseller_overview.tt index 6b671ba987..38f549b207 100644 --- a/share/templates/widgets/reseller_overview.tt +++ b/share/templates/widgets/reseller_overview.tt @@ -3,7 +3,7 @@