CC-3718: Please enable user to input the mail server settings

-done
This commit is contained in:
denise 2012-06-11 12:53:09 -04:00
parent 7d4851573f
commit ca8187c9c2
10 changed files with 352 additions and 82 deletions

View File

@ -21,7 +21,9 @@ class PreferenceController extends Zend_Controller_Action
public function indexAction() public function indexAction()
{ {
global $CC_CONFIG; global $CC_CONFIG;
$isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true;
$request = $this->getRequest(); $request = $this->getRequest();
$baseUrl = $request->getBaseUrl(); $baseUrl = $request->getBaseUrl();
@ -39,8 +41,16 @@ class PreferenceController extends Zend_Controller_Action
Application_Model_Preference::SetAllow3rdPartyApi($values["preferences_general"]["thirdPartyApi"]); Application_Model_Preference::SetAllow3rdPartyApi($values["preferences_general"]["thirdPartyApi"]);
Application_Model_Preference::SetTimezone($values["preferences_general"]["timezone"]); Application_Model_Preference::SetTimezone($values["preferences_general"]["timezone"]);
Application_Model_Preference::SetWeekStartDay($values["preferences_general"]["weekStartDay"]); Application_Model_Preference::SetWeekStartDay($values["preferences_general"]["weekStartDay"]);
Application_Model_Preference::SetEnableSystemEmail($values["preferences_general"]["enableSystemEmail"]);
Application_Model_Preference::SetSystemEmail($values["preferences_general"]["systemEmail"]); if (!$isSaas) {
Application_Model_Preference::SetEnableSystemEmail($values["preferences_email_server"]["enableSystemEmail"]);
Application_Model_Preference::SetSystemEmail($values["preferences_email_server"]["systemEmail"]);
Application_Model_Preference::SetMailServerConfigured($values["preferences_email_server"]["configureMailServer"]);
Application_Model_Preference::SetMailServer($values["preferences_email_server"]["mailServer"]);
Application_Model_Preference::SetMailServerEmailAddress($values["preferences_email_server"]["email"]);
Application_Model_Preference::SetMailServerPassword($values["preferences_email_server"]["ms_password"]);
Application_Model_Preference::SetMailServerPort($values["preferences_email_server"]["port"]);
}
Application_Model_Preference::SetAutoUploadRecordedShowToSoundcloud($values["preferences_soundcloud"]["UseSoundCloud"]); Application_Model_Preference::SetAutoUploadRecordedShowToSoundcloud($values["preferences_soundcloud"]["UseSoundCloud"]);
Application_Model_Preference::SetUploadToSoundcloudOption($values["preferences_soundcloud"]["UploadToSoundcloudOption"]); Application_Model_Preference::SetUploadToSoundcloudOption($values["preferences_soundcloud"]["UploadToSoundcloudOption"]);

View File

@ -0,0 +1,96 @@
<?php
require_once 'customvalidators/ConditionalNotEmpty.php';
require_once 'customvalidators/PasswordNotEmpty.php';
class Application_Form_EmailServerPreferences extends Zend_Form_SubForm
{
private $isSaas;
public function init()
{
$isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true;
$this->isSaas = $isSaas;
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/preferences_email_server.phtml', "isSaas" => $isSaas))
));
// Enable system emails
$this->addElement('checkbox', 'enableSystemEmail', array(
'label' => 'Enable System Emails (Password Reset)',
'required' => false,
'value' => Application_Model_Preference::GetEnableSystemEmail(),
'decorators' => array(
'ViewHelper'
)
));
$this->addElement('text', 'systemEmail', array(
'class' => 'input_text',
'label' => 'Reset Password \'From\' Email',
'value' => Application_Model_Preference::GetSystemEmail(),
'readonly' => true,
'decorators' => array('viewHelper')
));
$this->addElement('checkbox', 'configureMailServer', array(
'label' => 'Configure Mail Server',
'required' => false,
'value' => Application_Model_Preference::GetMailServerConfigured(),
'decorators' => array (
'viewHelper'
)
));
$this->addElement('text', 'mailServer', array(
'class' => 'input_text',
'label' => 'Mail Server',
'value' => Application_Model_Preference::GetMailServer(),
'readonly' => true,
'decorators' => array('viewHelper'),
'allowEmpty' => false,
'validators' => array(
new ConditionalNotEmpty(array('configureMailServer'=>'1'))
)
));
$this->addElement('text', 'email', array(
'class' => 'input_text',
'label' => 'Email Address',
'value' => Application_Model_Preference::GetMailServerEmailAddress(),
'readonly' => true,
'decorators' => array('viewHelper'),
'allowEmpty' => false,
'validators' => array(
new ConditionalNotEmpty(array('configureMailServer'=>'1'))
)
));
$this->addElement('password', 'ms_password', array(
'class' => 'input_text',
'label' => 'Password',
'value' => Application_Model_Preference::GetMailServerPassword(),
'readonly' => true,
'decorators' => array('viewHelper'),
'allowEmpty' => false,
'validators' => array(
new ConditionalNotEmpty(array('configureMailServer'=>'1'))
),
'renderPassword' => true
));
$port = new Zend_Form_Element_Text('port');
$port->class = 'input_text';
$port->setRequired(false)
->setValue(Application_Model_Preference::GetMailServerPort())
->setLabel('Port')
->setAttrib('readonly', true)
->setDecorators(array('viewHelper'));
$this->addElement($port);
}
}

View File

@ -68,44 +68,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
$week_start_day->setValue(Application_Model_Preference::GetWeekStartDay()); $week_start_day->setValue(Application_Model_Preference::GetWeekStartDay());
$week_start_day->setDecorators(array('ViewHelper')); $week_start_day->setDecorators(array('ViewHelper'));
$this->addElement($week_start_day); $this->addElement($week_start_day);
//enable system emails.
$this->addElement('checkbox', 'enableSystemEmail', array(
'label' => 'Enable System Emails (Password Reset)',
'required' => false,
'value' => Application_Model_Preference::GetEnableSystemEmail(),
'decorators' => array(
'ViewHelper'
)
));
// Add end date element
$systemEmail = new Zend_Form_Element_Text('systemEmail');
$systemEmail->class = 'input_text';
$systemEmail->setRequired(false)
->setValue(Application_Model_Preference::GetSystemEmail())
->setLabel('Reset Password \'From\' Email')
->setFilters(array('StringTrim'))
->setValidators(array(
'NotEmpty',
'EmailAddress'
))
->setDecorators(array('ViewHelper'));
$systemEmail->addValidator('Callback', true, array(
'callback' => function($value, $context) {
if ($context['enableSystemEmail']) {
return true;
}
return false;
},
'messages' => array(
Zend_Validate_Callback::INVALID_VALUE => 'Email must be enabled'
),
));
$this->addElement($systemEmail);
} }
private function getTimezones(){ private function getTimezones(){

View File

@ -2,19 +2,28 @@
class Application_Form_Preferences extends Zend_Form class Application_Form_Preferences extends Zend_Form
{ {
private $isSaas;
public function init() public function init()
{ {
$this->setAction('/Preference'); $this->setAction('/Preference');
$this->setMethod('post'); $this->setMethod('post');
$isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true;
$this->isSaas = $isSaas;
$this->setDecorators(array( $this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/preferences.phtml')) array('ViewScript', array('viewScript' => 'form/preferences.phtml', "isSaas" => $this->isSaas))
)); ));
$general_pref = new Application_Form_GeneralPreferences(); $general_pref = new Application_Form_GeneralPreferences();
$this->addSubForm($general_pref, 'preferences_general'); $this->addSubForm($general_pref, 'preferences_general');
if (!$isSaas) {
$email_pref = new Application_Form_EmailServerPreferences();
$this->addSubForm($email_pref, 'preferences_email_server');
}
$soundcloud_pref = new Application_Form_SoundcloudPreferences(); $soundcloud_pref = new Application_Form_SoundcloudPreferences();
$this->addSubForm($soundcloud_pref, 'preferences_soundcloud'); $this->addSubForm($soundcloud_pref, 'preferences_soundcloud');

View File

@ -12,15 +12,44 @@ class Application_Model_Email {
*/ */
public static function send($subject, $message, $tos, $from = null) public static function send($subject, $message, $tos, $from = null)
{ {
$mailServerConfigured = Application_Model_Preference::GetMailServerConfigured() == true ? true : false;
if ($mailServerConfigured) {
$username = Application_Model_Preference::GetMailServerEmailAddress();
$password = Application_Model_Preference::GetMailServerPassword();
$mailServer = Application_Model_Preference::GetMailServer();
$mailServerPort = Application_Model_Preference::GetMailServerPort();
if (!empty($mailServerPort)) {
$port = Application_Model_Preference::GetMailServerPort();
}
$config = array(
'auth' => 'login',
'ssl' => 'ssl',
'username' => $username,
'password' => $password
);
if (isset($port)) {
$config['port'] = $port;
}
$transport = new Zend_Mail_Transport_Smtp($mailServer, $config);
}
$mail = new Zend_Mail('utf-8'); $mail = new Zend_Mail('utf-8');
$mail->setSubject($subject); $mail->setSubject($subject);
$mail->setBodyText($message); $mail->setBodyText($message);
$mail->setFrom(isset($from) ? $from : Application_Model_Preference::GetSystemEmail());
foreach ((array) $tos as $to) { foreach ((array) $tos as $to) {
$mail->addTo($to); $mail->addTo($to);
} }
$mail->send(); if ($mailServerConfigured) {
$mail->setFrom(isset($from) ? $from : Application_Model_Preference::GetMailServerEmailAddress());
$mail->send($transport);
} else {
$mail->setFrom(isset($from) ? $from : Application_Model_Preference::GetSystemEmail());
$mail->send();
}
} }
} }

View File

@ -887,6 +887,46 @@ class Application_Model_Preference
public static function GetSystemEmail() { public static function GetSystemEmail() {
return self::GetValue("system_email"); return self::GetValue("system_email");
} }
public static function SetMailServerConfigured($value) {
self::SetValue("mail_server_configured", $value, false);
}
public static function GetMailServerConfigured() {
return self::GetValue("mail_server_configured");
}
public static function SetMailServer($value) {
self::SetValue("mail_server", $value, false);
}
public static function GetMailServer() {
return self::GetValue("mail_server");
}
public static function SetMailServerEmailAddress($value) {
self::SetValue("mail_server_email_address", $value, false);
}
public static function GetMailServerEmailAddress() {
return self::GetValue("mail_server_email_address");
}
public static function SetMailServerPassword($value) {
self::SetValue("mail_server_password", $value, false);
}
public static function GetMailServerPassword() {
return self::GetValue("mail_server_password");
}
public static function SetMailServerPort($value) {
self::SetValue("mail_server_port", $value, false);
}
public static function GetMailServerPort() {
return self::GetValue("mail_server_port");
}
/* User specific preferences end */ /* User specific preferences end */
public static function ShouldShowPopUp(){ public static function ShouldShowPopUp(){

View File

@ -1,6 +1,13 @@
<form method="<?php echo $this->element->getMethod() ?>" action="<?php echo $this->element->getAction() ?>" enctype="multipart/form-data"> <form method="<?php echo $this->element->getMethod() ?>" action="<?php echo $this->element->getAction() ?>" enctype="multipart/form-data">
<?php echo $this->element->getSubform('preferences_general') ?> <?php echo $this->element->getSubform('preferences_general') ?>
<?php if (!$this->isSaas) { ?>
<h3 class="collapsible-header" id="email-server-heading"><span class="arrow-icon"></span>Email / Mail Server Settings</h3>
<div class="collapsible-content" id="soundcloud-settings" style="display: none;">
<?php echo $this->element->getSubform('preferences_email_server') ?>
</div>
<?php } ?>
<h3 class="collapsible-header" id="soundcloud-heading"><span class="arrow-icon"></span>SoundCloud Settings</h3> <h3 class="collapsible-header" id="soundcloud-heading"><span class="arrow-icon"></span>SoundCloud Settings</h3>

View File

@ -0,0 +1,102 @@
<fieldset class="padded">
<dl class="zend_form">
<!-- Enable System Email option -->
<?php if( !$this->isSaas ){?>
<dd id="enableSystemEmail-element" class="block-display">
<label class="required" for="timezone">
<?php echo $this->element->getElement('enableSystemEmail') ?>
<strong><?php echo $this->element->getElement('enableSystemEmail')->getLabel() ?></strong>
</label>
<?php if($this->element->getElement('enableSystemEmail')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('enableSystemEmail')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<!-- System Email option -->
<dt id="systemEmail-label" class="block-display">
<label class="required" for="timezone"><?php echo $this->element->getElement('systemEmail')->getLabel() ?>:
</label>
</dt>
<dd id="systemEmail-element" class="block-display">
<?php echo $this->element->getElement('systemEmail') ?>
<?php if($this->element->getElement('systemEmail')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('systemEmail')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<br />
<dd id="configureMailServer-element" class="block-display">
<label class="required" for="configureMailServer">
<?php echo $this->element->getElement('configureMailServer') ?>
<strong><?php echo $this->element->getElement('configureMailServer')->getLabel() ?></strong>
</label>
</dd>
<dt id="mailServer-label" class="block-display">
<label class="required" for="mailServer"><?php echo $this->element->getElement('mailServer')->getLabel() ?>
<span class="info-text-small">(Required)</span>:
</label>
</dt>
<dd id="mailServer-element" class="block-display">
<?php echo $this->element->getElement('mailServer') ?>
<?php if($this->element->getElement('mailServer')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('mailServer')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="email-label" class="block-display">
<label class="required" for="email"><?php echo $this->element->getElement('email')->getLabel() ?>
<span class="info-text-small">(Required)</span>:
</label>
</dt>
<dd id="email-element" class="block-display">
<?php echo $this->element->getElement('email') ?>
<?php if($this->element->getElement('email')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('email')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="password-label" class="block-display">
<label class="required" for="password"><?php echo $this->element->getElement('ms_password')->getLabel() ?>
<span class="info-text-small">(Required)</span>:
</label>
</dt>
<dd id="password-element" class="block-display">
<?php echo $this->element->getElement('ms_password') ?>
<?php if($this->element->getElement('ms_password')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('ms_password')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="port-label" class="block-display">
<label class="required" for="port"><?php echo $this->element->getElement('port')->getLabel() ?>:
</label>
</dt>
<dd id="port-element" class="block-display">
<?php echo $this->element->getElement('port') ?>
</dd>
<?php } ?>
</dl>
</fieldset>

View File

@ -92,39 +92,6 @@
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<!-- Enable System Email option -->
<?php if( !$this->isSaas ){?>
<dt id="enableSystemEmail-label" class="block-display">
<label class="required" for="timezone"><?php echo $this->element->getElement('enableSystemEmail')->getLabel() ?>:
</label>
</dt>
<dd id="enableSystemEmail-element" class="block-display">
<?php echo $this->element->getElement('enableSystemEmail') ?>
<?php if($this->element->getElement('enableSystemEmail')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('enableSystemEmail')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<!-- System Email option -->
<dt id="systemEmail-label" class="block-display">
<label class="required" for="timezone"><?php echo $this->element->getElement('systemEmail')->getLabel() ?>:
</label>
</dt>
<dd id="systemEmail-element" class="block-display">
<?php echo $this->element->getElement('systemEmail') ?>
<?php if($this->element->getElement('systemEmail')->hasErrors()) : ?>
<ul class='errors'>
<?php foreach($this->element->getElement('systemEmail')->getMessages() as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<?php } ?>
</dl> </dl>
</fieldset> </fieldset>

View File

@ -11,13 +11,61 @@ function showErrorSections() {
} }
} }
function setConfigureMailServerListener() {
var configMailServer = $("#configureMailServer");
configMailServer.click(function(event){
setMailServerInputReadonly();
})
}
function setEnableSystemEmailsListener() {
var enableSystemEmails = $("#enableSystemEmail");
enableSystemEmails.click(function(event){
setSystemFromEmailReadonly();
})
}
function setSystemFromEmailReadonly() {
var enableSystemEmails = $("#enableSystemEmail");
var systemFromEmail = $("#systemEmail");
if ($(enableSystemEmails).is(':checked')) {
systemFromEmail.removeAttr("readonly");
} else {
systemFromEmail.attr("readonly", "readonly");
}
}
function setMailServerInputReadonly() {
var configMailServer = $("#configureMailServer");
var mailServer = $("#mailServer");
var email = $("#email");
var password = $("#ms_password");
var port = $("#port");
if ($(configMailServer).is(':checked')) {
mailServer.removeAttr("readonly");
email.removeAttr("readonly");
password.removeAttr("readonly");
port.removeAttr("readonly");
} else {
mailServer.attr("readonly", "readonly");
email.attr("readonly", "readonly");
password.attr("readonly", "readonly");
port.attr("readonly", "readonly");
}
}
$(document).ready(function() { $(document).ready(function() {
$('.collapsible-header').live('click',function() { $('.collapsible-header').live('click',function() {
$(this).next().toggle('fast'); $(this).next().toggle('fast');
$(this).toggleClass("close"); $(this).toggleClass("close");
return false; return false;
}).next().hide(); }).next().hide();
showErrorSections(); showErrorSections();
setMailServerInputReadonly();
setSystemFromEmailReadonly();
setConfigureMailServerListener();
setEnableSystemEmailsListener();
}); });