Merge branch 'develop' into pr/remove-old-manual

This commit is contained in:
Kijin Sung 2018-08-22 19:23:51 +09:00
commit b86a66ce4c
1067 changed files with 1644 additions and 270 deletions

View file

@ -621,22 +621,21 @@ function setFixedPopupSize() {
offset = $pc.css({overflow:'scroll'}).offset();
w = $pc.width(10).height(10000).get(0).scrollWidth + offset.left*2;
h = $pc.height(10).width(10000).get(0).scrollHeight + offset.top*2;
if(w < 800) w = 800 + offset.left*2;
// Window 의 너비나 높이는 스크린의 너비나 높이보다 클 수 없다. 스크린의 너비나 높이와 내용의 너비나 높이를 비교해서 최소값을 이용한다.
w = Math.min(w, window.screen.availWidth);
h = $pc.width(w - offset.left*2).height(10).get(0).scrollHeight + offset.top*2;
dw = $win.width();
dh = $win.height();
// Window 의 너비나 높이는 스크린의 너비나 높이보다 클 수 없다. 스크린의 너비나 높이와 내용의 너비나 높이를 비교해서 최소값을 이용한다.
w = Math.min(w, window.screen.availWidth);
h = Math.min(h, window.screen.availHeight - 100);
window.resizeBy(w - dw, h - dh);
$pc.width(w - offset.left*2).css({overflow:'',height:''});
if(h === window.screen.availHeight - 100) {
$pc.width(w - offset.left*2-scbw).css({overflow:'',height:''});
}
$pc.width('100%').css({overflow:'',height:'','box-sizing':'border-box'});
}
/**

View file

@ -382,57 +382,15 @@ class adminAdminController extends admin
*/
function procAdminUpdateConfig()
{
$adminTitle = Context::get('adminTitle');
$file = $_FILES['adminLogo'];
$oModuleModel = getModel('module');
$oAdminConfig = $oModuleModel->getModuleConfig('admin');
if(!is_object($oAdminConfig))
{
$oAdminConfig = new stdClass();
}
if($file['tmp_name'])
{
$target_path = 'files/attach/images/admin/';
FileHandler::makeDir($target_path);
// Get file information
list($width, $height, $type, $attrs) = @getimagesize($file['tmp_name']);
if($type == 3)
{
$ext = 'png';
}
elseif($type == 2)
{
$ext = 'jpg';
}
else
{
$ext = 'gif';
}
$target_filename = sprintf('%s%s.%s.%s', $target_path, 'adminLogo', date('YmdHis'), $ext);
@move_uploaded_file($file['tmp_name'], $target_filename);
$oAdminConfig->adminLogo = $target_filename;
}
if($adminTitle)
{
$oAdminConfig->adminTitle = strip_tags($adminTitle);
}
else
{
unset($oAdminConfig->adminTitle);
}
if($oAdminConfig)
{
$oModuleController = getController('module');
$oModuleController->insertModuleConfig('admin', $oAdminConfig);
}
$oModuleController = getController('module');
$oModuleController->insertModuleConfig('admin', $oAdminConfig);
$this->setMessage('success_updated', 'info');
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');

View file

@ -197,14 +197,6 @@ class adminAdminView extends admin
}
}
// Admin logo, title setup
$objConfig = $oModuleModel->getModuleConfig('admin');
$gnbTitleInfo = new stdClass();
$gnbTitleInfo->adminTitle = $objConfig->adminTitle ? $objConfig->adminTitle : 'Admin';
$gnbTitleInfo->adminLogo = $objConfig->adminLogo ? $objConfig->adminLogo : '';
$browserTitle = $gnbTitleInfo->adminTitle . ' - ' . ($subMenuTitle ? $subMenuTitle : 'Dashboard');
// Get list of favorite
$oAdminAdminModel = getAdminModel('admin');
$output = $oAdminAdminModel->getFavoriteList(0, true);
@ -255,7 +247,7 @@ class adminAdminView extends admin
Context::set('gnbUrlList', $menu->list);
Context::set('parentSrl', $parentSrl);
Context::set('gnb_title_info', $gnbTitleInfo);
Context::addBrowserTitle($browserTitle);
Context::addBrowserTitle($subMenuTitle ? $subMenuTitle : 'Dashboard');
}
/**
@ -709,7 +701,6 @@ class adminAdminView extends admin
function dispAdminSetup()
{
$oModuleModel = getModel('module');
$configObject = $oModuleModel->getModuleConfig('admin');
$oAdmin = getClass('admin');
$oMenuAdminModel = getAdminModel('menu');
@ -717,7 +708,6 @@ class adminAdminView extends admin
Context::set('menu_srl', $output->menu_srl);
Context::set('menu_title', $output->title);
Context::set('config_object', $configObject);
$this->setTemplateFile('admin_setup');
}

View file

@ -339,7 +339,7 @@ $lang->msg_php_warning_notice = '이 서버는 안전하지 않은 PHP 버전을
$lang->msg_php_warning_notice_explain = '<li>매우 심각한 PHP 보안 문제 및 공격에 노출될 수 있습니다.</li><li>Rhymix 최신 버전을 사용할 수 없습니다.</li><li>Rhymix 최신 버전 이상에서 지원하는 확장 기능을 사용할 수 없습니다.</li><li>일부 확장 기능이 동작하지 않거나, 이로 인해 장애가 발생할 수 있습니다.</li>';
$lang->msg_php_warning_now_version = '이 서버의 PHP 버전';
$lang->msg_php_warning_latest_version_check = 'PHP 최신 안정버전 확인하기';
$lang->admin_setup = '관리자 설정';
$lang->admin_setup = '관리자 화면 설정';
$lang->open_all = '모두 펼치기';
$lang->close_all = '모두 접기';
$lang->desktop_settings = 'PC 설정';

View file

@ -22,11 +22,10 @@
</p>
<!--@else-->
<h1>
<a class="custom_header" href="{getUrl('','module','admin')}" cond="$gnb_title_info->adminLogo"><img src="{getUrl('')}{$gnb_title_info->adminLogo}" alt="{$gnb_title_info->adminTitle}" /> {$gnb_title_info->adminTitle}</a>
<a class="default_header" href="{getUrl('','module','admin')}" cond="!$gnb_title_info->adminLogo"><i class="xi xi-cog"></i></a>
<a class="default_header" href="{getUrl('','module','admin')}"><i class="xi xi-cog"></i></a>
<a class="mobile_menu_open" href="#gnbNav"><i class="xi xi-bars"></i></a>
</h1>
<p class="site"><a href="{$xe_default_url}">{$xe_default_url}</a></p>
<p class="site"><a href="{$xe_default_url}">{$site_module_info->settings->title ?: $xe_default_url}</a></p>
<!--@end-->
<div class="account">
<ul>

View file

@ -1,42 +1,10 @@
<load target="./js/menu_setup.js" usecdn="true" />
<div class="x_page-header">
<h1>{$lang->admin_setup} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_admin" target="_blank">{$lang->help}</a></h1>
<h1>{$lang->admin_setup}</h1>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/admin_setup/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<section class="section">
<h1>{$lang->admin_title}</h1>
<form action="./" method="post" enctype="multipart/form-data" class="x_form-horizontal">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procAdminUpdateConfig" />
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/admin_setup/1" />
<div class="x_control-group">
<label class="x_control-label">{$lang->admin_logo}</label>
<div class="x_controls">
<!--@if($config_object->adminLogo)-->
<img src="{getUrl('').$config_object->adminLogo}" />
<button type="submit" value="procAdminDeleteLogo" name="act" class="x_btn">{$lang->cmd_delete}</button>
<!--@else-->
<img src="{getUrl('')}{$gnb_title_info->adminLogo}" />
<!--@end-->
<input type="file" name="adminLogo" id="adminLogo" />
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="adminTitle">{$lang->admin_title}</label>
<div class="x_controls">
<input type="text" name="adminTitle" id="adminTitle" value="{$config_object->adminTitle}" placeholder="Rhymix Admin" />
</div>
</div>
<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>
</fieldset>
</form>
</section>
<section class="section">
<h1>{$lang->admin_menu_setup}</h1>
<form id="listForm" action="./" method="post" class="adminMap">

View file

@ -209,6 +209,9 @@ body>.x,
.x .x_btn-group {
zoom: 1;
}
.x .x_btn-group.margin_after {
margin-right: 10px;
}
.x .x_btn-group:after {
content: "";
display: block;
@ -837,7 +840,7 @@ margin-bottom: 10px;
/* Header */
.x>.header>h1 {
display: inline-block;
margin: 0 15px 0 0;
margin: 0 10px 0 0;
white-space: nowrap;
}
.x>.header>h1>a {
@ -873,13 +876,12 @@ margin-bottom: 10px;
.x>.header>.site {
display: inline-block;
margin: 1px 0 0 0;
font-size: 11px;
font-size: 12px;
line-height: 22px;
}
.x>.header>.site>a {
text-decoration: none;
color: #F5F5F5;
font-family: Tahoma, Geneva, sans-serif;
}
.x>.header>.site>a:hover,
.x>.header>.site>a:focus {
@ -895,7 +897,7 @@ margin-bottom: 10px;
position: relative;
margin: 1px 0 0 0;
font-size: 12px;
line-height: 22px;
line-height: 22px !important;
}
.x>.header>.account>ul {
list-style: none;

View file

@ -1432,15 +1432,17 @@ jQuery(function($){
$t.addClass('tg').find('>*:not(:first-child)').hide();
}
});
$('.x .dsTg .rx_detail_marks').hide();
var details = $('.x .dsTg td.tg>*:not(:first-child),.x .dsTg .rx_detail_marks');
var details = $('.x .dsTg td.tg>*:not(:first-child), .x .dsTg .rx_detail_marks').hide();
var simples = $('.x .dsTg .rx_simple_marks').show();
var simpleBtnFn = function(){
details.hide();
simples.show();
detailBtn.removeClass('x_active');
simpleBtn.addClass('x_active');
};
var detailBtnFn = function(){
details.show();
simples.hide();
detailBtn.addClass('x_active');
simpleBtn.removeClass('x_active');
};
@ -1448,6 +1450,8 @@ jQuery(function($){
detailBtn.click(detailBtnFn);
if($(window).width() > 980) {
detailBtnFn();
} else {
simpleBtnFn();
}
});

View file

@ -23,10 +23,6 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<i cond="$search_target == 'ipaddress'">|</i>
<a href="{getUrl('search_target', 'ipaddress')}" class="active" cond="$search_target == 'ipaddress'">{$lang->ipaddress}:{$search_keyword}({number_format($total_count)})</a>
<div class="x_pull-right x_btn-group">
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
</div>
<div class="x_btn-group x_pull-right">
<a href="#listManager" class="x_btn modalAnchor" data-value="true" data-name="is_trash">{$lang->trash}</a>
<a href="#listManager" class="x_btn modalAnchor" data-value="false" data-name="is_trash">{$lang->delete}</a>
@ -35,6 +31,10 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<a href="#listManager" class="x_btn modalAnchor" data-value="0" data-name="will_publish" cond="$search_target!='is_published'">{$lang->cmd_unpublish}</a>
<a href="#listManager" class="x_btn modalAnchor" data-value="1" data-name="will_publish" cond="$search_target!='is_published'">{$lang->cmd_publish}</a>
</div>
<div class="x_pull-right x_btn-group margin_after">
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
</div>
</caption>
<thead>
<tr>
@ -63,7 +63,10 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<a href="#popup_menu_area" class="member_{$val->get('member_srl')}" cond="$val->get('member_srl') > 0">{$val->getNickName()}</a>
</td>
<td class="nowr rx_detail_marks">{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))}</td>
<td class="nowr"><span class="rx_detail_marks">{(zdate($val->regdate,"Y-"))}</span><span>{(zdate($val->regdate,"m-d"))}</span><span class="rx_detail_marks">{(zdate($val->regdate,"\nH:i:s"))}</span></td>
<td class="nowr">
<span class="rx_detail_marks">{$val->getRegdate('Y-m-d H:i:s')}</span>
<span class="rx_simple_marks">{$val->getRegdate($val->getRegdateTime() > time() - 86400 ? 'H:i' : 'm-d')}</span>
</td>
<td class="nowr rx_detail_marks"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
<td class="nowr rx_detail_marks"><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
<td class="nowr rx_detail_marks"><!--@if($val->status)-->{$lang->published_name_list['Y']}<!--@else-->{$lang->published_name_list['N']}<!--@end--></td>

View file

@ -9,6 +9,7 @@ $lang->category_title = 'Category';
$lang->category_color = 'Category Font Color';
$lang->expand = 'Expand';
$lang->category_group_srls = 'Accessable Group';
$lang->cmd_document_module_config = 'Basic Settings';
$lang->cmd_make_child = 'Add Child Category';
$lang->cmd_pc_icon_setting = 'PC icon setting';
$lang->cmd_mobile_icon_setting = 'Mobile icon setting';

View file

@ -1,10 +1,11 @@
<?php
$lang->document_list = '문서 목록';
$lang->view_count_option = '조회수 설정';
$lang->view_count_option = '조회 수 설정';
$lang->view_count_option_all = '모두 계산';
$lang->view_count_option_some = '일부 계산';
$lang->view_count_option_once = '중복 금지';
$lang->view_count_option_none = '계산 안 함';
$lang->cmd_document_module_config = '기본 설정';
$lang->cmd_delete_all_thumbnail = '섬네일 모두 삭제';
$lang->cmd_pc_icon_setting = 'PC 아이콘 설정';
$lang->cmd_mobile_icon_setting = '모바일 아이콘 설정';

View file

@ -1,5 +1,6 @@
<!--%import("filter/manage_checked_document.xml")-->
<load target="js/document_admin.js" />
{@Context::addMetaTag('viewport', 'width=device-width', FALSE);}
<form action="./" method="get" id="fo_management">
<input type="hidden" name="module" value="document" />
<input type="hidden" name="type" value="" />

