Merge pull request #4 from xpressengine/develop

Merged
This commit is contained in:
izuzero 2014-05-16 01:50:48 +09:00
commit b184a2b33e
32 changed files with 142 additions and 66 deletions

View file

@ -23,15 +23,16 @@ adrian.vasile.constantin, aerofleet, @akasima, @andreimarin, araste, @bnu, @bong
## License ## License
Copyright 2014 NAVER Corp. <http://www.navercorp.com> Copyright 2014 NAVER Corp. <http://www.navercorp.com>
This program is free software: you can redistribute it and/or modify This program is free software; you can redistribute it and/or
it under the terms of the GNU General Public License as published by modify it under the terms of the GNU Lesser General Public
the Free Software Foundation, either version 3 of the License, or License as published by the Free Software Foundation; either
(at your option) any later version. version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU Lesser General Public
along with this program. If not, see <http://www.gnu.org/licenses/>. License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

View file

@ -30,6 +30,13 @@ if($_REQUEST['act'] != 'api')
// Read func file // Read func file
require_once(_XE_PATH_ . 'addons/blogapi/blogapi.func.php'); require_once(_XE_PATH_ . 'addons/blogapi/blogapi.func.php');
// If HTTP_RAW_POST_DATA is NULL, Print error message
if(!$GLOBALS['HTTP_RAW_POST_DATA'])
{
$content = getXmlRpcFailure(1, 'Invalid Method Call');
printContent($content);
}
// xmlprc parsing // xmlprc parsing
// Parse the requested xmlrpc // Parse the requested xmlrpc
$xml = new SimpleXMLElement($GLOBALS['HTTP_RAW_POST_DATA']); $xml = new SimpleXMLElement($GLOBALS['HTTP_RAW_POST_DATA']);
@ -487,7 +494,7 @@ if($called_position == 'before_module_proc')
$post = new stdClass(); $post = new stdClass();
$post->categories = array(); $post->categories = array();
$post->dateCreated = date("Ymd", $oDocument->getRegdateTime()) . 'T' . date("H:i:s", $oDocument->getRegdateTime()); $post->dateCreated = date("Ymd", $oDocument->getRegdateTime()) . 'T' . date("H:i:s", $oDocument->getRegdateTime());
$post->description = htmlspecialchars($oEditorController->transComponent($oDocument->getContent(false, false, true, false)), ENT_COMPAT | ENT_HTML401, 'UTF-8', false); $post->description = sprintf('<![CDATA[%s]]>',$oEditorController->transComponent($oDocument->getContent(false, false, true, false)));
$post->link = $post->permaLink = getFullUrl('', 'document_srl', $oDocument->document_srl); $post->link = $post->permaLink = getFullUrl('', 'document_srl', $oDocument->document_srl);
$post->postid = $oDocument->document_srl; $post->postid = $oDocument->document_srl;
$post->title = htmlspecialchars($oDocument->get('title'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false); $post->title = htmlspecialchars($oDocument->get('title'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

View file

@ -31,7 +31,11 @@ function getXmlRpcResponse($params)
// Encoding // Encoding
function _getEncodedVal($val, $is_sub_set = false) function _getEncodedVal($val, $is_sub_set = false)
{ {
if(is_int($val)) if(preg_match('/^\<\!\[CDATA\[/',$val))
{
$buff = sprintf("<value>%s</value>", $val);
}
elseif(is_int($val))
{ {
$buff = sprintf("<value><i4>%d</i4></value>", $val); $buff = sprintf("<value><i4>%d</i4></value>", $val);
} }

View file

@ -12,8 +12,11 @@ if(!defined("__XE__")) exit();
if(!class_exists('AddonCaptcha', false)) if(!class_exists('AddonCaptcha', false))
{ {
// On the mobile mode, XE Core does not load jquery and xe.js as normal. // On the mobile mode, XE Core does not load jquery and xe.js as normal.
Context::loadFile(array('./common/js/jquery.min.js', 'head', NULL, -100000), true); if(Mobile::isFromMobilePhone())
Context::loadFile(array('./common/js/xe.min.js', 'head', NULL, -100000), true); {
Context::loadFile(array('./common/js/jquery.min.js', 'head', NULL, -100000), true);
Context::loadFile(array('./common/js/xe.min.js', 'head', NULL, -100000), true);
}
class AddonCaptcha class AddonCaptcha
{ {

View file

@ -12,8 +12,11 @@ if(!defined("__XE__")) exit();
if(!class_exists('AddonMemberCaptcha', false)) if(!class_exists('AddonMemberCaptcha', false))
{ {
// On the mobile mode, XE Core does not load jquery and xe.js as normal. // On the mobile mode, XE Core does not load jquery and xe.js as normal.
Context::loadFile(array('./common/js/jquery.min.js', 'head', NULL, -100000), true); if(Mobile::isFromMobilePhone())
Context::loadFile(array('./common/js/xe.min.js', 'head', NULL, -100000), true); {
Context::loadFile(array('./common/js/jquery.min.js', 'head', NULL, -100000), true);
Context::loadFile(array('./common/js/xe.min.js', 'head', NULL, -100000), true);
}
class AddonMemberCaptcha class AddonMemberCaptcha
{ {

View file

@ -8,6 +8,7 @@
* @author NAVER (developers@xpressengine.com) * @author NAVER (developers@xpressengine.com)
* @package /classes/httprequest * @package /classes/httprequest
* @version 0.1 * @version 0.1
* @deprecated
*/ */
class XEHttpRequest class XEHttpRequest
{ {
@ -24,6 +25,12 @@ class XEHttpRequest
*/ */
var $m_port; var $m_port;
/**
* target scheme
* @var string
*/
var $m_scheme;
/** /**
* target header * target header
* @var array * @var array
@ -34,10 +41,11 @@ class XEHttpRequest
* constructor * constructor
* @return void * @return void
*/ */
function XEHttpRequest($host, $port) function XEHttpRequest($host, $port, $scheme='')
{ {
$this->m_host = $host; $this->m_host = $host;
$this->m_port = $port; $this->m_port = $port;
$this->m_scheme = $scheme;
$this->m_headers = array(); $this->m_headers = array();
} }
@ -108,7 +116,13 @@ class XEHttpRequest
{ {
static $crlf = "\r\n"; static $crlf = "\r\n";
$sock = @fsockopen($this->m_host, $this->m_port, $errno, $errstr, $timeout); $scheme = '';
if($this->m_scheme=='https')
{
$scheme = 'ssl://';
}
$sock = @fsockopen($scheme . $this->m_host, $this->m_port, $errno, $errstr, $timeout);
if(!$sock) if(!$sock)
{ {
return new Object(-1, 'socket_connect_failed'); return new Object(-1, 'socket_connect_failed');

2
common/js/x.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -29,7 +29,7 @@ define('__ZBXE__', __XE__);
/** /**
* Display XE's full version. * Display XE's full version.
*/ */
define('__XE_VERSION__', '1.7.5-beta2'); define('__XE_VERSION__', '1.7.5');
define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false)); define('__XE_VERSION_ALPHA__', (stripos(__XE_VERSION__, 'alpha') !== false));
define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false)); define('__XE_VERSION_BETA__', (stripos(__XE_VERSION__, 'beta') !== false));
define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false)); define('__XE_VERSION_RC__', (stripos(__XE_VERSION__, 'rc') !== false));

View file

@ -45,7 +45,7 @@ require dirname(__FILE__) . '/config/config.inc.php';
* @brief Initialize by creating Context object * @brief Initialize by creating Context object
* Set all Request Argument/Environment variables * Set all Request Argument/Environment variables
**/ **/
$oContext = &Context::getInstance(); $oContext = Context::getInstance();
$oContext->init(); $oContext->init();
/** /**
@ -59,8 +59,7 @@ if($oContext->checkSSO())
{ {
if($oModuleHandler->init()) if($oModuleHandler->init())
{ {
$oModule = &$oModuleHandler->procModule(); $oModuleHandler->displayContent($oModuleHandler->procModule());
$oModuleHandler->displayContent($oModule);
} }
} }
catch(Exception $e) catch(Exception $e)

View file

@ -751,7 +751,7 @@
.x [class^="x_icon-"], .x [class^="x_icon-"],
.x [class*=" x_icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat} .x [class*=" x_icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}
/* White icons with optional class, or on hover/active states of certain elements */ /* White icons with optional class, or on hover/active states of certain elements */
.x .x_icon-white, #gnb.gnb.open .x_icon-white,
.x .x_nav-pills>.x_active>a>[class^="x_icon-"], .x .x_nav-pills>.x_active>a>[class^="x_icon-"],
.x .x_nav-pills>.x_active>a>[class*=" x_icon-"], .x .x_nav-pills>.x_active>a>[class*=" x_icon-"],
.x .x_nav-list>.x_active>a>[class^="x_icon-"], .x .x_nav-list>.x_active>a>[class^="x_icon-"],
@ -1591,4 +1591,4 @@ to{background-position:0 0}
.x .x_hide{display:none} .x .x_hide{display:none}
.x .x_show{display:block} .x .x_show{display:block}
.x .x_invisible{visibility:hidden} .x .x_invisible{visibility:hidden}
.x .x_affix{position:fixed} .x .x_affix{position:fixed}

View file

@ -358,6 +358,9 @@ body>.x,
.x_modal-backdrop { .x_modal-backdrop {
display: none; display: none;
} }
.x_modal {
top: 30px;
}
.x_modal-backdrop { .x_modal-backdrop {
opacity: .6; opacity: .6;
filter: alpha(opacity=60); filter: alpha(opacity=60);
@ -410,7 +413,7 @@ body>.x,
min-width: 220px; min-width: 220px;
} }
.x .x_form-horizontal .x_control-group { .x .x_form-horizontal .x_control-group {
margin-bottom: 10px; margin-bottom: 10px;
} }
.x input[type="text"], .x input[type="text"],
.x input[type="password"], .x input[type="password"],

File diff suppressed because one or more lines are too long

View file

@ -422,6 +422,14 @@ jQuery(function($){
var zIndex = xeModalInitailZIndex + ((xeModalStack.length - 1) * 2); var zIndex = xeModalInitailZIndex + ((xeModalStack.length - 1) * 2);
$xeModalBackdrop.css('z-index', zIndex).show(); $xeModalBackdrop.css('z-index', zIndex).show();
var xeModalBackdropHeight = $xeModalBackdrop.height();
var modalBodyHeight = xeModalBackdropHeight;
modalBodyHeight -= $modal.find('.x_modal-header:visible').height();
modalBodyHeight -= $modal.find('.x_modal-footer:visible').height();
modalBodyHeight -= 150;
$modal.find('.x_modal-body').css('height', modalBodyHeight);
$modal.css('z-index', zIndex + 1); $modal.css('z-index', zIndex + 1);
}) })
.bind('close.mw', function(){ .bind('close.mw', function(){

File diff suppressed because one or more lines are too long

View file

@ -11,8 +11,8 @@
<condition operation="like" column="mid" var="s_mid" pipe="or" /> <condition operation="like" column="mid" var="s_mid" pipe="or" />
<condition operation="like" column="browser_title" var="s_browser_title" pipe="or" /> <condition operation="like" column="browser_title" var="s_browser_title" pipe="or" />
<condition operation="like" column="comment" var="s_comment" pipe="or" /> <condition operation="like" column="comment" var="s_comment" pipe="or" />
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
</group> </group>
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="and" />
</conditions> </conditions>
<navigation> <navigation>
<index var="sort_index" default="module_srl" order="desc" /> <index var="sort_index" default="module_srl" order="desc" />

View file

@ -89,8 +89,9 @@
<form action="" class="search x_input-append center" no-error-return-url="true"> <form action="" class="search x_input-append center" no-error-return-url="true">
<input loop="$param => $key, $val" cond="!in_array($key, array('mid', 'vid', 'act', 'page', 'search_target', 'search_keyword'))" type="hidden" name="{$key}" value="{$val}" /> <input loop="$param => $key, $val" cond="!in_array($key, array('mid', 'vid', 'act', 'page', 'search_target', 'search_keyword'))" type="hidden" name="{$key}" value="{$val}" />
<select cond="count($module_category)" name="module_category_srl" title="{$lang->module_category}" style="margin-right:4px"> <select cond="count($module_category)" name="module_category_srl" title="{$lang->module_category}" style="margin-right:4px">
<option value="" selected="selected"|cond="!$module_category_srl">{$lang->all}</option>
<option value="0" selected="selected"|cond="$module_category_srl==='0'">{$lang->not_exists}</option> <option value="0" selected="selected"|cond="$module_category_srl==='0'">{$lang->not_exists}</option>
<option value="{$key}" loop="$module_category => $key,$val" selected="selected"|cond="$module_category==$key">{$val->title}</option> <option value="{$key}" loop="$module_category => $key,$val" selected="selected"|cond="$module_category_srl==$key">{$val->title}</option>
</select> </select>
<select name="search_target" title="{$lang->search_target}" style="margin-right:4px"> <select name="search_target" title="{$lang->search_target}" style="margin-right:4px">
<option value="mid" selected="selected"|cond="$search_target=='mid'">{$lang->mid}</option> <option value="mid" selected="selected"|cond="$search_target=='mid'">{$lang->mid}</option>
@ -124,4 +125,4 @@ jQuery(function($){
} }
}); });
}); });
</script> </script>

View file

@ -472,7 +472,7 @@ class commentAdminController extends comment
$obj->module_srl = $originObject->module_srl; $obj->module_srl = $originObject->module_srl;
$oCommentController = getController('comment'); $oCommentController = getController('comment');
$output = $oCommentController->insertComment($obj); $output = $oCommentController->insertComment($obj, true);
return $output; return $output;
} }

View file

@ -300,7 +300,7 @@ class commentController extends comment
{ {
$obj->comment_srl = getNextSequence(); $obj->comment_srl = getNextSequence();
} }
elseif(!checkUserSequence($obj->comment_srl)) elseif(!$is_admin && !$manual_inserted && !checkUserSequence($obj->comment_srl))
{ {
return new Object(-1, 'msg_not_permitted'); return new Object(-1, 'msg_not_permitted');
} }
@ -520,18 +520,22 @@ class commentController extends comment
$oMail->setSender($obj->email_address, $obj->email_address); $oMail->setSender($obj->email_address, $obj->email_address);
$mail_title = "[XE - " . Context::get('mid') . "] A new comment was posted on document: \"" . $oDocument->getTitleText() . "\""; $mail_title = "[XE - " . Context::get('mid') . "] A new comment was posted on document: \"" . $oDocument->getTitleText() . "\"";
$oMail->setTitle($mail_title); $oMail->setTitle($mail_title);
$url_comment = getFullUrl('','document_srl',$obj->document_srl).'#comment_'.$obj->comment_srl;
if($using_validation) if($using_validation)
{ {
$url_approve = getFullUrl('', 'module', 'comment', 'act', 'procCommentAdminChangePublishedStatusChecked', 'cart[]', $obj->comment_srl, 'will_publish', '1', 'search_target', 'is_published', 'search_keyword', 'N'); $url_approve = getFullUrl('', 'module', 'admin', 'act', 'procCommentAdminChangePublishedStatusChecked', 'cart[]', $obj->comment_srl, 'will_publish', '1', 'search_target', 'is_published', 'search_keyword', 'N');
$url_trash = getFullUrl('', 'module', 'comment', 'act', 'procCommentAdminDeleteChecked', 'cart[]', $obj->comment_srl, 'search_target', 'is_trash', 'search_keyword', 'true'); $url_trash = getFullUrl('', 'module', 'admin', 'act', 'procCommentAdminDeleteChecked', 'cart[]', $obj->comment_srl, 'search_target', 'is_trash', 'search_keyword', 'true');
$mail_content = " $mail_content = "
A new comment on the document \"" . $oDocument->getTitleText() . "\" is waiting for your approval. A new comment on the document \"" . $oDocument->getTitleText() . "\" is waiting for your approval.
<br /> <br />
<br /> <br />
Author: " . $member_info->nick_name . " Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . " <br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment: <br />Comment:
<br />\"" . $obj->content . "\" <br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . $oDocument->getContentText(). "\"
<br /> <br />
<br /> <br />
Approve it: <a href=\"" . $url_approve . "\">" . $url_approve . "</a> Approve it: <a href=\"" . $url_approve . "\">" . $url_approve . "</a>
@ -546,8 +550,11 @@ class commentController extends comment
$mail_content = " $mail_content = "
Author: " . $member_info->nick_name . " Author: " . $member_info->nick_name . "
<br />Author e-mail: " . $member_info->email_address . " <br />Author e-mail: " . $member_info->email_address . "
<br />From : <a href=\"" . $url_comment . "\">" . $url_comment . "</a>
<br />Comment: <br />Comment:
<br />\"" . $obj->content . "\" <br />\"" . $obj->content . "\"
<br />Document:
<br />\"" . $oDocument->getContentText(). "\"
"; ";
$oMail->setContent($mail_content); $oMail->setContent($mail_content);
@ -1100,7 +1107,17 @@ class commentController extends comment
$_SESSION['voted_comment'][$comment_srl] = TRUE; $_SESSION['voted_comment'][$comment_srl] = TRUE;
// Return the result // Return the result
return new Object(0, $success_message); $output = new Object(0, $success_message);
if($point > 0)
{
$output->add('voted_count', $obj->after_point);
}
else
{
$output->add('blamed_count', $obj->after_point);
}
return $output;
} }
/** /**

View file

@ -385,6 +385,7 @@ class commentModel extends comment
$args->module_srl = $obj->module_srl; $args->module_srl = $obj->module_srl;
} }
$args->document_srl = $obj->document_srl;
$args->list_count = $obj->list_count; $args->list_count = $obj->list_count;
if(strpos($args->module_srl, ",") === false) if(strpos($args->module_srl, ",") === false)

View file

@ -8,6 +8,7 @@
<conditions> <conditions>
<condition operation="equal" column="status" var="status" pipe="and" /> <condition operation="equal" column="status" var="status" pipe="and" />
<condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" /> <condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" />
<condition operation="equal" column="document_srl" var="document_srl" filter="number" pipe="and" />
</conditions> </conditions>
<navigation> <navigation>
<index var="sort_index" default="list_order" order="asc" /> <index var="sort_index" default="list_order" order="asc" />

View file

@ -234,7 +234,7 @@ class documentController extends document
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// Register it if no given document_srl exists // Register it if no given document_srl exists
if(!$obj->document_srl) $obj->document_srl = getNextSequence(); if(!$obj->document_srl) $obj->document_srl = getNextSequence();
elseif(!checkUserSequence($obj->document_srl)) return new Object(-1, 'msg_not_permitted'); elseif(!$manual_inserted && !$isRestore && !checkUserSequence($obj->document_srl)) return new Object(-1, 'msg_not_permitted');
$oDocumentModel = getModel('document'); $oDocumentModel = getModel('document');
// Set to 0 if the category_srl doesn't exist // Set to 0 if the category_srl doesn't exist
@ -1143,14 +1143,19 @@ class documentController extends document
$_SESSION['voted_document'][$document_srl] = true; $_SESSION['voted_document'][$document_srl] = true;
// Return result // Return result
$output = new Object();
if($point > 0) if($point > 0)
{ {
return new Object(0, 'success_voted'); $output->setMessage('success_voted');
$output->add('voted_count', $obj->after_point);
} }
else else
{ {
return new Object(0, 'success_blamed'); $output->setMessage('success_blamed');
$output->add('blamed_count', $obj->after_point);
} }
return $output;
} }
/** /**

View file

@ -24,8 +24,8 @@
var align = (node.style.cssFloat) ? node.style.cssFloat : node.style.styleFloat; var align = (node.style.cssFloat) ? node.style.cssFloat : node.style.styleFloat;
var margin = (node.style.margin) ? node.style.margin.match('[0-9]+') : node.getAttribute('margin'); var margin = (node.style.margin) ? node.style.margin.match('[0-9]+') : node.getAttribute('margin');
var alt = node.getAttribute('alt'); var alt = node.getAttribute('alt');
var width = $(node).width(); var width = node.getAttribute('width');
var height = $(node).height(); var height = node.getAttribute('height');
var link_url = node.getAttribute('link_url'); var link_url = node.getAttribute('link_url');
var open_window = node.getAttribute('open_window'); var open_window = node.getAttribute('open_window');

View file

@ -422,7 +422,7 @@ function insertUploadedFile(editorSequence) {
temp_code = ''; temp_code = '';
temp_code += "<img src=\""+file.download_url+"\" alt=\""+file.source_filename+"\""; temp_code += "<img src=\""+file.download_url+"\" alt=\""+file.source_filename+"\"";
if(obj.complete === true) { temp_code += " width=\""+obj.width+"\" height=\""+obj.height+"\""; } if(obj.complete === true) { temp_code += " width=\""+obj.width+"\" height=\""+obj.height+"\""; }
temp_code += " />\r\n"; temp_code += " />\r\n<p><br /></p>\r\n";
text.push(temp_code); text.push(temp_code);
} else { } else {
// 이미지외의 경우는 multimedia_link 컴포넌트 연결 // 이미지외의 경우는 multimedia_link 컴포넌트 연결

File diff suppressed because one or more lines are too long

View file

@ -335,8 +335,8 @@ class installAdminController extends install
list($width, $height, $type_no, $attrs) = @getimagesize($target_file); list($width, $height, $type_no, $attrs) = @getimagesize($target_file);
if($iconname == 'favicon.ico') if($iconname == 'favicon.ico')
{ {
if(!preg_match('/^.*(icon).*$/',$type)) { if(!preg_match('/^.*\.ico$/i',$type)) {
Context::set('msg', '*.icon '.Context::getLang('msg_possible_only_file')); Context::set('msg', '*.ico '.Context::getLang('msg_possible_only_file'));
return; return;
} }
if($width && $height && ($width != '16' || $height != '16')) { if($width && $height && ($width != '16' || $height != '16')) {
@ -346,7 +346,7 @@ class installAdminController extends install
} }
else if($iconname == 'mobicon.png') else if($iconname == 'mobicon.png')
{ {
if(!preg_match('/^.*(png).*$/',$type)) { if(!preg_match('/^.*\.png$/i',$type)) {
Context::set('msg', '*.png '.Context::getLang('msg_possible_only_file')); Context::set('msg', '*.png '.Context::getLang('msg_possible_only_file'));
return; return;
} }

View file

@ -475,7 +475,7 @@ class memberAdminController extends member
} }
else if($formInfo->name == 'password') else if($formInfo->name == 'password')
{ {
$fields[] = '<field name="password"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="length" value="6:20" /></field>'; $fields[] = '<field name="password"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="length" value="4:20" /></field>';
$fields[] = '<field name="password2"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="equalto" value="password" /></field>'; $fields[] = '<field name="password2"><if test="$act == \'procMemberInsert\'" attr="required" value="true" /><if test="$act == \'procMemberInsert\'" attr="equalto" value="password" /></field>';
} }
else if($formInfo->name == 'find_account_question') else if($formInfo->name == 'find_account_question')
@ -831,7 +831,6 @@ class memberAdminController extends member
{ {
$args->denied = $var->denied; $args->denied = $var->denied;
$output = executeQuery('member.updateMemberDeniedInfo', $args); $output = executeQuery('member.updateMemberDeniedInfo', $args);
$this->_clearMemberCache($args->member_srl);
if(!$output->toBool()) if(!$output->toBool())
{ {
$oDB->rollback(); $oDB->rollback();
@ -853,6 +852,7 @@ class memberAdminController extends member
$this->setMessage('success_deleted'); $this->setMessage('success_deleted');
} }
} }
$oMemberController->_clearMemberCache($args->member_srl);
} }
$message = $var->message; $message = $var->message;

View file

@ -94,7 +94,7 @@ class memberAdminView extends member
} }
} }
$config = $this->memberConfig; $config = $this->memberConfig;
$memberIdentifiers = array('user_id'=>'user_id', 'user_name'=>'user_name', 'nick_name'=>'nick_name'); $memberIdentifiers = array('email_address'=>'email_address', 'user_id'=>'user_id', 'user_name'=>'user_name', 'nick_name'=>'nick_name');
$usedIdentifiers = array(); $usedIdentifiers = array();
if(is_array($config->signupForm)) if(is_array($config->signupForm))

View file

@ -121,7 +121,7 @@
<!--@end--> <!--@end-->
</select> </select>
<select name="search_target" style="margin-right:4px" title="{$lang->search_target}"> <select name="search_target" style="margin-right:4px" title="{$lang->search_target}">
{@$lang->search_target_list = array_merge($lang->search_target_list, $usedIdentifiers)} {@$lang->search_target_list = array_merge($usedIdentifiers, $lang->search_target_list)}
<option value="{$key}" loop="$lang->search_target_list=>$key,$val" selected="selected"|cond="$search_target==$key">{$val}</option> <option value="{$key}" loop="$lang->search_target_list=>$key,$val" selected="selected"|cond="$search_target==$key">{$val}</option>
</select> </select>
<input type="search" name="search_keyword" value="{htmlspecialchars($search_keyword, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" style="width:140px"> <input type="search" name="search_keyword" value="{htmlspecialchars($search_keyword, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" style="width:140px">
@ -154,7 +154,12 @@
<h3>{$lang->member_group}</h3> <h3>{$lang->member_group}</h3>
<label loop="$group_list => $key,$val" for="g{$val->group_srl}" class="x_inline"><input type="checkbox" name="groups[]" id="g{$val->group_srl}" value="{$val->group_srl}"/> {$val->title}</label> <label loop="$group_list => $key,$val" for="g{$val->group_srl}" class="x_inline"><input type="checkbox" name="groups[]" id="g{$val->group_srl}" value="{$val->group_srl}"/> {$val->title}</label>
</div> </div>
<div class="x_control-group"> <div class="x_control-group _moveTarget" hidden>
<h3>{$lang->denied}</h3>
<label class="x_inline" for="appoval"><input type="radio" name="denied" id="appoval" value="N" /> {$lang->approval}</label>
<label class="x_inline" for="deny"><input type="radio" name="denied" id="deny" value="Y" /> {$lang->denied}</label>
</div>
<div class="x_control-group _moveTarget" hidden>
<h3>{$lang->about_send_message}</h3> <h3>{$lang->about_send_message}</h3>
<textarea rows="5" cols="42" id="message" style="width:98%" name="message" title="{$lang->about_send_message}"></textarea> <textarea rows="5" cols="42" id="message" style="width:98%" name="message" title="{$lang->about_send_message}"></textarea>
</div> </div>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0"> <ruleset version="1.5.0">
<customrules> <customrules>
<rule name="number_with_plus_minus" type="regex" test="/^(\+|-)?[1-9][0-9]*$/" /> <rule name="number_with_plus_minus" type="regex" test="/^(\+|-)?[0-9][0-9]*$/" />
</customrules> </customrules>
<fields> <fields>
<field name="member_srl" required="true" rule="number" /> <field name="member_srl" required="true" rule="number" />

View file

@ -664,16 +664,20 @@ function doShowWidgetSizeSetup(px, py, obj) {
jQuery.each(opts, function(key, val){ jQuery.each(opts, function(key, val){
var el = form[0].elements[key]; var el = form[0].elements[key];
if (el) var $el = jQuery(el);
{ if(el) {
el.value = val; $el.val(val);
if(el.className.match(/\bcolor-indicator\b/))
{ if($el.hasClass('color-indicator')) {
el.style.background = el.value = '#'+el.value; if(val != 'transparent') {
val = val.toUpperCase();
$el.css('background', '#' + val);
$el.val('#' + val);
}
} }
} }
if (el.tagName.toLowerCase() == "select")
{ if(el.tagName.toLowerCase() == "select") {
if(el.selectedIndex == -1) { if(el.selectedIndex == -1) {
el.selectedIndex = 0; el.selectedIndex = 0;
} }

File diff suppressed because one or more lines are too long

View file

@ -62,7 +62,7 @@
<option value="solid">{$lang->cmd_widget_border_solid}</option> <option value="solid">{$lang->cmd_widget_border_solid}</option>
<option value="dotted">{$lang->cmd_widget_border_dotted}</option> <option value="dotted">{$lang->cmd_widget_border_dotted}</option>
</select> </select>
<input type="text" name="border_top_color" value="" class="color_input color-indicator" maxlength="6"/> <input type="text" name="border_top_color" value="" class="color_input color-indicator" maxlength="7"/>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -72,7 +72,7 @@
<option value="solid">{$lang->cmd_widget_border_solid}</option> <option value="solid">{$lang->cmd_widget_border_solid}</option>
<option value="dotted">{$lang->cmd_widget_border_dotted}</option> <option value="dotted">{$lang->cmd_widget_border_dotted}</option>
</select> </select>
<input type="text" name="border_left_color" value="" class="color_input color-indicator" maxlength="6"/> <input type="text" name="border_left_color" value="" class="color_input color-indicator" maxlength="7"/>
</td> </td>
<td style="text-align:right"> <td style="text-align:right">
<input type="number" name="border_right_thick" value="" class="small_input" /> px <input type="number" name="border_right_thick" value="" class="small_input" /> px
@ -80,7 +80,7 @@
<option value="solid">{$lang->cmd_widget_border_solid}</option> <option value="solid">{$lang->cmd_widget_border_solid}</option>
<option value="dotted">{$lang->cmd_widget_border_dotted}</option> <option value="dotted">{$lang->cmd_widget_border_dotted}</option>
</select> </select>
<input type="text" name="border_right_color" value="" class="color_input color-indicator" maxlength="6"/> <input type="text" name="border_right_color" value="" class="color_input color-indicator" maxlength="7"/>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -90,7 +90,7 @@
<option value="solid">{$lang->cmd_widget_border_solid}</option> <option value="solid">{$lang->cmd_widget_border_solid}</option>
<option value="dotted">{$lang->cmd_widget_border_dotted}</option> <option value="dotted">{$lang->cmd_widget_border_dotted}</option>
</select> </select>
<input type="text" name="border_bottom_color" value="" class="color_input color-indicator" maxlength="6"/> <input type="text" name="border_bottom_color" value="" class="color_input color-indicator" maxlength="7"/>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -126,7 +126,7 @@
<style scoped> <style scoped>
.wgs{margin:0;width:700px} .wgs{margin:0;width:700px}
.wgs select{margin:0;width:auto} .wgs select{margin:0;width:auto}
.wgs input{margin:0!important;width:50px} .wgs input{margin:0!important;width:60px}
</style> </style>
</section> </section>
<!--%load_js_plugin("ui.colorpicker")--> <!--%load_js_plugin("ui.colorpicker")-->