communigate phase 3: archive messages, RT#7515
authorivan <ivan>
Fri, 6 Aug 2010 21:31:04 +0000 (21:31 +0000)
committerivan <ivan>
Fri, 6 Aug 2010 21:31:04 +0000 (21:31 +0000)
FS/FS/part_export/communigate_pro.pm
FS/FS/svc_acct.pm
httemplate/edit/part_svc.cgi
httemplate/edit/svc_acct.cgi
httemplate/edit/svc_acct/communigate.html [new file with mode: 0644]
httemplate/edit/svc_domain.cgi
httemplate/edit/svc_domain/communigate-acct_defaults.html [new file with mode: 0644]
httemplate/edit/svc_domain/communigate-basics.html [new file with mode: 0644]
httemplate/view/svc_acct/communigate.html
httemplate/view/svc_domain/acct_defaults.html

index 2cad244..3e1213e 100644 (file)
@@ -85,10 +85,12 @@ sub _export_insert_svc_acct {
     'MailToAll'        =>($svc_acct->cgp_mailtoall      ?'YES':'NO'),
     'AddMailTrailer'   =>($svc_acct->cgp_addmailtrailer ?'YES':'NO'),
 
+    'ArchiveMessagesAfter' => $svc_acct->cgp_archiveafter,
+
     map { $quotas{$_} => $svc_acct->$_() }
         grep $svc_acct->$_(), keys %quotas
   );