View file

@ -25,16 +25,16 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<i cond="$search_target == 'ipaddress'">|</i>
<a href="{getUrl('search_target', 'ipaddress')}" class="active" cond="$search_target == 'ipaddress'">{$lang->ipaddress}:{$search_keyword}({number_format($total_count)})</a>
<div class="x_pull-right x_btn-group">
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
</div>
<div class="x_btn-group x_pull-right">
<a href="#manageForm" class="x_btn modalAnchor" data-value="trash">{$lang->trash}</a>
<a href="#manageForm" class="x_btn modalAnchor" data-value="delete">{$lang->delete}</a>
<a href="#manageForm" class="x_btn modalAnchor" data-value="move">{$lang->move}</a>
<a href="#manageForm" class="x_btn modalAnchor" data-value="copy">{$lang->copy}</a>
</div>
<div class="x_pull-right x_btn-group margin_after">
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
</div>
</caption>
<thead>
<tr>
@ -64,7 +64,10 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
</td>
<td class="nowr rx_detail_marks">{$oDocument->get('readed_count')}</td>
<td class="nowr rx_detail_marks">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
<td class="nowr"><span class="rx_detail_marks">{$oDocument->getRegdate("Y-")}</span><span>{$oDocument->getRegdate("m-d")}</span><span class="rx_detail_marks">{$oDocument->getRegdate(" H:i")}</span></td>
<td class="nowr">
<span class="rx_detail_marks">{$oDocument->getRegdate('Y-m-d H:i:s')}</span>
<span class="rx_simple_marks">{$oDocument->getRegdate($oDocument->getRegdateTime() > time() - 86400 ? 'H:i' : 'm-d')}</span>
</td>
<td class="nowr rx_detail_marks"><a href="{getUrl('search_target','ipaddress','search_keyword',$oDocument->get('ipaddress'))}">{$oDocument->get('ipaddress')}</a></td>
<td class="nowr rx_detail_marks">{$status_name_list[$oDocument->get('status')]}</td>
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" /></td>

