Merge branch 'develop' into next

This commit is contained in:
Kijin Sung 2020-06-17 21:09:41 +09:00
commit 00246165b3
39 changed files with 459 additions and 348 deletions

View file

@ -42,6 +42,51 @@ a img {
max-width: 100%;
height: auto;
}
blockquote {
padding: 2px 0;
border-style: solid;
border-color: #ccc;
border-width: 0;
border-left-width: 5px;
padding-left: 20px;
padding-right: 8px;
&:lang(ar), &:lang(arc), &:lang(dv), &:lang(ha), &:lang(he), &:lang(khw), &:lang(ks), &:lang(ku), &:lang(ps), &:lang(fa), &:lang(ur), &:lang(yi) {
border-left-width: 0px;
border-right-width: 5px;
padding-left: 8px;
padding-right: 20px;
}
}
/* lists */
ul {
list-style-type: disc;
}
ol {
list-style-type: decimal;
}
ul, ol {
display: block;
margin-left: 1em;
margin-right: 0;
padding-left: 25px;
padding-right: 0;
&:lang(ar), &:lang(arc), &:lang(dv), &:lang(ha), &:lang(he), &:lang(khw), &:lang(ks), &:lang(ku), &:lang(ps), &:lang(fa), &:lang(ur), &:lang(yi) {
padding-left: 0px;
padding-right: 25px;
margin-left: 0;
margin-right: 1em;
}
}
li {
display: list-item;
}
}
@media screen {
img, video {
@ -317,7 +362,7 @@ a img {
}
}
/* Button (for XE compatibility */
/* Button (for XE compatibility) */
.btnArea_mixin(@enabled) when (@enabled = true) {
clear: both;
margin: 10px 0;

View file

@ -0,0 +1,228 @@
<?php
namespace Rhymix\Framework\Drivers\SMS;
/**
* The Solapi SMS driver.
*/
class SolAPI extends Base implements \Rhymix\Framework\Drivers\SMSInterface
{
const appId = 'PAOe9c8ftH8R';
/**
* API specifications.
*/
protected static $_spec = array(
'max_recipients' => 1000,
'sms_max_length' => 90,
'sms_max_length_in_charset' => 'CP949',
'lms_supported' => true,
'lms_supported_country_codes' => array(82),
'lms_max_length' => 2000,
'lms_max_length_in_charset' => 'CP949',
'lms_subject_supported' => true,
'lms_subject_max_length' => 40,
'mms_supported' => true,
'mms_supported_country_codes' => array(82),
'mms_max_length' => 2000,
'mms_max_length_in_charset' => 'CP949',
'mms_subject_supported' => true,
'mms_subject_max_length' => 40,
'image_allowed_types' => array('jpg', 'gif', 'png'),
'image_max_dimensions' => array(2048, 2048),
'image_max_filesize' => 300000,
'delay_supported' => true,
);
/**
* Config keys used by this driver are stored here.
*/
protected static $_required_config = array('api_key', 'api_secret');
protected static $_optional_config = array('sender_key');
/**
* Check if the current SMS driver is supported on this server.
*
* This method returns true on success and false on failure.
*
* @return bool
*/
public static function isSupported()
{
return true;
}
/**
* Send a message.
*
* This method returns true on success and false on failure.
*
* @param array $messages
* @param object $original
* @return bool
*/
public function send(array $messages, \Rhymix\Framework\SMS $original)
{
$groupArray = array();
$groupMessage = false;
if(count($messages) > 1)
{
$groupMessage = true;
}
foreach ($messages as $i => $message)
{
if (count($message->to) > 1 && !$groupMessage)
{
$groupMessage = true;
}
$options = new \stdClass;
if ($this->_config['sender_key'])
{
$options->sender_key = $this->_config['sender_key'];
$options->type = 'CTA';
}
else
{
$options->type = $message->type;
}
$options->from = $message->from;
$options->to = $message->to;
$options->text = $message->content ?: $message->type;
if ($message->delay && $message->delay > time())
{
$options->datetime = gmdate('YmdHis', $message->delay + (3600 * 9));
}
if ($message->country && $message->country != 82)
{
$options->country = $message->country;
}
if ($message->subject)
{
$options->subject = $message->subject;
}
else
{
if($message->type != 'SMS')
{
// 문자 전송 타입이 SMS이 아닐경우 subjext가 필수
$options->subject = cut_str($message->content, 20);
}
}
if ($message->image)
{
$output = $this->uploadImage($message->image, $message->type);
$options->imageId = $output->fileId;
}
$groupArray[] = $options;
}
if($groupMessage)
{
$jsonObject = new \stdClass();
$jsonObject->messages = json_encode($groupArray);
$groupId = $this->createGroup();
if(!$groupId)
{
return false;
}
$result = json_decode($this->request("PUT", "messages/v4/groups/{$groupId}/messages", $jsonObject));
if(!$result || $result->errorCode)
{
return false;
}
$result = json_decode($this->request("POST", "messages/v4/groups/{$groupId}/send"));
if (!$result || $result->status != 'SENDING')
{
return false;
}
}
else
{
// simpleMessage 를 사용 할 경우 to가 array 타입이면 문자 전송이 되지 않아 string 으로 요청
$groupArray[0]->to = $groupArray[0]->to[0];
$simpleObject = new \stdClass();
$simpleObject->message = $groupArray[0];
$simpleObject->agent = new \stdClass();
$simpleObject->agent->appId = self::appId;
$result = json_decode($this->request("POST", "messages/v4/send", $simpleObject));
if(!$result || $result->errorCode)
{
return false;
}
}
return true;
}
/**
* Create header string for http protocol
* @param $config
* @return string
*/
private function getHeader()
{
date_default_timezone_set('Asia/Seoul');
$date = date('Y-m-d\TH:i:s.Z\Z', time());
$salt = uniqid();
$signature = hash_hmac('sha256', $date . $salt, $this->_config['api_secret']);
return "HMAC-SHA256 apiKey={$this->_config['api_key']}, date={$date}, salt={$salt}, signature={$signature}";
}
/**
* Create message group
* @return string : group id
*/
private function createGroup()
{
$args = new \stdClass();
$args->appId = self::appId;
$result = $this->request("POST", 'messages/v4/groups', $args);
$groupId = json_decode($result)->groupId;
return $groupId;
}
/**
* Upload to image for MMS message.
* @param $imageDir
* @param $type
* @return mixed
*/
private function uploadImage($imageDir, $type)
{
$path = $imageDir;
$data = file_get_contents($path);
$imageData = base64_encode($data);
$jsonData = new \stdClass();
$jsonData->file = $imageData;
$jsonData->type = $type;
$url = "storage/v1/files";
return json_decode($this->request('POST', $url, $jsonData));
}
/**
* Request string message.
* @param $method
* @param $url
* @param bool $data
* @return bool|string
*/
private function request($method, $url, $data = false)
{
$url = 'https://api.solapi.com/' . $url;
if(!$data)
{
$data = null;
}
else
{
$data = json_encode($data);
}
$result = \FileHandler::getRemoteResource($url, $data, 3, $method, 'application/json', array('Authorization' => $this->getHeader()));
return $result;
}
}

View file

@ -104,13 +104,13 @@
<h1 class="tit">GET INVOLVED</h1>
<ul>
<li>
<a href="https://www.xetown.com/" target="_blank" class="ico"><i class="xi-community"></i><span class="blind">COMMUNITY</span></a>
<a href="https://xetown.com/" target="_blank" class="ico"><i class="xi-community"></i><span class="blind">COMMUNITY</span></a>
<h2>COMMUNITY</h2>
<p>Rhymix와 관련한 다양한 커뮤니티를 만나보세요.</p>
</li>
<li>
<a href="https://www.xetown.com/qna" target="_blank" class="ico"><i class="xi-users"></i><span class="blind">Q&A</span></a>
<h2>Q&A</h2>
<a href="https://xetown.com/questions" target="_blank" class="ico"><i class="xi-users"></i><span class="blind">Q&amp;A</span></a>
<h2>Q&amp;A</h2>
<p>도움이 필요할 때에는 전문가들과 이야기할 수 있습니다.</p>
</li>
<li>

View file

@ -160,8 +160,6 @@ class editorAdminController extends editor
$config->comment_editor_toolbar_hide = $configVars->comment_editor_toolbar_hide === 'Y' ? 'Y' : 'N';
$config->mobile_comment_editor_toolbar = $configVars->mobile_comment_editor_toolbar;
$config->mobile_comment_editor_toolbar_hide = $configVars->mobile_comment_editor_toolbar_hide === 'Y' ? 'Y' : 'N';
$config->content_style = $configVars->content_style;
$config->comment_content_style = $configVars->comment_content_style;
$config->sel_editor_colorset = $configVars->sel_editor_colorset;
$config->sel_comment_editor_colorset = $configVars->sel_comment_editor_colorset;

View file

@ -50,16 +50,6 @@ class editorAdminView extends editor
$skin_info = $oModuleModel->loadSkinInfo($this->module_path,$editor_config->editor_skin);
$comment_skin_info = $oModuleModel->loadSkinInfo($this->module_path,$editor_config->comment_editor_skin);
$contents = FileHandler::readDir(_XE_PATH_.'modules/editor/styles');
$content_style_list = array();
for($i=0,$c=count($contents);$i<$c;$i++)
{
$style = $contents[$i];
$info = $oModuleModel->loadSkinInfo($this->module_path,$style,'styles');
$content_style_list[$style] = new stdClass();
$content_style_list[$style]->title = $info->title;
}
// Get install info, update info, count
$oAutoinstallModel = getModel('autoinstall');
foreach($component_list as $component_name => $xml_info)
@ -82,7 +72,6 @@ class editorAdminView extends editor
Context::set('editor_skin_list', $editor_skin_list);
Context::set('editor_colorset_list', $skin_info->colorset);
Context::set('comment_editor_colorset_list', $comment_skin_info->colorset);
Context::set('content_style_list', $content_style_list);
Context::set('component_list', $component_list);
Context::set('component_count', $component_count);

View file

@ -30,7 +30,6 @@ class editor extends ModuleObject
'mobile_editor_toolbar' => 'simple',
'mobile_editor_toolbar_hide' => 'Y',
'sel_editor_colorset' => 'moono-lisa',
'content_style' => 'ckeditor_light',
'comment_editor_skin' => 'ckeditor',
'comment_editor_height' => 100,
'comment_editor_toolbar' => 'simple',
@ -39,7 +38,6 @@ class editor extends ModuleObject
'mobile_comment_editor_toolbar' => 'simple',
'mobile_comment_editor_toolbar_hide' => 'Y',
'sel_comment_editor_colorset' => 'moono-lisa',
'comment_content_style' => 'ckeditor_light',
'content_font' => '',
'content_font_size' => '13px',
'content_line_height' => '160%',

View file

@ -115,8 +115,6 @@ class editorController extends editor
if($editor_config->default_editor_settings !== 'Y') $editor_config->default_editor_settings = 'N';
$editor_config->editor_skin = Context::get('editor_skin');
$editor_config->comment_editor_skin = Context::get('comment_editor_skin');
$editor_config->content_style = Context::get('content_style');
$editor_config->comment_content_style = Context::get('comment_content_style');
$editor_config->content_font = Context::get('content_font');
if($editor_config->content_font)
{
@ -171,13 +169,12 @@ class editorController extends editor
$this->setRedirectUrl($returnUrl);
}
/**
* @brief convert editor component codes to be returned and specify content style.
*/
function triggerEditorComponentCompile(&$content)
{
if(Context::getResponseMethod() !== 'HTML') return;
/**
* @brief Load editor style
*/
function procLoadEditorStyle()
{
$module_info = Context::get('module_info');
$module_srl = $module_info->module_srl;
if($module_srl)
@ -188,7 +185,7 @@ class editorController extends editor
{
$editor_config = getModel('module')->getModuleConfig('editor');
}
if ($editor_config)
{
$default_font_config = $this->default_font_config;
@ -198,58 +195,22 @@ class editorController extends editor
if ($editor_config->content_paragraph_spacing) $default_font_config['default_paragraph_spacing'] = $editor_config->content_paragraph_spacing;
if ($editor_config->content_word_break) $default_font_config['default_word_break'] = $editor_config->content_word_break;
Context::set('default_font_config', $default_font_config);
$content_style = $editor_config->content_style;
if($content_style)
{
$path = _XE_PATH_ . 'modules/editor/styles/'.$content_style.'/';
if(is_dir($path) && file_exists($path . 'style.ini'))
{
$ini = file($path.'style.ini');
foreach($ini as $file)
{
$file = trim($file);
if(!$file) continue;
$args = array('./modules/editor/styles/'.$content_style.'/'.$file);
Context::loadFile($args);
}
}
}
/*
$buff = array();
$buff[] = '<style> .xe_content {';
if ($content_font)
{
$buff[] = "font-family: $content_font;";
}
if ($content_font_size)
{
$buff[] = "font-size: $content_font_size;";
}
if ($content_line_height)
{
$buff[] = "line-height: $content_line_height;";
}
if ($content_word_break === 'none')
{
$buff[] = 'white-space: nowrap;';
}
else
{
$buff[] = 'word-break: ' . ($content_word_break ?: 'normal') . '; word-wrap: break-word;';
}
$buff[] = '}';
$buff[] = '.xe_content p { margin: 0 0 ' . ($content_paragraph_spacing ?: 0) . ' 0; }';
$buff[] = '</style>';
Context::addHtmlHeader(implode(' ', $buff));
*/
}
else
{
Context::set('default_font_config', $this->default_font_config);
}
}
/**
* @brief convert editor component codes to be returned and specify content style.
*/
function triggerEditorComponentCompile(&$content)
{
if(Context::getResponseMethod() !== 'HTML') return;
$this->procLoadEditorStyle();
$content = $this->transComponent($content);
}

View file

@ -113,7 +113,7 @@ class editorModel extends editor
Context::set('upload_target_srl', $upload_target_srl);
Context::set('editor_sequence', $option->editor_sequence);
// Check that the skin and content style exist.
// Check that the skin exist.
if (!$option->editor_skin)
{
$option->editor_skin = $option->skin;
@ -122,10 +122,6 @@ class editorModel extends editor
{
$option->editor_skin = $this->default_editor_config['editor_skin'];
}
if (!$option->content_style || !file_exists($this->module_path . 'styles/' . $option->content_style))
{
$option->content_style = $this->default_editor_config['content_style'];
}
if (!$option->sel_editor_colorset)
{
$option->sel_editor_colorset = $option->colorset ?: $this->default_editor_config['sel_editor_colorset'];
@ -140,8 +136,6 @@ class editorModel extends editor
}
Context::set('skin', $option->editor_skin);
Context::set('editor_path', $this->module_path . 'skins/' . $option->editor_skin . '/');
Context::set('content_style', $option->content_style);
Context::set('content_style_path', $this->module_path . 'styles/' . $option->content_style);
Context::set('colorset', $option->sel_editor_colorset);
Context::set('editor_height', $option->editor_height);
Context::set('editor_toolbar', $option->editor_toolbar);
@ -250,6 +244,7 @@ class editorModel extends editor
// Compile and return the editor skin template.
$tpl_path = Context::get('editor_path');
Context::loadLang($tpl_path.'lang');
$oTemplate = TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, 'editor.html');
}
@ -295,7 +290,6 @@ class editorModel extends editor
$option->$key = $val;
}
$option->editor_skin = $option->comment_editor_skin;
$option->content_style = $option->comment_content_style;
$option->sel_editor_colorset = $option->sel_comment_editor_colorset;
$option->upload_file_grant = $option->comment_upload_file_grant;
$option->enable_default_component_grant = $option->enable_comment_default_component_grant;

View file

@ -29,7 +29,6 @@ class editorView extends editor
$oEditorModel = getModel('editor');
$option = $oEditorModel->getEditorConfig();
$option->editor_skin = 'ckeditor';
$option->content_style = 'ckeditor_light';
$option->sel_editor_colorset = 'moono-lisa';
$option->primary_key_name = 'primary_key';
$option->content_key_name = 'content';
@ -141,16 +140,6 @@ class editorView extends editor
$skin_info = $oModuleModel->loadSkinInfo($this->module_path,$editor_config->comment_editor_skin);
Context::set('editor_comment_colorset_list', $skin_info->colorset);
$contents = FileHandler::readDir(_XE_PATH_.'modules/editor/styles');
$content_style_list = array();
for($i=0,$c=count($contents);$i<$c;$i++)
{
$style = $contents[$i];
$info = $oModuleModel->loadSkinInfo($this->module_path,$style,'styles');
$content_style_list[$style] = new stdClass();
$content_style_list[$style]->title = $info->title;
}
Context::set('content_style_list', $content_style_list);
// Get a group list
$oMemberModel = getModel('member');
$site_module_info = Context::get('site_module_info');
@ -161,7 +150,6 @@ class editorView extends editor
$security = new Security();
$security->encodeHTML('group_list..title');
$security->encodeHTML('group_list..description');
$security->encodeHTML('content_style_list..');
$security->encodeHTML('editor_comment_colorset_list..title');
// Set a template file

View file

@ -51,7 +51,6 @@ $lang->component_history = 'Updates';
$lang->component_description = 'Description';
$lang->component_extra_vars = 'Option Variable';
$lang->component_grant = 'Permission Setting';
$lang->content_style = 'Content Style';
$lang->content_font = 'Content Font';
$lang->content_font_size = 'Content Font Size';
$lang->about_component = 'About component';

View file

@ -28,7 +28,6 @@ $lang->component_history = '更新履歴';
$lang->component_description = '説明';
$lang->component_extra_vars = '設定変数';
$lang->component_grant = '権限設定';
$lang->content_style = 'コンテンツスタイル';
$lang->content_font = 'コンテンツフォント';
$lang->content_font_size = 'コンテンツフォントサイズ';
$lang->about_component = 'コンポーネント情報';

View file

@ -55,7 +55,6 @@ $lang->component_history = '변경 이력';
$lang->component_description = '설명';
$lang->component_extra_vars = '설정 변수';
$lang->component_grant = '권한설정';
$lang->content_style = '문서 서식';
$lang->content_font = '문서 폰트';
$lang->content_font_size = '문서 폰트 크기';
$lang->about_component = '컴포넌트 소개';

View file

@ -8,7 +8,6 @@ $lang->component_history = 'Güncelleştirmeler';
$lang->component_description = 'Açıklama';
$lang->component_extra_vars = 'Değişken Seçenek';
$lang->component_grant = 'Yetki Ayarı';
$lang->content_style = 'İçerik Tarzı';
$lang->content_font = 'İçerik Yazı Tipi';
$lang->content_font_size = 'İçerik Yazı Boyutu';
$lang->about_component = 'Bileşen hakkında';

View file

@ -9,7 +9,6 @@ $lang->component_history = 'Cập nhật';
$lang->component_description = 'Mô tả';
$lang->component_extra_vars = 'Thông tin bổ xung';
$lang->component_grant = 'Thiết lập quyền';
$lang->content_style = 'Kiểu dáng của nội dung';
$lang->content_font = 'Font chữ của nội dung';
$lang->content_font_size = 'Cỡ chữ của nội dung';
$lang->about_component = 'Thông tin Thành phần';

View file

@ -10,7 +10,6 @@ $lang->component_history = '更新日志';
$lang->component_description = '说明';
$lang->component_extra_vars = '变数设置';
$lang->component_grant = '权限设置';
$lang->content_style = '文档样式';
$lang->content_font = '文档字体';
$lang->content_font_size = '字体大小';
$lang->about_component = '组件简介';

View file

@ -10,7 +10,6 @@ $lang->component_history = '更新紀錄';
$lang->component_description = '說明';
$lang->component_extra_vars = '變數設置';
$lang->component_grant = '權限設置';
$lang->content_style = '內容樣式';
$lang->content_font = '內容字體';
$lang->content_font_size = '字體大小';
$lang->about_component = '組件簡介';

View file

@ -1,3 +1,7 @@
body.cke_editable { padding: 5px; background-color: #fff; }
html.cke_panel_container, html.cke_panel_container body {
background-color: #fff
}
p.editor_autosaved_message.autosave_message {display:none;background: #f6ffdb;padding:6px 10px;margin:0;line-height:1;}
span.cke_combo__fontsize .cke_combo_button { width: 64px; }
span.cke_combo__fontsize .cke_combo_text { width: 30px; }
span.cke_combo__fontsize .cke_combo_button { width: 64px;}
span.cke_combo__fontsize .cke_combo_text { width: 30px; }

View file

@ -0,0 +1,122 @@
@charset "UTF-8";
/* Content Default Styles */
.word_break(@wb) when (@wb = normal), (@wb = keep-all), (@wb = break-all) {
word-break: @wb;
word-wrap: break-word;
}
.word_break(@wb) when (@wb = none) {
white-space: nowrap;
}
.cont_font(@ft) when (@ft = none) {
}
.cont_font(@ft) when not (@ft = none) {
font-family: @content_font;
}
.cont_fontsize(@fs) when (@fs = none) {
}
.cont_fontsize(@fs) when not (@fs = none) {
font-size: @content_font_size;
}
.cont_lineheight(@lh) when (@lh = none) {
}
.cont_lineheight(@lh) when not (@lh = none) {
line-height: @content_line_height;
}
.cont_linespacing(@ls) when (@ls = none) {
}
.cont_linespacing(@ls) when not (@ls = none) {
margin: 0 0 @content_paragraph_spacing 0;
}
.light_dark(@cs) when (@cs = moono-dark) {
background-color: #494949;
color: #fff;
}
.light_dark(@cs) when not (@cs = moono-dark) {
background-color: #fff;
color: #000;
}
.light_dark_top(@cs) when (@cs = moono-dark) {
border-bottom-color: #1b1b1b;
}
.light_dark_top(@cs) when not (@cs = moono-dark) {
}
html {
&.cke_panel_container, &.cke_panel_container body {
background-color: #fff;
}
body.cke_editable {
padding: 10px;
.light_dark(@colorset);
}
}
p.editor_autosaved_message.autosave_message {
display:none;
background: #e0e0e0;
padding: 10px;
margin:0;
line-height:1.2;
}
.cke_reset {
span {
&.cke_top {
.light_dark_top(@colorset);
a {
&:hover, &:focus {
transition: none;
}
}
}
&.cke_combo__fontsize {
.cke_combo_button {
width: 64px;
}
.cke_combo_text {
width: 30px;
}
}
}
}
.xe_content.editable, .rhymix_content.editable {
.cont_font(@content_font);
.cont_fontsize(@content_font_size);
.cont_lineheight(@content_line_height);
.word_break(@content_word_break);
p {
.cont_linespacing(@content_paragraph_spacing);
.cont_lineheight(@content_line_height);
span {
.cont_lineheight(@content_line_height);
}
}
img, video {
max-width: 100%;
height: auto;
}
blockquote {
padding: 2px 0;
border-style: solid;
border-color: #ccc;
border-width: 0;
border-left-width: 5px;
padding-left: 20px;
padding-right: 8px;
&:lang(ar), &:lang(arc), &:lang(dv), &:lang(ha), &:lang(he), &:lang(khw), &:lang(ks), &:lang(ku), &:lang(ps), &:lang(fa), &:lang(ur), &:lang(yi) {
border-left-width: 0px;
border-right-width: 5px;
padding-left: 8px;
padding-right: 20px;
}
}
}

View file

@ -1,5 +1,14 @@
<!-- css -->
<load target="css/default.css" />
{@ $css_var = new stdClass; }
{@ $css_var->colorset = $colorset; }
{@ $css_var->content_font = $content_font ? $content_font : 'none'; }
{@ $css_var->content_font_size = $content_font_size ? $content_font_size : 'none';}
{@ $css_var->content_line_height = $content_line_height ? $content_line_height: 'none';}
{@ $css_var->content_word_break = $content_word_break ? $content_word_break : 'none';}
{@ $css_var->content_paragraph_spacing = $content_paragraph_spacing ? $content_paragraph_spacing : 'none';}
{@ Context::set('css_var',$css_var);}
<load target="css/default.less" vars="$css_var" />
<load target="../../../../common/xeicon/xeicon.min.css" />
<!-- JS -->
@ -12,22 +21,12 @@
var auto_saved_msg = "{$lang->msg_auto_saved}";
</script>
{@ $css_file_list = array(Context::getRequestUri() . $content_style_path . '/editor.css?' . date("YmdHis", @filemtime($content_style_path."/editor.css")))}
{@ $css_file_list = array()}
<!--@foreach($editor_additional_css as $additional_css_url)-->
{@ $css_file_list[] = $additional_css_url}
<!--@endforeach-->
{@ $css_content = null }
<!--@if($content_font || $content_font_size)-->
{@ $css_content .= ' .xe_content.editable { '}
<block cond="$content_font">{@ $css_content .= 'font-family:' . $content_font . ';';}</block>
<block cond="$content_font_size">{@ $css_content .= 'font-size:' . $content_font_size . ';';}</block>
<block cond="$content_line_height">{@ $css_content .= 'line-height:' . $content_line_height . ';';}</block>
<block cond="$content_word_break === 'none'">{@ $css_content .= 'white-space: nowrap;';}</block>
<block cond="$content_word_break !== 'none'">{@ $css_content .= 'word-break:' . ($content_word_break ?: 'normal') . '; word-wrap: break-word;';}</block>
{@ $css_content .= chr(125);}
{@ $css_content .= '.xe_content.editable p { margin: 0 0 ' . ($content_paragraph_spacing ?: 0) . ' 0;' . chr(125);}
<!--@endif-->
<!--@if($enable_autosave)-->
<input type="hidden" name="_saved_doc_title" value="{escape($saved_doc->title)}" />
@ -112,6 +111,14 @@ var auto_saved_msg = "{$lang->msg_auto_saved}";
content_field: jQuery('[name={$editor_content_key_name}]')
};
// Add style-sheet for the WYSIWYG
$(document.getElementsByTagName('link')).each(function() {
if ($(this).attr('rel') == 'stylesheet') {
settings.ckeconfig.contentsCss.push($(this).attr('href'));
}
});
// Prevent removal of icon fonts and Google code.
CKEDITOR.dtd.$removeEmpty.i = 0;
CKEDITOR.dtd.$removeEmpty.ins = 0;

View file

@ -1,41 +0,0 @@
@charset "utf-8";
/* NAVER (developers@xpressengine.com) */
.xe_content.editable img{border:0;max-width:100%;}
.xe_content.editable video{max-width:100%;}
.xe_content.editable blockquote.q1,
.xe_content.editable blockquote.q2,
.xe_content.editable blockquote.q3,
.xe_content.editable blockquote.q4,
.xe_content.editable blockquote.q5,
.xe_content.editable blockquote.q6,
.xe_content.editable blockquote.q7{padding:10px;margin:0 15px;border:0;}
.xe_content.editable blockquote.q1{padding:0 10px;border-left:2px solid #ccc}
.xe_content.editable blockquote.q2{padding:0 10px;background:url(./img/bg_qmark.gif) no-repeat left top}
.xe_content.editable blockquote.q3{border:1px solid #d9d9d9}
.xe_content.editable blockquote.q4{border:1px solid #d9d9d9;background:#fbfbfb}
.xe_content.editable blockquote.q5{border:2px solid #707070}
.xe_content.editable blockquote.q6{border:1px dashed #707070}
.xe_content.editable blockquote.q7{border:1px dashed #707070;background:#fbfbfb}
.xe_content.editable table .xe_selected_cell{background-color:#d6e9ff}
.xe_content.editable img.cke_iframe{background-color:#444}
.xe_content.editable blockquote
{
padding: 2px 0;
border-style: solid;
border-color: #ccc;
border-width: 0;
}
.xe_content.editable.cke_contents_ltr blockquote
{
padding-left: 20px;
padding-right: 8px;
border-left-width: 5px;
}
.xe_content.editable.cke_contents_rtl blockquote
{
padding-left: 8px;
padding-right: 20px;
border-right-width: 5px;
}

View file

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="editor.css" />
<title>Rhymix</title>
</head>
<body class="xe_content editable">
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 B

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">Rhymix 기본 서식</title>
<title xml:lang="en">Rhymix Default</title>
<version>1.9</version>
<date>2016-04-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
</author>
</skin>

View file

@ -1,30 +0,0 @@
@charset "utf-8";
/* NAVER (developers@xpressengine.com) */
html { height: 100%; }
body { min-height: 100%; }
.xe_content blockquote.q1,
.xe_content blockquote.q2,
.xe_content blockquote.q3,
.xe_content blockquote.q4,
.xe_content blockquote.q5,
.xe_content blockquote.q6,
.xe_content blockquote.q7{padding:10px;margin:0 15px;border:0;}
.xe_content blockquote.q1{padding:0 10px;border-left:2px solid #ccc}
.xe_content blockquote.q2{padding:0 10px;background:url(./img/bg_qmark.gif) no-repeat left top}
.xe_content blockquote.q3{border:1px solid #d9d9d9}
.xe_content blockquote.q4{border:1px solid #d9d9d9;background:#fbfbfb}
.xe_content blockquote.q5{border:2px solid #707070}
.xe_content blockquote.q6{border:1px dashed #707070}
.xe_content blockquote.q7{border:1px dashed #707070;background:#fbfbfb}
.xe_content p{margin:0}
.xe_content blockquote
{
padding: 2px 0;
border-style: solid;
border-color: #ccc;
border-width: 0;
padding-left: 20px;
padding-right: 8px;
border-left-width: 5px;
}

View file

@ -1 +0,0 @@
style.css

View file

@ -1,22 +0,0 @@
@charset "utf-8";
/* NAVER (developers@xpressengine.com) */
html,body{height:100%}
body{margin:0;padding:0}
.xe_content{color:#000;}
.xe_content img{border:0;max-width:100%;width:auto;height:auto}
.xe_content blockquote.q1,
.xe_content blockquote.q2,
.xe_content blockquote.q3,
.xe_content blockquote.q4,
.xe_content blockquote.q5,
.xe_content blockquote.q6,
.xe_content blockquote.q7{padding:10px;margin:0 15px}
.xe_content blockquote.q1{padding:0 10px;border-left:2px solid #ccc}
.xe_content blockquote.q2{padding:0 10px;background:url(./img/bg_qmark.gif) no-repeat left top}
.xe_content blockquote.q3{border:1px solid #d9d9d9}
.xe_content blockquote.q4{border:1px solid #d9d9d9;background:#fbfbfb}
.xe_content blockquote.q5{border:2px solid #707070}
.xe_content blockquote.q6{border:1px dashed #707070}
.xe_content blockquote.q7{border:1px dashed #707070;background:#fbfbfb}
.xe_content table .xe_selected_cell{background-color:#d6e9ff}
.xe_content p{margin:0}

View file

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="editor.css" />
<title>Rhymix</title>
</head>
<body class="xe_content editable">
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 B

View file

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">XE 기본 서식</title>
<title xml:lang="en">XE Default Form</title>
<title xml:lang="zh-CN">XE默认样式</title>
<title xml:lang="vi">XE Mặc định</title>
<title xml:lang="jp">XEデフォルトスタイル</title>
<title xml:lang="zh-TW">XE預設樣式</title>
<title xml:lang="tr">XE Varsayılan Form</title>
<description xml:lang="ko">
XE 기본 문서 서식입니다.
있는 그대로 표시가 될 뿐 편집/ 출력시 아무런 영향을 끼치지 않습니다.
</description>
<description xml:lang="en">
XE's default document style.
It displays as it is, and does not affect during editing/printing.
</description>
<description xml:lang="zh-CN">
XE默认样式。
主题显示及编辑不会受到任何影响,即原样输出。
</description>
<description xml:lang="zh-TW">
XE預設樣式。
主題顯示和編輯不會受到影響。
</description>
<description xml:lang="jp">
XEの基本ドキュメント書式です。
そのまま表示されるだけで、編集・出力には影響しません。
</description>
<description xml:lang="tr">
XE varsayılan belge tarzı.
Olduğu gibi gösterir, düzenlemeye / yazdırmaya etki etmez.
</description>
<description xml:lang="vi">
Trang mẫu mặc định của XE.
Nó sẽ hiển thị trong phần sửa đổi bài viết và không ảnh hưởng đến bất cứ chức năng nào cả.
</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="tr">NAVER</name>
</author>
</skin>

View file

@ -1,19 +0,0 @@
@charset "utf-8";
/* NAVER (developers@xpressengine.com) */
.xe_content{color:#000;}
.xe_content blockquote.q1,
.xe_content blockquote.q2,
.xe_content blockquote.q3,
.xe_content blockquote.q4,
.xe_content blockquote.q5,
.xe_content blockquote.q6,
.xe_content blockquote.q7{padding:10px;margin:0 15px}
.xe_content blockquote.q1{padding:0 10px;border-left:2px solid #ccc}
.xe_content blockquote.q2{padding:0 10px;background:url(./img/bg_qmark.gif) no-repeat left top}
.xe_content blockquote.q3{border:1px solid #d9d9d9}
.xe_content blockquote.q4{border:1px solid #d9d9d9;background:#fbfbfb}
.xe_content blockquote.q5{border:2px solid #707070}
.xe_content blockquote.q6{border:1px dashed #707070}
.xe_content blockquote.q7{border:1px dashed #707070;background:#fbfbfb}
.xe_content p{margin:0}

View file

@ -1 +0,0 @@
style.css

View file

@ -72,16 +72,6 @@
</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->guide_choose_text_formatting}</label>
<div class="x_controls">
<!--@foreach($content_style_list as $key => $val)-->
<label class="x_inline">
<input type="radio" name="content_style" value="{$key}" id="content_style_{$key}" checked="checked"|cond="$key==$editor_config->content_style||!$editor_config->content_style && $key=='ckeditor_light'"> {$val->title}
</label>
<!--@end-->
</div>
</div>
<h1>{$lang->comment_editor}</h1>
@ -124,16 +114,6 @@
</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->guide_choose_comment_text_formatting}</label>
<div class="x_controls">
<!--@foreach($content_style_list as $key => $val)-->
<label class="x_inline">
<input type="radio" name="comment_content_style" value="{$key}" id="comment_content_style_{$key}" checked="checked"|cond="$key==$editor_config->comment_content_style||!$editor_config->comment_content_style && $key=='ckeditor_light'"> {$val->title}
</label>
<!--@end-->
</div>
</div>
<h1>{$lang->editor_common_settings}</h1>

View file

@ -47,19 +47,6 @@
</select>
</td>
</tr>
<tr class="editor_skin">
<th scope="row" style="text-align:right">{$lang->content_style}</th>
<td>
<select name="content_style">
<option loop="$content_style_list => $key, $val" value="{$key}" selected="selected"|cond="$key==$editor_config->content_style||!$editor_config->content_style&&$key=='default'">{$val->title}</option>
</select>
</td>
<td>
<select name="comment_content_style">
<option loop="$content_style_list => $key, $val" value="{$key}" selected="selected"|cond="$key==$editor_config->comment_content_style||!$editor_config->comment_content_style&&$key=='default'">{$val->title}</option>
</select>
</td>
</tr>
<tr class="editor_skin">
<th scope="row" style="text-align:right">{$lang->editor_height}</th>
<td>

View file

@ -280,7 +280,8 @@ class fileModel extends file
*/
public static function getFileConfig($module_srl = null)
{
$config = clone ModuleModel::getModuleConfig('file');
$config = ModuleModel::getModuleConfig('file');
$config = is_object($config) ? clone $config : new stdClass();
if($module_srl)
{
$module_config = ModuleModel::getModulePartConfig('file', $module_srl);

View file

@ -7,7 +7,7 @@
</ul>
<div id="footer">
Rhymix is a fork of the <a href="https://www.xpressengine.com" target="_blank">XpressEngine</a> CMS<br />
with additional patches by members of the <a href="https://www.xetown.com" target="_blank">XETOWN</a> community.<br />
with additional patches by members of the <a href="https://xetown.com" target="_blank">XETOWN</a> community.<br />
Please see our <a href="https://github.com/rhymix/rhymix" target="_blank">GitHub repository</a> for a full timeline of patches and their authors.
</div>

View file

@ -1,9 +1,9 @@
<?php
/* Copyright (C) XETOWN CMS <https://www.xetown.com> */
/* Copyright (C) Rhymix <https://rhymix.org> */
/**
* The view class of the integration_search module
*
* @author MinSoo Kim <misol.kr@gmail.com>
* @author Rhymix Developers and Contributors <devops@rhymix.org>
*/
class integration_searchMobile extends integration_searchView

View file

@ -303,6 +303,7 @@ class ncenterlite extends ModuleObject
public static function getSmsHandler()
{
static $oSmsHandler = null;
$config = getModel('ncenterlite')->getConfig();
if($oSmsHandler === null)
{
@ -314,6 +315,11 @@ class ncenterlite extends ModuleObject
return $oSmsHandler;
}
if($config->variable_name === '#')
{
return $oSmsHandler;
}
$variable_name = array();
$member_config = getModel('member')->getMemberConfig();
foreach($member_config->signupForm as $value)

View file

@ -1483,8 +1483,7 @@ class ncenterliteController extends ncenterlite
return false;
}
$logged_info = Context::get('logged_info');
if($logged_info->member_srl == $args->member_srl)
if($this->user->member_srl == $args->member_srl)
{
return false;
}

View file

@ -17,10 +17,14 @@ class SMSTest extends \Codeception\TestCase\Test
$drivers = Rhymix\Framework\SMS::getSupportedDrivers();
$this->assertTrue(isset($drivers['dummy']));
$this->assertTrue(isset($drivers['coolsms']));
$this->assertTrue(isset($drivers['solapi']));
$this->assertEquals('Dummy', $drivers['dummy']['name']);
$this->assertTrue(in_array('api_key', $drivers['coolsms']['required']));
$this->assertTrue(in_array('api_key', $drivers['solapi']['required']));
$this->assertTrue($drivers['coolsms']['api_spec']['mms_supported']);
$this->assertTrue($drivers['coolsms']['api_spec']['delay_supported']);
$this->assertTrue($drivers['solapi']['api_spec']['mms_supported']);
$this->assertTrue($drivers['solapi']['api_spec']['delay_supported']);
}
public function testSenderAndRecipients()