-  #XXX phase 3: archive messages, mailing lists
+  #XXX phase 3: mailing lists
 
   my @options = ( 'CreateAccount',
     'accountName'    => $self->export_username($svc_acct),
@@ -194,6 +196,7 @@ sub _export_insert_svc_domain {
     'RPOPAllowed'      =>($svc_domain->acct_def_cgp_rpopallowed    ?'YES':'NO'),
     'MailToAll'        =>($svc_domain->acct_def_cgp_mailtoall      ?'YES':'NO'),
     'AddMailTrailer'   =>($svc_domain->acct_def_cgp_addmailtrailer ?'YES':'NO'),
+    'ArchiveMessagesAfter' => $svc_domain->acct_def_cgp_archiveafter,
   );
   warn "WARNING: error queueing SetAccountDefaults job: $def_err"
     if $def_err;
@@ -318,8 +321,10 @@ sub _export_replace_svc_acct {
     if $old->cgp_mailtoall ne $new->cgp_mailtoall;
   $settings{'AddMailTrailer'} = ( $new->cgp_addmailtrailer ? 'YES':'NO' )
     if $old->cgp_addmailtrailer ne $new->cgp_addmailtrailer;
+  $settings{'ArchiveMessagesAfter'} = $new->cgp_archiveafter
+    if $old->cgp_archiveafter ne $new->cgp_archiveafter;
 
-  #XXX phase 3: archive messages, mailing lists
+  #XXX phase 3: mailing lists
 
   if ( keys %settings ) {
     my $error = $self->communigate_pro_queue(
@@ -441,6 +446,7 @@ sub _export_replace_svc_domain {
     'RPOPAllowed'      => ( $new->acct_def_cgp_rpopallowed    ? 'YES' : 'NO' ),
     'MailToAll'        => ( $new->acct_def_cgp_mailtoall      ? 'YES' : 'NO' ),
     'AddMailTrailer'   => ( $new->acct_def_cgp_addmailtrailer ? 'YES' : 'NO' ),
+    'ArchiveMessagesAfter' => $new->acct_def_cgp_archiveafter,
   );
   warn "WARNING: error queueing SetAccountDefaults job: $def_err"
     if $def_err;
index 707b33a..801c465 100644 (file)
@@ -444,19 +444,19 @@ sub table_info {
           label       => 'Archive messages after',
           type        => 'select',
           select_hash => [ 
-                           -2 => 'default(730 day(s))',
+                           -2 => 'default(730 days)',
                            0 => 'Never',
-                           86400 => '24 hour(s)',
-                           172800 => '2 day(s)',
-                           259200 => '3 day(s)',
-                           432000 => '5 day(s)',
-                           604800 => '7 day(s)',
-                           1209600 => '2 week(s)',
-                           2592000 => '30 day(s)',
-                           7776000 => '90 day(s)',
-                           15552000 => '180 day(s)',
-                           31536000 => '365 day(s)',
-                           63072000 => '730 day(s)',
+                           86400 => '24 hours',
+                           172800 => '2 days',
+                           259200 => '3 days',
+                           432000 => '5 days',
+                           604800 => '7 days',
+                           1209600 => '2 weeks',
+                           2592000 => '30 days',
+                           7776000 => '90 days',
+                           15552000 => '180 days',
+                           31536000 => '365 days',
+                           63072000 => '730 days',
                          ],
           disable_inventory => 1,
           disable_select    => 1,
index 7f2e3aa..940ea8d 100755 (executable)
@@ -298,10 +298,10 @@ that field.
 %                    $item. '</OPTION>';
 %            } #next $item
 %          } elsif ( $def->{select_hash} ) {
-%            $def->{select_hash} = tie %{ $def->{select_hash} },
-%                                      'Tie::IxHash',
-%                                      @{ $def->{select_hash} }
-%                if ref($def->{select_hash}) eq 'ARRAY';
+%            if ( ref($def->{select_hash}) eq 'ARRAY' ) {
+%              tie my %hash, 'Tie::IxHash', @{ $def->{select_hash} };
+%              $def->{select_hash} = \%hash;
+%            }
 %            foreach my $key ( keys %{$def->{select_hash}} ) {
 %              $html .= qq!<OPTION VALUE="$key"!.
 %                    (grep(/^$key$/, split(',',$value)) ? ' SELECTED>' : '>' ).
index 59b5d10..0a191b4 100755 (executable)
@@ -255,222 +255,12 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
   </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>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'On logout remove trash',
-               'field'      => 'cgp_emptytrash',
-               'options'    => $svc_acct->cgp_emptytrash_values,
-               'labels'     => {
-                                 '' => 'default (92 days)', #right?
-                               },
-               'curr_value' => $svc_acct->cgp_emptytrash,
-            )
-  %>
-
-  <% 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_values,
-               '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->$_() %>">
-%   }
-
-% }
-
+<% include('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 %>">
diff --git a/httemplate/edit/svc_acct/communigate.html b/httemplate/edit/svc_acct/communigate.html
new file mode 100644 (file)
index 0000000..6370a54
--- /dev/null
@@ -0,0 +1,249 @@
+% 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',
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Archive messages after',
+               'field'      => 'cgp_archiveafter',
+               'options'    => [ '', 0, 86400, 172800, 259200, 432000, 604800,
+                                 1209600, 2592000, 7776000, 15552000, 31536000,
+                                 63072000
+                               ],
+               'labels'     => {
+                                 '' => 'default (730 days)',#730 always default?
+                                  0 => 'Never',
+                                  86400 => '24 hours',
+                                  172800 => '2 days',
+                                  259200 => '3 days',
+                                  432000 => '5 days',
+                                  604800 => '7 days',
+                                  1209600 => '2 weeks',
+                                  2592000 => '30 days',
+                                  7776000 => '90 days',
+                                  15552000 => '180 days',
+                                  31536000 => '365 days',
+                                  63072000 => '730 days',
+                               },
+               'curr_value' => $svc_acct->cgp_archiveafter,
+            )
+  %>
+
+%  #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>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'On logout remove trash',
+               'field'      => 'cgp_emptytrash',
+               'options'    => $svc_acct->cgp_emptytrash_values,
+               'labels'     => {
+                                 '' => 'default (92 days)', #right?
+                               },
+               'curr_value' => $svc_acct->cgp_emptytrash,
+            )
+  %>
+
+  <% 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_values,
+               '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,
+            )
+  %>
+
+% } 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->$_() %>">
+%   }
+
+% }
+
+<%init>
+
+my %opt = @_;
+
+my $svc_acct = $opt{'svc_acct'};
+my $part_svc = $opt{'part_svc'};
+
+my $communigate = $opt{'communigate'};
+
+</%init>
index 5abe9d6..54a933d 100755 (executable)
@@ -16,6 +16,7 @@
       <INPUT TYPE="text" NAME="domain" VALUE="<% $domain %>" SIZE=28 MAXLENGTH=63>
 %   } else {
       <B><% $domain %></B>
+      <INPUT TYPE="hidden" NAME="domain" VALUE="<% $domain %>">
 %   }
 
 % if ($export) {
@@ -38,269 +39,22 @@ Available top-level domains: <% $export->option('tlds') %>
   </TD>
 </TR>
 
-% if ( $communigate ) {
-  <TR>
-    <TD ALIGN="right">Administrator domain</TD>
-    <TD>
-      <% include('/elements/select-domain.html',
-                   'element_name' => 'parent_svcnum',
-                   'curr_value'   => $svc_domain->parent_svcnum,
-                   'empty_label'  => '(none)',
-                )
-      %>
-    </TD>
-  </TR>
-% } else {
-  <INPUT TYPE="hidden" NAME="parent_svcnum" VALUE="<% $svc_domain->parent_svcnum %>">
-% }
-
-% if ( $communigate
-%      && $part_svc->part_svc_column('cgp_aliases')->columnflag !~ /^[FA]$/ ) {
-
-    <TR>
-      <TD ALIGN="right">Aliases</TD>
-      <TD><INPUT TYPE="text" NAME="cgp_aliases" VALUE="<% $svc_domain->cgp_aliases %>"></TD>
-    </TR>
-
-% } else {
-    <INPUT TYPE="hidden" NAME="cgp_aliases" VALUE="<% $svc_domain->cgp_aliases %>">
-% }
-
-% if ( $part_svc->part_svc_column('max_accounts')->columnflag =~ /^[FA]$/ ) {
-    <INPUT TYPE="hidden" NAME="max_accounts" VALUE="<% $svc_domain->max_accounts %>">
-% } else {
-    <TR>
-      <TD ALIGN="right">Maximum number of accounts</TD>
-      <TD>
-        <INPUT TYPE="text" NAME="max_accounts" SIZE=5 MAXLENGTH=6 VALUE="<% $svc_domain->max_accounts %>">
-      </TD>
-    </TR>
-% }
-
-% 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_domain->cgp_accessmodes,
-                )
-      %>
-    </TD>
-  </TR>
-
-% } else {
-    <INPUT TYPE="hidden" NAME="cgp_accessmodes" VALUE="<% $svc_domain->cgp_accessmodes() |h %>">
-% }
-
-% if ( $communigate
-%      && $part_svc->part_svc_column('trailer')->columnflag ne 'F' )
-% {
-
-  <TR>
-    <TD ALIGN="right">Mail trailer</TD>
-    <TD>
-      <TEXTAREA NAME="trailer" ROWS=5 COLS=60><% $svc_domain->trailer() |h %></TEXTAREA>
-    </TD>
-  </TR>
-
-% } else {
-    <INPUT TYPE="hidden" NAME="trailer" VALUE="<% $svc_domain->trailer() |h %>">
-% }
-
-
-</TABLE>
-<BR>
-
-% if ( $communigate ) {
-
-Account defaults
-<% ntable("#cccccc",2) %>
-
-  <% include('/elements/tr-checkbox.html',
-               'label'      => 'Password modification',
-               'field'      => 'acct_def_password_selfchange',
-               'curr_value' => $svc_domain->acct_def_password_selfchange,
-               'value'      => 'Y',
-            )
-  %>
-
-  <% include('/elements/tr-checkbox.html',
-               'label'      => 'Password recovery',
-               'field'      => 'acct_def_password_recover',
-               'curr_value' => $svc_domain->acct_def_password_recover,
-               'value'      => 'Y',
-            )
-  %>
-
-  <TR>
-    <TD ALIGN="right">Enabled services
-    </TD>
-    <TD><% include('/elements/communigate_pro-accessmodes.html',
-                     'element_name_prefix' => 'acct_def_cgp_accessmodes_',
-                     'curr_value' => $svc_domain->acct_def_cgp_accessmodes,
-                  )
-        %>
-    </TD>
-  </TR>
-
-  <% include('/elements/tr-input-text.html',
-               'label'      => 'Mail storage limit',
-               'field'      => 'acct_def_quota',
-               'curr_value' => $svc_domain->acct_def_quota,
-            )
-  %>
-  <% include('/elements/tr-input-text.html',
-               'label'      => 'File storage limit',
-               'field'      => 'acct_def_file_quota',
-               'curr_value' => $svc_domain->acct_def_file_quota,
-            )
-  %>
-  <% include('/elements/tr-input-text.html',
-               'label'      => 'Files limit',
-               'field'      => 'acct_def_file_maxnum',
-               'curr_value' => $svc_domain->acct_def_file_maxnum,
-            )
-  %>
-  <% include('/elements/tr-input-text.html',
-               'label'      => 'File size limit',
-               'field'      => 'acct_def_file_maxsize',
-               'curr_value' => $svc_domain->acct_def_file_maxsize,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Allowed mail rules',
-               'field'      => 'acct_def_cgp_rulesallowed',
-               'options'    => [ '', 'No', 'Filter Only', 'All But Exec', 'Any' ],
-               'labels'     => {
-                                 '' => 'default (No)', #No always the default?
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_rulesallowed,
-            )
-  %>
-
-  <% include('/elements/tr-checkbox.html',
-               'label'      => 'RPOP modifications',
-               'field'      => 'acct_def_cgp_rpopallowed',
-               'curr_value' => $svc_domain->acct_def_cgp_rpopallowed,
-               'value'      => 'Y',
-            )
-  %>
-
-  <% include('/elements/tr-checkbox.html',
-               'label'      => 'Accepts mail to "all"',
-               'field'      => 'acct_def_cgp_mailtoall',
-               'curr_value' => $svc_domain->acct_def_cgp_mailtoall,
-               'value'      => 'Y',
-            )
-  %>
-
-  <% include('/elements/tr-checkbox.html',
-               'label'      => 'Add trailer to sent mail',
-               'field'      => 'acct_def_cgp_addmailtrailer',
-               'curr_value' => $svc_domain->acct_def_cgp_addmailtrailer,
-               'value'      => 'Y',
-            )
-  %>
-
-%# false laziness w/svc_acct acct_def
-  <TR>
-    <TD ALIGN="right">Message delete method</TD>
-    <TD>
-      <SELECT NAME="acct_def_cgp_deletemode">
-%       for ( 'Move To Trash', 'Immediately', 'Mark' ) {
-          <OPTION VALUE="<% $_ %>"
-                  <% $_ eq $svc_domain->acct_def_cgp_deletemode ? 'SELECTED' : '' %>
-          ><% $_ %>
-%       }
-      </SELECT>
-    </TD>
-  </TR>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'On logout remove trash',
-               'field'      => 'acct_def_cgp_emptytrash',
-               'options'    => $svc_domain->cgp_emptytrash_values,
-               'labels'     => {
-                                 '' => 'default (92 days)', #right?
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_emptytrash,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Language',
-               'field'      => 'acct_def_cgp_language',
-               'options'    => [ '', qw( English Arabic Chinese Dutch French German Hebrew Italian Japanese Portuguese Russian Slovak Spanish Thai ) ],
-               'labels'     => {
-                                 '' => 'default (English)',
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_language,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Time zone',
-               'field'      => 'acct_def_cgp_timezone',
-               'options'    => $svc_domain->cgp_timezone_values,
-               'labels'     => {
-                                 '' => 'default (HostOS)',
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_timezone,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Layout',
-               'field'      => 'acct_def_cgp_skinname',
-               'options'    => [ '', '***', 'GoldFleece', 'Skin2' ],
-               'labels'     => {
-                                 '' => 'default (***)',
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_skinname,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Pronto style',
-               'field'      => 'acct_def_cgp_prontoskinname',
-               'options'    =>  [ '', 'Pronto', 'Pronto-darkflame', 'Pronto-steel', 'Pronto-twilight', ],
-               'curr_value' => $svc_domain->acct_def_cgp_prontoskinname,
-            )
-  %>
-
-  <% include('/elements/tr-select.html',
-               'label'      => 'Send read receipts',
-               'field'      => 'acct_def_cgp_sendmdnmode',
-               'options'    => [ '', 'Never', 'Manually', 'Automatically' ],
-               'labels'     => {
-                                 '' => 'default (Automatically)',
-                               },
-               'curr_value' => $svc_domain->acct_def_cgp_language,
-            )
-  %>
-
-%              #XXX rules, archive rule, spam foldering rule(s)
+<% include('svc_domain/communigate-basics.html',
+             'svc_domain'  => $svc_domain,
+             'part_svc'    => $part_svc,
+             'communigate' => $communigate,
+          )
+%>
 
 </TABLE>
 <BR>
 
-% } else {
-
-%   foreach my $f (qw( password_selfchange password_recover cgp_accessmodes
-%                      quota file_quota file_maxnum file_maxsize
-%                      cgp_rulesallowed cgp_rpopallowed cgp_mailtoall
-%                      cgp_addmailtrailer
-%                      cgp_deletemode cgp_emptytrash cgp_language
-%                      cgp_timezone cgp_skinname cgp_sendmdnmode
-%                 )) {
-      <INPUT TYPE="hidden" NAME="acct_def_<%$f%>" VALUE="<% $svc_domain->get("acct_def_$f") %>">
-%   }
-
-% }
+<% include('svc_domain/communigate-acct_defaults.html',
+             'svc_domain'  => $svc_domain,
+             'part_svc'    => $part_svc,
+             'communigate' => $communigate,
+          )
+%>
 
 <INPUT TYPE="submit" VALUE="Submit">
 
diff --git a/httemplate/edit/svc_domain/communigate-acct_defaults.html b/httemplate/edit/svc_domain/communigate-acct_defaults.html
new file mode 100644 (file)
index 0000000..3426a8e
--- /dev/null
@@ -0,0 +1,223 @@
+% if ( $communigate ) {
+
+Account defaults
+<% ntable("#cccccc",2) %>
+
+  <% include('/elements/tr-checkbox.html',
+               'label'      => 'Password modification',
+               'field'      => 'acct_def_password_selfchange',
+               'curr_value' => $svc_domain->acct_def_password_selfchange,
+               'value'      => 'Y',
+            )
+  %>
+
+  <% include('/elements/tr-checkbox.html',
+               'label'      => 'Password recovery',
+               'field'      => 'acct_def_password_recover',
+               'curr_value' => $svc_domain->acct_def_password_recover,
+               'value'      => 'Y',
+            )
+  %>
+
+  <TR>
+    <TD ALIGN="right">Enabled services
+    </TD>
+    <TD><% include('/elements/communigate_pro-accessmodes.html',
+                     'element_name_prefix' => 'acct_def_cgp_accessmodes_',
+                     'curr_value' => $svc_domain->acct_def_cgp_accessmodes,
+                  )
+        %>
+    </TD>
+  </TR>
+
+  <% include('/elements/tr-input-text.html',
+               'label'      => 'Mail storage limit',
+               'field'      => 'acct_def_quota',
+               'curr_value' => $svc_domain->acct_def_quota,
+            )
+  %>
+  <% include('/elements/tr-input-text.html',
+               'label'      => 'File storage limit',
+               'field'      => 'acct_def_file_quota',
+               'curr_value' => $svc_domain->acct_def_file_quota,
+            )
+  %>
+  <% include('/elements/tr-input-text.html',
+               'label'      => 'Files limit',
+               'field'      => 'acct_def_file_maxnum',
+               'curr_value' => $svc_domain->acct_def_file_maxnum,
+            )
+  %>
+  <% include('/elements/tr-input-text.html',
+               'label'      => 'File size limit',
+               'field'      => 'acct_def_file_maxsize',
+               'curr_value' => $svc_domain->acct_def_file_maxsize,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Allowed mail rules',
+               'field'      => 'acct_def_cgp_rulesallowed',
+               'options'    => [ '', 'No', 'Filter Only', 'All But Exec', 'Any' ],
+               'labels'     => {
+                                 '' => 'default (No)', #No always the default?
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_rulesallowed,
+            )
+  %>
+
+  <% include('/elements/tr-checkbox.html',
+               'label'      => 'RPOP modifications',
+               'field'      => 'acct_def_cgp_rpopallowed',
+               'curr_value' => $svc_domain->acct_def_cgp_rpopallowed,
+               'value'      => 'Y',
+            )
+  %>
+
+  <% include('/elements/tr-checkbox.html',
+               'label'      => 'Accepts mail to "all"',
+               'field'      => 'acct_def_cgp_mailtoall',
+               'curr_value' => $svc_domain->acct_def_cgp_mailtoall,
+               'value'      => 'Y',
+            )
+  %>
+
+  <% include('/elements/tr-checkbox.html',
+               'label'      => 'Add trailer to sent mail',
+               'field'      => 'acct_def_cgp_addmailtrailer',
+               'curr_value' => $svc_domain->acct_def_cgp_addmailtrailer,
+               'value'      => 'Y',
+            )
+  %>
+
+%# more false laziness w/svc_acct acct_def
+  <% include('/elements/tr-select.html',
+               'label'      => 'Archive messages after',
+               'field'      => 'acct_def_cgp_archiveafter',
+               'options'    => [ '', 0, 86400, 172800, 259200, 432000, 604800,
+                                 1209600, 2592000, 7776000, 15552000, 31536000,
+                                 63072000
+                               ],
+               'labels'     => {
+                                 '' => 'default (730 days)',#730 always default?
+                                  0 => 'Never',
+                                  86400 => '24 hours',
+                                  172800 => '2 days',
+                                  259200 => '3 days',
+                                  432000 => '5 days',
+                                  604800 => '7 days',
+                                  1209600 => '2 weeks',
+                                  2592000 => '30 days',
+                                  7776000 => '90 days',
+                                  15552000 => '180 days',
+                                  31536000 => '365 days',
+                                  63072000 => '730 days',
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_archiveafter,
+            )
+  %>
+
+%# false laziness w/svc_acct acct_def
+  <TR>
+    <TD ALIGN="right">Message delete method</TD>
+    <TD>
+      <SELECT NAME="acct_def_cgp_deletemode">
+%       for ( 'Move To Trash', 'Immediately', 'Mark' ) {
+          <OPTION VALUE="<% $_ %>"
+                  <% $_ eq $svc_domain->acct_def_cgp_deletemode ? 'SELECTED' : '' %>
+          ><% $_ %>
+%       }
+      </SELECT>
+    </TD>
+  </TR>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'On logout remove trash',
+               'field'      => 'acct_def_cgp_emptytrash',
+               'options'    => $svc_domain->cgp_emptytrash_values,
+               'labels'     => {
+                                 '' => 'default (92 days)', #right?
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_emptytrash,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Language',
+               'field'      => 'acct_def_cgp_language',
+               'options'    => [ '', qw( English Arabic Chinese Dutch French German Hebrew Italian Japanese Portuguese Russian Slovak Spanish Thai ) ],
+               'labels'     => {
+                                 '' => 'default (English)',
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_language,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Time zone',
+               'field'      => 'acct_def_cgp_timezone',
+               'options'    => $svc_domain->cgp_timezone_values,
+               'labels'     => {
+                                 '' => 'default (HostOS)',
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_timezone,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Layout',
+               'field'      => 'acct_def_cgp_skinname',
+               'options'    => [ '', '***', 'GoldFleece', 'Skin2' ],
+               'labels'     => {
+                                 '' => 'default (***)',
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_skinname,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Pronto style',
+               'field'      => 'acct_def_cgp_prontoskinname',
+               'options'    =>  [ '', 'Pronto', 'Pronto-darkflame', 'Pronto-steel', 'Pronto-twilight', ],
+               'curr_value' => $svc_domain->acct_def_cgp_prontoskinname,
+            )
+  %>
+
+  <% include('/elements/tr-select.html',
+               'label'      => 'Send read receipts',
+               'field'      => 'acct_def_cgp_sendmdnmode',
+               'options'    => [ '', 'Never', 'Manually', 'Automatically' ],
+               'labels'     => {
+                                 '' => 'default (Automatically)',
+                               },
+               'curr_value' => $svc_domain->acct_def_cgp_language,
+            )
+  %>
+
+</TABLE>
+<BR>
+
+% } else {
+
+%   foreach my $f (qw( password_selfchange password_recover cgp_accessmodes
+%                      quota file_quota file_maxnum file_maxsize
+%                      cgp_rulesallowed cgp_rpopallowed cgp_mailtoall
+%                      cgp_addmailtrailer
+%                      cgp_deletemode cgp_emptytrash cgp_language
+%                      cgp_timezone cgp_skinname cgp_sendmdnmode
+%                 )) {
+      <INPUT TYPE="hidden" NAME="acct_def_<%$f%>" VALUE="<% $svc_domain->get("acct_def_$f") %>">
+%   }
+
+% }
+
+<%init>
+
+my %opt = @_;
+
+my $svc_domain = $opt{'svc_domain'};
+my $part_svc = $opt{'part_svc'};
+
+my $communigate = $opt{'communigate'};
+
+</%init>
diff --git a/httemplate/edit/svc_domain/communigate-basics.html b/httemplate/edit/svc_domain/communigate-basics.html
new file mode 100644 (file)
index 0000000..ff401c0
--- /dev/null
@@ -0,0 +1,82 @@
+% if ( $communigate ) {
+  <TR>
+    <TD ALIGN="right">Administrator domain</TD>
+    <TD>
+      <% include('/elements/select-domain.html',
+                   'element_name' => 'parent_svcnum',
+                   'curr_value'   => $svc_domain->parent_svcnum,
+                   'empty_label'  => '(none)',
+                )
+      %>
+    </TD>
+  </TR>
+% } else {
+  <INPUT TYPE="hidden" NAME="parent_svcnum" VALUE="<% $svc_domain->parent_svcnum %>">
+% }
+
+% if ( $communigate
+%      && $part_svc->part_svc_column('cgp_aliases')->columnflag !~ /^[FA]$/ ) {
+
+    <TR>
+      <TD ALIGN="right">Aliases</TD>
+      <TD><INPUT TYPE="text" NAME="cgp_aliases" VALUE="<% $svc_domain->cgp_aliases %>"></TD>
+    </TR>
+
+% } else {
+    <INPUT TYPE="hidden" NAME="cgp_aliases" VALUE="<% $svc_domain->cgp_aliases %>">
+% }
+
+% if ( $part_svc->part_svc_column('max_accounts')->columnflag =~ /^[FA]$/ ) {
+    <INPUT TYPE="hidden" NAME="max_accounts" VALUE="<% $svc_domain->max_accounts %>">
+% } else {
+    <TR>
+      <TD ALIGN="right">Maximum number of accounts</TD>
+      <TD>
+        <INPUT TYPE="text" NAME="max_accounts" SIZE=5 MAXLENGTH=6 VALUE="<% $svc_domain->max_accounts %>">
+      </TD>
+    </TR>
+% }
+
+% 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_domain->cgp_accessmodes,
+                )
+      %>
+    </TD>
+  </TR>
+
+% } else {
+    <INPUT TYPE="hidden" NAME="cgp_accessmodes" VALUE="<% $svc_domain->cgp_accessmodes() |h %>">
+% }
+
+% if ( $communigate
+%      && $part_svc->part_svc_column('trailer')->columnflag ne 'F' )
+% {
+
+  <TR>
+    <TD ALIGN="right">Mail trailer</TD>
+    <TD>
+      <TEXTAREA NAME="trailer" ROWS=5 COLS=60><% $svc_domain->trailer() |h %></TEXTAREA>
+    </TD>
+  </TR>
+
+% } else {
+    <INPUT TYPE="hidden" NAME="trailer" VALUE="<% $svc_domain->trailer() |h %>">
+% }
+
+<%init>
+
+my %opt = @_;
+
+my $svc_domain = $opt{'svc_domain'};
+my $part_svc = $opt{'part_svc'};
+
+my $communigate = $opt{'communigate'};
+
+</%init>
index 870744a..ece1724 100644 (file)
   <% include('/view/elements/tr.html', label=>'Add trailer to sent mail',
                         value=>$svc_acct->cgp_addmailtrailer ? 'YES' : 'NO' ) %>
 
+% my $archive_after = $svc_acct->cgp_archiveafter;
+% $archive_after =
+%   $archive_after
+%     ? ( $archive_after / 86400 ). ' days'
+%     : ( $archive_after eq '0' ? 'Never' : 'default (730 days)' );
+  <% include('/view/elements/tr.html', label=>'Archive messages after',
+                        value=>$archive_after, ) %>
+
 %# preferences
 
   <% include('/view/elements/tr.html', label=>'Message delete method',
index 3a4e187..b561282 100644 (file)
             )
   %>
 
+% my $archive_after = $svc_domain->acct_def_cgp_archiveafter;
+% $archive_after =
+%   $archive_after
+%     ? ( $archive_after / 86400 ). ' days'
+%     : ( $archive_after eq '0' ? 'Never' : 'default (730 days)' );
+  <% include('/view/elements/tr.html', label=>'Archive messages after',
+                        value=>$archive_after, ) %>
+
 %# preferences
 
   <% include('/view/elements/tr.html',