From ca8187c9c2fcb9d33e0874d8ce74714aca7bcc0f Mon Sep 17 00:00:00 2001 From: denise Date: Mon, 11 Jun 2012 12:53:09 -0400 Subject: [PATCH] CC-3718: Please enable user to input the mail server settings -done --- .../controllers/PreferenceController.php | 16 ++- .../forms/EmailServerPreferences.php | 96 +++++++++++++++++ .../application/forms/GeneralPreferences.php | 38 ------- airtime_mvc/application/forms/Preferences.php | 13 ++- airtime_mvc/application/models/Email.php | 37 ++++++- airtime_mvc/application/models/Preference.php | 40 +++++++ .../views/scripts/form/preferences.phtml | 7 ++ .../form/preferences_email_server.phtml | 102 ++++++++++++++++++ .../scripts/form/preferences_general.phtml | 35 +----- .../js/airtime/preferences/preferences.js | 50 ++++++++- 10 files changed, 352 insertions(+), 82 deletions(-) create mode 100644 airtime_mvc/application/forms/EmailServerPreferences.php create mode 100644 airtime_mvc/application/views/scripts/form/preferences_email_server.phtml diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 3877325a2..64ee8f47c 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -21,7 +21,9 @@ class PreferenceController extends Zend_Controller_Action public function indexAction() { global $CC_CONFIG; - + + $isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; + $request = $this->getRequest(); $baseUrl = $request->getBaseUrl(); @@ -39,8 +41,16 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetAllow3rdPartyApi($values["preferences_general"]["thirdPartyApi"]); Application_Model_Preference::SetTimezone($values["preferences_general"]["timezone"]); 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::SetUploadToSoundcloudOption($values["preferences_soundcloud"]["UploadToSoundcloudOption"]); diff --git a/airtime_mvc/application/forms/EmailServerPreferences.php b/airtime_mvc/application/forms/EmailServerPreferences.php new file mode 100644 index 000000000..e513deee1 --- /dev/null +++ b/airtime_mvc/application/forms/EmailServerPreferences.php @@ -0,0 +1,96 @@ +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); + + } + + +} + diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index 472765d26..621984774 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -68,44 +68,6 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm $week_start_day->setValue(Application_Model_Preference::GetWeekStartDay()); $week_start_day->setDecorators(array('ViewHelper')); $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(){ diff --git a/airtime_mvc/application/forms/Preferences.php b/airtime_mvc/application/forms/Preferences.php index 8153cc2a0..707929394 100644 --- a/airtime_mvc/application/forms/Preferences.php +++ b/airtime_mvc/application/forms/Preferences.php @@ -2,19 +2,28 @@ class Application_Form_Preferences extends Zend_Form { + private $isSaas; public function init() { $this->setAction('/Preference'); $this->setMethod('post'); - + + $isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; + $this->isSaas = $isSaas; + $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(); $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(); $this->addSubForm($soundcloud_pref, 'preferences_soundcloud'); diff --git a/airtime_mvc/application/models/Email.php b/airtime_mvc/application/models/Email.php index 7a111a572..9c95e49cd 100644 --- a/airtime_mvc/application/models/Email.php +++ b/airtime_mvc/application/models/Email.php @@ -12,15 +12,44 @@ class Application_Model_Email { */ 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->setSubject($subject); $mail->setBodyText($message); - $mail->setFrom(isset($from) ? $from : Application_Model_Preference::GetSystemEmail()); - + foreach ((array) $tos as $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(); + } } -} \ No newline at end of file +} diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index d1b821488..5efd146dc 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -887,6 +887,46 @@ class Application_Model_Preference public static function GetSystemEmail() { 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 */ public static function ShouldShowPopUp(){ diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml index 412d5aa01..d31fc1f2e 100644 --- a/airtime_mvc/application/views/scripts/form/preferences.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences.phtml @@ -1,6 +1,13 @@
element->getSubform('preferences_general') ?> + + isSaas) { ?> +

Email / Mail Server Settings

+ +

SoundCloud Settings

diff --git a/airtime_mvc/application/views/scripts/form/preferences_email_server.phtml b/airtime_mvc/application/views/scripts/form/preferences_email_server.phtml new file mode 100644 index 000000000..555cbdded --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/preferences_email_server.phtml @@ -0,0 +1,102 @@ +
+
+ + isSaas ){?> + +
+ + element->getElement('enableSystemEmail')->hasErrors()) : ?> +
    + element->getElement('enableSystemEmail')->getMessages() as $error): ?> +
  • + +
+ +
+ + +
+ +
+
+ element->getElement('systemEmail') ?> + element->getElement('systemEmail')->hasErrors()) : ?> +
    + element->getElement('systemEmail')->getMessages() as $error): ?> +
  • + +
+ +
+
+
+ +
+ +
+ +
+
+ element->getElement('mailServer') ?> + element->getElement('mailServer')->hasErrors()) : ?> +
    + element->getElement('mailServer')->getMessages() as $error): ?> +
  • + +
+ +
+ +
+ +
+
+ element->getElement('email') ?> + element->getElement('email')->hasErrors()) : ?> +
    + element->getElement('email')->getMessages() as $error): ?> +
  • + +
+ +
+ +
+ +
+
+ element->getElement('ms_password') ?> + element->getElement('ms_password')->hasErrors()) : ?> +
    + element->getElement('ms_password')->getMessages() as $error): ?> +
  • + +
+ +
+ +
+ +
+
+ element->getElement('port') ?> +
+ + + +
+
diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index 956b3879e..d8accb8a4 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -92,39 +92,6 @@ - - - isSaas ){?> -
- -
-
- element->getElement('enableSystemEmail') ?> - element->getElement('enableSystemEmail')->hasErrors()) : ?> -
    - element->getElement('enableSystemEmail')->getMessages() as $error): ?> -
  • - -
- -
- - -
- -
-
- element->getElement('systemEmail') ?> - element->getElement('systemEmail')->hasErrors()) : ?> -
    - element->getElement('systemEmail')->getMessages() as $error): ?> -
  • - -
- -
- + diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index 6c760d939..c70a9125c 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -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() { - $('.collapsible-header').live('click',function() { + $('.collapsible-header').live('click',function() { $(this).next().toggle('fast'); $(this).toggleClass("close"); return false; }).next().hide(); showErrorSections(); + + setMailServerInputReadonly(); + setSystemFromEmailReadonly(); + setConfigureMailServerListener(); + setEnableSystemEmailsListener(); });