-<% include('/elements/header.html', "$action $svc account") %>
+<& /elements/header.html, mt("$action [_1] account",$svc) &>
-<% include('/elements/error.html') %>
+<& /elements/error.html &>
% if ( $cust_main ) {
- <% include( '/elements/small_custview.html', $cust_main, '', 1,
- popurl(2) . "view/cust_main.cgi") %>
+ <& /elements/small_custview.html, $cust_main, '', 1,
+ popurl(2) . "view/cust_main.cgi" &>
<BR>
% }
<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
<INPUT TYPE="hidden" NAME="svcpart" VALUE="<% $svcpart %>">
-Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
+% if ( $svcnum ) {
+% my $svclabel = emt("Service #[_1]",$svcnum);
+% $svclabel =~ s/$svcnum/<B>$svcnum<\/B>/;
+<% $svclabel %>
+% } else {
+<% mt("Service # (NEW)") |h %>
+% }
+<BR>
<% ntable("#cccccc",2) %>
<TR>
- <TD ALIGN="right">Service</TD>
+ <TD ALIGN="right"><% mt('Service') |h %></TD>
<TD BGCOLOR="#eeeeee"><% $part_svc->svc %></TD>
</TR>
<TR>
- <TD ALIGN="right">Username</TD>
- <TD>
- <INPUT TYPE="text" NAME="username" VALUE="<% $username %>" SIZE=<% $ulen2 %> MAXLENGTH=<% $ulen %>>
- </TD>
+ <TD ALIGN="right"><% mt('Username') |h %></TD>
+% if ( $svcnum && $conf->exists('svc_acct-no_edit_username') ) {
+ <TD BGCOLOR="#eeeeee"><% $svc_acct->username() %></TD>
+ <INPUT TYPE="hidden" NAME="username" VALUE="<% $username %>">
+% } else {
+ <TD>
+ <INPUT TYPE="text" NAME="username" VALUE="<% $username %>" SIZE=<% $ulen2 %> MAXLENGTH=<% $ulen %>>
+ </TD>
+% }
</TR>
%if ( $part_svc->part_svc_column('_password')->columnflag ne 'F' ) {
<TR>
- <TD ALIGN="right">Password</TD>
+ <TD ALIGN="right"><% mt('Password') |h %></TD>
<TD>
<INPUT TYPE="text" NAME="clear_password" VALUE="<% $password %>" SIZE=<% $pmax2 %> MAXLENGTH=<% $pmax %>>
- <INPUT TYPE="button" VALUE="Generate" onclick="randomPass();">
+ <INPUT TYPE="button" VALUE="<% mt('Generate') |h %>" onclick="randomPass();">
</TD>
</TR>
%}else{
%my $sec_phrase = $svc_acct->sec_phrase;
%if ( $conf->exists('security_phrase')
% && $part_svc->part_svc_column('sec_phrase')->columnflag ne 'F' ) {
-%
-
<TR>
- <TD ALIGN="right">Security phrase</TD>
+ <TD ALIGN="right"><% mt('Security phrase') |h %></TD>
<TD>
<INPUT TYPE="text" NAME="sec_phrase" VALUE="<% $sec_phrase %>" SIZE=32>
- (for forgotten passwords)
+ (<% mt('for forgotten passwords') |h %>)
</TD>
</TD>
% } else {
-
<INPUT TYPE="hidden" NAME="sec_phrase" VALUE="<% $sec_phrase %>">
% }
%
%if ( $part_svc->part_svc_column('domsvc')->columnflag eq 'F' ) {
%
-
<INPUT TYPE="hidden" NAME="domsvc" VALUE="<% $domsvc %>">
% } else {
%
% if ( $domsvc ) {
% my $svc_domain = qsearchs('svc_domain', { 'svcnum' => $domsvc, } );
% if ( $svc_domain ) {
-% $svc_domain{$svc_domain->svcnum} = $svc_domain;
+% $svc_domain{$svc_domain->svcnum} = $svc_domain->domain;
% } else {
% warn "unknown svc_domain.svcnum for svc_acct.domsvc: $domsvc";
% }
% 'pkgnum' => $pkgnum,
% )
% );
-%
-
<TR>
- <TD ALIGN="right">Domain</TD>
+ <TD ALIGN="right"><% mt('Domain') |h %></TD>
<TD>
<SELECT NAME="domsvc" SIZE=1>
% foreach my $svcnum (
% my $svc_domain = $svc_domain{$svcnum};
%
-
<OPTION VALUE="<% $svcnum %>" <% $svcnum == $domsvc ? ' SELECTED' : '' %>><% $svc_domain{$svcnum} %>
% }
% if ( $communigate ) {
<TR>
- <TD ALIGN="right">Aliases</TD>
+ <TD ALIGN="right"><% mt('Aliases') |h %></TD>
<TD><INPUT TYPE="text" NAME="cgp_aliases" VALUE="<% $svc_acct->cgp_aliases %>"></TD>
</TR>
% }
-<% include('/elements/tr-select-svc_pbx.html',
+<& /elements/tr-select-svc_pbx.html,
'curr_value' => $svc_acct->pbxsvc,
'part_svc' => $part_svc,
'cust_pkg' => $cust_pkg,
- )
-%>
+&>
%#pop
%my $popnum = $svc_acct->popnum || 0;
%if ( $part_svc->part_svc_column('popnum')->columnflag eq 'F' ) {
%
-
<INPUT TYPE="hidden" NAME="popnum" VALUE="<% $popnum %>">
% } else {
-
<TR>
- <TD ALIGN="right">Access number</TD>
+ <TD ALIGN="right"><% mt('Access number') |h %></TD>
<TD><% FS::svc_acct_pop::popselector($popnum) %></TD>
</TR>
% }
%
% if ( length($svc_acct->$xid()) ) {
-
<TR>
<TD ALIGN="right"><% uc($xid) %></TD>
<TD BGCOLOR="#eeeeee"><% $svc_acct->$xid() %></TD>
</TD>
</TR>
% }
-
<INPUT TYPE="hidden" NAME="<% $xid %>" VALUE="<% $svc_acct->$xid() %>">
% } else {
-
<TR>
<TD ALIGN="right"><% uc($xid) %></TD>
% && ! $svc_acct->finger ) {
%
-
<INPUT TYPE="hidden" NAME="finger" VALUE="">
% } else {
<TR>
- <TD ALIGN="right">Real Name</TD>
+ <TD ALIGN="right"><% mt('Real Name') |h %></TD>
<TD>
<INPUT TYPE="text" NAME="finger" VALUE="<% $svc_acct->finger %>">
</TD>
<TR>
- <TD ALIGN="right">Home directory</TD>
+ <TD ALIGN="right"><% mt('Home directory') |h %></TD>
<TD><INPUT TYPE="text" NAME="dir" VALUE="<% $svc_acct->dir %>"></TD>
</TR>
% }
% ) {
%
-
<INPUT TYPE="hidden" NAME="shell" VALUE="<% $shell %>">
% } else {
<TR>
- <TD ALIGN="right">Shell</TD>
+ <TD ALIGN="right"><% mt('Shell') |h %></TD>
<TD>
<SELECT NAME="shell" SIZE=1>
%
% foreach $etc_shell (@shells) {
%
-
<OPTION<% $etc_shell eq $shell ? ' SELECTED' : '' %>><% $etc_shell %>
% }
</TR>
% }
-
-% if ( $communigate
-% && $part_svc->part_svc_column('cgp_type')->columnflag ne 'F' )
-% {
-
-% # settings
-
- <TR>
- <TD ALIGN="right">Mailbox type</TD>
- <TD>
- <SELECT NAME="cgp_type">
-% foreach my $option (qw( MultiMailbox TextMailbox MailDirMailbox
-% AGrade BGrade CGrade )) {
- <OPTION VALUE="<% $option %>"
- <% $option eq $svc_acct->cgp_type() ? 'SELECTED' : '' %>
- ><% $option %>
-% }
- </SELECT>
- </TD>
- </TR>
-
-% } else {
- <INPUT TYPE="hidden" NAME="cgp_type" VALUE="<% $svc_acct->cgp_type() %>">
-% }
-
-
-% #false laziness w/svc_domain
-% if ( $communigate
-% && $part_svc->part_svc_column('cgp_accessmodes')->columnflag ne 'F' )
-% {
-
- <TR>
- <TD ALIGN="right">Enabled services</TD>
- <TD>
- <% include( '/elements/communigate_pro-accessmodes.html',
- 'curr_value' => $svc_acct->cgp_accessmodes,
- )
- %>
- </TD>
- </TR>
-
-% } else {
- <INPUT TYPE="hidden" NAME="cgp_accessmodes" VALUE="<% $svc_acct->cgp_accessmodes() |h %>">
-% }
-
-
-% if ( $part_svc->part_svc_column('quota')->columnflag eq 'F' ) {
- <INPUT TYPE="hidden" NAME="quota" VALUE="<% $svc_acct->quota %>">
-% } else {
-% my $quota_label = $communigate ? 'Mail storage limit' : 'Quota';
- <TR>
- <TD ALIGN="right"><% $quota_label %></TD>
- <TD><INPUT TYPE="text" NAME="quota" VALUE="<% $svc_acct->quota %>"></TD>
- </TR>
-% }
-
-% tie my %cgp_label, 'Tie::IxHash',
-% 'file_quota' => 'File storage limit',
-% 'file_maxnum' => 'Number of files limit',
-% 'file_maxsize' => 'File size limit',
-% ;
-%
-% foreach my $key (keys %cgp_label) {
-%
-% if ( !$communigate || $part_svc->part_svc_column($key)->columnflag eq 'F' ){
- <INPUT TYPE="hidden" NAME="<%$key%>" VALUE="<% $svc_acct->$key() |h %>">
-% } else {
-
- <TR>
- <TD ALIGN="right"><% $cgp_label{$key} %></TD>
- <TD><INPUT TYPE="text" NAME="<% $key %>" VALUE="<% $svc_acct->$key() |h %>"></TD>
- </TR>
-
-% }
-% }
-
-% if ( $communigate ) {
-
- <% include('/elements/tr-checkbox.html',
- 'label' => 'Password recovery',
- 'field' => 'password_recover',
- 'curr_value' => $svc_acct->password_recover,
- 'value' => 'Y',
- )
- %>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Allowed mail rules',
- 'field' => 'cgp_rulesallowed',
- 'options' => [ '', 'No', 'Filter Only', 'All But Exec', 'Any' ],
- 'labels' => {
- '' => 'default (No)', #No always the default?
- },
- 'curr_value' => $svc_acct->cgp_rulesallowed,
- )
- %>
-
- <% include('/elements/tr-checkbox.html',
- 'label' => 'RPOP modifications',
- 'field' => 'cgp_rpopallowed',
- 'curr_value' => $svc_acct->cgp_rpopallowed,
- 'value' => 'Y',
- )
- %>
-
- <% include('/elements/tr-checkbox.html',
- 'label' => 'Accepts mail to "all"',
- 'field' => 'cgp_mailtoall',
- 'curr_value' => $svc_acct->cgp_mailtoall,
- 'value' => 'Y',
- )
- %>
-
- <% include('/elements/tr-checkbox.html',
- 'label' => 'Add trailer to sent mail',
- 'field' => 'cgp_addmailtrailer',
- 'curr_value' => $svc_acct->cgp_addmailtrailer,
- 'value' => 'Y',
- )
- %>
-
-% #preferences
-
-%# false laziness w/svc_domain acct_def
- <TR>
- <TD ALIGN="right">Message delete method</TD>
- <TD>
- <SELECT NAME="cgp_deletemode">
-% for ( 'Move To Trash', 'Immediately', 'Mark' ) {
- <OPTION VALUE="<% $_ %>"
- <% $_ eq $svc_acct->cgp_deletemode ? 'SELECTED' : '' %>
- ><% $_ %>
-% }
- </SELECT>
- </TD>
- </TR>
-
- <TR>
- <TD ALIGN="right">On logout remove trash</TD>
- <TD><INPUT TYPE="text" NAME="cgp_emptytrash" VALUE="<% $svc_acct->cgp_emptytrash %>"></TD>
- </TR>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Language',
- 'field' => 'cgp_language',
- 'options' => [ '', qw( English Arabic Chinese Dutch French German Hebrew Italian Japanese Portuguese Russian Slovak Spanish Thai ) ],
- 'labels' => {
- '' => 'default (English)',
- },
- 'curr_value' => $svc_acct->cgp_language,
- )
- %>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Time zone',
- 'field' => 'cgp_timezone',
- 'options' => $svc_acct->cgp_timezone,
- 'labels' => {
- '' => 'default (HostOS)',
- },
- 'curr_value' => $svc_acct->cgp_timezone,
- )
- %>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Layout',
- 'field' => 'cgp_skinname',
- 'options' => [ '', '***', 'GoldFleece', 'Skin2' ],
- 'labels' => {
- '' => 'default (***)',
- },
- 'curr_value' => $svc_acct->cgp_skinname,
- )
- %>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Pronto style',
- 'field' => 'cgp_prontoskinname',
- 'options' => [ '', 'Pronto', 'Pronto-darkflame', 'Pronto-steel', 'Pronto-twilight', ],
-
- 'curr_value' => $svc_acct->cgp_prontoskinname,
- )
- %>
-
- <% include('/elements/tr-select.html',
- 'label' => 'Send read receipts',
- 'field' => 'cgp_sendmdnmode',
- 'options' => [ '', 'Never', 'Manually', 'Automatically' ],
- 'labels' => {
- '' => 'default (Automatically)',
- },
- 'curr_value' => $svc_acct->cgp_language,
- )
- %>
-
-%#XXX vacation message, redirect all mail, mail rules
-
-% } else {
-
-% for (qw( password_recover cgp_rulesallowed cgp_rpopallowed cgp_mailtoall
-% cgp_addmailtrailer
-% cgp_deletemode cgp_emptytrash cgp_language cgp_timezone
-% cgp_skinname cgp_sendmdnmode
-% ) ) {
-
- <INPUT TYPE="hidden" NAME="<% $_ %>" VALUE="<% $svc_acct->$_() %>">
-% }
-
-% }
-
+<& svc_acct/communigate.html,
+ 'svc_acct' => $svc_acct,
+ 'part_svc' => $part_svc,
+ 'communigate' => $communigate,
+&>
% if ( $part_svc->part_svc_column('slipip')->columnflag =~ /^[FA]$/ ) {
<INPUT TYPE="hidden" NAME="slipip" VALUE="<% $svc_acct->slipip %>">
% } else {
<TR>
- <TD ALIGN="right">IP</TD>
+ <TD ALIGN="right"><% mt('IP') |h %></TD>
<TD><INPUT TYPE="text" NAME="slipip" VALUE="<% $svc_acct->slipip %>"></TD>
</TR>
% }
% my $tf = $uf . "_threshold";
% if ( $curuser->access_right('Edit usage') ) {
<TR>
- <TD ALIGN="right"><% $label{$uf} %> remaining</TD>
- <TD><INPUT TYPE="text" NAME="<% $uf %>" VALUE="<% $svc_acct->$uf %>">(blank disables)</TD>
+ <TD ALIGN="right"><% mt("[_1] remaining",$label{$uf}) |h %> </TD>
+ <TD><INPUT TYPE="text" NAME="<% $uf %>" VALUE="<% $svc_acct->$uf %>">(<% mt('blank disables') |h %>)</TD>
</TR>
<TR>
- <TD ALIGN="right"><% $label{$uf} %> threshold</TD>
- <TD><INPUT TYPE="text" NAME="<% $tf %>" VALUE="<% $svc_acct->$tf %>">(blank disables)</TD>
+ <TD ALIGN="right"><% mt("[_1] threshold",$label{$uf}) |h %> </TD>
+ <TD><INPUT TYPE="text" NAME="<% $tf %>" VALUE="<% $svc_acct->$tf %>">(<% mt('blank disables') |h %>)</TD>
</TR>
% }else{
<INPUT TYPE="hidden" NAME="<% $uf %>" VALUE="<% $svc_acct->$uf %>">
%
% if ( $part_svc->part_svc_column($r)->columnflag =~ /^[FA]$/ ) {
-
<INPUT TYPE="hidden" NAME="<% $r %>" VALUE="<% $svc_acct->getfield($r) %>">
% } else {
-
<TR>
<TD ALIGN="right"><% $FS::raddb::attrib{$a} %></TD>
<TD><INPUT TYPE="text" NAME="<% $r %>" VALUE="<% $svc_acct->getfield($r) %>"></TD>
% }
-
<TR>
- <TD ALIGN="right">RADIUS groups</TD>
-% if ( $part_svc->part_svc_column('usergroup')->columnflag eq 'F' ) {
-
-
- <TD BGCOLOR="#eeeeee"><% join('<BR>', @groups) %></TD>
+ <TD ALIGN="right"><% mt('RADIUS groups') |h %></TD>
+% if ( $part_svc_usergroup->columnflag eq 'F' ) {
+ <TD BGCOLOR="#eeeeee"><% join('<BR>', @groupnames) %></TD>
% } else {
-
-
- <TD><% FS::svc_acct::radius_usergroup_selector( \@groups ) %></TD>
+% my $radius_group_selected = '';
+% if ( $svc_acct->svcnum ) {
+% $radius_group_selected = join(',',$svc_acct->radius_groups('groupnum'));
+% }
+% elsif ( !$svc_acct->svcnum && $part_svc_usergroup->columnflag eq 'D' ) {
+% $radius_group_selected = $part_svc_usergroup->columnvalue;
+% }
+ <TD><& /elements/select-radius_group.html,
+ curr_value => $radius_group_selected,
+ element_name => 'radius_usergroup',
+ multiple => 1,
+ &>
+ </TD>
% }
-
</TR>
% foreach my $field ($svc_acct->virtual_fields) {
% # If the flag is X, it won't even show up in $svc_acct->virtual_fields.
% if ( $part_svc->part_svc_column($field)->columnflag ne 'F' ) {
-
<% $svc_acct->pvf($field)->widget('HTML', 'edit', $svc_acct->getfield($field)) %>
% }
% }
-
</TABLE>
<BR>
+% if ( $captcha_url ) {
+<IMG SRC="<% $captcha_url %>"><BR>
+<% mt('Enter the word shown above:') |h %> <INPUT TYPE="text" NAME="captcha_response"><BR>
+<BR>
+% }
+
<INPUT TYPE="submit" VALUE="Submit">
</FORM>
-<% include('/elements/footer.html') %>
+<& /elements/footer.html &>
<%init>
}
+my $part_svc_usergroup = $part_svc->part_svc_column('usergroup');
#fixed radius groups always override & display
-if ( $part_svc->part_svc_column('usergroup')->columnflag eq 'F' ) {
- @groups = split(',', $part_svc->part_svc_column('usergroup')->columnvalue);
+my @groupnames; # only used for display of Fixed RADIUS groups
+if ( $part_svc_usergroup->columnflag eq 'F' ) {
+ @groups = split(',',$part_svc_usergroup->columnvalue);
+ @groupnames = map { $_->long_description }
+ qsearch({ 'table' => 'radius_group',
+ 'extra_sql' => "where groupnum in (".$part_svc_usergroup->columnvalue.")",
+ }) if length($part_svc_usergroup->columnvalue);
}
my $action = $svcnum ? 'Edit' : 'Add';
(sort(@_))[-1]
}
+my $captcha_url;
+my ($export_google) = $part_svc->part_export('acct_google');
+if ( $export_google ) {
+ my $error = $export_google->auth_error;
+ if ( $error ) {
+ if ( $error->{'captcha_url'} ) {
+ $captcha_url = $error->{'captcha_url'};
+ }
+ else {
+ $cgi->param('error', $error->{'message'});
+ }
+ } #if $error
+}
+
</%init>