Some more fix attempts for dom-prefs, WIP.

agranig/1_0_subfix
Andreas Granig 12 years ago committed by Gerhard Jungwirth
parent 76305fc56f
commit 6af4d59390

@ -158,6 +158,89 @@ sub ajax :Chained('list') :PathPart('ajax') :Args(0) {
sub preferences :Chained('base') :PathPart('preferences') :Args(0) {
my ($self, $c) = @_;
$self->load_preference_list($c);
$c->stash(template => 'domain/preferences.tt');
}
sub preferences_detail :Chained('base') :PathPart('preferences') :CaptureArgs(1) :Args(0) {
my ($self, $c, $pref_id) = @_;
$self->load_preference_list($c);
$c->stash->{preference_meta} = $c->model('provisioning')
->resultset('voip_preferences')
->single({id => $pref_id});
$c->stash->{provisioning_domain_id} = $c->model('provisioning')
->resultset('voip_domains')
->single({domain => $c->stash->{domain}->{domain}})->id;
# TODO this can return more than one row
$c->stash->{preference} = $c->model('provisioning')
->resultset('voip_dom_preferences')
->search({attribute_id => $pref_id, domain_id => $c->stash->{provisioning_domain_id}});
my @values = ();
while(my $p = $c->stash->{preference}->next()) {
push @values, $p->value;
}
$c->stash->{preference_values} = \@values;
$c->stash(template => 'domain/preferences.tt');
}
sub preferences_edit :Chained('preferences_detail') :PathPart('edit') :Args(0) {
my ($self, $c) = @_;
$c->stash(edit_preference => 1);
my @enums = $c->stash->{preference_meta}
->voip_preferences_enums
->search({dom_pref => 1})
->all;
my $form = NGCP::Panel::Form::Preferences->new({
fields_data => [{
meta => $c->stash->{preference_meta},
enums => \@enums,
}],
});
$form->create_structure([$c->stash->{preference_meta}->attribute]);
$form->process(
posted => ($c->request->method eq 'POST'),
params => $c->request->params || { $c->stash->{preference_meta}->attribute => $c->stash->{preference_values}->[0] },
action => $c->uri_for($c->stash->{domain}->{id}, 'preferences', $c->stash->{preference_meta}->id, 'edit'),
);
if($form->validated) {
# TODO: if meta->max_occur=0 insert, otherwise insert_or_update
my $preference_id = $c->stash->{preference}->first ? $c->stash->{preference}->first->id : undef;
my $rs = $c->model('provisioning')
->resultset('voip_dom_preferences')
->new_result({
id => $preference_id,
attribute_id => $c->stash->{preference_meta}->id,
domain_id => $c->stash->{provisioning_domain_id},
value => $form->field($c->stash->{preference_meta}->attribute)->value,
});
if($preference_id) {
$rs->update();
} else {
$rs->insert();
}
$c->flash(messages => [{type => 'success', text => 'Preference '.$c->stash->{preference_meta}->attribute.' successfully updated.'}]);
$c->response->redirect($c->uri_for($c->stash->{domain}->{id}, 'preferences'));
return;
}
print "~~~~~~~~~~~~~~~~~~~~~~~~~\n";
print "".(p $form->field($c->stash->{preference_meta}->attribute))."\n";
print ">>>>>> ".$form->field($c->stash->{preference_meta}->attribute)->value."\n";
$c->stash(form => $form);
}
sub load_preference_list : Private {
my ($self, $c) = @_;
my @dom_prefs = $c->model('provisioning')
->resultset('voip_preferences')
->search({ dom_pref => 1, internal => 0})
@ -186,43 +269,7 @@ sub preferences :Chained('base') :PathPart('preferences') :Args(0) {
$pref->{value} = defined $val->first ? $val->first->value : undef;
}
}
$c->stash(pref_rows => \@dom_prefs);
$c->stash(template => 'domain/preferences.tt');
}
sub preferences_detail :Chained('base') :PathPart('preferences') :CaptureArgs(1) :Args(0) {
my ($self, $c, $pref_id) = @_;
$c->stash->{preference_meta} = $c->model('provisioning')
->resultset('voip_preferences')
->single({id => $pref_id});
$c->log->debug(p $c->stash->{preference_meta});
# TODO this can return more than one row
$c->stash->{preference} = $c->model('provisioning')
->resultset('voip_dom_preferences')
->single({attribute_id => $pref_id, domain_id => $c->stash->{domain}->{id}});
$c->log->debug(p $c->stash->{preference});
$c->stash(template => 'domain/preferences.tt');
}
sub preferences_edit :Chained('preferences_detail') :PathPart('edit') :Args(0) {
my ($self, $c) = @_;
$c->stash(edit_preference => 1);
my @enums = $c->stash->{preference_meta}
->voip_preferences_enums
->search({dom_pref => 1})
->all;
my $pref_form = NGCP::Panel::Form::Preferences->new({
fields_data => [{data => $c->stash->{preference_meta}, enums => \@enums}],
});
$pref_form->create_structure([$c->stash->{preference_meta}->attribute]);
$c->stash(pref_form => $pref_form);
}
=head1 AUTHOR

@ -22,6 +22,7 @@ has 'fields_data' => (is => 'rw');
has_block 'myfields' => (
tag => 'div',
class => [qw/modal-body/],
);
sub field_list {
@ -31,37 +32,37 @@ sub field_list {
my $fields_data = $self->fields_data;
foreach my $row (@$fields_data) {
my $data = $row->{data};
my $meta = $row->{meta};
my $enums = $row->{enums};
my $field;
if($data->data_type eq "enum") {
if($meta->data_type eq "enum") {
my @options = map {{label => $_->label, value => $_->value}} @{ $enums };
$field = {
name => $data->attribute,
name => $meta->attribute,
type => 'Select',
options => \@options,
};
} elsif($data->data_type eq "boolean") {
} elsif($meta->data_type eq "boolean") {
$field = {
name => $data->attribute,
name => $meta->attribute,
type => 'Boolean',
};
} elsif($data->data_type eq "int") {
} elsif($meta->data_type eq "int") {
$field = {
name => $data->attribute,
name => $meta->attribute,
type => 'Integer',
};
} else { # string
if($data->max_occur == 1) {
if($meta->max_occur == 1) {
$field = {
name => $data->attribute,
name => $meta->attribute,
type => 'Text',
};
} else {
# TODO: needs to be a list of values with the option
# to delete old, add new
$field = {
name => $data->attribute,
name => $meta->attribute,
type => 'Text',
};
}

@ -6,7 +6,7 @@
helper.edit_preference = edit_preference;
helper.preference = preference;
helper.preference_meta = preference_meta;
helper.pref_form = pref_form;
helper.form = form;
helper.domain_id = domain.id;
PROCESS 'helpers/pref_table.tt';

@ -61,7 +61,7 @@
<button id="mod_close" type="button" class="close">×</button>
<h3>Edit Preference [% helper.preference_meta.attribute %]</h3>
</div>
[% helper.pref_form.render -%]
[% helper.form.render -%]
</div>
<script>
$(function () {

Loading…
Cancel
Save