my @list = ();
foreach my $field (@{$self->fields}) {
next unless ($field->{addable});
$self->set_field_heading($field) if ($field->{heading});
my $new_field = Clone::clone($field);
$new_field->{anchor} = '95%' unless (defined $new_field->{anchor});
$new_field->{fieldLabel} = $new_field->{header} unless (defined $new_field->{fieldLabel});
delete $new_field->{width} if (defined $new_field->{width});
$self->set_field_combo($new_field) if (
defined $new_field->{enum_list} and
ref($new_field->{enum_list}) eq 'ARRAY'
);
$self->set_field_checkbox($new_field) if ($new_field->{checkbox});
push @list, $new_field;
}
return @list;
}
sub item_form_fields { my $self = shift; my $params = shift;
$params = $self->itemfetch_coderef->($params) if (
defined $self->itemfetch_coderef and
not $self->edit_form_ajax_load
);
my @list = ();
foreach my $field (@{$self->fields}) {
next unless ($field->{edit_allow} or $field->{edit_show});
my $new_field = Clone::clone($field);
$new_field->{anchor} = '95%' unless (defined $new_field->{anchor});
if ($new_field->{heading}) {
$self->set_field_heading($new_field);
push @list, $new_field;
next;
}
$new_field->{hidden} = 0;
$new_field->{fieldLabel} = $new_field->{header} unless (defined $new_field->{fieldLabel});
$new_field->{fieldLabel} = $new_field->{name} unless (defined $new_field->{fieldLabel});
if ($field->{edit_show} and not $field->{edit_allow}) {
$new_field->{readOnly} = 1;
my @style = (
'background-color: transparent;',
'border-color: transparent;',
'background-image: none;'
);
$new_field->{style} = join('',@style);
}
unless (defined $new_field->{viewable} and not $new_field->{viewable}) {
$new_field->{value} = $params->{$new_field->{name}} if (
defined $params->{$new_field->{name}} and
not $self->edit_form_ajax_load
);
}
$self->set_field_combo($new_field) if (
defined $new_field->{enum_list} and
ref($new_field->{enum_list}) eq 'ARRAY'
);
$self->set_field_checkbox($new_field) if ($new_field->{checkbox});
if ($new_field->{checktree} and defined $params->{$new_field->{name}}) {
my $newer_field = $self->set_field_checktree($new_field,$params->{$new_field->{name}});
$new_field = $newer_field;
}
push @list, $new_field;
}
return @list;
}
sub add_edit_base_config { my $self = shift;
my $config = {
close_first => 1,
height => $self->edit_window_height,
width => $self->edit_window_width,
layout => 'fit',
#items => $self->add_edit_base_submitform
};
return $config;
}
sub add_edit_base_submitform {
my $self = shift;
my $id = $self->gid . '-sform-' . time;
my $config = {
do_action => 'jsonsubmit',
id => $id,
labelAlign => $self->labelAlign,
onFail_eval => RapidApp::ExtJS::MsgBox->new(title => 'Error', msg => 'action.result.msg', style => $self->exception_style)->code,
defaults => { xtype => 'textfield' },
items => [],
};
foreach my $k (keys %{ $self->base_params }) {
push @{$config->{items}}, {
xtype => 'hidden',
name => $k,
value => $self->base_params->{$k},
};
}
return $config;
}
sub add_submitform { my $self = shift; my $window_name = shift;
my $config = $self->add_edit_base_submitform;
$config->{url} = $self->suburl('/add_submit');
$config->{after_save_code} = $self->reload_store_eval;
$config->{close_on_success} = 1;
$config->{submit_btn_text} = $self->add_label;
$config->{submit_btn_iconCls} = $self->add_label_iconCls;
unshift @{$config->{items}}, {
xtype => 'box',
html => '<center><div style="font-size:175%;margin-bottom:25px;">Fill out this form to add a new ' . $self->item_title . ':</div></center>'
};
push @{$config->{items}}, $self->add_fields_list;
$config->{extra_buttons} = [{
xtype => 'dbutton',
text => 'Help',
iconCls => 'ra-icon-help',
handler_func => q~new Ext.Window({iconCls: 'ra-icon-help', autoScroll: true, height: 400, width: 350, html: '~ . $self->add_item_help_html . q~'}).show()~
}] if (defined $self->add_item_help_html);
$config->{items} = $self->custom_add_form_items if (defined $self->custom_add_form_items);
return RapidApp::ExtJS::SubmitForm->new($config)->Config;
}
sub add_window_config { my $self = shift;
my $window_name = $self->gid . '_add_window';
my $config = $self->add_edit_base_config;
$config->{name} = $window_name;
$config->{title} = $self->add_label;
$config->{iconCls} = $self->add_label_iconCls;
$config->{items} = $self->add_submitform;
return $config;
}
sub edit_submitform { my $self = shift;
my $params = RapidApp::JSON::MixedEncoder::decode_json($self->c->req->params->{orig_params});
my $orig_params = $self->c->req->params;
$orig_params->{orig_params} = $params;
my $config = $self->add_edit_base_submitform;
$config->{base_params} = { orig_params => RapidApp::JSON::MixedEncoder::encode_json($orig_params) };
my $id = $config->{id};
$config->{url} = $self->suburl('/edit_submit');
$config->{after_save_code} = $self->reload_store_eval;
$config->{close_on_success} = 1 if ($self->edit_close_on_update);
$config->{submit_btn_text} = $self->edit_label;
$config->{submit_btn_iconCls} = $self->edit_label_iconCls;
$config->{monitorValid} = 1 if ($self->edit_form_validate);
unshift @{$config->{items}}, {
xtype => 'box',
html => '<center><div style="font-size:175%;margin-bottom:20px;">' . $self->edit_window_title . ':</div></center>'
};
#push @{$config->{items}}, $self->edit_fields_list($params);
push @{$config->{items}}, $self->item_form_fields($params);
push @{$config->{items}}, $self->edit_custom_formfields_coderef->($params) if (defined $self->edit_custom_formfields_coderef);
$config->{action_load} = {
url => $self->suburl('/item_form_load'),
params => $params
} if ($self->edit_form_ajax_load and ref($self->itemfetch_coderef) eq 'CODE');
$config->{items} = $self->custom_edit_form_items if (defined $self->custom_edit_form_items);
return RapidApp::ExtJS::SubmitForm->new($config)->Config;
}
sub edit_window_config { my $self = shift; my $params = shift;
my $config = $self->add_edit_base_config;
$config->{title} = $self->edit_window_title;
$config->{iconCls} = $self->edit_label_iconCls;
$config->{items} = $self->edit_submitform;
return $config;
}
sub edit_window { my $self = shift;
return $self->ExtJS->Window_code($self->edit_window_config);
}
sub add_window { my $self = shift; my $params = shift;
return $self->ExtJS->Window_code($self->add_window_config);
}
sub add_submit { my $self = shift;
my $h = {};
try {
my $json_params = $self->c->req->params->{json_params};
my $params = RapidApp::JSON::MixedEncoder::decode_json($json_params);
my $hash = $self->add_item_coderef->($self->process_submit_params($params));
$h = $hash if (ref($hash) eq 'HASH');
}
catch {
$h->{success} = 0;
$h->{msg} = "$_";
chomp $h->{msg};
};
$h->{success} = 0 unless (defined $h->{success});
$h->{msg} = 'Add failed - unknown error' unless (defined $h->{msg});
return $h;
}
sub edit_submit { my $self = shift;
my $h = {};
try {
my $orig_json = $self->c->req->params->{orig_params};
my $orig_params = RapidApp::JSON::MixedEncoder::from_json($orig_json);
my $json_params = $self->c->req->params->{json_params};
my $params = RapidApp::JSON::MixedEncoder::decode_json($json_params);
my $hash = $self->edit_item_coderef->($self->process_submit_params($params),$orig_params);
$h = $hash if (ref($hash) eq 'HASH');
}
catch {
$h->{success} = 0;
$h->{msg} = "$_";
chomp $h->{msg};
};
$h->{success} = 0 unless (defined $h->{success});
$h->{msg} = 'Update failed - unknown error' unless (defined $h->{msg});
return $h;
}
sub item_form_load { my $self = shift;
my $params = $self->c->req->params;
my $data = {};
$data = $self->itemfetch_coderef->($params) if (ref($self->itemfetch_coderef) eq 'CODE');
return {
success => 1,
data => $data
};
}
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 1186:
=pod directives shouldn't be over one line long! Ignoring all 3 lines of content