Mercurial > pub > Impl
view Lib/DOM/Providers/Form.pm @ 35:f25d021780b3
DOM::Navigator::Builder working version
author | Sergey |
---|---|
date | Tue, 17 Nov 2009 17:46:24 +0300 |
parents | 03e58a454b20 |
children | 16ada169ca75 |
line wrap: on
line source
package Configuration; our $DataDir; package DOM::Providers::Form; use strict; use Form; use Schema::Form; use Common; our @ISA = qw(Object); our $Encoding ; our $CacheDir ||= "${DataDir}Cache/"; warn "The encoding for the DOM::Provider::Form isn't specified" if not $Encoding; $Encoding ||= 'utf-8'; sub GetProviderInfo { return { Name => 'Form', Host => 'DOM::Site', Methods => { LoadForm => \&SiteLoadForm } } } BEGIN { DeclareProperty FormsEncoding => ACCESS_READ; DeclareProperty DataCacheDir => ACCESS_READ; } sub SiteLoadForm { my ($this,$site,$file,$form) = @_; return $site->RegisterObject('Form',$this->LoadForm($file,$form)); } sub LoadForm { my ($this,$file, $formName) = @_; my $formSchema = Schema::Form->LoadForms($file,$this->{$DataCacheDir},$this->{$FormsEncoding})->{$formName} or die new Exception('The form isn\'t found',$formName,$file); return Form->new($formSchema); } sub construct { my ($class) = @_; return $class->new(FormsEncoding => $Encoding, DataCacheDir => $CacheDir); } 1;