issue 2471 fixed a bug that show the private information in mobile view.

added the mobile skin setting in member configuration.


git-svn-id: http://xe-core.googlecode.com/svn/branches/luminous@11434 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2012-09-21 09:05:48 +00:00
parent d3cb41a17b
commit f6a83e335d
22 changed files with 538 additions and 425 deletions

View file

@ -897,7 +897,7 @@
<value xml:lang="vi"><![CDATA[Sửa đổi mật khẩu]]></value> <value xml:lang="vi"><![CDATA[Sửa đổi mật khẩu]]></value>
</item> </item>
<item name="cmd_view_member_info"> <item name="cmd_view_member_info">
<value xml:lang="ko"><![CDATA[회원 정보 보기]]></value> <value xml:lang="ko"><![CDATA[회원정보 보기]]></value>
<value xml:lang="en"><![CDATA[View Member Info]]></value> <value xml:lang="en"><![CDATA[View Member Info]]></value>
<value xml:lang="jp"><![CDATA[会員情報確認]]></value> <value xml:lang="jp"><![CDATA[会員情報確認]]></value>
<value xml:lang="zh-CN"><![CDATA[个人资料]]></value> <value xml:lang="zh-CN"><![CDATA[个人资料]]></value>

View file

@ -0,0 +1,43 @@
@charset "utf-8";
/* Element Reset */
.xm,
.xm table,
.xm input,
.xm textarea,
.xm select,
.xm button{font-family:Tahoma,Geneva,sans-serif;font-size:12px;color:#333}
.xm button,
.xm input[type=submit],
.xm input[type=reset],
.xm input[type=button]{cursor:pointer;overflow:visible}
.xm img{border:0}
.xm p{line-height:1.5}
/* Heading */
.xm .h1,
.xm .h2,
.xm .h3,
.xm .h4{position:relative;zoom:1}
.xm .h1{font-size:24px}
.xm .h2{font-size:20px}
.xm .h3{font-size:16px}
.xm .h4{font-size:12px}
/* Table */
.xm .table{margin:1em 0}
.xm .table table{width:100%;border:0;border-collapse:collapse;border-top:2px solid #ccc}
.xm .table caption{font-weight:bold;text-align:left;line-height:22px;padding:5px 0}
.xm .table caption:after{content:"";display:block;clear:both}
.xm .table caption a{font-weight:normal}
.xm .table caption em{float:right;margin-left:1em}
.xm .table caption strong{color:#e00}
.xm .table caption .side{float:right;font-weight:normal;margin-left:1em}
.xm .table th,
.xm .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd;white-space:nowrap}
.xm .table th{background:#f8f8f8}
.xm .table thead th{border-bottom:1px solid #999}
.xm .table tfoot td{font-weight:bold;background:#f8f8f8}
.xm .table.even tbody tr:nth-of-type(even) td{background-color:#fafafa}
.xm .table td>input[type=text]{margin:-1px 0 -3px 0 !important;vertical-align:middle}
.xm .table img{vertical-align:middle}
.xm .table em{font-style:normal;font-weight:normal;color:#e00}
.xm .table .title,
.xm .table .text{white-space:normal}

View file

@ -0,0 +1,48 @@
/* Mobile XE Login (/modules/member/tpl/login_form.html) */
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif}
img{border:0}
em{font-style:normal}
form{margin:0;padding:0}
fieldset{margin:0;padding:0;border:0}
textarea{resize:vertical}
input[type=checkbox],
input[type=radio]{width:13px;height:13px;margin:0;padding:0}
/* Common */
.fl{float:left}
.fr{float:right}
/* Body */
.bd{background:#f8f8f8;padding:1px 0;border-bottom:1px solid #ccc8be}
.bd:after{content:"";margin:0;position:relative;top:3px;display:block;clear:both;height:1px;background:#fff}
/* Hx */
.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
.hx.h2{background:#e5e5e5}
.hx h2{margin:0 10px 0 0;display:inline}
.hx h2{font-size:16px;line-height:1.4}
/* Form Field */
.ff{margin:0;padding:10px 0}
.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none}
.ff li{margin:0 0 5px 0;padding:0}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea,
.ff label+select{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea{padding:5px}
/* Help */
.hp{background:#eee;border-top:1px solid #ddd;padding:12px 10px !important;margin:10px 0px !important;}
.hp li{margin:0;display:inline;border-left:1px solid #ccc;padding:0 4px 0 8px;}
.hp li:first-child{border:0;}
.hp a{color:#333;text-decoration:none}
/* Button Area */
.bna{text-align:center;padding:0 10px;margin:10px 0}
.bna:after{content:"";display:block;clear:both}
.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle}
.bn[type=submit],
.bn[type=button]{height:28px}
.bn[href]{height:26px}
.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset}
.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#fff;color:#000}
.message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px}.message p{margin:1em 0!important}.message em{font-style:normal;color:#e00}.message.info,.message.error,.message.update{padding-left:55px}.message.info{border-color:#e0e8ec;background:#edf9ff url(../../../../../common/img/msg.Info.png) no-repeat 1em .5em}.message.error{border-color:#efdcdc;background:#ffecec url(../../../../../../common/img/msg.error.png) no-repeat 1em .5em}.message.update{border-color:#eae9dc;background:#fffdef url(../../../../../common/img/msg.update.png) no-repeat 1em .5em}

View file

@ -0,0 +1,60 @@
@charset "utf-8";
/* Mobile XE (/modules/member/tpl/signup_form.html) */
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif}
img{border:0}
em{font-style:normal}
form{margin:0;padding:0}
fieldset{margin:0;padding:0;border:0}
textarea{resize:vertical}
input[type=checkbox],
input[type=radio]{width:13px;height:13px;margin:0;padding:0}
/* Body */
.bd{background:#f8f8f8;padding:1px 0}
/* Hx */
.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
.hx.h2{background:#e5e5e5;text-shadow:1px 1px 0 #fff}
.hx.h2 em{font-size:12px;color:#6352d2}
.hx.h3{background:#868686;color:#fff}
.hx.h3 em{font-size:12px}
.hx h2, .hx h3{margin:0 10px 0 0;display:inline}
.hx h2{font-size:16px;line-height:1.4}
.hx h3{font-size:14px}
.hx a{color:#000}
.hx .ex{font-size:12px}
.hx .tg{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:visible;border:0;cursor:pointer;opacity:0;background:none}
.hx .ca{font-size:12px;text-decoration:underline;color:#333}
.hx .ca:after{content:"";display:inline-block;position:relative;left:4px;width:0;height:0;border:4px solid;border-color:transparent;border-left-color:#8d7de1;margin:0 -8px 0 0}
.hx .write{position:absolute;top:8px;right:10px;background-position:0 0;display:inline-block;width:28px;height:27px;font-size:0;overflow:hidden;text-indent:28px}
/* Form Field */
.ff{margin:0;padding:10px 0}
.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none}
.ff li{margin:0 0 5px 0;padding:0}
.ff li p{color:#666}
.ff li>label:first-child{display:block;font-weight:bold}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea,
.ff label+select,
.ff label+select+input[type=text],
.ff .inputText{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea,
.ff label+select+input[type=text],
.ff .inputText,
.ff .tel input[type=text]{padding:5px}
.ff .krZip input[type=text]{width:77%;font-size:14px;margin:0 0 5px 0;padding:5px}
/* Button Area */
.bna{text-align:center;padding:0 10px;margin:10px 0}
.bna:after{content:"";display:block;clear:both}
.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle}
.bn[type=submit],
.bn[type=button]{height:28px}
.bn[href]{height:26px}
.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset}
.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#fff;color:#000}
.message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px}.message p{margin:1em 0!important}.message em{font-style:normal;color:#e00}.message.info,.message.error,.message.update{padding-left:55px}.message.info{border-color:#e0e8ec;background:#edf9ff url(../../../../common/img/msg.Info.png) no-repeat 1em .5em}.message.error{border-color:#efdcdc;background:#ffecec url(../../../../common/img/msg.error.png) no-repeat 1em .5em}.message.update{border-color:#eae9dc;background:#fffdef url(../../../../common/img/msg.update.png) no-repeat 1em .5em}
.agreement .text{height:200px;overflow-y:auto;}
.bn a{text-decoration:none;}

View file

@ -1,5 +1,5 @@
<load target="./../../../common/js/jquery.min.js" usecdn="true" index="-1000000" /> <load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="./../../../common/js/xe.min.js" usecdn="true" index="-1000000" /> <load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
<load target="css/msignup.css" usecdn="true" /> <load target="css/msignup.css" usecdn="true" />
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>

View file

@ -0,0 +1,27 @@
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
<load target="css/msignup.css" usecdn="true" />
<h2 class="h2">{$member_title = $lang->msg_leave_member}</h2>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="leaveMember" id="fo_insert_member" class="ff" action="./" method="post">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberLeave" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<ul>
<li>
<label for="identifier">{Context::getLang($identifier)}</label>
<p id="identifier">{$formValue}</p>
</li>
<li>
<label for="cpw">{$lang->password}</label>
<input type="password" name="password" id="cpw" />
</li>
</ul>
<div class="bna">
<input type="submit" class="bn dark" value="{$lang->cmd_leave}" />
</div>
</form>

View file

@ -0,0 +1,44 @@
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="css/mlogin.css" usecdn="true" />
<div class="bd">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<div class="hx h2">
<h2>{$lang->cmd_login}</h2>
</div>
<form action="./" method="POST" class="ff">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="redirect_url" value="{getUrl('act','')}" />
<ul>
<li><label for="id"><!--@if($identifier == 'user_id')-->{$lang->user_id}<!--@else-->{$lang->email_address}<!--@end--></label><input name="user_id" type="text" id="id" value="" /></li>
<li><label for="pw">{$lang->password}</label><input name="password" type="password" id="pw" value="" /></li>
</ul>
<div class="message info" id="keep_msg" style="display:none;">
<p>{$lang->about_keep_warning}</p>
</div>
<div class="bna">
<div class="fl"><input name="keep_signed" type="checkbox" value="Y" id="autoLogin" /> <label for="autoLogin">{$lang->keep_signed}</label></div>
<div class="fr"><button type="submit" class="bn dark">{$lang->cmd_login}</button></div>
</div>
<ul class="hp">
<li><a href="{getUrl('','act','dispMemberFindAccount')}"><span>{$lang->cmd_find_member_account}</span></a></li>
<li><a href="{getUrl('','act','dispMemberSignUpForm')}"><span>{$lang->cmd_signup}</span></a></li>
</ul>
</form>
</div>
<script>
jQuery(function($){
var keep_msg = $('#keep_msg');
keep_msg.hide();
$('#autoLogin').change(function(){
if($(this).is(':checked')){
keep_msg.slideDown(200);
} else {
keep_msg.slideUp(200);
}
});
});
</script>

View file

@ -0,0 +1,32 @@
<load target="css/member.css" />
<div class="xm">
<h2 class="h2">{$lang->member_info}</h2>
<div class="table even">
<table width="100%" border="1" cellspacing="0">
<tr loop="$displayDatas => $item">
<th scope="row" >{$item->title} <em cond="$item->required || $item->mustRequired">*</em></th>
<td class="text">{$item->value}</td>
</tr>
<tr>
<th scope="row">{$lang->member_group}</th>
<td class="text">{implode(', ', $memberInfo['group_list'])}</td>
</tr>
<tr>
<th>{$lang->signup_date}</th>
<td>{zdate($memberInfo[regdate],"Y-m-d")}</td>
</tr>
<!--@if($memberInfo[member_srl] == $logged_info->member_srl || $logged_info->is_admin == 'Y' )-->
<tr>
<th>{$lang->last_login}</th>
<td>{zdate($memberInfo[last_login],"Y-m-d")}</td>
</tr>
<!--@end-->
</table>
</div>
<div class="btnArea" cond="$memberInfo['member_srl'] == $logged_info->member_srl">
<span class="btn" cond="$member_config->identifier == 'email_address'"><a href="{getUrl('act', 'dispMemberModifyEmailAddress')}">{$lang->cmd_modify_member_email_address}</a></span>
<span class="btn"><a href="{getUrl('act','dispMemberModifyInfo','member_srl','')}">{$lang->cmd_modify_member_info}</a></span>
<span class="btn"><a href="{getUrl('act','dispMemberModifyPassword','member_srl','')}">{$lang->cmd_modify_member_password}</a></span>
<span class="btn"><a href="{getUrl('act','dispMemberLeave','member_srl','')}">{$lang->cmd_leave}</a></span>
</div>
</div>

View file

@ -0,0 +1,22 @@
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
<load target="css/msignup.css" usecdn="true" />
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="modifyEmailAddress" class="ff" action="./" method="post">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberModifyEmailAddress" />
<input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
<h2 class="h2">{$lang->cmd_modify_member_email_address}</h2>
<p>{$lang->about_modify_member_email_address}</p>
<ul>
<li>
<label for="email_address">{$lang->email_address}</label>
<input type="text" id="email_address" name="email_address" value="" />
</li>
</ul>
<div class="bna">
<input type="submit" class="bn dark" value="{$lang->cmd_send_auth_new_emaill_address}" />
</div>
</form>

View file

@ -0,0 +1,48 @@
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
<load target="../../tpl/js/signup_check.js" />
<load target="../../tpl/js/member_admin.js" />
<load target="css/msignup.css" usecdn="true" />
<script type="text/javascript" >
xe.lang.deleteProfileImage = '{$lang->msg_delete_extend_form}';
xe.lang.deleteImageMark = '{$lang->msg_delete_extend_form}';
xe.lang.deleteImageName = '{$lang->msg_delete_extend_form}';
</script>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<div class="bd">
<h2 class="h2">{$lang->msg_update_member}</h2>
<form ruleset="@insertMember" id="fo_insert_member" class="ff" action="./" method="POST">
<input type="hidden" name="act" value="procMemberModifyInfo" />
<input type="hidden" name="module" value="member" />
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<input type="hidden" name="page" value="{$page}" />
<fieldset class="sn">
<ul>
<li>
<label for="identifierForm">{$identifierForm->title} <em style="color:red">*</em></label>
<input id="identifierForm" type="text" name="{$identifierForm->name}" value="{$identifierForm->value}" disabled="disabled" />
<input type="hidden" name="{$identifierForm->name}" value="{$identifierForm->value}" />
</li>
<li loop="$formTags=>$formTag">
<label for="{$formTag->name}">{$formTag->title}</label>
<div id="{$formTag->name}" cond="$formTag->name != 'signature' && $formTag->type != 'date'" class="tel"|cond="$formTag->type == 'tel'">{$formTag->inputTag}</div>
<textarea id="{$formTag->name}" cond="$formTag->name == 'signature'" name="signature" rows="8" cols="42" class="itxx">{$member_info->signature}</textarea>
<input id="{$formTag->name}" class="inputText" type="date" value="{$oMemberInfo[$formTag->name]}" cond="$formTag->type == 'date'" />
</li>
<li><label for="mailing" class="db fb al">{$lang->allow_mailing}</label><input id="mailing" type="checkbox" name="allow_mailing" value="Y" class="checkbox" <!--@if($member_info->allow_mailing!='N')-->checked="checked"<!--@end--> /> <p style="color:#666">{$lang->about_allow_mailing}</p></li>
</ul>
</fieldset>
<div class="cm">
<input type="submit" value="{$lang->cmd_registration}" class="bn"/>
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>

View file

@ -0,0 +1,32 @@
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
<load target="css/msignup.css" usecdn="true" />
<h2 class="h2">{$member_title = $lang->cmd_modify_member_password}</h2>
<form ruleset="modifyPassword" id="fo_insert_member" class="ff" action="./" method="post">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberModifyPassword" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<ul>
<li>
<label for="uid">{Context::getLang($identifier)}</label>
<input type="text" disabled="disabled" value="{$formValue}" id="uid" />
</li>
<li>
<label for="cpw">{$lang->current_password}</label>
<input type="password" name="current_password" id="cpw" />
</li>
<li>
<label for="npw1">{$lang->password1}</label>
<input type="password" name="password1" id="npw1" /> <span class="desc">{$lang->about_password}</span>
</li>
<li>
<label for="npw2">{$lang->password2}</label>
<input type="password" name="password2" id="npw2" />
</li>
</ul>
<div class="bna">
<input type="submit" class="bn" value="{$lang->cmd_registration}" />
</div>
</form>

View file

@ -0,0 +1,24 @@
<load target="css/msignup.css" usecdn="true" />
<h2 class="h2">{$lang->msg_rechecked_password}</h2>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form class="ff" action="./index.php" method="post" ruleset="recheckedPassword">
<input type="hidden" name="act" value="procMemberModifyInfoBefore" />
<input type="hidden" name="module" value="member" />
<ul>
<li>
<label for="identifier">{$identifierTitle}</label>
<p id="identifier">{$identifierValue}</p>
</li>
<li>
<label for="password">{$lang->password}</label>
<input id ="password" type="password" name="password" />
<p class="desc">{$lang->about_rechecked_password}</p>
</li>
</ul>
<div class="bna">
<input class="bn white" type="submit" value="{$lang->cmd_confirm}" />
<span class="bn white"><a href="{getUrl('act','dispMemberInfo','member_srl','')}">{$lang->cmd_cancel}</a></span>
</div>
</form>

View file

@ -0,0 +1,60 @@
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
<load target="css/msignup.css" usecdn="true" />
<load target="../../tpl/js/signup_check.js" />
<div class="bd">
<div class="hx h2">
<h2>{$lang->cmd_signup}</h2>
</div>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="@insertMember" id="fo_insert_member" class="ff" action="./" method="post" enctype="multipart/form-data">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberInsert" />
<!--@if(!$is_logged && $member_config->agreement)-->
<div class="agreement">
<div class="text">
{$member_config->agreement}
</div>
<div class="confirm">
<input type="checkbox" name="accept_agreement" value="Y" id="accept_agree" />
<label for="accept_agree">{$lang->about_accept_agreement}</label>
</div>
</div>
<!--@end-->
<ul>
<li>
<label for="{$identifierForm->name}">{$identifierForm->title} <em style="color:red">*</em></label>
<input type="text" name="{$identifierForm->name}" id="{$identifierForm->name}" value="{$identifierForm->value}" />
</li>
<li>
<label for="password">{$lang->password} <em style="color:red">*</em></label>
<input type="password" name="password" id="password" value=""/>
</li>
<li>
<label for="password2">{$lang->password3} <em style="color:red">*</em></label>
<input type="password" name="password2" id="password2" value=""/>
</li>
<li loop="$formTags=>$formTag">
<label for="{$formTag->name}">{$formTag->title}</label>
<div id="{$formTag->name}" cond="$formTag->name != 'signature' && $formTag->type != 'date'" class="tel"|cond="$formTag->type == 'tel'">{$formTag->inputTag}</div>
<input id="{$formTag->name}" class="inputText" type="date" value="{$oMemberInfo[$formTag->name]}" cond="$formTag->type == 'date'" />
</li>
<li>
<label>{$lang->allow_mailing}</label>
<input type="radio" name="allow_mailing" id="mailingYes" value="Y" checked="checked"|cond="$member_info->allow_mailing == 'Y'" /> <label for="mailingYes">{$lang->cmd_yes}</label>
<input type="radio" name="allow_mailing" id="mailingNo" value="N" checked="checked"|cond="$member_info->allow_mailing != 'Y'" /> <label for="mailingNo">{$lang->cmd_no}</label>
</li>
<li>
<label>{$lang->allow_message}</label>
<block loop="$lang->allow_message_type=>$key,$val">
<input type="radio" name="allow_message" value="{$key}" checked="checked"|cond="$member_info->allow_message == $key || (!$member_info && $key == 'Y')" id="allow_{$key}" /> <label for="allow_{$key}">{$val}</label>
</block>
</li>
</ul>
<div class="bna">
<input type="submit" class="bn dark" value="{$lang->cmd_registration}" />
</div>
</form>
</div>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">회원 기본 모바일 스킨</title>
<title xml:lang="en">XE Basic Member Mobile Skin</title>
<description xml:lang="ko">
XE 기본 모바일 스킨 입니다.
NHN (developers@xpressengine.com)
</description>
<version>0.1</version>
<date>2012-09-21</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NHN</name>
<name xml:lang="en">NHN</name>
<name xml:lang="zh-TW">NHN</name>
<name xml:lang="tr">NHN</name>
</author>
<extra_vars />
</skin>

View file

@ -146,6 +146,7 @@
'layout_srl', 'layout_srl',
'skin', 'skin',
'colorset', 'colorset',
'mskin',
'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image', 'profile_image_max_width', 'profile_image_max_height',
'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name', 'image_name_max_width', 'image_name_max_height',
'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark', 'image_mark_max_width', 'image_mark_max_height',
@ -178,8 +179,10 @@
if(!trim(strip_tags($args->after_logout_url))) $args->after_logout_url = null; if(!trim(strip_tags($args->after_logout_url))) $args->after_logout_url = null;
if(!trim(strip_tags($args->redirect_url))) $args->redirect_url = null; if(!trim(strip_tags($args->redirect_url))) $args->redirect_url = null;
if(!$args->skin) $args->skin = "default"; if(!$args->skin) $args->skin = 'default';
if(!$args->colorset) $args->colorset = "white"; if(!$args->colorset) $args->colorset = 'white';
if(!$args->mskin) $args->mskin = 'default';
$args->profile_image = $args->profile_image?'Y':'N'; $args->profile_image = $args->profile_image?'Y':'N';
$args->image_name = $args->image_name?'Y':'N'; $args->image_name = $args->image_name?'Y':'N';

View file

@ -119,6 +119,10 @@
$skin_list = $oModuleModel->getSkins($this->module_path); $skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list', $skin_list); Context::set('skin_list', $skin_list);
// list of skins for member module
$mskin_list = $oModuleModel->getSkins($this->module_path, 'm.skins');
Context::set('mskin_list', $mskin_list);
// retrieve skins of editor // retrieve skins of editor
$oEditorModel = &getModel('editor'); $oEditorModel = &getModel('editor');
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList()); Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
@ -269,6 +273,7 @@
if($formInfo->isDefaultForm){ if($formInfo->isDefaultForm){
if($formInfo->imageType){ if($formInfo->imageType){
$formTag->type = 'image';
if($formInfo->name == 'profile_image'){ if($formInfo->name == 'profile_image'){
$target = $memberInfo['profile_image']; $target = $memberInfo['profile_image'];
$functionName = 'doDeleteProfileImage'; $functionName = 'doDeleteProfileImage';
@ -300,11 +305,13 @@
,$member_config->{$formInfo->name.'_max_height'}); ,$member_config->{$formInfo->name.'_max_height'});
}//end imageType }//end imageType
elseif($formInfo->name == 'birthday'){ elseif($formInfo->name == 'birthday'){
$formTag->type = 'date';
$inputTag = sprintf('<input type="hidden" name="birthday" id="date_birthday" value="%s" /><input type="text" class="inputDate" id="birthday" value="%s" /> <input type="button" value="%s" class="dateRemover" />' $inputTag = sprintf('<input type="hidden" name="birthday" id="date_birthday" value="%s" /><input type="text" class="inputDate" id="birthday" value="%s" /> <input type="button" value="%s" class="dateRemover" />'
,$memberInfo['birthday'] ,$memberInfo['birthday']
,zdate($memberInfo['birthday'], 'Y-m-d', false) ,zdate($memberInfo['birthday'], 'Y-m-d', false)
,$lang->cmd_delete); ,$lang->cmd_delete);
}elseif($formInfo->name == 'find_account_question'){ }elseif($formInfo->name == 'find_account_question'){
$formTag->type = 'select';
$inputTag = '<select name="find_account_question" style="width:290px; display:block;">%s</select>'; $inputTag = '<select name="find_account_question" style="width:290px; display:block;">%s</select>';
$optionTag = array(); $optionTag = array();
foreach($lang->find_account_question_items as $key=>$val){ foreach($lang->find_account_question_items as $key=>$val){
@ -318,6 +325,7 @@
$inputTag = sprintf($inputTag, implode('', $optionTag)); $inputTag = sprintf($inputTag, implode('', $optionTag));
$inputTag .= '<input type="text" name="find_account_answer" title="'.Context::getLang('find_account_answer').'" value="'.$memberInfo['find_account_answer'].'" class="inputText long tall" />'; $inputTag .= '<input type="text" name="find_account_answer" title="'.Context::getLang('find_account_answer').'" value="'.$memberInfo['find_account_answer'].'" class="inputText long tall" />';
}else{ }else{
$formTag->type = 'text';
$inputTag = sprintf('<input type="text" name="%s" value="%s" class="inputText long tall" />' $inputTag = sprintf('<input type="text" name="%s" value="%s" class="inputText long tall" />'
,$formInfo->name ,$formInfo->name
,$memberInfo[$formInfo->name]); ,$memberInfo[$formInfo->name]);
@ -329,6 +337,7 @@
'value' => $extendForm->value); 'value' => $extendForm->value);
$extentionReplace = array(); $extentionReplace = array();
$formTag->type = $extendForm->column_type;
if($extendForm->column_type == 'text' || $extendForm->column_type == 'homepage' || $extendForm->column_type == 'email_address'){ if($extendForm->column_type == 'text' || $extendForm->column_type == 'homepage' || $extendForm->column_type == 'email_address'){
$template = '<input type="text" name="%column_name%" value="%value%" />'; $template = '<input type="text" name="%column_name%" value="%value%" />';
}elseif($extendForm->column_type == 'tel'){ }elseif($extendForm->column_type == 'tel'){

View file

@ -1,223 +1,66 @@
<?php <?php
require_once(_XE_PATH_.'modules/member/member.view.php');
class memberMobile extends member class memberMobile extends memberView
{ {
/**
* Support method are
* dispMemberInfo, dispMemberSignUpForm, dispMemberFindAccount, dispMemberGetTempPassword, dispMemberModifyInfo, dispMemberModifyInfoBefore
*/
var $memberInfo; var $memberInfo;
function init() { function init()
// Get the member configuration {
$oModuleModel = &getModel('module'); // Get the member configuration
$this->member_config = $oModuleModel->getModuleConfig('member'); $oMemberModel = &getModel('member');
$this->member_config = $oMemberModel->getMemberConfig();
Context::set('member_config', $this->member_config);
$mskin = $this->member_config->mskin;
// Set the template path
if(!$mskin)
{
$mskin = 'default';
$template_path = sprintf('%sm.skins/%s', $this->module_path, $mskin);
}
else
{
$template_path = sprintf('%sm.skins/%s', $this->module_path, $mskin);
}
// if member_srl exists, set memberInfo // if member_srl exists, set memberInfo
$member_srl = Context::get('member_srl'); $member_srl = Context::get('member_srl');
if($member_srl) { if($member_srl)
{
$oMemberModel = &getModel('member'); $oMemberModel = &getModel('member');
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl); $this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
if(!$this->memberInfo) Context::set('member_srl',''); if(!$this->memberInfo)
else Context::set('member_info',$this->memberInfo); {
Context::set('member_srl','');
}
else
{
Context::set('member_info',$this->memberInfo);
}
} }
Context::set('member_config', $this->member_config);
$this->setTemplatePath($this->module_path.'tpl'); $this->setTemplatePath($template_path);
}
function dispMemberLoginForm() { $oLayoutModel = &getModel('layout');
if(Context::get('is_logged')) { $layout_info = $oLayoutModel->getLayout($this->member_config->mlayout_srl);
Context::set('redirect_url', getUrl('act','')); if($layout_info)
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('redirect.html');
return;
}
// get member module configuration.
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
Context::set('identifier', $config->identifier);
// Set a template file
Context::set('referer_url', htmlspecialchars($_SERVER['HTTP_REFERER']));
$this->setTemplateFile('login_form');
}
function dispMemberSignUpForm(){
$oMemberModel = &getModel('member');
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $this->member_config);
if(!$trigger_output->toBool()) return $trigger_output;
if ($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
$oMemberAdminView = &getAdminView('member');
$formTags = $oMemberAdminView->_getMemberInputTag($member_info);
Context::set('formTags', $formTags);
$member_config = $oMemberModel->getMemberConfig();
Context::set('member_config', $member_config);
global $lang;
$identifierForm->title = $lang->{$member_config->identifier};
$identifierForm->name = $member_config->identifier;
$identifierForm->value = $member_info->{$member_config->identifier};
Context::set('identifierForm', $identifierForm);
// Set a template file
$this->setTemplateFile('signup_form');
}
function dispMemberInfo() {
$oMemberModel = &getModel('member');
$logged_info = Context::get('logged_info');
// Don't display member info to non-logged user
if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
$member_srl = Context::get('member_srl');
if(!$member_srl && Context::get('is_logged')) {
$member_srl = $logged_info->member_srl;
} elseif(!$member_srl) {
return $this->dispMemberSignUpForm();
}
$site_module_info = Context::get('site_module_info');
if(!$this->memberInfo)
{ {
$columnList = array('user_name', 'nick_name', 'homepage', 'blog', 'birthday', 'regdate', 'last_login'); $this->setLayoutPath($layout_info->path);
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_srl, $columnList);
} }
unset($this->memberInfo->password); }
unset($this->memberInfo->email_id);
unset($this->memberInfo->email_host);
unset($this->memberInfo->email_address);
if(!$this->memberInfo->member_srl) return $this->dispMemberSignUpForm();
Context::set('member_info', $this->memberInfo);
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->memberInfo));
$this->setTemplateFile('member_info_mobile');
}
/** function dispMemberModifyInfo()
* @brief Find user ID and password {
**/ parent::dispMemberModifyInfo();
function dispMemberFindAccount() {
if(Context::get('is_logged')) return $this->stop('already_logged'); if($this->member_info)
{
$oMemberModel = &getModel('member'); Context::set('oMemberInfo', get_object_vars($this->member_info));
$config = $oMemberModel->getMemberConfig();
Context::set('identifier', $config->identifier);
$this->setTemplateFile('find_member_account');
} }
}
/**
* @brief Generate a temporary password
**/
function dispMemberGetTempPassword() {
if(Context::get('is_logged')) return $this->stop('already_logged');
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
Context::set('identifier', $config->identifier);
$user_id = Context::get('user_id');
$temp_password = $_SESSION['xe_temp_password_'.$user_id];
unset($_SESSION['xe_temp_password_'.$user_id]);
if(!$user_id||!$temp_password) return new Object(-1,'msg_invaild_request');
Context::set('temp_password', $temp_password);
$this->setTemplateFile('find_temp_password');
}
/**
* @brief Edit member profile
**/
function dispMemberModifyInfo() {
$oMemberModel = &getModel('member');
$oModuleModel = &getModel('module');
$memberModuleConfig = $oModuleModel->getModuleConfig('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
if(!$this->memberInfo) $this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
$this->memberInfo->signature = $oMemberModel->getSignature($member_srl);
Context::set('member_info',$this->memberInfo);
// Receive a member join form
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->memberInfo));
// Call getEditor of the editor module and set it for signiture
if($this->memberInfo->member_srl) {
$oEditorModel = &getModel('editor');
$option->primary_key_name = 'member_srl';
$option->content_key_name = 'signature';
$option->allow_fileupload = false;
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = false;
$option->resizable = false;
$option->disable_html = true;
$option->height = 200;
$option->skin = $this->member_config->editor_skin;
$option->colorset = $this->member_config->editor_colorset;
$editor = $oEditorModel->getEditor($this->memberInfo->member_srl, $option);
Context::set('editor', $editor);
}
// Set a template file
$this->setTemplateFile('modify_info');
}
/**
* @brief Change the user password
**/
function dispMemberModifyPassword() {
$oMemberModel = &getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
$config = $oMemberModel->getMemberConfig();
Context::set('identifier', $config->identifier);
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
if(!$this->memberInfo) {
$columnList = array('member_srl', 'user_id');
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
}
Context::set('member_info',$this->memberInfo);
// Set a template file
$this->setTemplateFile('modify_password');
}
/**
* @brief Member withdrawl
**/
function dispMemberLeave() {
$oMemberModel = &getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
if(!$this->memberInfo) {
$columnList = array('member_srl', 'user_id');
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
}
Context::set('member_info',$this->memberInfo);
// Set a template file
$this->setTemplateFile('leave_form');
}
} }
?> ?>

View file

@ -98,6 +98,7 @@
function _getDisplayedMemberInfo($memberInfo, $extendFormInfo, $memberConfig) function _getDisplayedMemberInfo($memberInfo, $extendFormInfo, $memberConfig)
{ {
$logged_info = Context::get('logged_info');
$displayDatas = array(); $displayDatas = array();
foreach($memberConfig->signupForm as $no=>$formInfo) foreach($memberConfig->signupForm as $no=>$formInfo)
{ {
@ -270,6 +271,7 @@
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList); $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
$member_info->signature = $oMemberModel->getSignature($member_srl); $member_info->signature = $oMemberModel->getSignature($member_srl);
Context::set('member_info',$member_info); Context::set('member_info',$member_info);
// Get a list of extend join form // Get a list of extend join form
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info)); Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
@ -291,6 +293,8 @@
Context::set('editor', $editor); Context::set('editor', $editor);
} }
$this->member_info = $member_info;
$oMemberAdminView = &getAdminView('member'); $oMemberAdminView = &getAdminView('member');
$formTags = $oMemberAdminView->_getMemberInputTag($member_info); $formTags = $oMemberAdminView->_getMemberInputTag($member_info);
Context::set('formTags', $formTags); Context::set('formTags', $formTags);

View file

@ -1,28 +0,0 @@
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
<load target="css/msignup.css" usecdn="true" />
<!--%import("../skins/default/filter/leave_member.xml")-->
<load target="../skins/default/js/member.js" usecdn="true" />
<div class="bd">
<h2 class="h2">{$member_title = $lang->msg_leave_member}</h2>
<form id="fo_insert_member" action="./" method="get" onsubmit="return procFilter(this, leave_member)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<fieldset class="sn">
<ul>
<li><label for="uid" class="db fb al">{$lang->user_id}</label><div id="uid">{$member_info->user_id}</div></li>
<li><label for="pw" class="db fb al">{$lang->password}</label><input id="pw" type="password" name="password" class="itx" /></li>
</ul>
</fieldset>
<div class="cm">
<input type="submit" value="{$lang->cmd_leave}" class="bn"/>
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_back}</span></a>
</div>
</form>
</div>

View file

@ -85,9 +85,9 @@
<p class="desc">{$lang->about_redirect_url}</p> <p class="desc">{$lang->about_redirect_url}</p>
</li> </li>
<li> <li>
<p class="q"><label for="skin">{$lang->layout}</label></p> <p class="q"><label for="layout">{$lang->layout}</label></p>
<p class="a"> <p class="a">
<select name="layout_srl"> <select id="layout" name="layout_srl">
<option loop="$layout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $config->layout_srl">{$val->title} ({$val->layout})</option> <option loop="$layout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $config->layout_srl">{$val->title} ({$val->layout})</option>
</select> </select>
</p> </p>
@ -104,6 +104,14 @@
<p class="q"><label for="member_colorset">{$lang->colorset}</label></p> <p class="q"><label for="member_colorset">{$lang->colorset}</label></p>
<p class="a"><div id="member_colorset"></div></p> <p class="a"><div id="member_colorset"></div></p>
</li> </li>
<li>
<p class="q"><label for="mskin">{$lang->mobile_skin}</label></p>
<p class="a">
<select id="mskin" name="mskin">
<option loop="$mskin_list=>$key,$val" value="{$key}" selected="selected"|cond="$config->mskin==$key">{$val->title} ({$key})</option>
</select>
</p>
</li>
<li> <li>
<p class="q"><label for="prohibited_nick_name">{$lang->cmd_manage_nick_name}({sprintf($lang->count_manage_nick_name, count($deniedNickNames))})</label></p> <p class="q"><label for="prohibited_nick_name">{$lang->cmd_manage_nick_name}({sprintf($lang->count_manage_nick_name, count($deniedNickNames))})</label></p>
<div class="a"> <div class="a">

View file

@ -1,185 +0,0 @@
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
<load target="css/msignup.css" usecdn="true" />
<load target="js/signup_check.js" usecdn="true" />
<load target="js/krzip_search.js" usecdn="true" />
<!--%import("../skins/default/filter/modify_info.xml")-->
<load target="../skins/default/js/member.js" usecdn="true" />
<!--@if($member_config->profile_image == 'Y')-->
<!--%import("../skins/default/filter/delete_profile_image.xml")-->
<!--@end-->
<!--@if($member_config->image_name == 'Y')-->
<!--%import("../skins/default/filter/delete_image_name.xml")-->
<!--@end-->
<!--@if($member_config->image_mark == 'Y')-->
<!--%import("../skins/default/filter/delete_image_mark.xml")-->
<!--@end-->
<div class="bd">
<h2 class="h2">{$lang->msg_update_member}</h2>
<h3 class="h3">{$lang->member_default_info}</h3>
<form id="fo_insert_member" action="./" method="GET" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y')-->enctype="multipart/form-data"<!--@end--> target="tmp_upload_iframe">
<input type="hidden" name="act" value="" />
<input type="hidden" name="module" value="member" />
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<input type="hidden" name="signature" value="{htmlspecialchars($member_info->signature)}" />
<input type="hidden" name="page" value="{$page}" />
<fieldset class="sn">
<ul>
<li><label for="uid" class="db fb al">{$lang->user_id}</label><div id="uid">{htmlspecialchars($member_info->user_id)}</div></li>
<li><label for="uname" class="db fb al">{$lang->user_name}</label><input type="text" name="user_name" id="uname" class="itx" value="{htmlspecialchars($member_info->user_name)}" /> <p style="color:#666">{$lang->about_user_name}</p></li>
<li><label for="nname" class="db fb al">{$lang->nick_name}</label><input type="text" name="nick_name" id="nname" class="itx" value="{htmlspecialchars($member_info->nick_name)}" /> <p style="color:#666">{$lang->about_nick_name}</p></li>
<li><label for="email" class="db fb al">{$lang->email_address}</label><input type="text" name="email_address" id="email" class="itx" value="{htmlspecialchars($member_info->email_address)}" /><p style="color:#666">{$lang->about_email_address}</p></li>
<!--@if($member_config->profile_image == 'Y')-->
<li><label for="p_image" class="db fb al">{$lang->profile_image}</label>
<!--@if($member_info->profile_image->src)-->
<div id="p_image">
<img src="{$member_info->profile_image->src}" border="0" alt="profile_image" />
<button type="button" onclick="doDeleteProfileImage({$member_info->member_srl});">{$lang->cmd_delete}</button>
</div>
<!--@end-->
<div id="p_image">
<input type="file" name="profile_image" value="" />
<a href="#" onclick="doUploadProfileImage();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
</div>
<p style="color:#666">{$lang->profile_image_max_width} : {$member_config->profile_image_max_width}px, {$lang->profile_image_max_height} : {$member_config->profile_image_max_height}px</p>
</li>
<!--@end-->
<!--@if($member_config->image_name == 'Y')-->
<li><label for="p_image" class="db fb al">{$lang->image_name}</label>
<!--@if($member_info->image_name->src)-->
<div id="p_image">
<div><img src="{$member_info->image_name->src}" border="0" alt="image_name" /></div>
<button type="button" onclick="doDeleteImageName({$member_info->member_srl});">{$lang->cmd_delete}</button>
</div>
<!--@end-->
<div id="p_image">
<input type="file" name="image_name" value="" />
<a href="#" onclick="doUploadImageName();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
</div>
<p style="color:#666">{$lang->image_name_max_width} : {$member_config->image_name_max_width}px, {$lang->image_name_max_height} : {$member_config->image_name_max_height}px</p>
</li>
<!--@end-->
<!--@if($member_config->image_mark == 'Y')-->
<li><label for="image_mark" class="db fb al">{$lang->image_mark}</label>
<!--@if($member_info->image_mark->src)-->
<div id="image_mark">
<img src="{$member_info->image_mark->src}" border="0" alt="image_mark" />
<button type="button" onclick="doDeleteImageMark({$member_info->member_srl});return false;">{$lang->cmd_delete}</button>
</div>
<!--@end-->
<div id="image_mark">
<input type="file" name="image_mark" value="" />
<a href="#" onclick="doUploadImageMark();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
</div>
<p style="color:#666">{$lang->image_mark_max_width} : {$member_config->image_mark_max_width}px, {$lang->image_mark_max_height} : {$member_config->image_mark_max_height}px</p>
</li>
<!--@end-->
<li><label for="hpage" class="db fb al">{$lang->homepage}</label><input type="text" id="hpage" name="homepage" value="{htmlspecialchars($member_info->homepage)}" class="itx" /> <p style="color:#666">{$lang->about_homepage}</p></li>
<li><label for="bpage" class="db fb al">{$lang->blog}</label><input type="text" id="bpage" name="blog" value="{htmlspecialchars($member_info->blog)}" class="itx" /> <p style="color:#666">{$lang->about_blog_url}</p></li>
<li><label for="bday" class="db fb al">{$lang->birthday}</label><input name="birthday" type="text" id="bday" class="itx" value="{$member_info->birthday}" /><p style="color:#666">{$lang->about_birthday}</p></li>
<li><label for="mailing" class="db fb al">{$lang->allow_mailing}</label><input id="mailing" type="checkbox" name="allow_mailing" value="Y" class="checkbox" <!--@if($member_info->allow_mailing!='N')-->checked="checked"<!--@end--> /> <p style="color:#666">{$lang->about_allow_mailing}</p></li>
<!--@if($member_config->signature != 'N')-->
<li><label for="signature" class="db fb al">{$lang->signature}</label><textarea name="signature" rows="8" cols="42" class="itxx" value=""></textarea></li>
<!--@end-->
</ul>
</fieldset>
<!--@if($extend_form_list)-->
<h3 class="h3">{$lang->member_extend_info}</h3>
<fieldset class="sn">
<ul>
<!--@foreach($extend_form_list as $key => $val)--><!--@if($val->is_active=='Y')-->
<li><label class="db fb al">{htmlspecialchars($val->column_title)}</label>
<!--// 일반 text -->
<!--@if($val->column_type == 'text')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
<!--// 홈페이지 주소 -->
<!--@elseif($val->column_type == 'homepage')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
<!--// Email 주소 -->
<!--@elseif($val->column_type == 'email_address')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
<!--// 전화번호 -->
<!--@elseif($val->column_type == 'tel')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4"/>
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4"/>
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4"/>
<!--// textarea -->
<!--@elseif($val->column_type == 'textarea')-->
<textarea name="{$val->column_name}" rows="8" cols="42" class="itxx">{htmlspecialchars($val->value)}</textarea>
<!--// 다중 선택 -->
<!--@elseif($val->column_type == 'checkbox')-->
<!--@if($val->default_value)-->
<!--@foreach($val->default_value as $v)-->
<input type="checkbox" id="{$v}" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
<!--@end-->
<!--@end-->
<!--@elseif($val->column_type == 'radio')-->
<!--@if($val->default_value)-->
<!--@foreach($val->default_value as $v)-->
<input type="radio" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
<!--@end-->
<!--@end-->
<!--// 단일 선택 -->
<!--@elseif($val->column_type == 'select')-->
<select name="{$val->column_name}">
<!--@if($val->default_value)-->
<!--@foreach($val->default_value as $v)-->
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
<!--@end-->
<!--@end-->
</select>
<!--// 한국 주소 검색 -->
<!--@elseif($val->column_type == 'kr_zip')-->
<div class="krZip">
<div id="zone_address_1_{$val->column_name}" style="display:<!--@if($val->value[0])-->inline<!--@else-->none<!--@end-->;">
<input type="text" name="{$val->column_name}" value="{$val->value[0]}" class="itx"/>
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
</div>
<div id="zone_address_list_{$val->column_name}" style="display:none">
<select name="_tmp_address_list_{$val->column_name}"></select>
<a href="#" onclick="doSelectKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_select}</span></a>
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
</div>
<div id="zone_address_search_{$val->column_name}" style="display:<!--@if($val->value[0])-->none<!--@else-->inline<!--@end-->;">
<input type="text" name="_tmp_address_search_{$val->column_name}" class="itx" value="" />
<a href="#" onclick="doSearchKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_search}</span></a>
</div>
<div class="address2">
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" class="itx" />
</div>
</div>
<!--// 일본 주소 검색 -->
<!--@elseif($val->column_type == 'jp_zip')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
<!--// 날짜 입력 -->
<!--@elseif($val->column_type == 'date')-->
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
<input type="text" class="inputDate" value="" />
<!--@end-->
<p style="color:#666">{$val->description}</p>
<!--// 공개 필드 css확인 필요 -->
<!--input type="checkbox" class="checkbox" name="open_{$val->column_name}" value="Y" id="open_{$val->column_name}" /><label for="open_{$val->column_name}">{$lang->public}</label--></li>
<!--@end--><!--@end-->
</ul>
</fieldset>
<!--@end-->
<div class="cm">
<input type="submit" value="{$lang->cmd_registration}" class="bn"/>
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>