<% 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>