Merge branch 'develop' into pr/remove-old-manual
|
|
@ -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'});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 설정';
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 = '모바일 아이콘 설정';
|
||||
|
|
|
|||
|
|
@ -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="" />
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">‹ {$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} ›</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">‹ {$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} ›</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f301.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f302.png
Normal file
|
After Width: | Height: | Size: 918 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f303.png
Normal file
|
After Width: | Height: | Size: 548 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f304.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f305.png
Normal file
|
After Width: | Height: | Size: 905 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f306.png
Normal file
|
After Width: | Height: | Size: 431 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f307.png
Normal file
|
After Width: | Height: | Size: 954 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f308.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f309.png
Normal file
|
After Width: | Height: | Size: 733 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30a.png
Normal file
|
After Width: | Height: | Size: 806 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30b.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30c.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30d.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30e.png
Normal file
|
After Width: | Height: | Size: 942 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f30f.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f310.png
Normal file
|
After Width: | Height: | Size: 684 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31a.png
Normal file
|
After Width: | Height: | Size: 887 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31b.png
Normal file
|
After Width: | Height: | Size: 826 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31c.png
Normal file
|
After Width: | Height: | Size: 845 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31d.png
Normal file
|
After Width: | Height: | Size: 878 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31e.png
Normal file
|
After Width: | Height: | Size: 902 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f31f.png
Normal file
|
After Width: | Height: | Size: 900 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f320.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f330.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f331.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f332.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f333.png
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f334.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f335.png
Normal file
|
After Width: | Height: | Size: 610 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f337.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f338.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f339.png
Normal file
|
After Width: | Height: | Size: 959 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33a.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33b.png
Normal file
|
After Width: | Height: | Size: 892 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33c.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33d.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33e.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f33f.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f340.png
Normal file
|
After Width: | Height: | Size: 739 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f341.png
Normal file
|
After Width: | Height: | Size: 634 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f342.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f343.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f344.png
Normal file
|
After Width: | Height: | Size: 988 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f345.png
Normal file
|
After Width: | Height: | Size: 881 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f346.png
Normal file
|
After Width: | Height: | Size: 663 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f347.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f348.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f349.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34a.png
Normal file
|
After Width: | Height: | Size: 816 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34b.png
Normal file
|
After Width: | Height: | Size: 937 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34c.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34d.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34e.png
Normal file
|
After Width: | Height: | Size: 764 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f34f.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f350.png
Normal file
|
After Width: | Height: | Size: 595 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f351.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f352.png
Normal file
|
After Width: | Height: | Size: 792 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f353.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f354.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f355.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f356.png
Normal file
|
After Width: | Height: | Size: 916 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f357.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f358.png
Normal file
|
After Width: | Height: | Size: 823 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f359.png
Normal file
|
After Width: | Height: | Size: 825 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35a.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35b.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35c.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35d.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35e.png
Normal file
|
After Width: | Height: | Size: 493 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f35f.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f360.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f361.png
Normal file
|
After Width: | Height: | Size: 806 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f362.png
Normal file
|
After Width: | Height: | Size: 780 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f363.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f364.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f365.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f366.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f367.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f368.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f369.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f36a.png
Normal file
|
After Width: | Height: | Size: 808 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f36b.png
Normal file
|
After Width: | Height: | Size: 938 B |
BIN
modules/editor/components/emoticon/tpl/images/Twemoji/1f36c.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |