parent
cd109ee5ed
commit
460ecd825b
@ -0,0 +1,124 @@
|
||||
package NGCP::Panel::Controller::Domain;
|
||||
use Moose;
|
||||
use namespace::autoclean;
|
||||
use Data::Dumper;
|
||||
|
||||
BEGIN { extends 'Catalyst::Controller'; }
|
||||
|
||||
use NGCP::Panel::Form::Domain;
|
||||
|
||||
=head1 NAME
|
||||
|
||||
NGCP::Panel::Controller::Domain - Catalyst Controller
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Catalyst Controller.
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=cut
|
||||
|
||||
sub list :Chained('/') :PathPart('domain') :CaptureArgs(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
my $domains = [
|
||||
{id => 1, domain => '1.example.org'},
|
||||
{id => 2, domain => '2.example.org'},
|
||||
{id => 3, domain => '3.example.org'},
|
||||
{id => 4, domain => '4.example.org'},
|
||||
{id => 5, domain => '5.example.org'},
|
||||
{id => 6, domain => '6.example.org'},
|
||||
];
|
||||
$c->stash(domains => $domains);
|
||||
$c->stash(template => 'domain/list.tt');
|
||||
}
|
||||
|
||||
sub root :Chained('list') :PathPart('') :Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
}
|
||||
|
||||
sub create :Chained('list') :PathPart('create') :Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
my $form = NGCP::Panel::Form::Domain->new;
|
||||
$form->process(
|
||||
posted => ($c->request->method eq 'POST'),
|
||||
params => $c->request->params,
|
||||
action => $c->uri_for('create'),
|
||||
);
|
||||
if($form->validated) {
|
||||
$c->flash(messages => [{type => 'success', text => 'Domain successfully created!'}]);
|
||||
$c->response->redirect($c->uri_for());
|
||||
return;
|
||||
}
|
||||
|
||||
$c->stash(create_flag => 1);
|
||||
$c->stash(form => $form);
|
||||
}
|
||||
|
||||
sub search :Chained('list') :PathPart('search') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
$c->flash(messages => [{type => 'info', text => 'Domain search not implemented!'}]);
|
||||
$c->response->redirect($c->uri_for());
|
||||
}
|
||||
|
||||
sub base :Chained('/domain/list') :PathPart('') :CaptureArgs(1) {
|
||||
my ($self, $c, $domain_id) = @_;
|
||||
|
||||
unless($domain_id && $domain_id =~ /^\d+$/) {
|
||||
$c->flash(messages => [{type => 'error', text => 'Invalid domain id detected!'}]);
|
||||
$c->response->redirect($c->uri_for());
|
||||
return;
|
||||
}
|
||||
|
||||
# TODO: fetch details of domain from model
|
||||
my @rfilter = grep { $_->{id} == $domain_id } @{ $c->stash->{domains} };
|
||||
$c->stash(domain => shift @rfilter);
|
||||
}
|
||||
|
||||
sub edit :Chained('base') :PathPart('edit') :Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
my $posted = ($c->request->method eq 'POST');
|
||||
my $form = NGCP::Panel::Form::Domain->new;
|
||||
$form->process(
|
||||
posted => 1,
|
||||
params => $posted ? $c->request->params : $c->stash->{domain},
|
||||
action => $c->uri_for($c->stash->{domain}->{id}, 'edit'),
|
||||
);
|
||||
if($posted && $form->validated) {
|
||||
$c->flash(messages => [{type => 'success', text => 'Domain successfully changed!'}]);
|
||||
$c->response->redirect($c->uri_for());
|
||||
return;
|
||||
}
|
||||
|
||||
$c->stash(form => $form);
|
||||
}
|
||||
|
||||
sub delete :Chained('base') :PathPart('delete') :Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
# $c->model('Provisioning')->domain($c->stash->{domain}->{id})->delete;
|
||||
$c->flash(messages => [{type => 'info', text => 'Domain delete not implemented!'}]);
|
||||
$c->response->redirect($c->uri_for());
|
||||
}
|
||||
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Andreas Granig,,,
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
This library is free software. You can redistribute it and/or modify
|
||||
it under the same terms as Perl itself.
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->meta->make_immutable;
|
||||
|
||||
1;
|
||||
|
||||
# vim: set tabstop=4 expandtab:
|
||||
@ -0,0 +1,42 @@
|
||||
package NGCP::Panel::Form::Domain;
|
||||
|
||||
use HTML::FormHandler::Moose;
|
||||
extends 'HTML::FormHandler';
|
||||
use Moose::Util::TypeConstraints;
|
||||
|
||||
use HTML::FormHandler::Widget::Block::Bootstrap;
|
||||
|
||||
has '+widget_wrapper' => ( default => 'Bootstrap' );
|
||||
sub build_render_list {[qw/fields actions/]}
|
||||
sub build_form_element_class { [qw/form-horizontal/] }
|
||||
|
||||
has_field 'id' => (
|
||||
type => 'Hidden',
|
||||
);
|
||||
|
||||
has_field 'domain' => (
|
||||
type => 'Text',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
has_field 'save' => (
|
||||
type => 'Submit',
|
||||
value => 'Save',
|
||||
element_class => [qw/btn btn-primary/],
|
||||
label => '',
|
||||
);
|
||||
|
||||
has_block 'fields' => (
|
||||
tag => 'div',
|
||||
class => [qw/modal-body/],
|
||||
render_list => [qw/id domain/],
|
||||
);
|
||||
|
||||
has_block 'actions' => (
|
||||
tag => 'div',
|
||||
class => [qw/modal-footer/],
|
||||
render_list => [qw/save/],
|
||||
);
|
||||
|
||||
1;
|
||||
# vim: set tabstop=4 expandtab:
|
||||
@ -1,16 +1,16 @@
|
||||
package NGCP::Panel::Widget::Plugin::PeeringOverview;
|
||||
package NGCP::Panel::Widget::Plugin::AdminBillingOverview;
|
||||
use Moose::Role;
|
||||
|
||||
has 'template' => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
default => 'widgets/peering_overview.tt'
|
||||
default => 'widgets/admin_billing_overview.tt'
|
||||
);
|
||||
|
||||
around handle => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
print "++++ PeeringOverview::handle\n";
|
||||
print "++++ AdminBillingOverview::handle\n";
|
||||
return;
|
||||
};
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
package NGCP::Panel::Widget::Plugin::ResellerOverview;
|
||||
package NGCP::Panel::Widget::Plugin::AdminPeeringOverview;
|
||||
use Moose::Role;
|
||||
|
||||
has 'template' => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
default => 'widgets/reseller_overview.tt'
|
||||
default => 'widgets/admin_peering_overview.tt'
|
||||
);
|
||||
|
||||
around handle => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
print "++++ ResellerOverview::handle\n";
|
||||
print "++++ AdminPeeringOverview::handle\n";
|
||||
return;
|
||||
};
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
package NGCP::Panel::Widget::Plugin::SystemOverview;
|
||||
package NGCP::Panel::Widget::Plugin::AdminResellerOverview;
|
||||
use Moose::Role;
|
||||
|
||||
has 'template' => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
default => 'widgets/system_overview.tt'
|
||||
default => 'widgets/admin_reseller_overview.tt'
|
||||
);
|
||||
|
||||
around handle => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
print "++++ SystemOverview::handle\n";
|
||||
print "++++ AdminResellerOverview::handle\n";
|
||||
return;
|
||||
};
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
package NGCP::Panel::Widget::Plugin::BillingOverview;
|
||||
package NGCP::Panel::Widget::Plugin::AdminSystemOverview;
|
||||
use Moose::Role;
|
||||
|
||||
has 'template' => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
default => 'widgets/billing_overview.tt'
|
||||
default => 'widgets/admin_system_overview.tt'
|
||||
);
|
||||
|
||||
around handle => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
print "++++ BillingOverview::handle\n";
|
||||
print "++++ AdminSystemOverview::handle\n";
|
||||
return;
|
||||
};
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package NGCP::Panel::Widget::Plugin::ResellerDomainOverview;
|
||||
use Moose::Role;
|
||||
|
||||
has 'template' => (
|
||||
is => 'ro',
|
||||
isa => 'Str',
|
||||
default => 'widgets/reseller_domain_overview.tt'
|
||||
);
|
||||
|
||||
around handle => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
print "++++ ResellerDomainOverview::handle\n";
|
||||
return;
|
||||
};
|
||||
|
||||
around filter => sub {
|
||||
my ($foo, $self, $c) = @_;
|
||||
|
||||
return $self if(
|
||||
$c->check_user_roles(qw/reseller/) &&
|
||||
ref $c->controller eq 'NGCP::Panel::Controller::Dashboard'
|
||||
);
|
||||
return;
|
||||
};
|
||||
|
||||
1;
|
||||
# vim: set tabstop=4 expandtab:
|
||||
@ -0,0 +1,15 @@
|
||||
[% META title = 'Domains' -%]
|
||||
[%
|
||||
helper.name = 'Domain';
|
||||
helper.data = domains;
|
||||
helper.messages = messages;
|
||||
helper.column_titles = [ '#', 'Domain' ];
|
||||
helper.column_fields = [ 'id', 'domain' ];
|
||||
|
||||
helper.create_flag = create_flag;
|
||||
helper.edit_object = domain;
|
||||
helper.form_object = form;
|
||||
|
||||
PROCESS 'helpers/table_form.tt';
|
||||
-%]
|
||||
[% # vim: set tabstop=4 syntax=html expandtab: -%]
|
||||
@ -0,0 +1,21 @@
|
||||
<div class="plan-container">
|
||||
<div class="plan">
|
||||
<div class="plan-header">
|
||||
<div class="plan-title">Domains</div>
|
||||
<div class="plan-price">
|
||||
<span>7</span>
|
||||
<span class="term">Domains</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="plan-features" style="min-height:135px;"><!-- 3 rows -->
|
||||
<ul>
|
||||
<li><strong>4674</strong> Accounts</li>
|
||||
<li><strong>12456</strong> Subscribers</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="plan-actions">
|
||||
<a href="/domain" class="btn">Configure</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
[% # vim: set tabstop=4 syntax=html expandtab: -%]
|
||||
Loading…
Reference in new issue