Merge branch 'develop' into pr/session-class

This commit is contained in:
Kijin Sung 2017-02-07 22:13:08 +09:00
commit 483ac84796
454 changed files with 10659 additions and 30145 deletions

View file

@ -549,12 +549,124 @@ class adminAdminController extends admin
$this->_saveDefaultImage($vars->is_delete_default_image);
// Save
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigGeneral'));
}
/**
* Update notification configuration.
*/
function procAdminUpdateNotification()
{
$vars = Context::getRequestVars();
// Load advanced mailer module (for lang).
$oAdvancedMailerAdminView = getAdminView('advanced_mailer');
// Validate the mail sender's information.
if (!$vars->mail_default_name)
{
return new Object(-1, 'msg_advanced_mailer_sender_name_is_empty');
}
if (!$vars->mail_default_from)
{
return new Object(-1, 'msg_advanced_mailer_sender_email_is_empty');
}
if (!Mail::isVaildMailAddress($vars->mail_default_from))
{
return new Object(-1, 'msg_advanced_mailer_sender_email_is_invalid');
}
if ($vars->mail_default_reply_to && !Mail::isVaildMailAddress($vars->mail_default_reply_to))
{
return new Object(-1, 'msg_advanced_mailer_reply_to_is_invalid');
}
// Validate the mail driver.
$mail_drivers = Rhymix\Framework\Mail::getSupportedDrivers();
$mail_driver = $vars->mail_driver;
if (!array_key_exists($mail_driver, $mail_drivers))
{
return new Object(-1, 'msg_advanced_mailer_sending_method_is_invalid');
}
// Validate the mail driver settings.
$mail_driver_config = array();
foreach ($mail_drivers[$mail_driver]['required'] as $conf_name)
{
$conf_value = $vars->{'mail_' . $mail_driver . '_' . $conf_name} ?: null;
if (!$conf_value)
{
return new Object(-1, 'msg_advanced_mailer_smtp_host_is_invalid');
}
$mail_driver_config[$conf_name] = $conf_value;
}
// Validate the SMS driver.
$sms_drivers = Rhymix\Framework\SMS::getSupportedDrivers();
$sms_driver = $vars->sms_driver;
if (!array_key_exists($sms_driver, $sms_drivers))
{
return new Object(-1, 'msg_advanced_mailer_sending_method_is_invalid');
}
// Validate the SMS driver settings.
$sms_driver_config = array();
foreach ($sms_drivers[$sms_driver]['required'] as $conf_name)
{
$conf_value = $vars->{'sms_' . $sms_driver . '_' . $conf_name} ?: null;
if (!$conf_value)
{
return new Object(-1, 'msg_advanced_mailer_smtp_host_is_invalid');
}
$sms_driver_config[$conf_name] = $conf_value;
}
foreach ($sms_drivers[$sms_driver]['optional'] as $conf_name)
{
$conf_value = $vars->{'sms_' . $sms_driver . '_' . $conf_name} ?: null;
$sms_driver_config[$conf_name] = $conf_value;
}
// Save advanced mailer config.
getController('module')->updateModuleConfig('advanced_mailer', (object)array(
'sender_name' => trim($vars->mail_default_name),
'sender_email' => trim($vars->mail_default_from),
'force_sender' => toBool($vars->mail_force_default_sender),
'reply_to' => trim($vars->mail_default_reply_to),
));
// Save member config.
getController('module')->updateModuleConfig('member', (object)array(
'webmaster_name' => trim($vars->mail_default_name),
'webmaster_email' => trim($vars->mail_default_from),
));
// Save system config.
Rhymix\Framework\Config::set("mail.default_name", trim($vars->mail_default_name));
Rhymix\Framework\Config::set("mail.default_from", trim($vars->mail_default_from));
Rhymix\Framework\Config::set("mail.default_force", toBool($vars->mail_force_default_sender));
Rhymix\Framework\Config::set("mail.default_reply_to", trim($vars->mail_default_reply_to));
Rhymix\Framework\Config::set("mail.type", $mail_driver);
Rhymix\Framework\Config::set("mail.$mail_driver", $mail_driver_config);
Rhymix\Framework\Config::set("sms.default_from", trim($vars->sms_default_from));
Rhymix\Framework\Config::set("sms.default_force", toBool($vars->sms_force_default_sender));
Rhymix\Framework\Config::set("sms.type", $sms_driver);
Rhymix\Framework\Config::set("sms.$sms_driver", $sms_driver_config);
Rhymix\Framework\Config::set("sms.allow_split.sms", toBool($vars->allow_split_sms));
Rhymix\Framework\Config::set("sms.allow_split.lms", toBool($vars->allow_split_lms));
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigNotification'));
}
/**
* Update security configuration.
*/
@ -584,6 +696,14 @@ class adminAdminController extends admin
natcasesort($object_whitelist);
Rhymix\Framework\Config::set('mediafilter.object', array_values($object_whitelist));
// HTML classes
$classes = $vars->mediafilter_classes;
$classes = array_filter(array_map('trim', preg_split('/[\r\n]/', $classes)), function($item) {
return preg_match('/^[a-zA-Z0-9_-]+$/u', $item);
});
natcasesort($classes);
Rhymix\Framework\Config::set('mediafilter.classes', array_values($classes));
// Remove old embed filter
$config = Rhymix\Framework\Config::getAll();
unset($config['embedfilter']);
@ -616,7 +736,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('admin.deny', array_values($denied_ip));
// Save
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigSecurity'));
@ -631,7 +754,7 @@ class adminAdminController extends admin
// Default URL
$default_url = rtrim(trim($vars->default_url), '/\\') . '/';
if (!filter_var($default_url, FILTER_VALIDATE_URL) || !preg_match('@^https?://@', $default_url))
if (!filter_var(Rhymix\Framework\URL::encodeIdna($default_url), FILTER_VALIDATE_URL) || !preg_match('@^https?://@', $default_url))
{
return new Object(-1, 'msg_invalid_default_url');
}
@ -700,10 +823,11 @@ class adminAdminController extends admin
}
// Thumbnail settings
$args = new stdClass;
$args->thumbnail_type = $vars->thumbnail_type === 'ratio' ? 'ratio' : 'crop';
$oDocumentModel = getModel('document');
$document_config = $oDocumentModel->getDocumentConfig();
$document_config->thumbnail_type = $vars->thumbnail_type ?: 'crop';
$oModuleController = getController('module');
$oModuleController->insertModuleConfig('document', $args);
$oModuleController->insertModuleConfig('document', $document_config);
// Other settings
Rhymix\Framework\Config::set('use_rewrite', $vars->use_rewrite === 'Y');
@ -716,7 +840,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('view.use_gzip', $vars->use_gzip === 'Y');
// Save
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigAdvanced'));
@ -776,7 +903,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('debug.allow', array_values($allowed_ip));
// Save
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigDebug'));
@ -805,7 +935,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('seo.og_use_timestamps', $vars->og_use_timestamps === 'Y');
// Save
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigSEO'));
@ -844,7 +977,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('lock.title', trim($vars->sitelock_title));
Rhymix\Framework\Config::set('lock.message', trim($vars->sitelock_message));
Rhymix\Framework\Config::set('lock.allow', array_values($allowed_ip));
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigSitelock'));
@ -916,7 +1052,10 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('ftp.path', $vars->ftp_path);
Rhymix\Framework\Config::set('ftp.pasv', $vars->ftp_pasv === 'Y');
Rhymix\Framework\Config::set('ftp.sftp', $vars->ftp_sftp === 'Y');
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_updated');
$this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigFtp'));
@ -934,7 +1073,11 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('ftp.path', null);
Rhymix\Framework\Config::set('ftp.pasv', true);
Rhymix\Framework\Config::set('ftp.sftp', false);
Rhymix\Framework\Config::save();
if (!Rhymix\Framework\Config::save())
{
return new Object(-1, 'msg_failed_to_save_config');
}
$this->setMessage('success_deleted');
}

