--- /dev/null
+<& /edit/elements/edit.html,
+ 'post_url' => $fsurl.'edit/process/msg_template.html',
+ 'name_singular' => 'message interface',
+ 'table' => 'msg_template',
+ 'viewall_dir' => 'browse',
+ 'agent_virt' => 1,
+ 'agent_null' => 1,
+ 'agent_null_right' => [ 'View global templates', 'Edit global templates' ],
+
+ 'fields' => [], # callback takes care of this
+ 'new_callback' => $edit_callback,
+ 'edit_callback' => $edit_callback,
+ 'error_callback' => $edit_callback,
+ 'labels' => \%labels,
+ 'no_submit' => $no_submit,
+&>
+<%init>
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied"
+ unless $curuser->access_right([ 'View templates', 'View global templates',
+ 'Edit templates', 'Edit global templates',
+ ]);
+
+my %labels = (
+ 'msgnum' => 'Template', # it's still a template number
+ 'agentnum' => 'Agent',
+ 'msgname' => 'Interface name',
+ 'prepare_url' => 'Prepare URL',
+ 'send_url' => 'Send URL',
+ 'username' => 'HTTP username',
+ 'password' => 'HTTP password',
+ 'content' => 'Additional POST content',
+);
+
+my $no_submit = 0;
+
+my $edit_callback = sub {
+ my ($cgi, $msg_template, $fields, $opt) = @_;
+ if ( $curuser->access_right('Edit global templates')
+ || ( $curuser->access_right('Edit templates')
+ && $msg_template
+ && $msg_template->agentnum
+ && $curuser->agentnums_href->{$msg_template->agentnum}
+ )
+ ) {
+ @$fields = (
+ { field => 'msgclass',
+ type => 'hidden',
+ value => 'http',
+ },
+ { field => 'agentnum',
+ type => 'select-agent',
+ },
+ { field => 'msgname', size=>60, required => 1 },
+ { field => 'prepare_url', size=>60, required => 1 },
+ { field => 'send_url', size=>60, required => 1 },
+ { field => 'username', size=>20 },
+ { field => 'password', size=>20 },
+ { field => 'content', type => 'textarea' },
+ );
+ } else { #readonly
+
+ $no_submit = 1;
+
+ @$fields = (
+ { field => 'agentnum',
+ type => 'select-agent',
+ fixed => 1,
+ },
+ { field => 'msgname', type => 'fixed', },
+ { field => 'prepare_url', type => 'fixed', },
+ { field => 'send_url', type => 'fixed', },
+ { field => 'username', type => 'fixed', },
+ { field => 'password', type => 'fixed', },
+ { field => 'content', type => 'fixed' },
+ );
+
+ }
+};
+
+</%init>