Copy rewrite rule set functionality

Mantis: 0003135
agranig/1_0_subfix
Gerhard Jungwirth 12 years ago committed by Andrew Pogrebennyk
parent 10822b203a
commit 4f73672fb8

@ -5,6 +5,7 @@ BEGIN { extends 'Catalyst::Controller'; }
use NGCP::Panel::Form::RewriteRule::AdminSet;
use NGCP::Panel::Form::RewriteRule::ResellerSet;
use NGCP::Panel::Form::RewriteRule::CloneSet;
use NGCP::Panel::Form::RewriteRule::Rule;
use NGCP::Panel::Utils::XMLDispatcher;
use NGCP::Panel::Utils::Navigation;
@ -121,6 +122,55 @@ sub set_delete :Chained('set_base') :PathPart('delete') {
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
}
sub set_clone :Chained('set_base') :PathPart('clone') {
my ($self, $c) = @_;
my $posted = ($c->request->method eq 'POST');
my $params = { $c->stash->{set_result}->get_inflated_columns };
$params = $params->merge($c->session->{created_objects});
my $form = NGCP::Panel::Form::RewriteRule::CloneSet->new;
$form->process(
posted => $posted,
params => $c->request->params,
item => $params,
);
NGCP::Panel::Utils::Navigation::check_form_buttons(
c => $c,
form => $form,
fields => {},
back_uri => $c->req->uri,
);
if($posted && $form->validated) {
try {
my $new_set = $c->stash->{sets_rs}->create({
%{ $form->values },
reseller_id => $c->stash->{set_result}->reseller_id,
});
my @old_rules = $c->stash->{set_result}->voip_rewrite_rules->all;
for my $rule (@old_rules) {
$new_set->voip_rewrite_rules->create({
match_pattern => $rule->match_pattern,
replace_pattern => $rule->replace_pattern,
description => $rule->description,
direction => $rule->direction,
field => $rule->field,
priority => $rule->priority,
});
}
$c->flash(messages => [{type => 'success', text => 'Rewrite rule set successfully cloned'}]);
} catch($e) {
$c->log->error("failed to clone rewrite rule set: $e");
$c->flash(messages => [{type => 'error', text => 'Failed to clone rewrite rule set'}]);
}
NGCP::Panel::Utils::Navigation::back_or($c, $c->uri_for('/rewrite'));
}
$c->stash(form => $form);
$c->stash(create_flag => 1);
$c->stash(clone_flag => 1);
}
sub set_create :Chained('set_list') :PathPart('create') :Args(0) {
my ($self, $c) = @_;
@ -416,6 +466,13 @@ The form used is L<NGCP::Panel::Form::RewriteRuleSet>.
Delete a rewrite rule set determined by L</set_base>.
=head2 set_clone
Deep copy a rewrite rule set determined by L</set_base>. The user can enter
a new name and description. The reseller is not configurable, but set by the
original rewrite rule set. The rewrite rules of the original rwrs are then
cloned and assigned to the new rwrs.
=head2 set_create
Show a modal to create a new rewrite rule set using the form

@ -0,0 +1,47 @@
package NGCP::Panel::Form::RewriteRule::CloneSet;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
sub build_render_list {[qw/submitid fields actions/]}
sub build_form_element_class {[qw(form-horizontal)]}
has_field 'name' => (
type => 'Text',
required => 1,
label => 'New Name',
);
has_field 'description' => (
type => 'Text',
required => 0,
label => 'New Description',
);
has_field 'clone' => (
type => 'Submit',
value => 'Clone',
element_class => [qw/btn btn-primary/],
label => '',
);
has_block 'fields' => (
tag => 'div',
class => [qw/modal-body/],
render_list => [qw/name description/],
);
has_block 'actions' => (
tag => 'div',
class => [qw/modal-footer/],
render_list => [qw/clone/],
);
1;
# vim: set tabstop=4 expandtab:

@ -1,6 +1,6 @@
[% META title = 'Rewrite Rule Sets' -%]
[%
helper.name = 'Rewrite Rule Sets';
helper.name = 'Rewrite Rule Set';
helper.messages = messages;
helper.dt_columns = set_dt_columns;
helper.length_change = 1;
@ -11,11 +11,16 @@
helper.form_object = form;
helper.ajax_uri = c.uri_for_action( "/rewrite/set_ajax" );
IF clone_flag;
helper.name = 'cloned Rewrite Rule Set';
END;
UNLESS c.user.read_only;
helper.dt_buttons = [
{ name = 'Edit', uri = "/rewrite/'+full.id+'/edit", class = 'btn-small btn-primary', icon = 'icon-edit' },
{ name = 'Delete', uri = "/rewrite/'+full.id+'/delete", class = 'btn-small btn-secondary', icon = 'icon-trash' },
{ name = 'Rules', uri = "/rewrite/'+full.id+'/rules", class = 'btn-small btn-tertiary', icon = 'icon-list' },
{ name = 'Clone', uri = "/rewrite/'+full.id+'/clone", class = 'btn-small btn-tertiary', icon = 'icon-retweet' },
];
helper.top_buttons = [
{ name = 'Create Rewrite Rule Set', uri = c.uri_for('/rewrite/create'), icon = 'icon-star' },

Loading…
Cancel
Save