diff Lib/DOM/Providers/Form.pm @ 0:03e58a454b20

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/DOM/Providers/Form.pm	Tue Jul 14 12:54:37 2009 +0400
@@ -0,0 +1,49 @@
+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;