summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Schema.pm4
-rw-r--r--FS/FS/part_export/communigate_pro.pm57
-rw-r--r--FS/FS/svc_acct.pm17
-rwxr-xr-xhttemplate/edit/svc_acct.cgi27
-rw-r--r--httemplate/view/svc_acct/basics.html7
5 files changed, 97 insertions, 15 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 9847a98..be8eb03 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -1641,7 +1641,9 @@ sub tables_hashref {
'password_selfchange','char', 'NULL', 1, '', '',
'password_recover', 'char', 'NULL', 1, '', '',
'cgp_type', 'varchar', 'NULL', $char_d, '', '', #AccountType
- 'cgp_aliases', 'varchar', 'NULL', 255, '', '', #AccountType
+ 'cgp_aliases', 'varchar', 'NULL', 255, '', '',
+ 'cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', #DeleteMode
+ 'cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', #EmptyTrash
],
'primary_key' => 'svcnum',
#'unique' => [ [ 'username', 'domsvc' ] ],
diff --git a/FS/FS/part_export/communigate_pro.pm b/FS/FS/part_export/communigate_pro.pm
index c31aea3..e07010b 100644
--- a/FS/FS/part_export/communigate_pro.pm
+++ b/FS/FS/part_export/communigate_pro.pm
@@ -78,10 +78,6 @@ sub _export_insert_svc_acct {
map { $quotas{$_} => $svc_acct->$_() }
grep $svc_acct->$_(), keys %quotas
);
-
- #XXX preferences phase 1: message delete method, on logout remove trash
- #phase 2: language, time zone, layout, pronto style, send read receipts
-
#phase 2: pwdallowed, passwordrecovery, allowed mail rules,
# RPOP modifications, accepts mail to all, add trailer to sent mail
#phase 3: archive messages, mailing lists
@@ -97,16 +93,36 @@ sub _export_insert_svc_acct {
if $self->option('externalFlag');
#let's do the create realtime too, for much the same reasons, and to avoid
- #pain of trying to queue w/dep the aliases
+ #pain of trying to queue w/dep the prefs & aliases
#my $r=
eval { $self->communigate_pro_runcommand( @options ) };
return $@ if $@;
- my $err= $self->communigate_pro_queue( $svc_acct->svcnum, 'SetAccountAliases',
- $self->export_username($svc_acct),
- [ split(/\s*,\s*/, $svc_acct->cgp_aliases) ],
- );
- warn "WARNING: error queueing SetAccountAliases job: $err" if $err;
+ #preferences
+ my %prefs = ();
+ $prefs{'DeleteMode'} = $svc_acct->cgp_deletemode if $svc_acct->cgp_deletemode;
+ $prefs{'EmptyTrash'} = $svc_acct->cgp_emptytrash if $svc_acct->cgp_emptytrash;
+ #phase 2: language, time zone, layout, pronto style, send read receipts
+ if ( keys %prefs ) {
+ my $pref_err = $self->communigate_pro_queue( $svc_acct->svcnum,
+ 'UpdateAccountPrefs',
+ $self->export_username($svc_acct),
+ %prefs,
+ );
+ warn "WARNING: error queueing UpdateAccountPrefs job: $pref_err"
+ if $pref_err;
+ }
+
+ #aliases
+ if ( $svc_acct->cgp_aliases ) {
+ my $alias_err = $self->communigate_pro_queue( $svc_acct->svcnum,
+ 'SetAccountAliases',
+ $self->export_username($svc_acct),
+ [ split(/\s*,\s*/, $svc_acct->cgp_aliases) ],
+ );
+ warn "WARNING: error queueing SetAccountAliases job: $alias_err"
+ if $alias_err;
+ }
'';
@@ -187,6 +203,23 @@ sub _export_replace_svc_acct {
return $error if $error;
}
+ #preferences
+ my %prefs = ();
+ $prefs{'DeleteMode'} = $new->cgp_deletemode
+ if $old->cgp_deletemode ne $new->cgp_deletemode;
+ $prefs{'EmptyTrash'} = $new->cgp_emptytrash
+ if $old->cgp_emptytrash ne $new->cgp_emptytrash;
+ #phase 2: language, time zone, layout, pronto style, send read receipts
+ if ( keys %prefs ) {
+ my $pref_err = $self->communigate_pro_queue( $new->svcnum,
+ 'UpdateAccountPrefs',
+ $self->export_username($new),
+ %prefs,
+ );
+ warn "WARNING: error queueing UpdateAccountPrefs job: $pref_err"
+ if $pref_err;
+ }
+
if ( $old->cgp_aliases ne $new->cgp_aliases ) {
my $error = $self->communigate_pro_queue(
$new->svcnum,
@@ -197,9 +230,6 @@ sub _export_replace_svc_acct {
return $error if $error;
}
- #XXX preferences phase 1: message delete method, on logout remove trash
- #phase 2: language, time zone, layout, pronto style, send read receipts
-
'';
}
@@ -467,6 +497,7 @@ sub communigate_pro_queue_dep {
my %kludge_methods = (
'CreateAccount' => 'CreateAccount',
'UpdateAccountSettings' => 'UpdateAccountSettings',
+ 'UpdateAccountPrefs' => 'cp_Scalar_Hash',
'CreateDomain' => 'cp_Scalar_Hash',
'CreateSharedDomain' => 'cp_Scalar_Hash',
'UpdateDomainSettings' => 'UpdateDomainSettings',
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index 54d443c..2887e28 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -274,7 +274,7 @@ sub table_info {
'cgp_type'=> {
label => 'Communigate account type',
type => 'select',
- select_list => [ ],
+ select_list => [qw( MultiMailbox TextMailbox MailDirMailbox AGrade BGrade CGrade )],
disable_inventory => 1,
disable_select => 1,
},
@@ -284,6 +284,19 @@ sub table_info {
disable_inventory => 1,
disable_select => 1,
},
+ 'cgp_deletemode' => {
+ label => 'Communigate message delete method',
+ type => 'select',
+ select_list => [ 'Move To Trash', 'Immediately', 'Mark' ],
+ disable_inventory => 1,
+ disable_select => 1,
+ },
+ 'cgp_emptytrash' => {
+ label => 'Communigate on logout remove trash',
+ type => 'text',
+ disable_inventory => 1,
+ disable_select => 1,
+ },
'quota' => {
label => 'Quota', #Mail storage limit
type => 'text',
@@ -1101,6 +1114,8 @@ sub check {
|| $self->ut_textn( 'cgp_accessmodes' )
|| $self->ut_alphan( 'cgp_type' )
|| $self->ut_textn( 'cgp_aliases' ) #well
+ || $self->ut_alphasn( 'cgp_deletemode' )
+ || $self->ut_alphan( 'cgp_emptytrash' )
;
return $error if $error;
diff --git a/httemplate/edit/svc_acct.cgi b/httemplate/edit/svc_acct.cgi
index f44147f..c842b1b 100755
--- a/httemplate/edit/svc_acct.cgi
+++ b/httemplate/edit/svc_acct.cgi
@@ -328,6 +328,33 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
% }
% }
+% if ( $communigate ) {
+
+ <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>
+
+% } else {
+
+ <INPUT TYPE="hidden" NAME="cgp_deletemode" VALUE="<% $svc_acct->cgp_deletemode %>">
+ <INPUT TYPE="hidden" NAME="cgp_emptytrash" VALUE="<% $svc_acct->cgp_emptytrash %>">
+
+% }
+
% if ( $part_svc->part_svc_column('slipip')->columnflag =~ /^[FA]$/ ) {
<INPUT TYPE="hidden" NAME="slipip" VALUE="<% $svc_acct->slipip %>">
diff --git a/httemplate/view/svc_acct/basics.html b/httemplate/view/svc_acct/basics.html
index 2b05e78..0159a7e 100644
--- a/httemplate/view/svc_acct/basics.html
+++ b/httemplate/view/svc_acct/basics.html
@@ -85,6 +85,13 @@
<% include('tr.html', label=>'File size limit',
value=>$svc_acct->file_maxsize ) %>
+ <% include('tr.html', label=>'Message delete method',
+ value=>$svc_acct->cgp_deletemode ) %>
+
+ <% include('tr.html', label=>'On logout remove trash',
+ value=>$svc_acct->cgp_emptytrash ) %>
+
+
% }
% if ($svc_acct->slipip) {