communigate, RT#7083
authorivan <ivan>
Sun, 21 Feb 2010 09:19:05 +0000 (09:19 +0000)
committerivan <ivan>
Sun, 21 Feb 2010 09:19:05 +0000 (09:19 +0000)
FS/FS/Schema.pm
FS/FS/part_export/communigate_pro.pm
FS/FS/svc_acct.pm
httemplate/edit/svc_acct.cgi
httemplate/view/svc_acct/basics.html

index 9847a98..be8eb03 100644 (file)
@@ -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' ] ],
index c31aea3..e07010b 100644 (file)
@@ -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',
index 54d443c..2887e28 100644 (file)
@@ -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;
 
index f44147f..c842b1b 100755 (executable)
@@ -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 %>">
index 2b05e78..0159a7e 100644 (file)
   <% 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) {