summaryrefslogtreecommitdiff
path: root/httemplate/edit/process/msg_template.html
blob: d8b125ae0ade7332d2224623dc63ece89e3b0d75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<% include( 'elements/process.html',  
              'table'       => 'msg_template',
              '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','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>