mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-28 14:52:24 +09:00
commit
0b3eaa410b
35 changed files with 273 additions and 239 deletions
14
Gruntfile.js
14
Gruntfile.js
|
|
@ -259,9 +259,10 @@ module.exports = function(grunt) {
|
|||
if(tasks.length === 0) {
|
||||
grunt.util.spawn({
|
||||
cmd: "tar",
|
||||
args: ['cfz', 'xe.'+version+'.tar.gz', 'xe/'],
|
||||
args: ['cfz', '../xe.'+version+'.tar.gz', './'],
|
||||
opts: {
|
||||
cwd: 'build'
|
||||
cwd: 'build/xe',
|
||||
cache: false
|
||||
}
|
||||
}, function (error, result, code) {
|
||||
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.tar.gz');
|
||||
|
|
@ -269,9 +270,10 @@ module.exports = function(grunt) {
|
|||
|
||||
grunt.util.spawn({
|
||||
cmd: "zip",
|
||||
args: ['-r', 'xe.'+version+'.zip', 'xe/'],
|
||||
args: ['-r', '../xe.'+version+'.zip', './'],
|
||||
opts: {
|
||||
cwd: 'build'
|
||||
cwd: 'build/xe',
|
||||
cache: false
|
||||
}
|
||||
}, function (error, result, code) {
|
||||
grunt.log.ok('Archived(full) : ' + build_dir + '/xe.'+version+'.zip');
|
||||
|
|
@ -313,8 +315,8 @@ module.exports = function(grunt) {
|
|||
|
||||
// changed
|
||||
if(diff.length) {
|
||||
var args_tar = ['archive', '--prefix=xe/', '-o', 'build/xe.'+version+'.changed.tar.gz', version];
|
||||
var args_zip = ['archive', '--prefix=xe/', '-o', 'build/xe.'+version+'.changed.zip', version];
|
||||
var args_tar = ['archive', '-o', 'build/xe.'+version+'.changed.tar.gz', version];
|
||||
var args_zip = ['archive', '-o', 'build/xe.'+version+'.changed.zip', version];
|
||||
args_tar = args_tar.concat(diff);
|
||||
args_zip = args_zip.concat(diff);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ if(!defined('__XE__'))
|
|||
* @brief Counter add-on
|
||||
*/
|
||||
// Execute if called_position is before_display_content
|
||||
if($called_position == 'before_module_init' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled())
|
||||
if($called_position == 'before_module_init' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
|
||||
{
|
||||
$oCounterController = getController('counter');
|
||||
$oCounterController->counterExecute();
|
||||
|
|
|
|||
|
|
@ -337,11 +337,9 @@ class Context
|
|||
array(&$oSessionController, 'open'), array(&$oSessionController, 'close'), array(&$oSessionModel, 'read'), array(&$oSessionController, 'write'), array(&$oSessionController, 'destroy'), array(&$oSessionController, 'gc')
|
||||
);
|
||||
}
|
||||
|
||||
if($sess = $_POST[session_name()]) session_id($sess);
|
||||
session_start();
|
||||
if($sess = $_POST[session_name()])
|
||||
{
|
||||
session_id($sess);
|
||||
}
|
||||
|
||||
// set authentication information in Context and session
|
||||
if(self::isInstalled())
|
||||
|
|
@ -1283,31 +1281,39 @@ class Context
|
|||
$val = array($val);
|
||||
}
|
||||
|
||||
$result = array();
|
||||
foreach($val as $k => $v)
|
||||
{
|
||||
$k = htmlentities($k);
|
||||
if($key === 'page' || $key === 'cpage' || substr_compare($key, 'srl', -3) === 0)
|
||||
{
|
||||
$val[$k] = !preg_match('/^[0-9,]+$/', $v) ? (int) $v : $v;
|
||||
$result[$k] = !preg_match('/^[0-9,]+$/', $v) ? (int) $v : $v;
|
||||
}
|
||||
elseif($key === 'mid' || $key === 'vid' || $key === 'search_keyword')
|
||||
elseif($key === 'mid' || $key === 'search_keyword')
|
||||
{
|
||||
$val[$k] = htmlspecialchars($v, ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE);
|
||||
$result[$k] = htmlspecialchars($v, ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE);
|
||||
}
|
||||
elseif($key === 'vid')
|
||||
{
|
||||
$result[$k] = urlencode($v);
|
||||
}
|
||||
else
|
||||
{
|
||||
$result[$k] = $v;
|
||||
|
||||
if($do_stripslashes && version_compare(PHP_VERSION, '5.9.0', '<') && get_magic_quotes_gpc())
|
||||
{
|
||||
$v = stripslashes($v);
|
||||
$result[$k] = stripslashes($result[$k]);
|
||||
}
|
||||
|
||||
if(!is_array($v))
|
||||
if(!is_array($result[$k]))
|
||||
{
|
||||
$val[$k] = trim($v);
|
||||
$result[$k] = trim($result[$k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $isArray ? $val : $val[0];
|
||||
return $isArray ? $result : $result[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -447,7 +447,8 @@ class DB
|
|||
$log['act'] = Context::get('act');
|
||||
$log['time'] = date('Y-m-d H:i:s');
|
||||
|
||||
$bt = debug_backtrace();
|
||||
$bt = version_compare(PHP_VERSION, '5.3.6', '>=') ? debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) : debug_backtrace();
|
||||
|
||||
foreach($bt as $no => $call)
|
||||
{
|
||||
if($call['function'] == 'executeQuery' || $call['function'] == 'executeQueryArray')
|
||||
|
|
@ -455,6 +456,7 @@ class DB
|
|||
$call_no = $no;
|
||||
$call_no++;
|
||||
$log['called_file'] = $bt[$call_no]['file'].':'.$bt[$call_no]['line'];
|
||||
$log['called_file'] = str_replace(_XE_PATH_ , '', $log['called_file']);
|
||||
$call_no++;
|
||||
$log['called_method'] = $bt[$call_no]['class'].$bt[$call_no]['type'].$bt[$call_no]['function'];
|
||||
break;
|
||||
|
|
@ -487,20 +489,12 @@ class DB
|
|||
|
||||
$this->setQueryLog($log);
|
||||
|
||||
// if __LOG_SLOW_QUERY__ if defined, check elapsed time and leave query log
|
||||
if(__LOG_SLOW_QUERY__ > 0 && $elapsed_time > __LOG_SLOW_QUERY__)
|
||||
{
|
||||
$buff = '';
|
||||
$log_file = _XE_PATH_ . 'files/_db_slow_query.php';
|
||||
if(!file_exists($log_file))
|
||||
{
|
||||
$buff = '<?php exit(); ?' . '>' . "\n";
|
||||
}
|
||||
|
||||
$buff .= sprintf("%s\t%s\n\t%0.6f sec\tquery_id:%s\n\n", date("Y-m-d H:i"), $this->query, $elapsed_time, $this->query_id);
|
||||
|
||||
@file_put_contents($log_file, $buff, FILE_APPEND|LOCK_EX);
|
||||
}
|
||||
$log_args = new stdClass;
|
||||
$log_args->query = $this->query;
|
||||
$log_args->query_id = $this->query_id;
|
||||
$log_args->caller = $log['called_method'] . '() in ' . $log['called_file'];
|
||||
$log_args->connection = $log['connection'];
|
||||
writeSlowlog('query', $elapsed_time, $log_args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ class DisplayHandler extends Handler
|
|||
$buff = 'The IP address is not allowed. Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php';
|
||||
}
|
||||
|
||||
return "<!--\r\n" . implode("\r\n", $buff) . "\r\n-->";
|
||||
return "<!--\r\n" . $buff . "\r\n-->";
|
||||
}
|
||||
|
||||
// Output to a file
|
||||
|
|
|
|||
|
|
@ -579,7 +579,7 @@ class ModuleHandler extends Handler
|
|||
if($kind == 'admin')
|
||||
{
|
||||
$grant = $oModuleModel->getGrant($this->module_info, $logged_info);
|
||||
if(!$grant->is_admin && !$grant->manager)
|
||||
if(!$grant->manager)
|
||||
{
|
||||
$this->_setInputErrorToContext();
|
||||
$this->error = 'msg_is_not_manager';
|
||||
|
|
@ -589,6 +589,19 @@ class ModuleHandler extends Handler
|
|||
$oMessageObject->dispMessage();
|
||||
return $oMessageObject;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$grant->is_admin && $this->module != $this->orig_module->module && $xml_info->permission->{$this->act} != 'manager')
|
||||
{
|
||||
$this->_setInputErrorToContext();
|
||||
$this->error = 'msg_is_not_administrator';
|
||||
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
|
||||
$oMessageObject->setError(-1);
|
||||
$oMessageObject->setMessage($this->error);
|
||||
$oMessageObject->dispMessage();
|
||||
return $oMessageObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if($xml_info->default_index_act && method_exists($oModule, $xml_info->default_index_act))
|
||||
|
|
@ -1152,7 +1165,7 @@ class ModuleHandler extends Handler
|
|||
$before_trigger_time = NULL;
|
||||
if(__LOG_SLOW_TRIGGER__> 0)
|
||||
{
|
||||
$before_trigger_time = microtime(true);
|
||||
$before_trigger_time = microtime(true);
|
||||
}
|
||||
|
||||
foreach($triggers as $item)
|
||||
|
|
@ -1160,12 +1173,6 @@ class ModuleHandler extends Handler
|
|||
$module = $item->module;
|
||||
$type = $item->type;
|
||||
$called_method = $item->called_method;
|
||||
|
||||
$before_each_trigger_time = NULL;
|
||||
if(__LOG_SLOW_TRIGGER__> 0)
|
||||
{
|
||||
$before_each_trigger_time = microtime(true);
|
||||
}
|
||||
|
||||
// todo why don't we call a normal class object ?
|
||||
$oModule = getModule($module, $type);
|
||||
|
|
@ -1174,63 +1181,24 @@ class ModuleHandler extends Handler
|
|||
continue;
|
||||
}
|
||||
|
||||
$before_each_trigger_time = microtime(true);
|
||||
|
||||
$output = $oModule->{$called_method}($obj);
|
||||
|
||||
$after_each_trigger_time = microtime(true);
|
||||
$elapsed_time_trigger = $after_each_trigger_time - $before_each_trigger_time;
|
||||
|
||||
$slowlog = new stdClass;
|
||||
$slowlog->caller = $trigger_name . '.' . $called_position;
|
||||
$slowlog->called = $module . '.' . $called_method;
|
||||
$slowlog->called_extension = $module;
|
||||
if($trigger_name != 'XE.writeSlowlog') writeSlowlog('trigger', $elapsed_time_trigger, $slowlog);
|
||||
|
||||
if(is_object($output) && method_exists($output, 'toBool') && !$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
unset($oModule);
|
||||
|
||||
//store after trigger call time
|
||||
$after_each_trigger_time = NULL;
|
||||
//init value to 0
|
||||
$elapsed_time_trigger = 0;
|
||||
|
||||
if(__LOG_SLOW_TRIGGER__> 0)
|
||||
{
|
||||
$after_each_trigger_time = microtime(true);
|
||||
$elapsed_time_trigger = ($after_each_trigger_time - $before_each_trigger_time) * 1000;
|
||||
}
|
||||
|
||||
// if __LOG_SLOW_TRIGGER__ is defined, check elapsed time and leave trigger time log
|
||||
if(__LOG_SLOW_TRIGGER__> 0 && $elapsed_time_trigger > __LOG_SLOW_TRIGGER__)
|
||||
{
|
||||
$buff = '';
|
||||
$log_file = _XE_PATH_ . 'files/_db_slow_trigger.php';
|
||||
if(!file_exists($log_file))
|
||||
{
|
||||
$buff = '<?php exit(); ?' . '>' . "\n";
|
||||
}
|
||||
|
||||
$buff .= sprintf("%s\t%s.%s.%s.%s(%s)\n\t%0.6f msec\n\n", date("Y-m-d H:i"), $item->trigger_name,$item->module,$item->called_method,$item->called_position,$item->type, $elapsed_time_trigger);
|
||||
|
||||
@file_put_contents($log_file, $buff, FILE_APPEND|LOCK_EX);
|
||||
}
|
||||
}
|
||||
|
||||
//store after trigger call time
|
||||
$after_trigger_time = NULL;
|
||||
//init value to 0
|
||||
$elapsed_time = 0;
|
||||
if(__LOG_SLOW_TRIGGER__> 0)
|
||||
{
|
||||
$after_trigger_time = microtime(true);
|
||||
$elapsed_time = ($after_trigger_time - $before_trigger_time) * 1000;
|
||||
}
|
||||
|
||||
// if __LOG_SLOW_TRIGGER__ is defined, check elapsed time and leave trigger time log
|
||||
if(__LOG_SLOW_TRIGGER__> 0 && $elapsed_time > __LOG_SLOW_TRIGGER__)
|
||||
{
|
||||
$buff = '';
|
||||
$log_file = _XE_PATH_ . 'files/_slow_trigger.php';
|
||||
if(!file_exists($log_file))
|
||||
{
|
||||
$buff = '<?php exit(); ?' . '>' . "\n";
|
||||
}
|
||||
|
||||
$buff .= sprintf("%s\t%s.totaltime\n\t%0.6f msec\n\n", date("Y-m-d H:i"), $trigger_name,$elapsed_time);
|
||||
|
||||
@file_put_contents($log_file, $buff, FILE_APPEND|LOCK_EX);
|
||||
}
|
||||
|
||||
return new Object();
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@
|
|||
</domain>
|
||||
<domain name="http://www.vimeo.com" desc="vimeo.com">
|
||||
<pattern>http://player.vimeo.com/</pattern>
|
||||
<pattern>//player.vimeo.com/</pattern>
|
||||
</domain>
|
||||
</iframe>
|
||||
</whiteurl>
|
||||
|
|
|
|||
|
|
@ -714,7 +714,7 @@ class Validator
|
|||
{
|
||||
$name = strtolower($name);
|
||||
|
||||
if(strpos('email,userid,url,alpha,alpha_number,number,', $name . ',') !== false)
|
||||
if(in_array($name, array('email', 'userid', 'url', 'alpha', 'alpha_number', 'number')))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -596,25 +596,14 @@ function doDocumentLoad(obj) {
|
|||
}
|
||||
|
||||
/* 저장된 게시글의 선택 */
|
||||
function doDocumentSelect(document_srl, module) {
|
||||
function doDocumentSelect(document_srl) {
|
||||
if(!opener || !opener.objForSavedDoc) {
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
|
||||
if(module===undefined) {
|
||||
module = 'document';
|
||||
}
|
||||
|
||||
// 게시글을 가져와서 등록하기
|
||||
switch(module) {
|
||||
case 'page' :
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispPageAdminContentModify');
|
||||
break;
|
||||
default :
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite');
|
||||
break;
|
||||
}
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite');
|
||||
window.close();
|
||||
}
|
||||
|
||||
|
|
@ -911,7 +900,7 @@ function get_by_id(id) {
|
|||
|
||||
jQuery(function($){
|
||||
// display popup menu that contains member actions and document actions
|
||||
$(document).on('click touchstart', function(evt) {
|
||||
$(document).on('click', function(evt) {
|
||||
var $area = $('#popup_menu_area');
|
||||
if(!$area.length) $area = $('<div id="popup_menu_area" tabindex="0" style="display:none;z-index:9999" />').appendTo(document.body);
|
||||
|
||||
|
|
|
|||
131
common/js/xe.js
131
common/js/xe.js
|
|
@ -595,25 +595,14 @@ function doDocumentLoad(obj) {
|
|||
}
|
||||
|
||||
/* 저장된 게시글의 선택 */
|
||||
function doDocumentSelect(document_srl, module) {
|
||||
function doDocumentSelect(document_srl) {
|
||||
if(!opener || !opener.objForSavedDoc) {
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
|
||||
if(module===undefined) {
|
||||
module = 'document';
|
||||
}
|
||||
|
||||
// 게시글을 가져와서 등록하기
|
||||
switch(module) {
|
||||
case 'page' :
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispPageAdminContentModify');
|
||||
break;
|
||||
default :
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite');
|
||||
break;
|
||||
}
|
||||
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite');
|
||||
window.close();
|
||||
}
|
||||
|
||||
|
|
@ -910,7 +899,7 @@ function get_by_id(id) {
|
|||
|
||||
jQuery(function($){
|
||||
// display popup menu that contains member actions and document actions
|
||||
$(document).on('click touchstart', function(evt) {
|
||||
$(document).on('click', function(evt) {
|
||||
var $area = $('#popup_menu_area');
|
||||
if(!$area.length) $area = $('<div id="popup_menu_area" tabindex="0" style="display:none;z-index:9999" />').appendTo(document.body);
|
||||
|
||||
|
|
@ -1662,55 +1651,31 @@ function xml2json(xml, tab, ignoreAttrib) {
|
|||
|
||||
if(typeof(xeVid)!='undefined') $.extend(data,{vid:xeVid});
|
||||
|
||||
try {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: request_uri,
|
||||
contentType: "application/json",
|
||||
data: $.param(data),
|
||||
success: function(data) {
|
||||
$(".wfsr").hide().trigger('cancel_confirm');
|
||||
if(data.error != '0' && data.error > -1000) {
|
||||
if(data.error == -1 && data.message == 'msg_is_not_administrator') {
|
||||
alert('You are not logged in as an administrator');
|
||||
if($.isFunction(callback_error)) callback_error(data);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: request_uri,
|
||||
contentType: "application/json",
|
||||
data: $.param(data),
|
||||
success: function(data) {
|
||||
$(".wfsr").hide().trigger('cancel_confirm');
|
||||
if(data.error != '0' && data.error > -1000) {
|
||||
if(data.error == -1 && data.message == 'msg_is_not_administrator') {
|
||||
alert('You are not logged in as an administrator');
|
||||
if($.isFunction(callback_error)) callback_error(data);
|
||||
|
||||
return;
|
||||
} else {
|
||||
alert(data.message);
|
||||
if($.isFunction(callback_error)) callback_error(data);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if($.isFunction(callback_sucess)) callback_sucess(data);
|
||||
},
|
||||
error: function(xhr, textStatus) {
|
||||
$(".wfsr").hide();
|
||||
|
||||
var msg = '';
|
||||
|
||||
if (textStatus == 'parsererror') {
|
||||
msg = 'The result is not valid JSON :\n-------------------------------------\n';
|
||||
|
||||
if(xhr.responseText === "") return;
|
||||
|
||||
msg += xhr.responseText.replace(/<[^>]+>/g, '');
|
||||
return;
|
||||
} else {
|
||||
msg = textStatus;
|
||||
}
|
||||
alert(data.message);
|
||||
if($.isFunction(callback_error)) callback_error(data);
|
||||
|
||||
try{
|
||||
console.log(msg);
|
||||
} catch(ee){}
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch(e) {
|
||||
alert(e);
|
||||
return;
|
||||
}
|
||||
|
||||
if($.isFunction(callback_sucess)) callback_sucess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -1730,43 +1695,17 @@ function xml2json(xml, tab, ignoreAttrib) {
|
|||
if(show_waiting_message) $(".wfsr").html(waiting_message).show();
|
||||
|
||||
$.extend(data,{module:action[0],act:action[1]});
|
||||
try {
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
dataType:"html",
|
||||
url:request_uri,
|
||||
data:$.param(data),
|
||||
success : function(html){
|
||||
$(".wfsr").hide().trigger('cancel_confirm');
|
||||
self[type](html);
|
||||
if($.isFunction(func)) func(args);
|
||||
},
|
||||
error: function(xhr, textStatus) {
|
||||
$(".wfsr").hide();
|
||||
|
||||
var msg = '';
|
||||
|
||||
if (textStatus == 'parsererror') {
|
||||
msg = 'The result is not valid page :\n-------------------------------------\n';
|
||||
|
||||
if(xhr.responseText === "") return;
|
||||
|
||||
msg += xhr.responseText.replace(/<[^>]+>/g, '');
|
||||
} else {
|
||||
msg = textStatus;
|
||||
}
|
||||
|
||||
try{
|
||||
console.log(msg);
|
||||
} catch(ee){}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
} catch(e) {
|
||||
alert(e);
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
dataType:"html",
|
||||
url:request_uri,
|
||||
data:$.param(data),
|
||||
success : function(html){
|
||||
$(".wfsr").hide().trigger('cancel_confirm');
|
||||
self[type](html);
|
||||
if($.isFunction(func)) func(args);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
3
common/js/xe.min.js
vendored
3
common/js/xe.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -4,6 +4,7 @@
|
|||
<value xml:lang="ko"><![CDATA[도움말]]></value>
|
||||
<value xml:lang="en"><![CDATA[Help]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ヘルプ]]></value>
|
||||
<value xml:lang="de"><![CDATA[Hilfe]]></value>
|
||||
</item>
|
||||
<item name="cmd_write">
|
||||
<value xml:lang="ko"><![CDATA[쓰기]]></value>
|
||||
|
|
@ -93,6 +94,7 @@
|
|||
<value xml:lang="ko"><![CDATA[조회]]></value>
|
||||
<value xml:lang="en"><![CDATA[Inquiry]]></value>
|
||||
<value xml:lang="jp"><![CDATA[お問い合わせ]]></value>
|
||||
<value xml:lang="de"><![CDATA[Ansichten]]></value>
|
||||
</item>
|
||||
<item name="all">
|
||||
<value xml:lang="ko"><![CDATA[전체]]></value>
|
||||
|
|
@ -100,6 +102,7 @@
|
|||
<value xml:lang="jp"><![CDATA[すべて]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[全部]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[全部]]></value>
|
||||
<value xml:lang="de"><![CDATA[Alle]]></value>
|
||||
</item>
|
||||
<item name="cmd_view_all">
|
||||
<value xml:lang="ko"><![CDATA[전체 보기]]></value>
|
||||
|
|
@ -1972,6 +1975,7 @@
|
|||
<value xml:lang="jp"><![CDATA[非推奨数]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[Blames]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[Blames]]></value>
|
||||
<value xml:lang="de"><![CDATA[Anzahl der Neinsager]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Suçlama]]></value>
|
||||
</item>
|
||||
<item name="comment_count">
|
||||
|
|
@ -2176,7 +2180,7 @@
|
|||
<value xml:lang="zh-CN"><![CDATA[版面管理]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[討論板管理]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Administration des Panneaux]]></value>
|
||||
<value xml:lang="de"><![CDATA[Forum verwalten]]></value>
|
||||
<value xml:lang="de"><![CDATA[Anschlagbrett verwalten]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Настройки форума]]></value>
|
||||
<value xml:lang="es"><![CDATA[Adm. Tableros]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yönetim Ayarları]]></value>
|
||||
|
|
@ -2303,7 +2307,7 @@
|
|||
<value xml:lang="jp"><![CDATA[その他]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[其他]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[其他]]></value>
|
||||
<value xml:lang="de"><![CDATA[Sonstiges]]></value>
|
||||
<value xml:lang="de"><![CDATA[Ander]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Diğer]]></value>
|
||||
</item>
|
||||
<item name="unit_sec">
|
||||
|
|
@ -2394,6 +2398,7 @@
|
|||
<value xml:lang="ko"><![CDATA[회]]></value>
|
||||
<value xml:lang="en"><![CDATA[count]]></value>
|
||||
<value xml:lang="jp"><![CDATA[回]]></value>
|
||||
<value xml:lang="de"><![CDATA[Zeit]]></value>
|
||||
</item>
|
||||
<item name="unit_week" type="array">
|
||||
<item name="Monday">
|
||||
|
|
@ -2627,26 +2632,32 @@
|
|||
<value xml:lang="ko"><![CDATA[IP주소 입력형식<br />1. 와일드카드(*) 사용가능(예: 192.168.0.*)<br />2. 하이픈(-)을 사용하여 대역으로 입력가능<br />(단, 대역폭으로 입력할 경우 와일드카드 사용불가. 예: 192.168.0.1-192.168.0.254)<br />3.여러개의 항목은 줄을 바꾸어 입력하세요]]></value>
|
||||
<value xml:lang="en"><![CDATA[IP address input format<br />You can use wildcard(*) (ex: 192.168.0.*)<br />You can use hyphen(*) for ip range (you can't use wild card with hyphen, ex: 192.168.0.1-192.168.0.254)<br />]]></value>
|
||||
<value xml:lang="jp"><![CDATA[IPアドレス入力方法<br />1.ワイルドカード(*)使用可能(例:192.168.0.*)<br />2.ハイフン(-)を使用して帯域で入力可能<br />(ただし、帯域幅で入力する場合、ワイルドカードは使用不可。例:192.168.0.1-192.168.0.254)<br />3.複数の項目は行を変えて入力してください。]]></value>
|
||||
<value xml:lang="de"><![CDATA[IP adresse eingabeformat<br />Sie können Platzhalter (*) verwenden (zB:. 192.168.0 *)<br />Sie können Bindestrich (*) für IP-Bereich nutzen (können Sie nicht wild card mit Bindestrich, ex: 192.168.0.1-192.168.0.254)]]></value>
|
||||
|
||||
</item>
|
||||
<item name="msg_invalid_ip">
|
||||
<value xml:lang="ko"><![CDATA[잘못된 IP주소 형식입니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Specified IP address is invalid.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[正しくないIPアドレス形式です。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Angegebenen IP adresse ist ungültig.]]></value>
|
||||
</item>
|
||||
<item name="msg_no_root">
|
||||
<value xml:lang="ko"><![CDATA[루트는 선택 할 수 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[You cannot select a root.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ルートは選択できません。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Sie können eine root nicht auswählen.]]></value>
|
||||
</item>
|
||||
<item name="msg_no_shortcut">
|
||||
<value xml:lang="ko"><![CDATA[바로가기는 선택 할 수 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[You cannot select a shortcut.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ショートカットは選択できません。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Sie können eine verknüpfung nicht auswählen.]]></value>
|
||||
</item>
|
||||
<item name="msg_select_menu">
|
||||
<value xml:lang="ko"><![CDATA[대상 메뉴 선택]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select target menu]]></value>
|
||||
<value xml:lang="jp"><![CDATA[対象メニュー選択]]></value>
|
||||
<value xml:lang="de"><![CDATA[Wählen Sie das Menü, das Sie anwenden möchten]]></value>
|
||||
</item>
|
||||
<item name="msg_call_server">
|
||||
<value xml:lang="ko"><![CDATA[서버에 요청 중입니다. 잠시만 기다려주세요.]]></value>
|
||||
|
|
@ -2890,6 +2901,7 @@
|
|||
<value xml:lang="jp"><![CDATA[検索対象がありません。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[搜索不到目标]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[搜尋不到目標]]></value>
|
||||
<value xml:lang="de"><![CDATA[Nicht finden können die das Suchziel.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Arama amacı bulunamadı]]></value>
|
||||
</item>
|
||||
<item name="msg_empty_search_keyword">
|
||||
|
|
@ -2898,6 +2910,7 @@
|
|||
<value xml:lang="jp"><![CDATA[キーワードがありません。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[搜索不到关键字]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[搜尋不到關鍵字]]></value>
|
||||
<value xml:lang="de"><![CDATA[Nicht finden können das Stichwort.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Anahtar kelime yok]]></value>
|
||||
</item>
|
||||
<item name="comment_to_be_approved">
|
||||
|
|
@ -2905,6 +2918,7 @@
|
|||
<value xml:lang="en"><![CDATA[Your comment must be approved by admin before being published.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[管理者の確認が必要なコメントです。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[您的回复在通过管理员审核之后才会被显示出来。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Ihr Kommentar muss von admin vor der Veröffentlichung genehmigt werden.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yorumunuz, yayınlanmadan önce adminden onay almanız gerekir]]></value>
|
||||
</item>
|
||||
<item name="success_registed">
|
||||
|
|
@ -2964,9 +2978,10 @@
|
|||
<value xml:lang="mn"><![CDATA[Устгагдсан]]></value>
|
||||
</item>
|
||||
<item name="success_declare_canceled">
|
||||
<value xml:lang="ko"><![CDATA[신고 취소되었습니다.]]></value>
|
||||
<value xml:lang="ko"><![CDATA[신고가 취소되었습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Declare was canceled successfully.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[通報が取り消しされました。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Deklarieren wurde abgebrochen.]]></value>
|
||||
</item>
|
||||
<item name="success_restore">
|
||||
<value xml:lang="ko"><![CDATA[복원했습니다.]]></value>
|
||||
|
|
@ -3092,6 +3107,7 @@
|
|||
<value xml:lang="ko"><![CDATA[수정하지 못했습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Fail to update.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[修正されませんでした。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Update fehlgeschlagen]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Güncellenemedi]]></value>
|
||||
</item>
|
||||
<item name="fail_to_delete">
|
||||
|
|
@ -3301,6 +3317,7 @@
|
|||
<value xml:lang="ko"><![CDATA[처리하시겠습니까?]]></value>
|
||||
<value xml:lang="en"><![CDATA[Are you sure you want to process?]]></value>
|
||||
<value xml:lang="jp"><![CDATA[処理しますか?]]></value>
|
||||
<value xml:lang="de"><![CDATA[Sind Sie sicher, dass Sie fortfahren möchten?]]></value>
|
||||
</item>
|
||||
<item name="column_type">
|
||||
<value xml:lang="ko"><![CDATA[형식]]></value>
|
||||
|
|
@ -3578,6 +3595,7 @@
|
|||
<value xml:lang="jp"><![CDATA[%sの値が正しくありません。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[%s值有误。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[%s值有誤。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Der Wert% ist ungültig.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[%s değeri uymuyordur.]]></value>
|
||||
</item>
|
||||
<item name="invalid_email">
|
||||
|
|
@ -3717,6 +3735,19 @@
|
|||
<value xml:lang="mn"><![CDATA[%s-ын хэлбэр буруу байна. Зөвхөн тоогоор оруулах ёстой.]]></value>
|
||||
</item>
|
||||
</item>
|
||||
<item name="security_invalid_session">
|
||||
<value xml:lang="ko"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="fr"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="de"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="es"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="vi"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
<value xml:lang="mn"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||
</item>
|
||||
<item name="security_warning_embed">
|
||||
<value xml:lang="ko"><![CDATA[보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요]]></value>
|
||||
<value xml:lang="en"><![CDATA[Due to security concern, administrators are not allowed to view embedded items.<BR /> To view them, please use another non-administrator ID.]]></value>
|
||||
|
|
@ -3822,6 +3853,7 @@
|
|||
<value xml:lang="ko"><![CDATA[모바일]]></value>
|
||||
<value xml:lang="en"><![CDATA[Mobile]]></value>
|
||||
<value xml:lang="jp"><![CDATA[モバイル]]></value>
|
||||
<value xml:lang="de"><![CDATA[Handy]]></value>
|
||||
</item>
|
||||
<item name="mobile_view">
|
||||
<value xml:lang="ko"><![CDATA[모바일 뷰 사용]]></value>
|
||||
|
|
@ -3852,6 +3884,7 @@
|
|||
<value xml:lang="en"><![CDATA[Simple View]]></value>
|
||||
<value xml:lang="jp"><![CDATA[シンプルビュー]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[预览]]></value>
|
||||
<value xml:lang="de"><![CDATA[einfache ansicht]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Basit Görünüm]]></value>
|
||||
</item>
|
||||
<item name="detail_view">
|
||||
|
|
@ -3859,6 +3892,7 @@
|
|||
<value xml:lang="en"><![CDATA[Detail View]]></value>
|
||||
<value xml:lang="jp"><![CDATA[詳細ビュー]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[查看详情]]></value>
|
||||
<value xml:lang="de"><![CDATA[detail ansicht]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Detaylı Görünüm]]></value>
|
||||
</item>
|
||||
<item name="more">
|
||||
|
|
@ -3867,19 +3901,22 @@
|
|||
<value xml:lang="jp"><![CDATA[もっと見る]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[更多]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[更多]]></value>
|
||||
<value xml:lang="de"><![CDATA[mehr]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Daha Fazla]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Xem thêm]]></value>
|
||||
</item>
|
||||
<item name="skip_to_content">
|
||||
<value xml:lang="ko"><![CDATA[메뉴 건너뛰기]]></value>
|
||||
<value xml:lang="en"><![CDATA[Skip to content]]></value>
|
||||
<value xml:lang="en"><![CDATA[Skip to menu]]></value>
|
||||
<value xml:lang="jp"><![CDATA[メニュースキップ]]></value>
|
||||
<value xml:lang="de"><![CDATA[Menü überspringen]]></value>
|
||||
</item>
|
||||
<item name="dashboard">
|
||||
<value xml:lang="ko"><![CDATA[대시보드]]></value>
|
||||
<value xml:lang="en"><![CDATA[Dashboard]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ダッシュボード]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[控制面板]]></value>
|
||||
<value xml:lang="de"><![CDATA[Armaturenbrett]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Kontrol Paneli]]></value>
|
||||
</item>
|
||||
<item name="user">
|
||||
|
|
@ -3887,21 +3924,25 @@
|
|||
<value xml:lang="en"><![CDATA[Member]]></value>
|
||||
<value xml:lang="jp"><![CDATA[会員]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[会员]]></value>
|
||||
<value xml:lang="de"><![CDATA[Mitglied]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Üye]]></value>
|
||||
</item>
|
||||
<item name="yes">
|
||||
<value xml:lang="ko"><![CDATA[예]]></value>
|
||||
<value xml:lang="en"><![CDATA[Yes]]></value>
|
||||
<value xml:lang="jp"><![CDATA[はい]]></value>
|
||||
<value xml:lang="de"><![CDATA[ja]]></value>
|
||||
</item>
|
||||
<item name="not">
|
||||
<value xml:lang="ko"><![CDATA[아니오]]></value>
|
||||
<value xml:lang="en"><![CDATA[No]]></value>
|
||||
<value xml:lang="jp"><![CDATA[いいえ]]></value>
|
||||
<value xml:lang="de"><![CDATA[nicht]]></value>
|
||||
</item>
|
||||
<item name="msg_default_url_is_null">
|
||||
<value xml:lang="ko"><![CDATA[기본 URL 설정이 안 되어 있습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Default url is null.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[基本URLが設定されていません。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Standard URL ist null.]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ define('__ZBXE__', __XE__);
|
|||
/**
|
||||
* Display XE's full version.
|
||||
*/
|
||||
define('__XE_VERSION__', '1.7.5.7');
|
||||
define('__XE_VERSION__', '1.7.7.2');
|
||||
define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false));
|
||||
define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false));
|
||||
define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false));
|
||||
|
|
|
|||
|
|
@ -838,6 +838,60 @@ function debugPrint($debug_output = NULL, $display_option = TRUE, $file = '_debu
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $type query, trigger
|
||||
* @param float $elapsed_time
|
||||
* @param object $obj
|
||||
*/
|
||||
function writeSlowlog($type, $elapsed_time, $obj)
|
||||
{
|
||||
static $log_filename = array(
|
||||
'query' => 'files/_slowlog_query.php',
|
||||
'trigger' => 'files/_slowlog_trigger.php',
|
||||
'addon' => 'files/_slowlog_addon.php'
|
||||
);
|
||||
$write_file = true;
|
||||
|
||||
$log_file = _XE_PATH_ . $log_filename[$type];
|
||||
|
||||
$buff = array();
|
||||
$buff[] = '<?php exit(); ?>';
|
||||
$buff[] = date('c');
|
||||
|
||||
if($type == 'trigger' && __LOG_SLOW_TRIGGER__ > 0 && $elapsed_time > __LOG_SLOW_TRIGGER__)
|
||||
{
|
||||
$buff[] = "\tCaller : " . $obj->caller;
|
||||
$buff[] = "\tCalled : " . $obj->called;
|
||||
}
|
||||
else if($type == 'query' && __LOG_SLOW_QUERY__ > 0 && $elapsed_time > __LOG_SLOW_QUERY__)
|
||||
{
|
||||
|
||||
$buff[] = $obj->query;
|
||||
$buff[] = "\tQuery ID : " . $obj->query_id;
|
||||
$buff[] = "\tCaller : " . $obj->caller;
|
||||
$buff[] = "\tConnection : " . $obj->connection;
|
||||
}
|
||||
else
|
||||
{
|
||||
$write_file = false;
|
||||
}
|
||||
|
||||
if($write_file)
|
||||
{
|
||||
$buff[] = sprintf("\t%0.6f sec", $elapsed_time);
|
||||
$buff[] = PHP_EOL . PHP_EOL;
|
||||
file_put_contents($log_file, implode(PHP_EOL, $buff), FILE_APPEND);
|
||||
}
|
||||
|
||||
$trigger_args = $obj;
|
||||
$trigger_args->_log_type = $type;
|
||||
$trigger_args->_elapsed_time = $elapsed_time;
|
||||
if($type != 'query')
|
||||
{
|
||||
ModuleHandler::triggerCall('XE.writeSlowlog', 'after', $trigger_args);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* microtime() return
|
||||
*
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ class addonController extends addon
|
|||
$mid_list = NULL;
|
||||
}
|
||||
|
||||
$buff[] = '$before_time = microtime(true);';
|
||||
$buff[] = '$rm = \'' . $extra_vars->xe_run_method . "';";
|
||||
$buff[] = '$ml = array(';
|
||||
if($mid_list)
|
||||
|
|
@ -127,8 +128,15 @@ class addonController extends addon
|
|||
$buff[] = 'if(isset($ml[$_m]) || count($ml) === 0){';
|
||||
$buff[] = $addon_include;
|
||||
$buff[] = '}}}';
|
||||
$buff[] = '$after_time = microtime(true);';
|
||||
$buff[] = '$addon_time_log = new stdClass();';
|
||||
$buff[] = '$addon_time_log->_log_type = "addon";';
|
||||
$buff[] = '$addon_time_log->caller = $called_position;';
|
||||
$buff[] = '$addon_time_log->called = "' . $addon . '";';
|
||||
$buff[] = '$addon_time_log->called_extension = "' . $addon . '";';
|
||||
$buff[] = '$addon_time_log->_elapsed_time = $after_time-$before_time;';
|
||||
$buff[] = 'ModuleHandler::triggerCall("XE.writeSlowlog", "after", $addon_time_log);';
|
||||
}
|
||||
|
||||
$addon_path = _XE_PATH_ . 'files/cache/addons/';
|
||||
FileHandler::makeDir($addon_path);
|
||||
$addon_file = $addon_path . ($gtype == 'site' ? $site_srl : '') . $type . '.acivated_addons.cache.php';
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<form action="./index.php" method="get" name="calendar" id="fo_calendar" style="margin-bottom:30px">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="{$act}" />
|
||||
<input type="hidden" name="selected_date" id="selected_date" value="{zDate('Ymd',$selected_date)}" />
|
||||
<input type="hidden" name="selected_date" id="selected_date" value="{zdate($selected_date,'Ymd')}" />
|
||||
|
||||
<table class="x_table x_table-striped x_table-hover">
|
||||
<thead>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@
|
|||
<permission action="procDocumentDeleteCategory" target="member" />
|
||||
<permission action="procDocumentMakeXmlFile" target="member" />
|
||||
<permission action="procDocumentAdminMoveToTrash" target="member" />
|
||||
|
||||
<permission action="procDocumentAdminInsertExtraVar" target="manager" />
|
||||
<permission action="procDocumentAdminDeleteExtraVar" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispDocumentPrint" type="view" />
|
||||
|
|
|
|||
|
|
@ -822,6 +822,9 @@ class documentController extends document
|
|||
*/
|
||||
function updateReadedCount(&$oDocument)
|
||||
{
|
||||
// Pass if Crawler access
|
||||
if(isCrawler()) return false;
|
||||
|
||||
$document_srl = $oDocument->document_srl;
|
||||
$member_srl = $oDocument->get('member_srl');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -1557,6 +1560,7 @@ class documentController extends document
|
|||
$this->updateCategory($cur_args);
|
||||
// Category information
|
||||
$next_args = new stdClass;
|
||||
$next_args->category_srl = $next_category->category_srl;
|
||||
$next_args->list_order = $list_order;
|
||||
$next_args->title = $next_category->title;
|
||||
$this->updateCategory($next_args);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -115,6 +115,7 @@ var uploadAutosaveChecker = false;
|
|||
}
|
||||
|
||||
if(is_def(window.xeVid)) settings.post_params.vid = xeVid;
|
||||
settings.sessionName = cfg.sessionName;
|
||||
settings.post_params[cfg.sessionName] = getCookie(cfg.sessionName);
|
||||
|
||||
uploaderSettings[seq] = settings;
|
||||
|
|
@ -166,6 +167,7 @@ var uploadAutosaveChecker = false;
|
|||
},
|
||||
onFileDialogComplete : function(numFilesSelected, numFilesQueued) {
|
||||
try {
|
||||
this.addPostParam(this.settings.sessionName, getCookie(this.settings.sessionName));
|
||||
this.startUpload();
|
||||
} catch (e) {
|
||||
this.debug(e);
|
||||
|
|
@ -173,6 +175,7 @@ var uploadAutosaveChecker = false;
|
|||
},
|
||||
onUploadStart : _true,
|
||||
onUploadProgress : function(file, bytesLoaded, bytesTotal) {
|
||||
this.addPostParam(this.settings.sessionName, getCookie(this.settings.sessionName));
|
||||
try {
|
||||
var $list, $lastopt, percent, filename;
|
||||
|
||||
|
|
@ -333,7 +336,7 @@ function previewFiles(event, file_srl) {
|
|||
var $opt, $select, $preview, fileinfo, filename, match, html, $=jQuery;
|
||||
|
||||
if(!file_srl) {
|
||||
$opt = $(event.target).parent().andSelf().filter('select').find('>option:selected');
|
||||
$opt = $(event.target).parent().addBack().filter('select').find('>option:selected');
|
||||
if(!$opt.length) return;
|
||||
|
||||
file_srl = $opt.attr('value');
|
||||
|
|
|
|||
2
modules/editor/tpl/js/uploader.min.js
vendored
2
modules/editor/tpl/js/uploader.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions />
|
||||
<permissions>
|
||||
<permission action="procFileAdminInsertModuleConfig" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispFileAdminList" type="view" admin_index="true" menu_name="file" menu_index="true" />
|
||||
<action name="dispFileAdminConfig" type="view" menu_name="fileUpload" menu_index="true" />
|
||||
|
|
|
|||
|
|
@ -1091,7 +1091,7 @@ class memberAdminController extends member
|
|||
}
|
||||
|
||||
/**
|
||||
* find_account_answerInsert a group
|
||||
* Insert a group
|
||||
* @param object $args
|
||||
* @return Object
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class member extends ModuleObject {
|
|||
// Set to use SSL upon actions related member join/information/password and so on. 2013.02.15
|
||||
if(!Context::isExistsSSLAction('dispMemberModifyPassword') && Context::getSslStatus() == 'optional')
|
||||
{
|
||||
$ssl_actions = array('dispMemberModifyPassword', 'dispMemberSignUpForm', 'dispMemberModifyInfo', 'dispMemberModifyEmailAddress', 'dispMemberGetTempPassword', 'dispMemberResendAuthMail', 'dispMemberLoginForm', 'dispMemberFindAccount', 'dispMemberLeave', 'procMemberLogin', 'procMemberModifyPassword', 'procMemberInsert', 'procMemberModifyInfo', 'procMemberFindAccount', 'procMemberModifyEmailAddress', 'procMemberUpdateAuthMail', 'procMemberResendAuthMail', 'procMemberLeave'/*, 'getMemberMenu'*/);
|
||||
$ssl_actions = array('dispMemberModifyPassword', 'dispMemberSignUpForm', 'dispMemberModifyInfo', 'dispMemberModifyEmailAddress', 'dispMemberGetTempPassword', 'dispMemberResendAuthMail', 'dispMemberLoginForm', 'dispMemberFindAccount', 'dispMemberLeave', 'procMemberLogin', 'procMemberModifyPassword', 'procMemberInsert', 'procMemberModifyInfo', 'procMemberFindAccount', 'procMemberModifyEmailAddress', 'procMemberUpdateAuthMail', 'procMemberResendAuthMail', 'procMemberLeave'/*, 'getMemberMenu'*/, 'procMemberFindAccountByQuestion');
|
||||
Context::addSSLActions($ssl_actions);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ class memberView extends member
|
|||
continue;
|
||||
}
|
||||
|
||||
if($memberInfo->member_srl != $logged_info->member_srl && $formInfo->isPublic != 'Y')
|
||||
if($logged_info->is_admin != 'Y' && $memberInfo->member_srl != $logged_info->member_srl && $formInfo->isPublic != 'Y')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skin/default/find_member_account/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form action="{getUrl('')}" method="get" ruleset="findAccount">
|
||||
<form action="{getUrl('', 'act', 'procMemberFindAccount')}" method="get" ruleset="findAccount">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="act" value="procMemberFindAccount" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skin/default/find_member_account/2'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form action="./" method="get" ruleset="@find_member_account_by_question">
|
||||
<form action="{getUrl('', 'act', 'procMemberFindAccountByQuestion')}" method="get" ruleset="@find_member_account_by_question">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skin/default/find_member_account/3'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="resendAuthMail" action="./" method="post">
|
||||
<form ruleset="resendAuthMail" action="{getUrl('', 'act', 'procMemberResendAuthMail')}" method="post">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberResendAuthMail" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl(act, $act)}" />
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
<textarea name="spam_description" id="spam_description" cols="400" rows="3"></textarea>
|
||||
</div>
|
||||
<div class="btn-proc" >
|
||||
<label for="to_trash"><input type="checkbox" name="to_trash" value="Y" checked="checked" id="to_trash" />{$lang->spammer_move_to_trash}</label>
|
||||
<label for="to_trash"><input type="checkbox" name="to_trash" value="Y" id="to_trash" />{$lang->spammer_move_to_trash}</label>
|
||||
<button class="x_btn x_btn-danger" type="submit"/>{$lang->btn_spammer_delete_all}</button>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -606,6 +606,12 @@ class menuAdminController extends menu
|
|||
$cmArgs->is_skin_fix = 'N';
|
||||
$cmArgs->is_mskin_fix = 'N';
|
||||
|
||||
$db_info = Context::getDBInfo();
|
||||
if($db_info->use_mobile_view == 'Y')
|
||||
{
|
||||
$cmArgs->use_mobile = 'Y';
|
||||
}
|
||||
|
||||
// if mid is empty, auto create mid
|
||||
if(!$request->module_id)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,6 +4,16 @@
|
|||
<permissions>
|
||||
<permission action="dispModuleSelectList" target="member" />
|
||||
<permission action="getModuleAdminGrant" target="manager" />
|
||||
<permission action="getModuleAdminLangCode" target="manager" />
|
||||
<permission action="getModuleAdminLangListByName" target="manager" />
|
||||
<permission action="getModuleAdminLangListByValue" target="manager" />
|
||||
<permission action="getLangListByLangcodeForAutoComplete" target="manager" />
|
||||
<permission action="getLangByLangcode" target="manager" />
|
||||
<permission action="getModuleAdminMultilingualHtml" target="manager" />
|
||||
<permission action="getModuleAdminLangListHtml" target="manager" />
|
||||
<permission action="procModuleAdminInsertLang" target="manager" />
|
||||
<permission action="procModuleAdminInsertGrant" target="manager" />
|
||||
<permission action="procModuleAdminUpdateSkinInfo" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispModuleSelectList" type="view" />
|
||||
|
|
|
|||
|
|
@ -1995,14 +1995,19 @@ class moduleModel extends module
|
|||
if(!$module_srl)
|
||||
{
|
||||
$grant->access = true;
|
||||
if($this->isSiteAdmin($member_info, $module_info->site_srl)) $grant->access = $grant->is_admin = $grant->manager = $grant->is_site_admin = true;
|
||||
else $grant->is_admin = $grant->manager = $member_info->is_admin=='Y'?true:false;
|
||||
// If module_srl exists
|
||||
if($this->isSiteAdmin($member_info, $module_info->site_srl))
|
||||
{
|
||||
$grant->access = $grant->manager = $grant->is_site_admin = true;
|
||||
}
|
||||
|
||||
$grant->is_admin = $grant->manager = ($member_info->is_admin == 'Y') ? true : false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// If module_srl exists
|
||||
// Get a type of granted permission
|
||||
$grant->access = $grant->is_admin = $grant->manager = $grant->is_site_admin = ($member_info->is_admin=='Y'||$this->isSiteAdmin($member_info, $module_info->site_srl))?true:false;
|
||||
$grant->access = $grant->manager = $grant->is_site_admin = ($member_info->is_admin=='Y'||$this->isSiteAdmin($member_info, $module_info->site_srl))?true:false;
|
||||
$grant->is_admin = ($member_info->is_admin == 'Y') ? true : false;
|
||||
// If a just logged-in member is, check if the member is a module administrator
|
||||
if(!$grant->manager && $member_info->member_srl)
|
||||
{
|
||||
|
|
@ -2010,7 +2015,7 @@ class moduleModel extends module
|
|||
$args->module_srl = $module_srl;
|
||||
$args->member_srl = $member_info->member_srl;
|
||||
$output = executeQuery('module.getModuleAdmin',$args);
|
||||
if($output->data && $output->data->member_srl == $member_info->member_srl) $grant->manager = $grant->is_admin = true;
|
||||
if($output->data && $output->data->member_srl == $member_info->member_srl) $grant->manager = true;
|
||||
}
|
||||
// If not an administrator, get information from the DB and grant manager privilege.
|
||||
if(!$grant->manager)
|
||||
|
|
|
|||
|
|
@ -84,13 +84,9 @@ class pageMobile extends pageView
|
|||
}
|
||||
else
|
||||
{
|
||||
preg_match_all('!(<img)([^\>]*)(widget=)([^\>]*?)(\>)!is', $this->module_info->content, $matches);
|
||||
$page_content = '';
|
||||
for($i=0,$c=count($matches[0]);$i<$c;$i++)
|
||||
{
|
||||
$page_content .= preg_replace('/ style\=\"([^\"]+)\" /i',' style="overflow:hidden;clear:both;margin:0 0 20px 0; _margin-right:10px;" ',$matches[0][$i])."\n\n";
|
||||
}
|
||||
$page_content = $this->module_info->content;
|
||||
}
|
||||
|
||||
return $page_content;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<skin version="0.2">
|
||||
<title xml:lang="ko">Default Page Skin</title>
|
||||
<title xml:lang="en">Default Page Skin</title>
|
||||
<title xml:lang="jp">Default Mobile Page Skin</title>
|
||||
<title xml:lang="jp">Default Page Skin</title>
|
||||
<description xml:lang="ko">
|
||||
문서형 페이지의 기본 스킨입니다.
|
||||
</description>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions />
|
||||
<permissions>
|
||||
<permission action="procPointAdminInsertPointModuleConfig" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispPointAdminConfig" type="view" admin_index="true" menu_name="point" menu_index="true" />
|
||||
<action name="dispPointAdminModuleConfig" type="view" menu_name="point" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions />
|
||||
<permissions>
|
||||
<permission action="procRssAdminInsertModuleConfig" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispRssAdminIndex" type="view" index="true" admin_index="true" menu_name="rss" menu_index="true" />
|
||||
<action name="rss" type="view" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue