communigate (phase 2): Account Preferences (& Domain::Account Defaults:Preferences...
[freeside.git] / httemplate / edit / svc_acct.cgi
index 0254ec1..5c2d5f4 100755 (executable)
@@ -54,7 +54,7 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
 %}else{
     <INPUT TYPE="hidden" NAME="clear_password" VALUE="<% $password %>">
 %}
-<INPUT TYPE="hidden" NAME="_password_encoding" VALUE="<% $password_encoding %>">
+<INPUT TYPE="hidden" NAME="_password_encoding" VALUE="<% $svc_acct->_password_encoding %>">
 %
 %my $sec_phrase = $svc_acct->sec_phrase;
 %if ( $conf->exists('security_phrase') 
@@ -123,6 +123,19 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
   </TR>
 % } 
 
+
+% if ( $communigate ) {
+
+    <TR>
+      <TD ALIGN="right">Aliases</TD>
+      <TD><INPUT TYPE="text" NAME="cgp_aliases" VALUE="<% $svc_acct->cgp_aliases %>"></TD>
+    </TR>
+
+% } else {
+    <INPUT TYPE="hidden" NAME="cgp_aliases" VALUE="<% $svc_acct->cgp_aliases %>">
+% }
+
+
 <% include('/elements/tr-select-svc_pbx.html',
              'curr_value' => $svc_acct->pbxsvc,
              'part_svc'   => $part_svc,
@@ -247,11 +260,14 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
 %      && $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 )) {
+%       foreach my $option (qw( MultiMailbox TextMailbox MailDirMailbox
+%                               AGrade BGrade CGrade                    )) {
           <OPTION VALUE="<% $option %>"
                   <% $option eq $svc_acct->cgp_type() ? 'SELECTED' : '' %>
           ><% $option %>
@@ -265,6 +281,7 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
 % }
 
 
+% #false laziness w/svc_domain
 % if ( $communigate
 %      && $part_svc->part_svc_column('cgp_accessmodes')->columnflag ne 'F' )
 % {
@@ -314,6 +331,202 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
 %   }
 % }
 
+% 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'    => [
+                                 'HostOS',
+                                 '(+0100) Algeria/Congo',
+                                 '(+0200) Egypt/South Africa',
+                                 '(+0300) Saudi Arabia',
+                                 '(+0400) Oman',
+                                 '(+0500) Pakistan',
+                                 '(+0600) Bangladesh',
+                                 '(+0700) Thailand/Vietnam',
+                                 '(+0800) China/Malaysia',
+                                 '(+0900) Japan/Korea',
+                                 '(+1000) Queensland',
+                                 '(+1100) Micronesia',
+                                 '(+1200) Fiji',
+                                 '(+1300) Tonga/Kiribati',
+                                 '(+1400) Christmas Islands',
+                                 '(-0100) Azores/Cape Verde',
+                                 '(-0200) Fernando de Noronha',
+                                 '(-0300) Argentina/Uruguay',
+                                 '(-0400) Venezuela/Guyana',
+                                 '(-0500) Haiti/Peru',
+                                 '(-0600) Central America',
+                                 '(-0700) Arisona',
+                                 '(-0800) Adamstown',
+                                 '(-0900) Marquesas Islands',
+                                 '(-1000) Hawaii/Tahiti',
+                                 '(-1100) Samoa',
+                                 'Asia/Afghanistan',
+                                 'Asia/India',
+                                 'Asia/Iran',
+                                 'Asia/Iraq',
+                                 'Asia/Israel',
+                                 'Asia/Jordan',
+                                 'Asia/Lebanon',
+                                 'Asia/Syria',
+                                 'Australia/Adelaide',
+                                 'Australia/East',
+                                 'Australia/NorthernTerritory',
+                                 'Europe/Central',
+                                 'Europe/Eastern',
+                                 'Europe/Moscow',
+                                 'Europe/Western',
+                                 'GMT (+0000)',
+                                 'Newfoundland',
+                                 'NewZealand/Auckland',
+                                 'NorthAmerica/Alaska',
+                                 'NorthAmerica/Atlantic',
+                                 'NorthAmerica/Central',
+                                 'NorthAmerica/Eastern',
+                                 'NorthAmerica/Mountain',
+                                 'NorthAmerica/Pacific',
+                                 'Russia/Ekaterinburg',
+                                 'Russia/Irkutsk',
+                                 'Russia/Kamchatka',
+                                 'Russia/Krasnoyarsk',
+                                 'Russia/Magadan',
+                                 'Russia/Novosibirsk',
+                                 'Russia/Vladivostok',
+                                 'Russia/Yakutsk',
+                                 'SouthAmerica/Brasil',
+                                 'SouthAmerica/Chile',
+                                 'SouthAmerica/Paraguay',
+                               ],
+               '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->$_() %>">
+%   }
+
+% }
+
 
 % if ( $part_svc->part_svc_column('slipip')->columnflag =~ /^[FA]$/ ) { 
   <INPUT TYPE="hidden" NAME="slipip" VALUE="<% $svc_acct->slipip %>">
@@ -432,9 +645,11 @@ if ( $cgi->param('error') ) {
   $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
   die "No part_svc entry!" unless $part_svc;
 
-    $svc_acct = new FS::svc_acct({svcpart => $svcpart}); 
+  $svc_acct = new FS::svc_acct({svcpart => $svcpart}); 
 
-    $svcnum='';
+  $svcnum='';
+
+  $svc_acct->password_recover('Y'); #default. hmm.
 
 } else { #editing
 
@@ -508,22 +723,17 @@ my $svc = $part_svc->getfield('svc');
 my $otaker = getotaker;
 
 my $username = $svc_acct->username;
-my $password;
-my $password_encryption = $svc_acct->_password_encryption;
-my $password_encoding = $svc_acct->_password_encoding;
-
-if($svcnum) {
-  if($password = $svc_acct->get_cleartext_password) {
-    if (! $conf->exists('showpasswords')) {
-        $password = '*HIDDEN*';
-    }
-  }
-  elsif($svc_acct->_password and $password_encryption ne 'plain') {
+
+my $password = '';
+if ( $cgi->param('error') ) {
+  $password = $cgi->param('clear_password');
+} elsif ( $svcnum ) {
+  my $password_encryption = $svc_acct->_password_encryption;
+  if ( $password = $svc_acct->get_cleartext_password ) {
+    $password = '*HIDDEN*' unless $conf->exists('showpasswords');
+  } elsif( $svc_acct->_password and $password_encryption ne 'plain' ) {
     $password = "(".uc($password_encryption)." encrypted)";
   }
-  else {
-    $password = '';
-  }
 }
 
 my $ulen =