Bivio::Biz::Model::FormModeBaseForm
# Copyright (c) 2010 bivio Software, Inc. All Rights Reserved. # $Id$ package Bivio::Biz::Model::FormModeBaseForm; use strict; use Bivio::Base 'Biz.FormModel'; my($_FM) = b_use('Type.FormMode'); sub execute_empty { return _dispatch(@_); } sub execute_empty_create { } sub execute_empty_edit { } sub execute_ok { return _dispatch(@_); } sub execute_ok_create { } sub execute_ok_edit { } sub internal_initialize { my(undef, $delegator, $info) = shift->delegated_args(@_); return $delegator->merge_initialize_info( $info || $delegator->SUPER::internal_initialize, { version => 1, other => [ $delegator->field_decl([ [qw(form_mode FormMode)], ['list_model', 'Model.' . $delegator->LIST_MODEL], ]), ], }, ); } sub internal_pre_execute { my(undef, $delegator) = shift->delegated_args(@_); my(@res) = $delegator->SUPER::internal_pre_execute(@_); my($lm) = $delegator->new_other($delegator->LIST_MODEL); my($fm) = $_FM->setup_by_list_this($lm, $delegator->PROPERTY_MODEL); $delegator->internal_put_field( map( ($_ => $lm->get($_)), @{$lm->get_info('primary_key_names')}, ), ) if $fm->eq_edit; $delegator->internal_put_field( form_mode => $fm, list_model => $lm, ); return @res; } sub is_create { my(undef, $delegator) = shift->delegated_args(@_); return $delegator->get('form_mode')->eq_create; } sub is_edit { my(undef, $delegator) = shift->delegated_args(@_); return $delegator->get('form_mode')->eq_edit; } sub _dispatch { my($self) = shift; my($method) = $self->my_caller . ($self->get('form_mode')->eq_edit ? '_edit' : '_create'); return $self->$method(@_); } 1;