Add multiple member agreements

- 가입 약관, 개인정보처리방침 등을 5개까지 추가할 수 있음
- 약관마다 각각 필수 또는 선택을 지정할 수 있음
- 모든 필수 약관에 동의해야 가입 가능
- 기본 스킨은 수정함. 서드파티 스킨에는 여전히 약관 1개만 표시됨
- 서드파티 스킨 사용시 동의 하나만 선택해도 전체 동의로 간주
This commit is contained in:
Kijin Sung 2017-11-27 14:43:20 +09:00
parent 20f924678a
commit 11c04c5a26
19 changed files with 251 additions and 72 deletions

View file

@ -0,0 +1,39 @@
<include target="header.html" />
<load target="js/default_config.js" />
<form action="./" class="x_form-horizontal" method="post">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberAdminInsertAgreementsConfig" />
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin', 'act', $act)}" />
<input type="hidden" name="xe_validator_id" value="modules/member/tpl/1" />
<!--@for($i = 1; $i <= 5; $i++)-->
<section class="section">
<h2>{$lang->agreement} {$i}</h2>
<div class="x_control-group">
<div class="x_control-label" for="agreement_{$i}_title">{$lang->cmd_agreement_title}</div>
<div class="x_controls">
<input type="text" name="agreement_{$i}_title" id="agreement_{$i}_title" value="{$config->agreements[$i]->title}" />
</div>
</div>
<div class="x_control-group">
<div class="x_control-label">{$lang->cmd_agreement_content}</div>
<div class="x_controls">
<input type="hidden" name="agreement_{$i}_content" id="agreement_{$i}_content" value="{escape($config->agreements[$i]->content)}" />
<iframe id="agreement_{$i}_iframe" class="agreement_iframe" src="{getUrl('act', 'dispMemberAdminAgreementsEdit', 'id', $i)}"></iframe>
</div>
</div>
<div class="x_control-group">
<div class="x_control-label">{$lang->cmd_agreement_type}</div>
<div class="x_controls">
<label class="x_inline" for="agreement_{$i}_required"><input type="radio" name="agreement_{$i}_type" id="agreement_{$i}_required" value="required" checked="checked"|cond="$config->agreements[$i]->type === 'required'" /> {$lang->cmd_required}</label>
<label class="x_inline" for="agreement_{$i}_optional"><input type="radio" name="agreement_{$i}_type" id="agreement_{$i}_optional" value="optional" checked="checked"|cond="$config->agreements[$i]->type === 'optional'" /> {$lang->cmd_optional}</label>
<label class="x_inline" for="agreement_{$i}_disabled"><input type="radio" name="agreement_{$i}_type" id="agreement_{$i}_disabled" value="disabled" checked="checked"|cond="$config->agreements[$i]->type === 'disabled' || !$config->agreements[$i]->type" /> {$lang->cmd_disabled}</label>
</div>
</div>
</section>
<!--@end-->
<div class="btnArea x_clearfix">
<span class="x_pull-right"><input class="x_btn x_btn-primary" type="submit" value="{$lang->cmd_save}" /></span>
</div>
</form>

View file

@ -0,0 +1,28 @@
<script>
$(function() {
var editor;
var parent = window.opener ? window.opener : window.parent;
CKEDITOR.on('instanceReady', function(evt) {
editor = evt.editor;
editor.on("resize", function(evt){
var height = evt.data.outerHeight;
$("#agreement_{$agreement_id}_iframe", parent.document).height(height);
});
editor.on("change", function() {
var content = editor.getData();
$("#agreement_{$agreement_id}_content", parent.document).val(content);
});
$("#agreement_{$agreement_id}_iframe", parent.document).height($(".cke_chrome").first().parent().height());
});
});
</script>
<style>
body { margin: 0; }
</style>
<form>
<input type="hidden" name="agreement_id" id="agreement_id" value="{$agreement_id}" />
<input type="hidden" name="agreement_content" id="agreement_content" value="{escape($agreement_content)}" />
{$editor}
</form>

View file

@ -0,0 +1,9 @@
.agreement_iframe {
display: inline-block;
width: 100%;
box-sizing: border-box;
margin-bottom: -4px;
padding: 0;
border: 0;
height: 440px;
}

View file

@ -1,3 +1,4 @@
<load target="css/config.css" />
<load target="js/config.js" />
<div class="x_page-header">
<h1>{$lang->cmd_member_config} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_member_config" target="_blank">{$lang->help}</a></h1>
@ -8,6 +9,7 @@
<ul class="x_nav x_nav-tabs">
<li class="x_active"|cond="$act == 'dispMemberAdminConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminConfig')}">{$lang->member_default_config}</a></li>
<li class="x_active"|cond="$act == 'dispMemberAdminFeaturesConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminFeaturesConfig')}">{$lang->member_features_config}</a></li>
<li class="x_active"|cond="$act == 'dispMemberAdminAgreementsConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminAgreementsConfig')}">{$lang->member_agreements_config}</a></li>
<li class="x_active"|cond="$act == 'dispMemberAdminSignUpConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminSignUpConfig')}">{$lang->cmd_signup}</a></li>
<li class="x_active"|cond="$act == 'dispMemberAdminLoginConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminLoginConfig')}">{$lang->cmd_login}</a></li>
<li class="x_active"|cond="$act == 'dispMemberAdminDesignConfig'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminDesignConfig')}">{$lang->cmd_set_design_info}</a></li>

View file

@ -74,14 +74,6 @@
<p class="x_help-inline">{$lang->about_redirect_url}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="agreement">{$lang->agreement}</label>
<div class="x_controls">{$editor}</div>
<style scoped>
#smart_content,
#smart_content>.tool{clear:none !important}
</style>
</div>
<div class="x_control-group">
<p class="x_control-label">{$lang->cmd_manage_form} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_faq_member_joinform" target="_blank">{$lang->help}</a></p>
<div class="x_controls">