View file

@ -445,6 +445,42 @@ class adminAdminView extends admin
$this->setTemplateFile('config_general');
}
/**
* Display Notification Settings page
* @return void
*/
function dispAdminConfigNotification()
{
// Load advanced mailer module (for lang).
$oAdvancedMailerAdminView = getAdminView('advanced_mailer');
// Load advanced mailer config.
$advanced_mailer_config = $oAdvancedMailerAdminView->getConfig();
Context::set('advanced_mailer_config', $advanced_mailer_config);
// Load member config.
$member_config = getModel('module')->getModuleConfig('member');
Context::set('member_config', $member_config);
Context::set('webmaster_name', $member_config->webmaster_name ? $member_config->webmaster_name : 'webmaster');
Context::set('webmaster_email', $member_config->webmaster_email);
// Load module config.
$module_config = getModel('module')->getModuleConfig('module');
Context::set('module_config', $module_config);
// Load mail drivers.
$mail_drivers = Rhymix\Framework\Mail::getSupportedDrivers();
Context::set('mail_drivers', $mail_drivers);
Context::set('mail_driver', config('mail.type') ?: 'mailfunction');
// Load SMS drivers.
$sms_drivers = Rhymix\Framework\SMS::getSupportedDrivers();
Context::set('sms_drivers', $sms_drivers);
Context::set('sms_driver', config('sms.type') ?: 'dummy');
$this->setTemplateFile('config_notification');
}
/**
* Display Security Settings page
* @return void
@ -454,6 +490,7 @@ class adminAdminView extends admin
// Load embed filter.
context::set('mediafilter_iframe', implode(PHP_EOL, Rhymix\Framework\Filters\MediaFilter::getIframeWhitelist()));
context::set('mediafilter_object', implode(PHP_EOL, Rhymix\Framework\Filters\MediaFilter::getObjectWhitelist()));
context::set('mediafilter_classes', implode(PHP_EOL, Rhymix\Framework\Config::get('mediafilter.classes') ?: array()));
// Admin IP access control
$allowed_ip = Rhymix\Framework\Config::get('admin.allow');

View file

@ -5,6 +5,7 @@
<actions>
<action name="dispAdminIndex" type="view" index="true" />
<action name="dispAdminConfigGeneral" type="view" menu_name="adminConfigurationGeneral" menu_index="true" />
<action name="dispAdminConfigNotification" type="view" menu_name="adminConfigurationGeneral" />
<action name="dispAdminConfigSecurity" type="view" menu_name="adminConfigurationGeneral" />
<action name="dispAdminConfigAdvanced" type="view" menu_name="adminConfigurationGeneral" />
<action name="dispAdminConfigDebug" type="view" menu_name="adminConfigurationGeneral" />
@ -24,6 +25,7 @@
<action name="procAdminDeleteLogo" type="controller" />
<action name="procAdminMenuReset" type="controller" />
<action name="procAdminUpdateConfigGeneral" type="controller" />
<action name="procAdminUpdateNotification" type="controller" />
<action name="procAdminUpdateSecurity" type="controller" />
<action name="procAdminUpdateAdvanced" type="controller" />
<action name="procAdminUpdateDebug" type="controller" />

View file

@ -2,6 +2,7 @@
$lang->admin = 'Admin';
$lang->cmd_configure = 'Configure';
$lang->subtitle_primary = 'General Settings';
$lang->subtitle_notification = 'Notification Settings';
$lang->subtitle_security = 'Security Settings';
$lang->subtitle_advanced = 'Advanced Settings';
$lang->subtitle_debug = 'Debug Settings';
@ -74,11 +75,28 @@ $lang->msg_blacklisted_reason['session_shield'] = 'The functionality that this a
$lang->msg_blacklisted_reason['smartphone'] = 'This module was disabled in XE long before Rhymix even existed.';
$lang->msg_blacklisted_reason['zipperupper'] = 'Similar functionality can be configured in the <a href="./index.php?module=admin&act=dispAdminConfigAdvanced">Advanced Settings</a> page.';
$lang->msg_warning = 'Warning';
$lang->msg_failed_to_save_config = 'Failed to save configuration. Please check permissions on files/config.';
$lang->welcome_to_xe = 'Welcome to the Rhymix admin page.';
$lang->about_lang_env = 'If you want to make the language setting same for first-time visitors, change the language setting to what you want and click [Save] button below.';
$lang->xe_license = 'Rhymix complies with the GPL.';
$lang->yesterday = 'Yesterday';
$lang->today = 'Today';
$lang->cmd_admin_default_from_name = 'Default Sender Name';
$lang->cmd_admin_default_from_email = 'Default Sender E-mail';
$lang->cmd_admin_default_from_phone = 'Default Sender Number';
$lang->cmd_admin_default_reply_to = 'Reply-To';
$lang->cmd_admin_force_default_sender = 'Apply to All';
$lang->cmd_admin_sending_method = 'Sending Method';
$lang->cmd_admin_allow_split_sms = 'Split long SMS';
$lang->cmd_admin_allow_split_lms = 'Split long LMS/MMS';
$lang->cmd_admin_default_from_name_help = 'This name will be used in all outgoing emails, such as welcome e-mails, authentication e-mails, and other e-mail notifications.';
$lang->cmd_admin_default_from_email_help = 'This e-mail address will be used in all outgoing e-mails.<br>If you are using SMTP or an external API, please check &quot;Apply to All&quot; to avoid having your e-mails treated as spam.';
$lang->cmd_admin_default_reply_to_help = 'This e-mail will receive replies. Please leave it empty if it is the same as the address above.<br>Some sending methods may not support a separate Reply-To address.';
$lang->cmd_admin_default_from_phone_help = 'This number will be used in all outgoing SMS notifications.<br>Some SMS gateways may require that you pre-register your phone number. In that case, you should also check &quot;Apply to All&quot;.';
$lang->cmd_admin_sms_dummy_driver_help = 'Select &quot;Dummy&quot; if you are not going to send any SMS.';
$lang->cmd_admin_sms_sender_key_help = 'The sender key is used for Alimtalk. Please leave it empty if you do not use Alimtalk.';
$lang->cmd_admin_allow_split_sms_help = 'Split long texts into multiple SMS in order to prevent clipping.<br>This only applies to gateways that cannot send LMS/MMS. Otherwise, long texts will be automatically converted to LMS/MMS.';
$lang->cmd_admin_allow_split_lms_help = 'Split very long texts into multiple LMS/MMS in order to prevent clipping.<br>This may increase your LMS/MMS cost significantly.';
$lang->default_lang = 'Default Language';
$lang->lang_select = 'Supported Languages';
$lang->auto_select_lang = 'Auto-select Language';
@ -198,8 +216,9 @@ $lang->tablets_as_mobile = 'Treat Tablets as Mobile';
$lang->thumbnail_type = 'Select thumbnail type.';
$lang->input_footer_script = 'Footer script';
$lang->detail_input_footer_script = 'The script is inserted into the bottom of body. It does not work at admin page.';
$lang->corp = 'Crop (Cut)';
$lang->ratio = 'Ratio (Keep Aspect Ratio)';
$lang->thumbnail_crop = 'Crop';
$lang->thumbnail_ratio = 'Keep aspect ratio (may result in spaces)';
$lang->thumbnail_none = 'Do not create thumbnails';
$lang->admin_ip_allow = 'IP addresses allowed to log in as administrator';
$lang->admin_ip_deny = 'IP addresses forbidden to log in as administrator';
$lang->local_ip_address = 'Local IP address';

View file

@ -125,8 +125,9 @@ $lang->about_use_mobile_view = 'モバイル機器で接続した際にモバイ
$lang->thumbnail_type = 'サムネイルの作成方式を選択してください。';
$lang->input_footer_script = '下段footerスクリプト';
$lang->detail_input_footer_script = '最下段にコードを追加します。管理者ページでは遂行できません。';
$lang->corp = '切り取り';
$lang->ratio = 'Ratio(縦横の比率をキープ)';
$lang->thumbnail_crop = 'トリミングする';
$lang->thumbnail_ratio = '比率に合わせる';
$lang->thumbnail_none = 'サムネイルを作成しない';
$lang->admin_ip_allow = '管理者ログイン許容IP';
$lang->admin_ip_deny = '管理者ログイン禁止IP';
$lang->local_ip_address = 'ローカルIPアドレス';

View file

@ -2,6 +2,7 @@
$lang->admin = '관리자';
$lang->cmd_configure = '설정하기';
$lang->subtitle_primary = '기본 설정';
$lang->subtitle_notification = '알림 설정';
$lang->subtitle_security = '보안 설정';
$lang->subtitle_advanced = '고급 설정';
$lang->subtitle_debug = '디버그 설정';
@ -74,11 +75,28 @@ $lang->msg_blacklisted_reason['session_shield'] = '이 애드온에서 제공하
$lang->msg_blacklisted_reason['smartphone'] = '이 모듈은 XE에서도 사용되지 않고 있었습니다.';
$lang->msg_blacklisted_reason['zipperupper'] = '이 애드온에서 제공하던 기능은 <a href="./index.php?module=admin&act=dispAdminConfigAdvanced">고급 설정</a> 페이지에서 관리할 수 있습니다.';
$lang->msg_warning = '경고';
$lang->msg_failed_to_save_config = '설정을 저장할 수 없습니다. files/config 폴더 및 설정파일들의 퍼미션을 확인해 주시기 바랍니다.';
$lang->welcome_to_xe = 'Rhymix 관리자';
$lang->about_lang_env = '처음 방문하는 사용자들의 언어 설정을 동일하게 하려면, 원하는 언어로 변경 후 아래 [저장] 버튼을 클릭하면 됩니다.';
$lang->xe_license = 'Rhymix는 GPL을 따릅니다.';
$lang->yesterday = '어제';
$lang->today = '오늘';
$lang->cmd_admin_default_from_name = '기본 발신자 이름';
$lang->cmd_admin_default_from_email = '기본 발신자 주소';
$lang->cmd_admin_default_from_phone = '기본 발신자 번호';
$lang->cmd_admin_default_reply_to = 'Reply-To 주소';
$lang->cmd_admin_force_default_sender = '일괄 적용';
$lang->cmd_admin_sending_method = '발송 방법';
$lang->cmd_admin_allow_split_sms = 'SMS 분할 발송';
$lang->cmd_admin_allow_split_lms = 'LMS/MMS 분할 발송';
$lang->cmd_admin_default_from_name_help = '가입환영 메일, 인증메일, 알림 등을 발송할 때 사용할 이름입니다. 사이트 이름 사용을 권장합니다.';
$lang->cmd_admin_default_from_email_help = '가입환영 메일, 인증메일, 알림 등을 발송할 때 사용할 메일 주소입니다.<br>SMTP 또는 외부 API 사용시 일괄 적용 옵션을 선택하지 않으면 스팸으로 취급될 가능성이 높아지니 주의하십시오.';
$lang->cmd_admin_default_reply_to_help = '받는이가 &quot;답장&quot;을 클릭했을 때 발신자 주소가 아닌 다른 주소로 답장을 받을 수 있습니다.<br>발송 방법에 따라 이 기능을 지원하지 않을 수도 있습니다.';
$lang->cmd_admin_default_from_phone_help = 'SMS 알림을 발송할 때 사용할 번호입니다.<br>국내 서비스 사용시 API 제공 업체에 발신자 번호를 미리 등록하고, 일괄 적용 옵션을 사용하시기 바랍니다.';
$lang->cmd_admin_sms_dummy_driver_help = 'SMS를 사용하지 않는 경우 Dummy를 선택하십시오.';
$lang->cmd_admin_sms_sender_key_help = '알림톡 발송에 필요한 Sender Key입니다. 알림톡을 사용하지 않는 경우 비워 두시기 바랍니다.';
$lang->cmd_admin_allow_split_sms_help = '긴 내용을 SMS로 발송할 때 잘리지 않도록 2개 이상의 SMS로 분할 발송합니다.<br>LMS/MMS를 사용할 수 있는 경우 자동 변경되므로, LMS/MMS 사용이 불가능한 서비스에만 해당됩니다.';
$lang->cmd_admin_allow_split_lms_help = '매우 긴 내용을 LMS 또는 MMS로 발송할 때 잘리지 않도록 2개 이상의 LMS 또는 MMS로 분할 발송합니다.<br>내용이 지나치게 긴 경우 비용이 많이 발생할 수 있으니 주의하십시오.';
$lang->default_lang = '기본 언어 선택';
$lang->lang_select = '지원 언어 선택';
$lang->auto_select_lang = '언어 자동 선택';
@ -193,8 +211,9 @@ $lang->tablets_as_mobile = '태블릿도 모바일 취급';
$lang->thumbnail_type = '썸네일 생성 방식';
$lang->input_footer_script = '하단(footer) 스크립트';
$lang->detail_input_footer_script = '최하단에 코드를 삽입합니다. 관리자 페이지에서는 수행되지 않습니다.';
$lang->corp = 'Crop (잘라내기)';
$lang->ratio = 'Ratio (비율 맞추기)';
$lang->thumbnail_crop = '크기에 맞추어 잘라내기';
$lang->thumbnail_ratio = '비율 유지 (여백이 생길 수 있음)';
$lang->thumbnail_none = '썸네일 생성하지 않음';
$lang->admin_ip_allow = '관리자 로그인 허용 IP';
$lang->admin_ip_deny = '관리자 로그인 금지 IP';
$lang->local_ip_address = '로컬 IP 주소';

View file

@ -11,7 +11,7 @@
<button type="button" class="x_btn-link" onclick="doResetAdminMenu();">{$lang->cmd_admin_menu_reset}</button> <span class="vr">|</span>
<button type="button" class="x_btn-link" onclick="doRecompileCacheFile();">{$lang->cmd_remake_cache}</button> <span class="vr">|</span>
<button type="button" class="x_btn-link" onclick="doClearSession();">{$lang->cmd_clear_session}</button> <span class="vr">|</span>
<a href="./index.php?module=admin&act=dispAdminViewServerEnv">{$lang->cmd_view_server_env}</a> <span class="vr">|</span>
<a href="./index.php?module=admin&act=dispAdminViewServerEnv" style="vertical-align:middle">{$lang->cmd_view_server_env}</a> <span class="vr">|</span>
<a href="https://github.com/rhymix/rhymix/issues" target="_blank" style="vertical-align:middle">{$lang->bug_report}</a>
</p>
</footer>

View file

@ -62,12 +62,16 @@
<label class="x_control-label">{$lang->thumbnail_type}</label>
<div class="x_controls">
<label for="thumbnail_type_crop" class="x_inline">
<input type="radio" name="thumbnail_type" id="thumbnail_type_crop" value="crop" checked="checked"|cond="$thumbnail_type != 'ratio'" />
{$lang->corp}
<input type="radio" name="thumbnail_type" id="thumbnail_type_crop" value="crop" checked="checked"|cond="$thumbnail_type == 'crop' || !$thumbnail_type" />
{$lang->thumbnail_crop}
</label>
<label for="thumbnail_type_ratio" class="x_inline">
<input type="radio" name="thumbnail_type" id="thumbnail_type_ratio" value="ratio" checked="checked"|cond="$thumbnail_type == 'ratio'" />
{$lang->ratio}
{$lang->thumbnail_ratio}
</label>
<label for="thumbnail_type_none" class="x_inline">
<input type="radio" name="thumbnail_type" id="thumbnail_type_none" value="none" checked="checked"|cond="$thumbnail_type == 'none'" />
{$lang->thumbnail_none}
</label>
</div>
</div>

View file

@ -5,6 +5,7 @@
</div>
<ul class="x_nav x_nav-tabs">
<li class="x_active"|cond="$act == 'dispAdminConfigGeneral'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigGeneral')}">{$lang->subtitle_primary}</a></li>
<li class="x_active"|cond="$act == 'dispAdminConfigNotification'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigNotification')}">{$lang->subtitle_notification}</a></li>
<li class="x_active"|cond="$act == 'dispAdminConfigSecurity'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigSecurity')}">{$lang->subtitle_security}</a></li>
<li class="x_active"|cond="$act == 'dispAdminConfigAdvanced'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigAdvanced')}">{$lang->subtitle_advanced}</a></li>
<li class="x_active"|cond="$act == 'dispAdminConfigDebug'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigDebug')}">{$lang->subtitle_debug}</a></li>

View file

@ -0,0 +1,296 @@
<include target="config_header.html" />
<load target="js/notification_config.js" />
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_notification/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<script type="text/javascript">
var mail_drivers = {json_encode($mail_drivers)};
var sms_drivers = {json_encode($sms_drivers)};
</script>
<form action="./" method="post" class="x_form-horizontal">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procAdminUpdateNotification" />
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/config_notification/1" />
<section class="section">
<h2>{$lang->email}</h2>
<div class="x_control-group">
<label class="x_control-label" for="mail_default_name">{$lang->cmd_admin_default_from_name}</label>
<div class="x_controls">
<input type="text" name="mail_default_name" id="mail_default_name" value="{escape($member_config->webmaster_name) ?: $module_config->siteTitle}" />
<br />
<p class="x_help-block">{$lang->cmd_admin_default_from_name_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mail_default_from">{$lang->cmd_admin_default_from_email}</label>
<div class="x_controls">
<input type="text" name="mail_default_from" id="mail_default_from" value="{escape($member_config->webmaster_email)}" />
&nbsp;
<label for="mail_force_default_sender" class="x_inline">
<input type="checkbox" name="mail_force_default_sender" id="mail_force_default_sender" value="Y" checked="checked"|cond="toBool($advanced_mailer_config->force_sender)" />
{$lang->cmd_admin_force_default_sender}
</label>
<br />
<p class="x_help-block">{$lang->cmd_admin_default_from_email_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mail_default_reply_to">{$lang->cmd_admin_default_reply_to}</label>
<div class="x_controls">
<input type="text" name="mail_default_reply_to" id="mail_default_reply_to" value="{escape($advanced_mailer_config->reply_to ?: config('mail.default_reply_to'))}" />
<br />
<p class="x_help-block">{$lang->cmd_admin_default_reply_to_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mail_driver">{$lang->cmd_admin_sending_method}</label>
<div class="x_controls">
<select name="mail_driver" id="mail_driver">
<!--@foreach($mail_drivers as $driver_name => $driver_definition)-->
<option value="{$driver_name}" selected="selected"|cond="$mail_driver === $driver_name">{$driver_definition['name']}</option>
<!--@end-->
</select>
<p class="x_help-block hidden-by-default show-for-dummy">
{$lang->msg_advanced_mailer_about_dummy}<br />{$lang->msg_advanced_mailer_about_dummy_exceptions}
</p>
</div>
</div>
<!--@foreach($mail_drivers as $driver_name => $driver_definition)-->
<!--@foreach($driver_definition['required'] as $conf_name)-->
{@ $conf_value = escape(config("mail.$driver_name.$conf_name"))}
<!--@if($conf_name === 'smtp_host')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_smtp_host">{$lang->cmd_advanced_mailer_smtp_host}</label>
<div class="x_controls">
<input type="text" name="mail_{$driver_name}_smtp_host" id="mail_{$driver_name}_smtp_host" value="{$conf_value}" />
<select id="mail_{$driver_name}_manual_entry">
<option value="">{$lang->cmd_advanced_mailer_smtp_manual_entry}</option>
<option value="gmail">Gmail</option>
<option value="hanmail">Hanmail</option>
<option value="naver">Naver</option>
<option value="worksmobile">Works Mobile</option>
<option value="outlook">Outlook.com</option>
<option value="yahoo">Yahoo</option>
</select>
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'smtp_port')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_smtp_port">{$lang->cmd_advanced_mailer_smtp_port}</label>
<div class="x_controls">
<input type="text" name="mail_{$driver_name}_smtp_port" id="mail_{$driver_name}_smtp_port" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'smtp_security')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label">{$lang->cmd_advanced_mailer_smtp_security}</label>
<div class="x_controls">
<label class="x_inline" for="mail_{$driver_name}_security_none"><input type="radio" name="mail_{$driver_name}_smtp_security" id="mail_{$driver_name}_security_none" value="none" checked="checked"|cond="!in_array($conf_value, array('ssl', 'tls'))" /> {$lang->cmd_advanced_mailer_smtp_security_none}</label>
<label class="x_inline" for="mail_{$driver_name}_security_ssl"><input type="radio" name="mail_{$driver_name}_smtp_security" id="mail_{$driver_name}_security_ssl" value="ssl" checked="checked"|cond="$conf_value === 'ssl'" /> {$lang->cmd_advanced_mailer_smtp_security_ssl}</label>
<label class="x_inline" for="mail_{$driver_name}_security_tls"><input type="radio" name="mail_{$driver_name}_smtp_security" id="mail_{$driver_name}_security_tls" value="tls" checked="checked"|cond="$conf_value === 'tls'" /> {$lang->cmd_advanced_mailer_smtp_security_tls}</label>
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'smtp_user')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_smtp_user">{$lang->cmd_advanced_mailer_smtp_user}</label>
<div class="x_controls">
<input type="text" name="mail_{$driver_name}_smtp_user" id="mail_{$driver_name}_smtp_user" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'smtp_pass')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_smtp_pass">{$lang->cmd_advanced_mailer_smtp_pass}</label>
<div class="x_controls">
<input type="password" name="mail_{$driver_name}_smtp_pass" id="mail_{$driver_name}_smtp_pass" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_type')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_api_type">{$lang->cmd_advanced_mailer_api_type}</label>
<div class="x_controls">
<select id="mail_{$driver_name}_api_type" name="mail_{$driver_name}_api_type">
<!--@foreach($driver_definition['api_types'] as $api_type)-->
<option value="{$api_type}" selected="selected"|cond="$api_type === $conf_value">{$api_type}</option>
<!--@end-->
</select>
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_domain')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_api_domain">{$lang->cmd_advanced_mailer_api_domain}</label>
<div class="x_controls">
<input type="text" name="mail_{$driver_name}_api_domain" id="mail_{$driver_name}_api_domain" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_token')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_api_token">{$lang->cmd_advanced_mailer_api_token}</label>
<div class="x_controls full-width">
<input type="text" name="mail_{$driver_name}_api_token" id="mail_{$driver_name}_api_token" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_user')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_api_user">{$lang->cmd_advanced_mailer_api_user}</label>
<div class="x_controls">
<input type="text" name="mail_{$driver_name}_api_user" id="mail_{$driver_name}_api_user" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_pass')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="mail_{$driver_name}_api_pass">{$lang->cmd_advanced_mailer_api_pass}</label>
<div class="x_controls full-width">
<input type="password" name="mail_{$driver_name}_api_pass" id="mail_{$driver_name}_api_pass" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@end-->
<!--@end-->
</section>
<section class="section">
<h2>{$lang->sms}</h2>
<div class="x_control-group">
<label class="x_control-label" for="sms_default_from">{$lang->cmd_admin_default_from_phone}</label>
<div class="x_controls">
<input type="text" name="sms_default_from" id="sms_default_from" value="{escape(config('sms.default_from'))}" />
&nbsp;
<label for="sms_force_default_sender" class="x_inline">
<input type="checkbox" name="sms_force_default_sender" id="sms_force_default_sender" value="Y" checked="checked"|cond="config('sms.default_force') !== false" />
{$lang->cmd_admin_force_default_sender}
</label>
<br />
<p class="x_help-block">{$lang->cmd_admin_default_from_phone_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="sms_driver">{$lang->cmd_admin_sending_method}</label>
<div class="x_controls">
<select name="sms_driver" id="sms_driver">
<!--@foreach($sms_drivers as $driver_name => $driver_definition)-->
<option value="{$driver_name}" selected="selected"|cond="$sms_driver === $driver_name">{$driver_definition['name']}</option>
<!--@end-->
</select>
<p class="x_help-block hidden-by-default show-for-dummy">
{$lang->cmd_admin_sms_dummy_driver_help}
</p>
</div>
</div>
<!--@foreach($sms_drivers as $driver_name => $driver_definition)-->
{@ $conf_names = array_merge($driver_definition['required'], $driver_definition['optional'])}
<!--@foreach($conf_names as $conf_name)-->
{@ $conf_value = escape(config("sms.$driver_name.$conf_name"))}
<!--@if($conf_name === 'api_key')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="sms_{$driver_name}_api_key">{$lang->cmd_advanced_mailer_api_key}</label>
<div class="x_controls">
<input type="text" name="sms_{$driver_name}_api_key" id="sms_{$driver_name}_api_key" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'api_secret')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="sms_{$driver_name}_api_secret">{$lang->cmd_advanced_mailer_api_secret}</label>
<div class="x_controls">
<input type="password" name="sms_{$driver_name}_api_secret" id="sms_{$driver_name}_api_secret" value="{$conf_value}" />
</div>
</div>
<!--@end-->
<!--@if($conf_name === 'sender_key')-->
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
<label class="x_control-label" for="sms_{$driver_name}_sender_key">{$lang->cmd_advanced_mailer_sender_key}</label>
<div class="x_controls">
<input type="text" name="sms_{$driver_name}_sender_key" id="sms_{$driver_name}_sender_key" value="{$conf_value}" />
<br />
<p class="x_help-block">{$lang->cmd_admin_sms_sender_key_help}</p>
</div>
</div>
<!--@end-->
<!--@end-->
<!--@end-->
<div class="x_control-group">
<label class="x_control-label">{$lang->cmd_admin_allow_split_sms}</label>
<div class="x_controls">
<label for="allow_split_sms_y" class="x_inline">
<input type="radio" name="allow_split_sms" id="allow_split_sms_y" value="Y" checked="checked"|cond="config('sms.allow_split.sms') !== false" />
{$lang->cmd_yes}
</label>
<label for="allow_split_sms_n" class="x_inline">
<input type="radio" name="allow_split_sms" id="allow_split_sms_n" value="N" checked="checked"|cond="config('sms.allow_split.sms') === false" />
{$lang->cmd_no}
</label>
<br />
<p class="x_help-block">{$lang->cmd_admin_allow_split_sms_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->cmd_admin_allow_split_lms}</label>
<div class="x_controls">
<label for="allow_split_lms_y" class="x_inline">
<input type="radio" name="allow_split_lms" id="allow_split_lms_y" value="Y" checked="checked"|cond="config('sms.allow_split.lms') !== false" />
{$lang->cmd_yes}
</label>
<label for="allow_split_lms_n" class="x_inline">
<input type="radio" name="allow_split_lms" id="allow_split_lms_n" value="N" checked="checked"|cond="config('sms.allow_split.lms') === false" />
{$lang->cmd_no}
</label>
<br />
<p class="x_help-block">{$lang->cmd_admin_allow_split_lms_help}</p>
</div>
</div>
</section>
<div class="x_clearfix btnArea">
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
</div>
</div>
</form>

View file

@ -19,6 +19,12 @@
<textarea name="mediafilter_object" id="mediafilter_object" rows="8" style="width:100%;">{$mediafilter_object}</textarea>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mediafilter_classes">HTML class</label>
<div class="x_controls" style="margin-right:14px">
<textarea name="mediafilter_classes" id="mediafilter_classes" rows="4" style="width:100%;">{$mediafilter_classes}</textarea>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="admin_allowed_ip">{$lang->admin_ip_allow}</label>
<div class="x_controls">

View file

@ -0,0 +1,82 @@
(function($) {
$(function() {
$("#mail_driver").on("change", function() {
var selected_driver = $(this).val();
$(this).parents("section").find("div.x_control-group.hidden-by-default, p.x_help-block.hidden-by-default").each(function() {
if ($(this).hasClass("show-for-" + selected_driver)) {
$(this).show();
} else {
$(this).hide();
}
});
}).triggerHandler("change");
$("#sms_driver").on("change", function() {
var selected_driver = $(this).val();
$(this).parents("section").find("div.x_control-group.hidden-by-default, p.x_help-block.hidden-by-default").each(function() {
if ($(this).hasClass("show-for-" + selected_driver)) {
$(this).show();
} else {
$(this).hide();
}
});
}).triggerHandler("change");
$("#mail_smtp_manual_entry").on("change", function() {
var auto_fill = $(this).val();
if (auto_fill === 'gmail') {
$("#mail_smtp_smtp_host").val('smtp.gmail.com');
$("#mail_smtp_smtp_port").val('465');
$("#mail_smtp_security_ssl").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_tls").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
if (auto_fill === 'hanmail') {
$("#mail_smtp_smtp_host").val('smtp.daum.net');
$("#mail_smtp_smtp_port").val('465');
$("#mail_smtp_security_ssl").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_tls").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
if (auto_fill === 'naver') {
$("#mail_smtp_smtp_host").val('smtp.naver.com');
$("#mail_smtp_smtp_port").val('587');
$("#mail_smtp_security_tls").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_ssl").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
if (auto_fill === 'worksmobile') {
$("#mail_smtp_smtp_host").val('smtp.worksmobile.com');
$("#mail_smtp_smtp_port").val('587');
$("#mail_smtp_security_tls").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_ssl").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
if (auto_fill === 'outlook') {
$("#mail_smtp_smtp_host").val('smtp-mail.outlook.com');
$("#mail_smtp_smtp_port").val('587');
$("#mail_smtp_security_tls").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_ssl").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
if (auto_fill === 'yahoo') {
$("#mail_smtp_smtp_host").val('smtp.mail.yahoo.com');
$("#mail_smtp_smtp_port").val('465');
$("#mail_smtp_security_ssl").prop("checked", true).parent().addClass("checked");
$("#mail_smtp_security_tls").parent().removeClass("checked");
$("#mail_smtp_security_none").parent().removeClass("checked");
$("#mail_force_default_sender").prop("checked", true).parent().addClass("checked");
}
});
});
} (jQuery));