Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-10-03 17:14:22 +0400
committerThomas Müller <thomas.mueller@tmit.eu>2014-10-14 17:38:34 +0400
commit13b1b45ee4bab5b832ca3a1602b4c4fb6d391f86 (patch)
tree3f8d7ef142cdc98472d883bbb18d94dbde57a939 /settings
parent766314a6be5a24a4bd7d503d9c44998c13fe348b (diff)
Refactor MailSettings controller
- Do not store the password (fixes https://github.com/owncloud/core/issues/11385) - Refactor to AppFramework - Add unit tests Conflicts: settings/admin/controller.php
Diffstat (limited to 'settings')
-rw-r--r--settings/admin/controller.php123
-rw-r--r--settings/application.php70
-rw-r--r--settings/controller/mailsettingscontroller.php166
-rw-r--r--settings/css/settings.css4
-rw-r--r--settings/js/admin.js12
-rw-r--r--settings/routes.php17
-rw-r--r--settings/templates/admin.php149
7 files changed, 334 insertions, 207 deletions
diff --git a/settings/admin/controller.php b/settings/admin/controller.php
deleted file mode 100644
index 395bc7c6e49..00000000000
--- a/settings/admin/controller.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
-* @author Joas Schilling
-* @copyright 2014 Joas Schilling nickvergessen@owncloud.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-namespace OC\Settings\Admin;
-
-class Controller {
- /**
- * Set mail settings
- */
- public static function setMailSettings() {
- \OC_Util::checkAdminUser();
- \OCP\JSON::callCheck();
-
- $l = \OC::$server->getL10N('settings');
-
- $smtp_settings = array(
- 'mail_domain' => null,
- 'mail_from_address' => null,
- 'mail_smtpmode' => array('sendmail', 'smtp', 'qmail', 'php'),
- 'mail_smtpsecure' => array('', 'ssl', 'tls'),
- 'mail_smtphost' => null,
- 'mail_smtpport' => null,
- 'mail_smtpauthtype' => array('LOGIN', 'PLAIN', 'NTLM'),
- 'mail_smtpauth' => true,
- 'mail_smtpname' => null,
- 'mail_smtppassword' => null,
- );
-
- foreach ($smtp_settings as $setting => $validate) {
- if (!$validate) {
- if (!isset($_POST[$setting]) || $_POST[$setting] === '') {
- \OC_Config::deleteKey( $setting );
- } else {
- \OC_Config::setValue( $setting, $_POST[$setting] );
- }
- }
- else if (is_bool($validate)) {
- if (!empty($_POST[$setting])) {
- \OC_Config::setValue( $setting, (bool) $_POST[$setting] );
- } else {
- \OC_Config::deleteKey( $setting );
- }
- }
- else if (is_array($validate)) {
- if (!isset($_POST[$setting]) || $_POST[$setting] === '') {
- \OC_Config::deleteKey( $setting );
- } else if (in_array($_POST[$setting], $validate)) {
- \OC_Config::setValue( $setting, $_POST[$setting] );
- } else {
- $message = $l->t('Invalid value supplied for %s', array(self::getFieldname($setting, $l)));
- \OC_JSON::error( array( "data" => array( "message" => $message)) );
- exit;
- }
- }
- }
-
- \OC_JSON::success(array("data" => array( "message" => $l->t("Saved") )));
- }
-
- /**
- * Send a mail to test the settings
- */
- public static function sendTestMail() {
- \OC_Util::checkAdminUser();
- \OCP\JSON::callCheck();
-
- $l = \OC::$server->getL10N('settings');
- $email = \OC_Preferences::getValue(\OC_User::getUser(), 'settings', 'email', '');
- if (!empty($email)) {
- $defaults = new \OC_Defaults();
-
- try {
- \OC_Mail::send($email, \OC_User::getDisplayName(),
- $l->t('test email settings'),
- $l->t('If you received this email, the settings seem to be correct.'),
- \OCP\Util::getDefaultEmailAddress('no-reply'), $defaults->getName());
- } catch (\Exception $e) {
- $message = $l->t('A problem occurred while sending the e-mail. Please revisit your settings.');
- \OC_JSON::error( array( "data" => array( "message" => $message)) );
- exit;
- }
-
- \OC_JSON::success(array("data" => array( "message" => $l->t("Email sent") )));
- } else {
- $message = $l->t('You need to set your user email before being able to send test emails.');
- \OC_JSON::error( array( "data" => array( "message" => $message)) );
- }
- }
-
- /**
- * Get the field name to use it in error messages
- *
- * @param string $setting
- * @param \OC_L10N $l
- * @return string
- */
- public static function getFieldname($setting, $l) {
- switch ($setting) {
- case 'mail_smtpmode':
- return $l->t( 'Send mode' );
- case 'mail_smtpsecure':
- return $l->t( 'Encryption' );
- case 'mail_smtpauthtype':
- return $l->t( 'Authentication method' );
- }
- }
-}
diff --git a/settings/application.php b/settings/application.php
new file mode 100644
index 00000000000..b17ca01c2f3
--- /dev/null
+++ b/settings/application.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * @author Lukas Reschke
+ * @copyright 2014 Lukas Reschke lukas@owncloud.com
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Settings;
+
+use OC\AppFramework\Utility\SimpleContainer;
+use OC\Settings\Controller\MailSettingsController;
+use \OCP\AppFramework\App;
+use \OCP\Util;
+
+/**
+ * @package OC\Settings
+ */
+class Application extends App {
+
+
+ /**
+ * @param array $urlParams
+ */
+ public function __construct(array $urlParams=array()){
+ parent::__construct('settings', $urlParams);
+
+ $container = $this->getContainer();
+
+ /**
+ * Controllers
+ */
+ $container->registerService('MailSettingsController', function(SimpleContainer $c) {
+ return new MailSettingsController(
+ $c->query('AppName'),
+ $c->query('Request'),
+ $c->query('L10N'),
+ $c->query('Config'),
+ $c->query('UserSession'),
+ $c->query('Defaults'),
+ $c->query('Mail'),
+ $c->query('DefaultMailAddress')
+ );
+ });
+
+ /**
+ * Core class wrappers
+ */
+ $container->registerService('Config', function(SimpleContainer $c) {
+ return $c->query('ServerContainer')->getConfig();
+ });
+ $container->registerService('L10N', function(SimpleContainer $c) {
+ return $c->query('ServerContainer')->getL10N('settings');
+ });
+ $container->registerService('UserSession', function(SimpleContainer $c) {
+ return $c->query('ServerContainer')->getUserSession();
+ });
+ $container->registerService('Mail', function(SimpleContainer $c) {
+ return new \OC_Mail;
+ });
+ $container->registerService('Defaults', function(SimpleContainer $c) {
+ return new \OC_Defaults;
+ });
+ $container->registerService('DefaultMailAddress', function(SimpleContainer $c) {
+ return Util::getDefaultEmailAddress('no-reply');
+ });
+ }
+}
diff --git a/settings/controller/mailsettingscontroller.php b/settings/controller/mailsettingscontroller.php
new file mode 100644
index 00000000000..1cfb10c6fe9
--- /dev/null
+++ b/settings/controller/mailsettingscontroller.php
@@ -0,0 +1,166 @@
+<?php
+/**
+* @author Joas Schilling
+* @author Lukas Reschke
+* @copyright 2014 Joas Schilling nickvergessen@owncloud.com
+*
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Settings\Controller;
+
+use OC\User\Session;
+use \OCP\AppFramework\Controller;
+use OCP\IRequest;
+use OCP\IL10N;
+use OCP\IConfig;
+
+/**
+ * @package OC\Settings\Controller
+ */
+class MailSettingsController extends Controller {
+
+ /** @var \OCP\IL10N */
+ private $l10n;
+ /** @var \OCP\IConfig */
+ private $config;
+ /** @var Session */
+ private $userSession;
+ /** @var \OC_Defaults */
+ private $defaults;
+ /** @var \OC_Mail */
+ private $mail;
+ /** @var string */
+ private $defaultMailAddress;
+
+ /**
+ * @param string $appName
+ * @param IRequest $request
+ * @param IL10N $l10n
+ * @param IConfig $config
+ * @param Session $userSession
+ * @param \OC_Defaults $defaults
+ * @param \OC_Mail $mail
+ * @param string $defaultMailAddress
+ */
+ public function __construct($appName,
+ IRequest $request,
+ IL10N $l10n,
+ IConfig $config,
+ Session $userSession,
+ \OC_Defaults $defaults,
+ \OC_Mail $mail,
+ $defaultMailAddress) {
+ parent::__construct($appName, $request);
+ $this->l10n = $l10n;
+ $this->config = $config;
+ $this->userSession = $userSession;
+ $this->defaults = $defaults;
+ $this->mail = $mail;
+ $this->defaultMailAddress = $defaultMailAddress;
+ }
+
+ /**
+ * Sets the email settings
+ * @param string $mail_domain
+ * @param string $mail_from_address
+ * @param string $mail_smtpmode
+ * @param string $mail_smtpsecure
+ * @param string $mail_smtphost
+ * @param string $mail_smtpauthtype
+ * @param int $mail_smtpauth
+ * @param string $mail_smtpport
+ * @return array
+ */
+ public function setMailSettings($mail_domain,
+ $mail_from_address,
+ $mail_smtpmode,
+ $mail_smtpsecure,
+ $mail_smtphost,
+ $mail_smtpauthtype,
+ $mail_smtpauth,
+ $mail_smtpport) {
+
+ $params = get_defined_vars();
+ foreach($params as $key => $value) {
+ if(empty($value)) {
+ $this->config->deleteSystemValue($key);
+ } else {
+ $this->config->setSystemValue($key, $value);
+ }
+ }
+
+ // Delete passwords from config in case no auth is specified
+ if($params['mail_smtpauth'] !== 1) {
+ $this->config->deleteSystemValue('mail_smtpname');
+ $this->config->deleteSystemValue('mail_smtppassword');
+ }
+
+ return array('data' =>
+ array('message' =>
+ (string) $this->l10n->t('Saved')
+ ),
+ 'status' => 'success'
+ );
+ }
+
+ /**
+ * Store the credentials used for SMTP in the config
+ * @param string $mail_smtpname
+ * @param string $mail_smtppassword
+ * @return array
+ */
+ public function storeCredentials($mail_smtpname, $mail_smtppassword) {
+ $this->config->setSystemValue('mail_smtpname', $mail_smtpname);
+ $this->config->setSystemValue('mail_smtppassword', $mail_smtppassword);
+
+ return array('data' =>
+ array('message' =>
+ (string) $this->l10n->t('Saved')
+ ),
+ 'status' => 'success'
+ );
+ }
+
+ /**
+ * Send a mail to test the settings
+ * @return array
+ */
+ public function sendTestMail() {
+ $email = $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'email', '');
+ if (!empty($email)) {
+ try {
+ $this->mail->send($email, $this->userSession->getUser()->getDisplayName(),
+ $this->l10n->t('test email settings'),
+ $this->l10n->t('If you received this email, the settings seems to be correct.'),
+ $this->defaultMailAddress,
+ $this->defaults->getName()
+ );
+ } catch (\Exception $e) {
+ return array('data' =>
+ array('message' =>
+ (string) $this->l10n->t('A problem occurred while sending the e-mail. Please revisit your settings.'),
+ ),
+ 'status' => 'error'
+ );
+ }
+
+ return array('data' =>
+ array('message' =>
+ (string) $this->l10n->t('Email sent')
+ ),
+ 'status' => 'success'
+ );
+ }
+
+ return array('data' =>
+ array('message' =>
+ (string) $this->l10n->t('You need to set your user email before being able to send test emails.'),
+ ),
+ 'status' => 'error'
+ );
+ }
+
+}
diff --git a/settings/css/settings.css b/settings/css/settings.css
index 581904591d0..d89c50e4114 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -178,12 +178,12 @@ span.securitywarning, span.connectionwarning, .setupwarning {
padding-left: 56px;
}
-#mail_settings p label:first-child {
+.mail_settings p label:first-child {
display: inline-block;
width: 300px;
text-align: right;
}
-#mail_settings p select:nth-child(2) {
+.mail_settings p select:nth-child(2) {
width: 143px;
}
#mail_smtpport {
diff --git a/settings/js/admin.js b/settings/js/admin.js
index d8cdae9d11b..09e8a1d6916 100644
--- a/settings/js/admin.js
+++ b/settings/js/admin.js
@@ -103,14 +103,22 @@ $(document).ready(function(){
}
});
- $('#mail_settings').change(function(){
+ $('#mail_general_settings').change(function(){
OC.msg.startSaving('#mail_settings_msg');
- var post = $( "#mail_settings" ).serialize();
+ var post = $( "#mail_general_settings" ).serialize();
$.post(OC.generateUrl('/settings/admin/mailsettings'), post, function(data){
OC.msg.finishedSaving('#mail_settings_msg', data);
});
});
+ $('#mail_credentials_settings_submit').click(function(){
+ OC.msg.startSaving('#mail_settings_msg');
+ var post = $( "#mail_credentials_settings" ).serialize();
+ $.post(OC.generateUrl('/settings/admin/mailsettings/credentials'), post, function(data){
+ OC.msg.finishedSaving('#mail_settings_msg', data);
+ });
+ });
+
$('#sendtestemail').click(function(event){
event.preventDefault();
OC.msg.startAction('#sendtestmail_msg', t('settings', 'Sending...'));
diff --git a/settings/routes.php b/settings/routes.php
index 25a8b1da7e0..7068c0df723 100644
--- a/settings/routes.php
+++ b/settings/routes.php
@@ -6,7 +6,16 @@
* See the COPYING-README file.
*/
-/** @var $this OCP\Route\IRouter */
+namespace OC\Settings;
+
+$application = new Application();
+$application->registerRoutes($this, array('routes' =>array(
+ array('name' => 'MailSettings#setMailSettings', 'url' => '/settings/admin/mailsettings', 'verb' => 'POST'),
+ array('name' => 'MailSettings#storeCredentials', 'url' => '/settings/admin/mailsettings/credentials', 'verb' => 'POST'),
+ array('name' => 'MailSettings#sendTestMail', 'url' => '/settings/admin/mailtest', 'verb' => 'POST'),
+)));
+
+/** @var $this \OCP\Route\IRouter */
// Settings pages
$this->create('settings_help', '/settings/help')
@@ -88,12 +97,6 @@ $this->create('settings_ajax_getlog', '/settings/ajax/getlog.php')
->actionInclude('settings/ajax/getlog.php');
$this->create('settings_ajax_setloglevel', '/settings/ajax/setloglevel.php')
->actionInclude('settings/ajax/setloglevel.php');
-$this->create('settings_mail_settings', '/settings/admin/mailsettings')
- ->post()
- ->action('OC\Settings\Admin\Controller', 'setMailSettings');
-$this->create('settings_admin_mail_test', '/settings/admin/mailtest')
- ->post()
- ->action('OC\Settings\Admin\Controller', 'sendTestMail');
$this->create('settings_ajax_setsecurity', '/settings/ajax/setsecurity.php')
->actionInclude('settings/ajax/setsecurity.php');
$this->create('settings_ajax_excludegroups', '/settings/ajax/excludegroups.php')
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index d6bb298caef..6b4623173af 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -333,87 +333,90 @@ if ($_['suggestedOverwriteWebroot']) {
</p>
</div>
-<div class="section"><form id="mail_settings">
- <h2><?php p($l->t('Email Server'));?></h2>
-
- <p><?php p($l->t('This is used for sending out notifications.')); ?> <span id="mail_settings_msg" class="msg"></span></p>
-
- <p>
- <label for="mail_smtpmode"><?php p($l->t( 'Send mode' )); ?></label>
- <select name='mail_smtpmode' id='mail_smtpmode'>
- <?php foreach ($mail_smtpmode as $smtpmode):
- $selected = '';
- if ($smtpmode == $_['mail_smtpmode']):
- $selected = 'selected="selected"';
- endif; ?>
- <option value='<?php p($smtpmode)?>' <?php p($selected) ?>><?php p($smtpmode) ?></option>
- <?php endforeach;?>
- </select>
-
- <label id="mail_smtpsecure_label" for="mail_smtpsecure"
- <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
- <?php p($l->t( 'Encryption' )); ?>
- </label>
- <select name="mail_smtpsecure" id="mail_smtpsecure"
- <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
- <?php foreach ($mail_smtpsecure as $secure => $name):
- $selected = '';
- if ($secure == $_['mail_smtpsecure']):
- $selected = 'selected="selected"';
- endif; ?>
- <option value='<?php p($secure)?>' <?php p($selected) ?>><?php p($name) ?></option>
- <?php endforeach;?>
- </select>
- </p>
-
- <p>
- <label for="mail_from_address"><?php p($l->t( 'From address' )); ?></label>
- <input type="text" name='mail_from_address' id="mail_from_address" placeholder="<?php p($l->t('mail'))?>"
- value='<?php p($_['mail_from_address']) ?>' />
- @
- <input type="text" name='mail_domain' id="mail_domain" placeholder="example.com"
- value='<?php p($_['mail_domain']) ?>' />
- </p>
+<div class="section">
+ <form id="mail_general_settings" class="mail_settings">
+ <h2><?php p($l->t('Email Server'));?></h2>
+
+ <p><?php p($l->t('This is used for sending out notifications.')); ?> <span id="mail_settings_msg" class="msg"></span></p>
+
+ <p>
+ <label for="mail_smtpmode"><?php p($l->t( 'Send mode' )); ?></label>
+ <select name='mail_smtpmode' id='mail_smtpmode'>
+ <?php foreach ($mail_smtpmode as $smtpmode):
+ $selected = '';
+ if ($smtpmode == $_['mail_smtpmode']):
+ $selected = 'selected="selected"';
+ endif; ?>
+ <option value='<?php p($smtpmode)?>' <?php p($selected) ?>><?php p($smtpmode) ?></option>
+ <?php endforeach;?>
+ </select>
+
+ <label id="mail_smtpsecure_label" for="mail_smtpsecure"
+ <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
+ <?php p($l->t( 'Encryption' )); ?>
+ </label>
+ <select name="mail_smtpsecure" id="mail_smtpsecure"
+ <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
+ <?php foreach ($mail_smtpsecure as $secure => $name):
+ $selected = '';
+ if ($secure == $_['mail_smtpsecure']):
+ $selected = 'selected="selected"';
+ endif; ?>
+ <option value='<?php p($secure)?>' <?php p($selected) ?>><?php p($name) ?></option>
+ <?php endforeach;?>
+ </select>
+ </p>
- <p id="setting_smtpauth" <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
- <label for="mail_smtpauthtype"><?php p($l->t( 'Authentication method' )); ?></label>
- <select name='mail_smtpauthtype' id='mail_smtpauthtype'>
- <?php foreach ($mail_smtpauthtype as $authtype => $name):
- $selected = '';
- if ($authtype == $_['mail_smtpauthtype']):
- $selected = 'selected="selected"';
- endif; ?>
- <option value='<?php p($authtype)?>' <?php p($selected) ?>><?php p($name) ?></option>
- <?php endforeach;?>
- </select>
-
- <input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" value="1"
- <?php if ($_['mail_smtpauth']) print_unescaped('checked="checked"'); ?> />
- <label for="mail_smtpauth"><?php p($l->t( 'Authentication required' )); ?></label>
- </p>
+ <p>
+ <label for="mail_from_address"><?php p($l->t( 'From address' )); ?></label>
+ <input type="text" name='mail_from_address' id="mail_from_address" placeholder="<?php p($l->t('mail'))?>"
+ value='<?php p($_['mail_from_address']) ?>' />
+ <input type="text" name='mail_domain' id="mail_domain" placeholder="example.com"
+ value='<?php p($_['mail_domain']) ?>' />
+ </p>
- <p id="setting_smtphost" <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
- <label for="mail_smtphost"><?php p($l->t( 'Server address' )); ?></label>
- <input type="text" name='mail_smtphost' id="mail_smtphost" placeholder="smtp.example.com"
- value='<?php p($_['mail_smtphost']) ?>' />
- :
- <input type="text" name='mail_smtpport' id="mail_smtpport" placeholder="<?php p($l->t('Port'))?>"
- value='<?php p($_['mail_smtpport']) ?>' />
- </p>
+ <p id="setting_smtpauth" <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
+ <label for="mail_smtpauthtype"><?php p($l->t( 'Authentication method' )); ?></label>
+ <select name='mail_smtpauthtype' id='mail_smtpauthtype'>
+ <?php foreach ($mail_smtpauthtype as $authtype => $name):
+ $selected = '';
+ if ($authtype == $_['mail_smtpauthtype']):
+ $selected = 'selected="selected"';
+ endif; ?>
+ <option value='<?php p($authtype)?>' <?php p($selected) ?>><?php p($name) ?></option>
+ <?php endforeach;?>
+ </select>
+
+ <input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" value="1"
+ <?php if ($_['mail_smtpauth']) print_unescaped('checked="checked"'); ?> />
+ <label for="mail_smtpauth"><?php p($l->t( 'Authentication required' )); ?></label>
+ </p>
- <p id="mail_credentials" <?php if (!$_['mail_smtpauth'] || $_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
- <label for="mail_smtpname"><?php p($l->t( 'Credentials' )); ?></label>
- <input type="text" name='mail_smtpname' id="mail_smtpname" placeholder="<?php p($l->t('SMTP Username'))?>"
- value='<?php p($_['mail_smtpname']) ?>' />
- <input type="password" name='mail_smtppassword' id="mail_smtppassword"
- placeholder="<?php p($l->t('SMTP Password'))?>" value='<?php p($_['mail_smtppassword']) ?>' />
- </p>
+ <p id="setting_smtphost" <?php if ($_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
+ <label for="mail_smtphost"><?php p($l->t( 'Server address' )); ?></label>
+ <input type="text" name='mail_smtphost' id="mail_smtphost" placeholder="smtp.example.com"
+ value='<?php p($_['mail_smtphost']) ?>' />
+ :
+ <input type="text" name='mail_smtpport' id="mail_smtpport" placeholder="<?php p($l->t('Port'))?>"
+ value='<?php p($_['mail_smtpport']) ?>' />
+ </p>
+ </form>
+ <form class="mail_settings" id="mail_credentials_settings">
+ <p id="mail_credentials" <?php if (!$_['mail_smtpauth'] || $_['mail_smtpmode'] != 'smtp') print_unescaped(' class="hidden"'); ?>>
+ <label for="mail_smtpname"><?php p($l->t( 'Credentials' )); ?></label>
+ <input type="text" name='mail_smtpname' id="mail_smtpname" placeholder="<?php p($l->t('SMTP Username'))?>"
+ value='<?php p($_['mail_smtpname']) ?>' />
+ <input type="password" name='mail_smtppassword' id="mail_smtppassword"
+ placeholder="<?php p($l->t('SMTP Password'))?>" value='<?php p($_['mail_smtppassword']) ?>' />
+ <input id="mail_credentials_settings_submit" type="button" value="<?php p($l->t('Store credentials')) ?>">
+ </p>
+ </form>
<br />
<em><?php p($l->t( 'Test email settings' )); ?></em>
<input type="submit" name="sendtestemail" id="sendtestemail" value="<?php p($l->t( 'Send email' )); ?>"/>
<span id="sendtestmail_msg" class="msg"></span>
-</form></div>
+</div>
<div class="section">
<h2><?php p($l->t('Log'));?></h2>