View file

@ -8,7 +8,7 @@
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{$lang->document_list}</a>
</li>
<li class="x_active"|cond="$act == 'dispDocumentAdminConfig'">
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminConfig')}">{$lang->cmd_module_config}</a>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminConfig')}">{$lang->cmd_document_module_config}</a>
</li>
<li class="x_active"|cond="$act == 'dispDocumentAdminDeclared'">
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminDeclared')}">{$lang->cmd_declared_list}</a>

View file

@ -1,35 +1,40 @@
<h1 class="h1">{$lang->cmd_view_saved_document}</h1>
<!-- 목록 -->
<table class="x_table x_table-striped x_table-hover">
<caption>Total : {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th class="title">{$lang->date}</th>
<th class="title">{$lang->title}</th>
<th class="title">{$lang->cmd_select}</th>
</tr>
</thead>
<tbody>
<!--@foreach($document_list as $no => $val)-->
<tr>
<td>{$val->getRegdate("Y-m-d H:i:s")}</td>
<td > <a href="#" onclick="jQuery('#saved_document_{$val->document_srl}').toggle(); setFixedPopupSize(); return false;">{$val->getTitle()}</a>
<div id="saved_document_{$val->document_srl}" class="saved_content" style="display:none;">{$val->getContent(false)}</div>
</td>
<td><a href="#" onclick="doDocumentSelect('{$val->document_srl}', '{$val->getDocumentType()}'); return false;" class="buttonSet buttonActive"><span>{$lang->cmd_select}</span></a></td>
</tr>
<!--@end-->
</tbody>
</table>
<!-- 페이지 네비게이션 -->
<div class="pagination">
<a href="{getUrl('page','','module_srl','')}" class="direction">&lsaquo; {$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="direction">{$lang->last_page} &rsaquo;</a>
{@Context::addMetaTag('viewport', 'width=device-width', FALSE);}
<div class="x_modal-header">
<h1>{$lang->cmd_view_saved_document}</h1>
</div>
<div class="x_modal-body">
<!-- 목록 -->
<table class="x_table x_table-striped x_table-hover">
<caption>Total : {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th class="title">{$lang->date}</th>
<th class="title">{$lang->title}</th>
<th class="title">{$lang->cmd_select}</th>
</tr>
</thead>
<tbody>
<!--@foreach($document_list as $no => $val)-->
<tr>
<td>{$val->getRegdate("Y-m-d H:i:s")}</td>
<td > <a href="#" onclick="jQuery('#saved_document_{$val->document_srl}').toggle(); setFixedPopupSize(); return false;">{$val->getTitle()}</a>
<div id="saved_document_{$val->document_srl}" class="saved_content" style="display:none;">{$val->getContent(false)}</div>
</td>
<td><a href="#" onclick="doDocumentSelect('{$val->document_srl}', '{$val->getDocumentType()}'); return false;" class="buttonSet buttonActive"><span>{$lang->cmd_select}</span></a></td>
</tr>
<!--@end-->
</tbody>
</table>
<!-- 페이지 네비게이션 -->
<div class="pagination">
<a href="{getUrl('page','','module_srl','')}" class="direction">&lsaquo; {$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="direction">{$lang->last_page} &rsaquo;</a>
</div>
</div>

View file

@ -32,7 +32,7 @@ class emoticon extends EditorHandler
$list = $this->getEmoticons($emoticon);
$this->add('emoticons', implode("\n",$list));
$this->add('emoticons', $list);
}
/**
@ -47,7 +47,17 @@ class emoticon extends EditorHandler
while($file = $oDir->read())
{
if(substr($file,0,1)=='.') continue;
if(preg_match('/\.(jpg|jpeg|gif|png)$/i',$file)) $output[] = sprintf("%s/%s", $path, str_replace($this->emoticon_path,'',$file));
if(preg_match('/\.(jpg|jpeg|gif|png)$/i',$file)) {
$svg = null;
$filename = sprintf("%s/%s", $path, str_replace($this->emoticon_path,'',$file));
list($width, $height, $type, $attr) = getimagesize($emoticon_path . '/'. $file);
if(file_exists (($emoticon_path . '/svg/'. substr($file, 0, -4) . '.svg'))) {
$svg = sprintf("%s/svg/%s", $path, str_replace($this->emoticon_path,'',substr($file, 0, -4) . '.svg'));
}
$output[] = array('filename' => $filename, 'width' => $width, 'height' => $height, 'svg' => $svg, 'alt' => substr($file, 0, -4));
}
}
$oDir->close();
if(count($output)) asort($output);
@ -66,7 +76,11 @@ class emoticon extends EditorHandler
{
foreach($emoticon_dirs as $emoticon)
{
if(preg_match("/^([a-z0-9\_]+)$/i", $emoticon)) $emoticon_list[] = $emoticon;
if(preg_match("/^([a-z0-9\_]+)$/i", $emoticon)) {
$oModuleModel = getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->component_path, $emoticon, 'tpl/images');
$emoticon_list[$emoticon] = (is_object($skin_info) && $skin_info->title) ? $skin_info->title : $emoticon;
}
}
}
Context::set('emoticon_list', $emoticon_list);
@ -88,6 +102,8 @@ class emoticon extends EditorHandler
{
$src = $xml_obj->attrs->src;
$alt = $xml_obj->attrs->alt;
$width = intval($xml_obj->attrs->width);
$height = intval($xml_obj->attrs->height);
if(!$alt)
{
@ -103,7 +119,12 @@ class emoticon extends EditorHandler
if($alt)
{
$attr_output[] = "alt=\"".$alt."\"";
$attr_output[] = "alt=\"".htmlspecialchars($alt)."\"";
}
if($width && $height)
{
$attr_output[] = "width=\"".$width."\" height=\"".$height."\"";
}
$code = sprintf("<img %s style=\"border:0px\" />", implode(" ",$attr_output));

View file

@ -1,35 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<component version="0.2">
<title xml:lang="ko">이모티콘 출력</title>
<title xml:lang="jp">顔文字(イモティコン)</title>
<title xml:lang="zh-CN">表情图标</title>
<title xml:lang="en">Display Emoticons</title>
<title xml:lang="vi">Diễn tả cảm xúc</title>
<title xml:lang="es">Mostrar iconos gestuales</title>
<title xml:lang="ru">Отображение смайлов</title>
<title xml:lang="zh-TW">表情符號</title>
<title xml:lang="tr">His Simgeleri Gösterimi</title>
<description xml:lang="ko">이모티콘을 에디터에 삽입할 수 있습니다.</description>
<description xml:lang="jp">顔文字(イモティコン)をエディターに追加することが出来ます。</description>
<description xml:lang="zh-CN">可以插入表情图标到编辑器。</description>
<description xml:lang="en">You may insert emoticons to editor.</description>
<description xml:lang="vi">Bạn có thể chèn biểu tượng cảm xúc vào bài viết.</description>
<description xml:lang="es">Usted puede insertar emoticonos para el editor.</description>
<description xml:lang="ru">Вы можете вставить смыйлы в редактор.</description>
<description xml:lang="zh-TW">可插入表情符號到編輯器。</description>
<description xml:lang="tr">Editöre his simgeleri ekleyebilirsiniz.</description>
<version>1.7</version>
<date>2013-11-27</date>
<title xml:lang="ko">이모티콘 출력</title>
<title xml:lang="jp">顔文字(イモティコン)</title>
<title xml:lang="zh-CN">表情图标</title>
<title xml:lang="en">Display Emoticons</title>
<title xml:lang="vi">Diễn tả cảm xúc</title>
<title xml:lang="es">Mostrar iconos gestuales</title>
<title xml:lang="ru">Отображение смайлов</title>
<title xml:lang="zh-TW">表情符號</title>
<title xml:lang="tr">His Simgeleri Gösterimi</title>
<description xml:lang="ko">이모티콘을 에디터에 삽입할 수 있습니다.</description>
<description xml:lang="jp">顔文字(イモティコン)をエディターに追加することが出来ます。</description>
<description xml:lang="zh-CN">可以插入表情图标到编辑器。</description>
<description xml:lang="en">You may insert emoticons to editor.</description>
<description xml:lang="vi">Bạn có thể chèn biểu tượng cảm xúc vào bài viết.</description>
<description xml:lang="es">Usted puede insertar emoticonos para el editor.</description>
<description xml:lang="ru">Вы можете вставить смыйлы в редактор.</description>
<description xml:lang="zh-TW">可插入表情符號到編輯器。</description>
<description xml:lang="tr">Editöre his simgeleri ekleyebilirsiniz.</description>
<version>1.9</version>
<date>2018-08-19</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
<name xml:lang="tr">NAVER</name>
</author>
<author email_address="devops@rhymix.org" link="https://github.com/rhymix/rhymix/graphs/contributors">
<name xml:lang="ko">Rhymix contributors</name>
<name xml:lang="vi">Rhymix contributors</name>
<name xml:lang="jp">Rhymix contributors</name>
<name xml:lang="zh-CN">Rhymix contributors</name>
<name xml:lang="en">Rhymix contributors</name>
<name xml:lang="es">Rhymix contributors</name>
<name xml:lang="ru">Rhymix contributors</name>
<name xml:lang="zh-TW">Rhymix contributors</name>
<name xml:lang="tr">Rhymix contributors</name>
</author>
<author email_address="developers@xpressengine.com" link="https://www.xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
<name xml:lang="tr">NAVER</name>
</author>
</component>

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 887 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 959 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show more