mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-28 21:31:37 +08:00
整理登录注册代码
This commit is contained in:
parent
c0e405a51f
commit
2450d70fdc
@ -65,7 +65,7 @@ class CourseRecommendedList extends Cache
|
|||||||
public function findCourses($limit = 5)
|
public function findCourses($limit = 5)
|
||||||
{
|
{
|
||||||
return CourseModel::query()
|
return CourseModel::query()
|
||||||
->where('published = 1 AND deleted = 0')
|
->where('published = 1 AND deleted = 0 AND market_price > 0')
|
||||||
->orderBy('RAND()')
|
->orderBy('RAND()')
|
||||||
->limit($limit)
|
->limit($limit)
|
||||||
->execute();
|
->execute();
|
||||||
|
@ -395,7 +395,7 @@ class Course extends Service
|
|||||||
|
|
||||||
$cache = new CourseTeacherListCache();
|
$cache = new CourseTeacherListCache();
|
||||||
|
|
||||||
$cache->rebuild();
|
$cache->rebuild($course->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function saveCategories(CourseModel $course, $categoryIds)
|
protected function saveCategories(CourseModel $course, $categoryIds)
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
||||||
<span id="verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
<span id="verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide kg-verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -62,7 +62,7 @@
|
|||||||
$('input[name=rand]').val(res.randstr);
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#captcha-btn').remove();
|
$('#captcha-btn').remove();
|
||||||
$('#submit-btn').removeAttr('disabled');
|
$('#submit-btn').removeAttr('disabled');
|
||||||
$('#verify-tips').removeClass('layui-hide');
|
$('#verify-btn').removeClass('layui-hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -37,8 +37,8 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
<span id="front-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" app-id="{{ captcha.app_id }}">前台验证</span>
|
<span id="front-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">前台验证</span>
|
||||||
<span id="front-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</span>
|
<span id="front-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -46,7 +46,7 @@
|
|||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
<span id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</span>
|
<span id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</span>
|
||||||
<span id="back-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</span>
|
<span id="back-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</span>
|
||||||
<input type="hidden" name="ticket">
|
<input type="hidden" name="ticket">
|
||||||
<input type="hidden" name="rand">
|
<input type="hidden" name="rand">
|
||||||
</div>
|
</div>
|
||||||
@ -65,13 +65,13 @@
|
|||||||
var layer = layui.layer;
|
var layer = layui.layer;
|
||||||
|
|
||||||
var captcha = new TencentCaptcha(
|
var captcha = new TencentCaptcha(
|
||||||
$('#front-verify-btn')[0],
|
$('#front-captcha-btn')[0],
|
||||||
$('#front-verify-btn').attr('app-id'),
|
$('#front-captcha-btn').attr('data-app-id'),
|
||||||
function (res) {
|
function (res) {
|
||||||
if (res.ret === 0) {
|
if (res.ret === 0) {
|
||||||
$('input[name=ticket]').val(res.ticket);
|
$('input[name=ticket]').val(res.ticket);
|
||||||
$('input[name=rand]').val(res.randstr);
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#front-verify-btn').remove();
|
$('#front-captcha-btn').remove();
|
||||||
$('#back-verify-btn').removeAttr('disabled');
|
$('#back-verify-btn').removeAttr('disabled');
|
||||||
$('#front-verify-tips').removeClass('layui-hide');
|
$('#front-verify-tips').removeClass('layui-hide');
|
||||||
}
|
}
|
||||||
|
@ -88,22 +88,22 @@ class AccountController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Get("/password/reset", name="web.account.reset_pwd")
|
* @Get("/password/forget", name="web.account.forget_pwd")
|
||||||
*/
|
*/
|
||||||
public function resetPasswordAction()
|
public function forgetPasswordAction()
|
||||||
{
|
{
|
||||||
$service = new AccountService();
|
$service = new AccountService();
|
||||||
|
|
||||||
$captcha = $service->getSectionSettings('captcha');
|
$captcha = $service->getSectionSettings('captcha');
|
||||||
|
|
||||||
$this->view->pick('account/reset_password');
|
$this->view->pick('account/forget_password');
|
||||||
$this->view->setVar('captcha', $captcha);
|
$this->view->setVar('captcha', $captcha);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/password/reset", name="web.account.do_reset_pwd")
|
* @Post("/password/reset", name="web.account.reset_pwd")
|
||||||
*/
|
*/
|
||||||
public function doResetPasswordAction()
|
public function resetPasswordAction()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
51
app/Http/Web/Views/account/forget_password.volt
Normal file
51
app/Http/Web/Views/account/forget_password.volt
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{% extends 'templates/base.volt' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="layui-breadcrumb breadcrumb">
|
||||||
|
<a href="/">首页</a>
|
||||||
|
<a><cite>重置密码</cite></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="register-container">
|
||||||
|
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.reset_pwd'}) }}">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
||||||
|
<span id="cv-verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
|
||||||
|
{{ js_include('web/js/captcha.verify.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="layui-breadcrumb breadcrumb">
|
||||||
|
<a href="/">首页</a>
|
||||||
|
<a><cite>登录</cite></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="layui-tab layui-tab-brief login-tab">
|
<div class="layui-tab layui-tab-brief login-tab">
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
<li class="layui-this">密码登录</li>
|
<li class="layui-this">密码登录</li>
|
||||||
@ -18,3 +23,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
|
||||||
|
{{ js_include('web/js/captcha.login.js') }}
|
||||||
|
{{ js_include('web/js/captcha.verify.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,8 +1,8 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
|
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="邮箱" lay-verify="required">
|
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@ -11,22 +11,16 @@
|
|||||||
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
||||||
<span id="verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
<span id="verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid" lay-submit="true" lay-filter="go">立即登录</button>
|
<button id="submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
|
||||||
<input type="hidden" name="return_url" value="{{ return_url }}">
|
<input type="hidden" name="return_url" value="{{ return_url }}">
|
||||||
<input type="hidden" name="ticket">
|
<input type="hidden" name="ticket">
|
||||||
<input type="hidden" name="rand">
|
<input type="hidden" name="rand">
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
|
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@ -14,16 +14,14 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<span id="phone-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
||||||
<span id="phone-verify-tips" class="kg-btn-verify layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
<span id="cv-verify-btn" class="verify-btn layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid" lay-submit="true" lay-filter="go">立即登录</button>
|
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
|
||||||
<input type="hidden" name="return_url" value="{{ return_url }}">
|
<input type="hidden" name="return_url" value="{{ return_url }}">
|
||||||
<input type="hidden" name="ticket">
|
|
||||||
<input type="hidden" name="rand">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="layui-breadcrumb breadcrumb">
|
||||||
|
<a href="/">首页</a>
|
||||||
|
<a><cite>注册</cite></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="register-container">
|
<div class="register-container">
|
||||||
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
|
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@ -30,52 +35,18 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid" lay-submit="true" lay-filter="go">立即注册</button>
|
<button id="submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button>
|
||||||
<input type="hidden" name="return_url" value="{{ return_url }}">
|
<input type="hidden" name="return_url" value="{{ return_url }}">
|
||||||
<input type="hidden" name="ticket">
|
|
||||||
<input type="hidden" name="rand">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
|
||||||
|
{% endblock %}
|
||||||
{% block inline_js %}
|
|
||||||
|
{% block include_js %}
|
||||||
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
|
||||||
|
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
|
||||||
<script>
|
{{ js_include('web/js/captcha.js') }}
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var captcha = new TencentCaptcha(
|
|
||||||
$('#captcha-btn')[0],
|
|
||||||
$('#captcha-btn').attr('data-app-id'),
|
|
||||||
function (res) {
|
|
||||||
if (res.ret === 0) {
|
|
||||||
$('input[name=ticket]').val(res.ticket);
|
|
||||||
$('input[name=rand]').val(res.randstr);
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: '/verify/code',
|
|
||||||
data: {
|
|
||||||
account: $('input[name=account]').val(),
|
|
||||||
ticket: $('input[name=ticket]').val(),
|
|
||||||
rand: $('input[name=rand]').val()
|
|
||||||
},
|
|
||||||
success: function (res) {
|
|
||||||
var icon = res.code === 0 ? 1 : 2;
|
|
||||||
if (res.msg) {
|
|
||||||
layer.msg(res.msg, {icon: icon});
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
});
|
|
||||||
$('#captcha-btn').remove();
|
|
||||||
$('#submit-btn').removeAttr('disabled');
|
|
||||||
$('#verify-tips').removeClass('layui-hide');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -1,80 +0,0 @@
|
|||||||
{% extends 'templates/base.volt' %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<div class="register-container">
|
|
||||||
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.do_reset_pwd'}) }}">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
|
|
||||||
<span id="verify-tips" class="btn-verify layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid" lay-submit="true" lay-filter="go">立即重置</button>
|
|
||||||
<input type="hidden" name="ticket">
|
|
||||||
<input type="hidden" name="rand">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block inline_js %}
|
|
||||||
|
|
||||||
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var captcha = new TencentCaptcha(
|
|
||||||
$('#captcha-btn')[0],
|
|
||||||
$('#captcha-btn').attr('data-app-id'),
|
|
||||||
function (res) {
|
|
||||||
if (res.ret === 0) {
|
|
||||||
$('input[name=ticket]').val(res.ticket);
|
|
||||||
$('input[name=rand]').val(res.randstr);
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: '/verify/code',
|
|
||||||
data: {
|
|
||||||
account: $('input[name=account]').val(),
|
|
||||||
ticket: $('input[name=ticket]').val(),
|
|
||||||
rand: $('input[name=rand]').val()
|
|
||||||
},
|
|
||||||
success: function (res) {
|
|
||||||
var icon = res.code === 0 ? 1 : 2;
|
|
||||||
if (res.msg) {
|
|
||||||
layer.msg(res.msg, {icon: icon});
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
});
|
|
||||||
$('#captcha-btn').remove();
|
|
||||||
$('#submit-btn').removeAttr('disabled');
|
|
||||||
$('#verify-tips').removeClass('layui-hide');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
@ -1,10 +1,14 @@
|
|||||||
{%- macro lesson_info(lesson) %}
|
{%- macro lesson_info(lesson) %}
|
||||||
|
|
||||||
|
{% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %}
|
||||||
|
{% set free_badge = lesson.free ? '<span class="layui-badge">免费</span>' : '' %}
|
||||||
|
|
||||||
{% if lesson.attrs.model == 'vod' %}
|
{% if lesson.attrs.model == 'vod' %}
|
||||||
<li>{{ lesson.title }}</li>
|
<a href="{{ url }}"><i class="layui-icon layui-icon-play"></i> {{ lesson.title }} {{ free_badge }}</a>
|
||||||
{% elseif lesson.attrs.model == 'live' %}
|
{% elseif lesson.attrs.model == 'live' %}
|
||||||
<li>{{ lesson.title }}</li>
|
<a href="{{ url }}"><i class="layui-icon layui-icon-video"></i> {{ lesson.title }} {{ free_badge }}</a>
|
||||||
{% elseif lesson.attrs.model == 'read' %}
|
{% elseif lesson.attrs.model == 'read' %}
|
||||||
<li>{{ lesson.title }}</li>
|
<a href="{{ url }}"><i class="layui-icon layui-icon-note"></i> {{ lesson.title }} {{ free_badge }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
@ -15,7 +19,7 @@
|
|||||||
<div class="layui-colla-content layui-show">
|
<div class="layui-colla-content layui-show">
|
||||||
<ul class="lesson-list">
|
<ul class="lesson-list">
|
||||||
{% for lesson in chapter.children %}
|
{% for lesson in chapter.children %}
|
||||||
{{ lesson_info(lesson) }}
|
<li>{{ lesson_info(lesson) }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,14 +12,13 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="course-meta">
|
<div class="layout-main clearfix">
|
||||||
<div class="left"></div>
|
<div class="layout-content">
|
||||||
<div class="right"></div>
|
<div class="course-meta">
|
||||||
</div>
|
<div class="left"></div>
|
||||||
|
<div class="right"></div>
|
||||||
<div class="course-body layui-clear">
|
</div>
|
||||||
<div class="content">
|
<div class="layui-tab layui-tab-brief course-info-tab">
|
||||||
<div class="layui-tab layui-tab-brief">
|
|
||||||
<ul class="layui-tab-title">
|
<ul class="layui-tab-title">
|
||||||
<li class="layui-this">详情</li>
|
<li class="layui-this">详情</li>
|
||||||
<li>目录</li>
|
<li>目录</li>
|
||||||
@ -36,21 +35,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sidebar">
|
<div class="layout-sidebar">
|
||||||
{% if teachers %}
|
{% if teachers %}
|
||||||
{{ partial('course/widget_teacher', {'teachers':teachers}) }}
|
{{ partial('course/sidebar_teachers') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if topics %}
|
{% if topics %}
|
||||||
{{ partial('course/widget_topic', {'topics':topics}) }}
|
{{ partial('course/sidebar_topics') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if recommended_courses %}
|
{% if recommended_courses %}
|
||||||
{{ partial('course/widget_recommended', {'courses':recommended_courses}) }}
|
{{ partial('course/sidebar_recommended') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if related_courses %}
|
{% if related_courses %}
|
||||||
{{ partial('course/widget_related', {'courses':related_courses}) }}
|
{{ partial('course/sidebar_related') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
23
app/Http/Web/Views/course/sidebar_recommended.volt
Normal file
23
app/Http/Web/Views/course/sidebar_recommended.volt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<div class="course-widget layui-card">
|
||||||
|
<div class="layui-card-header">推荐课程</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{% for course in recommended_courses %}
|
||||||
|
{% set url = url({'for':'web.course.show','id':course.id}) %}
|
||||||
|
<div class="sidebar-course-card clearfix">
|
||||||
|
<div class="cover">
|
||||||
|
<img src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<div class="title">
|
||||||
|
<a href="{{ url }}" title="{{ course.title }}">{{ substr(course.title,0,15) }}</a>
|
||||||
|
</div>
|
||||||
|
<div class="meta">
|
||||||
|
<span class="price">¥{{ course.market_price }}</span>
|
||||||
|
<span class="level">中级</span>
|
||||||
|
<span class="user">{{ course.user_count }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
23
app/Http/Web/Views/course/sidebar_related.volt
Normal file
23
app/Http/Web/Views/course/sidebar_related.volt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">相关课程</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{% for course in related_courses %}
|
||||||
|
{% set url = url({'for':'web.course.show','id':course.id}) %}
|
||||||
|
<div class="sidebar-course-card clearfix">
|
||||||
|
<div class="cover">
|
||||||
|
<img src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<div class="title">
|
||||||
|
<a href="{{ url }}" title="{{ course.title }}">{{ substr(course.title,0,15) }}</a>
|
||||||
|
</div>
|
||||||
|
<div class="meta">
|
||||||
|
<span class="price">¥{{ course.market_price }}</span>
|
||||||
|
<span class="level">中级</span>
|
||||||
|
<span class="user">{{ course.user_count }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
18
app/Http/Web/Views/course/sidebar_teachers.volt
Normal file
18
app/Http/Web/Views/course/sidebar_teachers.volt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">授课教师</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{% for teacher in teachers %}
|
||||||
|
<div class="sidebar-teacher-card clearfix">
|
||||||
|
<div class="avatar">
|
||||||
|
<img src="{{ teacher.avatar }}" alt="{{ teacher.about }}">
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<div class="name">
|
||||||
|
<a href="{{ url({'for':'web.user.show','id':teacher.id}) }}">{{ teacher.name }}</a>
|
||||||
|
</div>
|
||||||
|
<div class="title">{{ teacher.title }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
8
app/Http/Web/Views/course/sidebar_topics.volt
Normal file
8
app/Http/Web/Views/course/sidebar_topics.volt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-header">热门专题</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
{% for topic in topics %}
|
||||||
|
<a class="layui-badge-rim topic-badge" href="{{ url({'for':'web.topic.show','id':topic.id}) }}">{{ topic.title }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -1,18 +0,0 @@
|
|||||||
<div class="course-widget layui-card">
|
|
||||||
<div class="layui-card-header">推荐课程</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
{% for course in courses %}
|
|
||||||
<div class="course">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="title">{{ course.title }}</div>
|
|
||||||
<div class="meta">
|
|
||||||
<span class="price"></span>
|
|
||||||
<span class="level"></span>
|
|
||||||
<span class="user"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,18 +0,0 @@
|
|||||||
<div class="course-widget layui-card">
|
|
||||||
<div class="layui-card-header">相关课程</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
{% for course in courses %}
|
|
||||||
<div class="course">
|
|
||||||
<div class="cover"></div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="title">{{ course.title }}</div>
|
|
||||||
<div class="meta">
|
|
||||||
<span class="price"></span>
|
|
||||||
<span class="level"></span>
|
|
||||||
<span class="user"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,14 +0,0 @@
|
|||||||
<div class="teacher-widget layui-card">
|
|
||||||
<div class="layui-card-header">授课教师</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
{% for teacher in teachers %}
|
|
||||||
<div class="teacher" title="{{ teacher.about }}">
|
|
||||||
<div class="avatar"></div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="name">{{ teacher.name }}</div>
|
|
||||||
<div class="title">{{ teacher.title }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,8 +0,0 @@
|
|||||||
<div class="topic-widget layui-card">
|
|
||||||
<div class="layui-card-header">热门专题</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
{% for topic in topics %}
|
|
||||||
<a class="layui-badge" href="{{ url({'for':'web.topic.show','id':topic.id}) }}">{{ topic.title }}</a>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<form class="layui-form" action="{{ url({'for':'web.search.list'}) }}">
|
<form class="layui-form" action="{{ url({'for':'web.search.list'}) }}">
|
||||||
<input class="layui-input" type="text" name="query" value="{{ request.get('query','trim','') }}" autocomplete="off" placeholder="请输入课程关键字...">
|
<input class="layui-input" type="text" name="query" value="{{ request.get('query')|striptags }}" autocomplete="off" placeholder="请输入课程关键字...">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -9,8 +9,9 @@
|
|||||||
<div class="layui-breadcrumb breadcrumb">
|
<div class="layui-breadcrumb breadcrumb">
|
||||||
<a href="/">首页</a>
|
<a href="/">首页</a>
|
||||||
<a href="#">搜索</a>
|
<a href="#">搜索</a>
|
||||||
<a><cite>{{ request.get('query') }}</cite></a>
|
<a><cite>{{ request.get('query')|striptags }}</cite></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layout-main clearfix">
|
<div class="layout-main clearfix">
|
||||||
<div class="layout-content">
|
<div class="layout-content">
|
||||||
{% if type == 'course' %}
|
{% if type == 'course' %}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
<meta name="keywords" content="{{ site_seo.getKeywords() }}">
|
<meta name="keywords" content="{{ site_seo.getKeywords() }}">
|
||||||
<meta name="description" content="{{ site_seo.getDescription() }}">
|
<meta name="description" content="{{ site_seo.getDescription() }}">
|
||||||
|
<meta name="csrf-token" content="{{ csrfToken.getToken() }}">
|
||||||
<title>{{ site_seo.getTitle() }}</title>
|
<title>{{ site_seo.getTitle() }}</title>
|
||||||
{{ icon_link('favicon.ico') }}
|
{{ icon_link('favicon.ico') }}
|
||||||
{{ css_link('lib/layui/css/layui.css') }}
|
{{ css_link('lib/layui/css/layui.css') }}
|
||||||
|
@ -74,26 +74,6 @@ function kg_array_column($rows, $columnKey, $indexKey = null)
|
|||||||
return array_unique($result);
|
return array_unique($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 依据白名单取数据
|
|
||||||
*
|
|
||||||
* @param array $params
|
|
||||||
* @param array $whitelist
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
function kg_array_whitelist($params, $whitelist)
|
|
||||||
{
|
|
||||||
$result = [];
|
|
||||||
|
|
||||||
foreach ($params as $key => $value) {
|
|
||||||
if (in_array($key, $whitelist)) {
|
|
||||||
$result[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数组转对象
|
* 数组转对象
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
.layui-badge, .layui-badge-rim {
|
body {
|
||||||
padding-bottom: 1px;
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix {
|
||||||
|
zoom: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
.clearfix:after {
|
.clearfix:after {
|
||||||
@ -7,15 +11,7 @@
|
|||||||
clear: both;
|
clear: both;
|
||||||
content: "";
|
content: "";
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
height: 0
|
height: 0;
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clearfix {
|
|
||||||
zoom: 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fl {
|
.fl {
|
||||||
@ -35,6 +31,19 @@ body {
|
|||||||
background-color: #393D49;
|
background-color: #393D49;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
margin-top: 80px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
min-height: 550px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
padding: 30px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
background: #474443;
|
||||||
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -58,19 +67,6 @@ body {
|
|||||||
background-color: rgba(255, 255, 255, 0.05);
|
background-color: rgba(255, 255, 255, 0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
#main {
|
|
||||||
margin-top: 80px;
|
|
||||||
margin-bottom: 40px;
|
|
||||||
min-height: 550px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
padding: 30px 0;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 12px;
|
|
||||||
background: #474443;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer span, #footer a {
|
#footer span, #footer a {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
@ -98,7 +94,9 @@ body {
|
|||||||
|
|
||||||
.layout-content {
|
.layout-content {
|
||||||
float: left;
|
float: left;
|
||||||
width: 800px;
|
width: 730px;
|
||||||
|
padding: 30px;
|
||||||
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layout-sidebar {
|
.layout-sidebar {
|
||||||
@ -124,10 +122,6 @@ body {
|
|||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.index-module .content {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.index-carousel {
|
.index-carousel {
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -206,10 +200,6 @@ body {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-course-card .meta {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-course-card .meta span {
|
.search-course-card .meta span {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
@ -294,6 +284,11 @@ body {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.course-meta {
|
||||||
|
border: 1px dashed #ccc;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.course-meta .left {
|
.course-meta .left {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
@ -302,25 +297,111 @@ body {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-body {
|
.course-info-tab .layui-tab-content {
|
||||||
|
padding-top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-body .content {
|
ul.lesson-list {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.lesson-list li {
|
||||||
|
padding-left: 10px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lesson-list li a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lesson-list li:hover {
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-teacher-card {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-teacher-card .avatar {
|
||||||
float: left;
|
float: left;
|
||||||
width: 780px;
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.course-body .sidebar {
|
.sidebar-teacher-card .avatar img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-teacher-card .info {
|
||||||
float: left;
|
float: left;
|
||||||
width: 320px;
|
padding: 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-verify {
|
.sidebar-teacher-card .info .name {
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-teacher-card .info .title {
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.topic-badge {
|
||||||
|
padding: 5px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-bottom: 1px dashed #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .cover {
|
||||||
|
float: left;
|
||||||
|
width: 90px;
|
||||||
|
height: 50px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .cover img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .info {
|
||||||
|
float: left;
|
||||||
|
width: 190px;
|
||||||
|
color: #999;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .title {
|
||||||
|
font-size: 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .meta {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-course-card .meta span {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.verify-tips-btn {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
|
|
||||||
.register-container {
|
.register-container {
|
||||||
padding: 50px 30px;
|
padding: 40px 30px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,7 +410,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.login-tab {
|
.login-tab {
|
||||||
padding: 30px;
|
padding: 20px 30px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
public/static/web/js/captcha.login.js
Normal file
15
public/static/web/js/captcha.login.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
var captcha = new TencentCaptcha(
|
||||||
|
$('#captcha-btn')[0],
|
||||||
|
$('#captcha-btn').attr('data-app-id'),
|
||||||
|
function (res) {
|
||||||
|
if (res.ret === 0) {
|
||||||
|
$('input[name=ticket]').val(res.ticket);
|
||||||
|
$('input[name=rand]').val(res.randstr);
|
||||||
|
$('#captcha-btn').remove();
|
||||||
|
$('#submit-btn').removeAttr('disabled');
|
||||||
|
$('#verify-btn').removeClass('layui-hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
28
public/static/web/js/captcha.verify.js
Normal file
28
public/static/web/js/captcha.verify.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
var captcha = new TencentCaptcha(
|
||||||
|
$('#cv-captcha-btn')[0],
|
||||||
|
$('#cv-captcha-btn').attr('data-app-id'),
|
||||||
|
function (res) {
|
||||||
|
if (res.ret === 0) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '/verify/code',
|
||||||
|
data: {
|
||||||
|
account: $('#cv-account').val(),
|
||||||
|
ticket: res.ticket,
|
||||||
|
rand: res.randstr
|
||||||
|
},
|
||||||
|
success: function (res) {
|
||||||
|
var icon = res.code === 0 ? 1 : 2;
|
||||||
|
if (res.msg) {
|
||||||
|
layer.msg(res.msg, {icon: icon});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#cv-captcha-btn').remove();
|
||||||
|
$('#cv-submit-btn').removeAttr('disabled');
|
||||||
|
$('#cv-verify-btn').removeClass('layui-hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
Loading…
x
Reference in New Issue
Block a user