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