RT# 82949 - changes section name from fees to pricing, better opiton
[freeside.git] / httemplate / edit / process / msg_template.html
index 70d451b..d8b125a 100644 (file)
@@ -1,13 +1,49 @@
 <% include( 'elements/process.html',  
               'table'       => 'msg_template',
-              'viewall_dir' => 'browse',
+              'fields'      => $fields,
+              'viewall_url' => "browse/msg_template/$msgclass.html",
+              'debug'       => 0,
+              'precheck_callback' => \&precheck_callback,
+              'args_callback' => \&args_callback,
           )
 %>
 <%init>
-
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Edit templates')
-  ||     $FS::CurrentUser::CurrentUser->access_right('Edit global templates')
-  ||     $FS::CurrentUser::CurrentUser->access_right('Configuration');
+  unless $FS::CurrentUser::CurrentUser->access_right(['Edit templates','Edit global templates']);
+
+my $msgclass = 'email';
+if ( $cgi->param('msgclass') =~ /^(\w+)$/ ) {
+  $msgclass = $1;
+}
+
+my $fields = [ fields('msg_template') ];
+my $class = "FS::msg_template::$msgclass";
+eval "use $class;";
+if ( $class->extension_table ) {
+  push @$fields, fields($class->extension_table);
+}
+
+sub precheck_callback {
+  my $cgi = shift;
+  # validate locale field (for email-type records)
+  $cgi->param('locale') =~ /^(\w*)$/;
+  my $locale = $1;
+  return mt('Language required') if $locale eq 'new'; # the user didn't choose
+  die "unknown locale $locale" if ( $locale and 
+                                    !FS::Locales->locale_info($locale) );
+}
+
+sub args_callback {
+  my ($cgi, $object) = @_;
+  my %content;
+  $cgi->param('locale') =~ /^(\w*)$/;
+  $content{'locale'} = $1;
+  # no validation of these; they can contain just about anything
+  $content{'subject'} = $cgi->param('subject') || '';
+  $content{'body'} = $cgi->param('body') || '';
+  $object->subject('');
+  $object->body('');
+  return %content;
+}
 
 </%init>