mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-24 20:06:09 +08:00
整理分享功能
This commit is contained in:
parent
d5559ec49c
commit
949a94ace9
@ -35,22 +35,22 @@ class ChapterController extends Controller
|
||||
|
||||
$service = new CourseChapterListService();
|
||||
|
||||
$chapters = $service->handle($chapter['course']['id']);
|
||||
$contents = $service->handle($chapter['course']['id']);
|
||||
|
||||
$this->siteSeo->prependTitle([$chapter['title'], $chapter['course']['title']]);
|
||||
$this->siteSeo->setKeywords($chapter['title']);
|
||||
$this->siteSeo->setDescription($chapter['summary']);
|
||||
|
||||
if ($chapter['model'] == 'vod') {
|
||||
$this->view->pick('chapter/show_vod');
|
||||
$this->view->pick('chapter/vod');
|
||||
} elseif ($chapter['model'] == 'live') {
|
||||
$this->view->pick('chapter/show_live');
|
||||
$this->view->pick('chapter/live');
|
||||
} elseif ($chapter['model'] == 'read') {
|
||||
$this->view->pick('chapter/show_read');
|
||||
$this->view->pick('chapter/read');
|
||||
}
|
||||
|
||||
$this->view->setVar('chapter', $chapter);
|
||||
$this->view->setVar('chapters', $chapters);
|
||||
$this->view->setVar('contents', $contents);
|
||||
}
|
||||
|
||||
/**
|
||||
|
23
app/Http/Web/Views/chapter/contents.volt
Normal file
23
app/Http/Web/Views/chapter/contents.volt
Normal file
@ -0,0 +1,23 @@
|
||||
<div class="layui-card sidebar-card sidebar-chapter">
|
||||
<div class="layui-card-header">课程目录</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="sidebar-chapter-list">
|
||||
{% for item in contents %}
|
||||
<div class="chapter-title layui-elip">{{ item.title }}</div>
|
||||
<ul class="sidebar-lesson-list">
|
||||
{% for lesson in item.children %}
|
||||
{% set url = url({'for':'web.chapter.show','id':lesson.id}) %}
|
||||
{% set active = (chapter.id == lesson.id) ? 'active' : 'normal' %}
|
||||
<li class="lesson-title layui-elip">
|
||||
{% if lesson.me.owned == 1 %}
|
||||
<a class="{{ active }}" href="{{ url }}" title="{{ lesson.title|e }}">{{ lesson.title }}</a>
|
||||
{% else %}
|
||||
<span class="deny" title="{{ lesson.title|e }}">{{ lesson.title }}</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
77
app/Http/Web/Views/chapter/live.volt
Normal file
77
app/Http/Web/Views/chapter/live.volt
Normal file
@ -0,0 +1,77 @@
|
||||
{% extends 'templates/full.volt' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set chapter_full_url = full_url({'for':'web.chapter.show','id':chapter.id}) %}
|
||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||
{% set live_chats_url = url({'for':'web.live.chats','id':chapter.id}) %}
|
||||
{% set live_stats_url = url({'for':'web.live.stats','id':chapter.id}) %}
|
||||
{% set send_msg_url = url({'for':'web.live.send_msg','id':chapter.id}) %}
|
||||
{% set bind_user_url = url({'for':'web.live.bind_user','id':chapter.id}) %}
|
||||
{% set like_url = url({'for':'web.chapter.like','id':chapter.id}) %}
|
||||
{% set qrcode_url = url({'for':'web.qrcode_img'},{'text':chapter_full_url}) %}
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span class="layui-breadcrumb">
|
||||
<a><cite>{{ chapter.course.title }}</cite></a>
|
||||
<a><cite>{{ chapter.title }}</cite></a>
|
||||
</span>
|
||||
<span class="share">
|
||||
<a href="javascript:" title="点赞" data-url="{{ like_url }}"><i class="layui-icon layui-icon-praise icon-praise"></i><em class="like-count">{{ chapter.like_count }}</em></a>
|
||||
<a href="javascript:" title="在线人数"><i class="layui-icon layui-icon-user"></i><em>15</em></a>
|
||||
<a href="javascript:" title="分享到微信" data-url=""><i class="layui-icon layui-icon-login-wechat icon-wechat"></i></a>
|
||||
<a href="javascript:" title="分享到QQ空间"><i class="layui-icon layui-icon-login-qq icon-qq"></i></a>
|
||||
<a href="javascript:" title="分享到微博"><i class="layui-icon layui-icon-login-weibo icon-weibo"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layout-main">
|
||||
<div class="layout-content">
|
||||
<div class="player-wrap wrap">
|
||||
<div id="player"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
<div class="layui-card chat-wrap">
|
||||
<div class="layui-card-header">直播讨论</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="chat-msg-list" id="chat-msg-list" data-url="{{ live_chats_url }}"></div>
|
||||
<form class="layui-form chat-msg-form" method="post" action="{{ send_msg_url }}">
|
||||
{% if auth_user.id > 0 %}
|
||||
<input class="layui-input" type="text" name="content" maxlength="50" placeholder="快来一起互动吧" lay-verType="tips" lay-verify="required">
|
||||
{% else %}
|
||||
<input class="layui-input" type="text" placeholder="登录后才可以发言哦" readonly="readonly">
|
||||
{% endif %}
|
||||
<button class="layui-hide" type="submit" lay-submit="true" lay-filter="chat">发送</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
||||
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
||||
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
||||
<input type="hidden" name="chapter.play_urls" value='{{ chapter.play_urls|json_encode }}'>
|
||||
<input type="hidden" name="bind_user_url" value='{{ bind_user_url }}'>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="share.title" value="{{ chapter.course.title }}">
|
||||
<input type="hidden" name="share.pic" value="{{ chapter.course.cover }}">
|
||||
<input type="hidden" name="share.url" value="{{ chapter_full_url }}">
|
||||
<input type="hidden" name="share.qrcode" value="{{ qrcode_url }}">
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block include_js %}
|
||||
|
||||
<script src="//imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.2.js"></script>
|
||||
|
||||
{{ js_include('web/js/chapter.live.player.js') }}
|
||||
{{ js_include('web/js/chapter.live.im.js') }}
|
||||
{{ js_include('web/js/course.share.js') }}
|
||||
|
||||
{% endblock %}
|
@ -1,7 +1,7 @@
|
||||
{% for chat in chats %}
|
||||
<div class="chat">
|
||||
{% if chat.user.vip == 1 %}
|
||||
<span class="vip-icon layui-icon layui-icon-diamond"></span>
|
||||
<span class="layui-icon layui-icon-diamond icon-vip"></span>
|
||||
{% endif %}
|
||||
<span class="user">{{ chat.user.name }}</span>
|
||||
<span class="content">{{ chat.content }}</span>
|
||||
|
@ -1,6 +0,0 @@
|
||||
<div class="live-stats">
|
||||
<div class="stats">
|
||||
登录:<span class="count">{{ stats.user_count }} 人</span>
|
||||
游客:<span class="count">{{ stats.guest_count }} 人</span>
|
||||
</div>
|
||||
</div>
|
@ -1,25 +0,0 @@
|
||||
<div class="sidebar-chapter wrap">
|
||||
<fieldset class="layui-elem-field layui-field-title">
|
||||
<legend>课程目录</legend>
|
||||
<div class="layui-field-box">
|
||||
<div class="sidebar-chapter-list">
|
||||
{% for item in chapters %}
|
||||
<div class="chapter-title layui-elip">{{ item.title }}</div>
|
||||
<ul class="sidebar-lesson-list">
|
||||
{% for lesson in item.children %}
|
||||
{% set url = url({'for':'web.chapter.show','id':lesson.id}) %}
|
||||
{% set active = (chapter.id == lesson.id) ? 'active' : 'normal' %}
|
||||
<li class="lesson-title layui-elip">
|
||||
{% if lesson.me.owned == 1 %}
|
||||
<a class="{{ active }}" href="{{ url }}" title="{{ lesson.title|e }}">{{ lesson.title }}</a>
|
||||
{% else %}
|
||||
<span class="deny" title="{{ lesson.title|e }}">{{ lesson.title }}</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
53
app/Http/Web/Views/chapter/read.volt
Normal file
53
app/Http/Web/Views/chapter/read.volt
Normal file
@ -0,0 +1,53 @@
|
||||
{% extends 'templates/full.volt' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set chapter_full_url = full_url({'for':'web.chapter.show','id':chapter.id}) %}
|
||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||
{% set like_url = url({'for':'web.chapter.like','id':chapter.id}) %}
|
||||
{% set qrcode_url = url({'for':'web.qrcode_img'},{'text':chapter_full_url}) %}
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span class="layui-breadcrumb">
|
||||
<a><cite>{{ chapter.course.title }}</cite></a>
|
||||
<a><cite>{{ chapter.title }}</cite></a>
|
||||
</span>
|
||||
<span class="share">
|
||||
<a href="javascript:" title="点赞" data-url="{{ like_url }}"><i class="layui-icon layui-icon-praise icon-praise"></i><em class="like-count">{{ chapter.like_count }}</em></a>
|
||||
<a href="javascript:" title="学习人次"><i class="layui-icon layui-icon-user"></i><em>{{ chapter.user_count }}</em></a>
|
||||
<a href="javascript:" title="分享到微信" data-url=""><i class="layui-icon layui-icon-login-wechat icon-wechat"></i></a>
|
||||
<a href="javascript:" title="分享到QQ空间"><i class="layui-icon layui-icon-login-qq icon-qq"></i></a>
|
||||
<a href="javascript:" title="分享到微博"><i class="layui-icon layui-icon-login-weibo icon-weibo"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layout-main clearfix">
|
||||
<div class="layout-content">
|
||||
<div class="read-info wrap">{{ chapter.content }}</div>
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
{{ partial('chapter/contents') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
||||
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
||||
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="share.title" value="{{ chapter.course.title }}">
|
||||
<input type="hidden" name="share.pic" value="{{ chapter.course.cover }}">
|
||||
<input type="hidden" name="share.url" value="{{ chapter_full_url }}">
|
||||
<input type="hidden" name="share.qrcode" value="{{ qrcode_url }}">
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block include_js %}
|
||||
|
||||
{{ js_include('web/js/chapter.read.js') }}
|
||||
{{ js_include('web/js/course.share.js') }}
|
||||
|
||||
{% endblock %}
|
@ -1,12 +0,0 @@
|
||||
{% extends 'templates/full.volt' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="layout-main clearfix">
|
||||
<div class="layout-content"></div>
|
||||
<div class="layout-sidebar">
|
||||
{{ partial('chapter/menu') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -1,69 +0,0 @@
|
||||
{% extends 'templates/full.volt' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||
{% set live_chats_url = url({'for':'web.live.chats','id':chapter.id}) %}
|
||||
{% set live_stats_url = url({'for':'web.live.stats','id':chapter.id}) %}
|
||||
{% set send_msg_url = url({'for':'web.live.send_msg','id':chapter.id}) %}
|
||||
{% set bind_user_url = url({'for':'web.live.bind_user','id':chapter.id}) %}
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span class="layui-breadcrumb">
|
||||
<a><cite>{{ chapter.course.title }}</cite></a>
|
||||
<a><cite>{{ chapter.title }}</cite></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layout-main">
|
||||
<div class="layout-content">
|
||||
<div class="player-wrap wrap">
|
||||
<div id=player"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
<div class="chat-wrap">
|
||||
<div class="layui-tab layui-tab-brief user-tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">讨论</li>
|
||||
<li>统计</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<div class="layui-tab-item layui-show">
|
||||
<div class="chat-msg-list" id="chat-msg-list" data-url="{{ live_chats_url }}"></div>
|
||||
{% if auth_user.id > 0 %}
|
||||
<div class="chat-msg-form">
|
||||
<form class="layui-form" method="post" action="{{ send_msg_url }}">
|
||||
<input class="layui-input" type="text" name="content" maxlength="50" placeholder="快来一起互动吧" lay-verType="tips" lay-verify="required">
|
||||
<button class="layui-hide" type="submit" lay-submit="true" lay-filter="chat">发送</button>
|
||||
</form>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="chat-login-tips">登录后才可以发言哦</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="layui-tab-item" id="tab-stats" data-url="{{ live_stats_url }}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
||||
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
||||
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
||||
<input type="hidden" name="chapter.play_urls" value='{{ chapter.play_urls|json_encode }}'>
|
||||
<input type="hidden" name="bind_user_url" value='{{ bind_user_url }}'>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block include_js %}
|
||||
|
||||
<script src="//imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.2.js"></script>
|
||||
|
||||
{{ js_include('web/js/live.player.js') }}
|
||||
{{ js_include('web/js/live.im.js') }}
|
||||
|
||||
{% endblock %}
|
@ -1,35 +0,0 @@
|
||||
{% extends 'templates/full.volt' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span class="layui-breadcrumb">
|
||||
<a><cite>{{ chapter.course.title }}</cite></a>
|
||||
<a><cite>{{ chapter.title }}</cite></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layout-main clearfix">
|
||||
<div class="layout-content">
|
||||
<div class="read-info wrap">{{ chapter.content }}</div>
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
{{ partial('chapter/menu') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
||||
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
||||
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block include_js %}
|
||||
|
||||
{{ js_include('web/js/read.js') }}
|
||||
|
||||
{% endblock %}
|
@ -2,17 +2,24 @@
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% set chapter_url = url({'for':'web.chapter.show','id':chapter.id}) %}
|
||||
{% set danmu_url = url({'for':'web.chapter.danmu','id':chapter.id}) %}
|
||||
{% set chapter_full_url = full_url({'for':'web.chapter.show','id':chapter.id}) %}
|
||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||
{% set danmu_url = url({'for':'web.chapter.danmu','id':chapter.id}) %}
|
||||
{% set like_url = url({'for':'web.chapter.like','id':chapter.id}) %}
|
||||
{% set qrcode_url = url({'for':'web.qrcode_img'},{'text':'http://baidu.com','size':5}) %}
|
||||
{% set qrcode_url = url({'for':'web.qrcode_img'},{'text':chapter_full_url}) %}
|
||||
|
||||
<div class="breadcrumb">
|
||||
<span class="layui-breadcrumb">
|
||||
<a><cite>{{ chapter.course.title }}</cite></a>
|
||||
<a><cite>{{ chapter.title }}</cite></a>
|
||||
</span>
|
||||
<span class="share">
|
||||
<a href="javascript:" title="点赞" data-url="{{ like_url }}"><i class="layui-icon layui-icon-praise icon-praise"></i><em class="like-count">{{ chapter.like_count }}</em></a>
|
||||
<a href="javascript:" title="学习人次"><i class="layui-icon layui-icon-user"></i><em>{{ chapter.user_count }}</em></a>
|
||||
<a href="javascript:" title="分享到微信" data-url=""><i class="layui-icon layui-icon-login-wechat icon-wechat"></i></a>
|
||||
<a href="javascript:" title="分享到QQ空间"><i class="layui-icon layui-icon-login-qq icon-qq"></i></a>
|
||||
<a href="javascript:" title="分享到微博"><i class="layui-icon layui-icon-login-weibo icon-weibo"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="layout-main clearfix">
|
||||
@ -20,19 +27,10 @@
|
||||
<div class="player-wrap wrap">
|
||||
<div id="player"></div>
|
||||
<div id="danmu"></div>
|
||||
</div>
|
||||
<div class="chapter-action wrap clearfix">
|
||||
<div class="share">
|
||||
<a href="javascript:" title="点赞" data-url="{{ like_url }}"><i class="layui-icon layui-icon-praise icon-praise"></i><em class="like-count">{{ chapter.like_count }}</em></a>
|
||||
<a href="javascript:" title="学习人次"><i class="layui-icon layui-icon-user"></i><em>{{ chapter.user_count }}</em></a>
|
||||
<a href="javascript:" title="分享到微信" data-url=""><i class="layui-icon layui-icon-login-wechat icon-wechat"></i></a>
|
||||
<a href="javascript:" title="分享到QQ空间"><i class="layui-icon layui-icon-login-qq icon-qq"></i></a>
|
||||
<a href="javascript:" title="分享到微博"><i class="layui-icon layui-icon-login-weibo icon-weibo"></i></a>
|
||||
</div>
|
||||
<form class="layui-form danmu-form" lay-filter="danmu.form" action="{{ url({'for':'web.danmu.create'}) }}">
|
||||
<a href="javascript:" title="弹幕设置"><i class="layui-icon layui-icon-set icon-danmu-set"></i></a>
|
||||
{% if auth_user.id > 0 %}
|
||||
<input class="layui-input" type="text" name="danmu.text" maxlength="50" placeholder="快来发个弹幕吧" lay-verType="tips" lay-verify="required">
|
||||
<a href="javascript:" title="弹幕设置"><i class="layui-icon layui-icon-set icon-danmu-set"></i></a>
|
||||
<input class="layui-input" type="text" name="danmu.text" autocomplete="off" maxlength="50" placeholder="快来发个弹幕吧" lay-verType="tips" lay-verify="required">
|
||||
{% else %}
|
||||
<input class="layui-input" type="text" name="danmu.text" placeholder="登录后才可以发送弹幕哦" readonly="readonly">
|
||||
{% endif %}
|
||||
@ -41,7 +39,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
{{ partial('chapter/menu') }}
|
||||
{{ partial('chapter/contents') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -103,7 +101,7 @@
|
||||
<div class="layui-hide">
|
||||
<input type="hidden" name="share.title" value="{{ chapter.course.title }}">
|
||||
<input type="hidden" name="share.pic" value="{{ chapter.course.cover }}">
|
||||
<input type="hidden" name="share.url" value="{{ chapter_url }}">
|
||||
<input type="hidden" name="share.url" value="{{ chapter_full_url }}">
|
||||
<input type="hidden" name="share.qrcode" value="{{ qrcode_url }}">
|
||||
</div>
|
||||
|
||||
@ -115,8 +113,7 @@
|
||||
|
||||
{{ js_include('lib/jquery.min.js') }}
|
||||
{{ js_include('lib/jquery.danmu.min.js') }}
|
||||
{{ js_include('web/js/share.js') }}
|
||||
{{ js_include('web/js/vod.player.js') }}
|
||||
{{ js_include('web/js/chapter.action.js') }}
|
||||
{{ js_include('web/js/course.share.js') }}
|
||||
{{ js_include('web/js/chapter.vod.player.js') }}
|
||||
|
||||
{% endblock %}
|
@ -92,7 +92,7 @@
|
||||
|
||||
{% block include_js %}
|
||||
|
||||
{{ js_include('web/js/share.js') }}
|
||||
{{ js_include('web/js/course.show.js') }}
|
||||
{{ js_include('web/js/course.share.js') }}
|
||||
|
||||
{% endblock %}
|
@ -14,10 +14,10 @@
|
||||
<div class="content">{{ item.answer }}</div>
|
||||
<div class="footer">
|
||||
<span class="time">{{ date('Y-m-d H:i',item.create_time) }}</span>
|
||||
<span class="like">
|
||||
<i class="layui-icon layui-icon-praise icon-praise" data-url="{{ like_url }}"></i>
|
||||
<a href="javascript:" class="like" title="点赞" data-url="{{ like_url }}">
|
||||
<i class="layui-icon layui-icon-praise icon-praise"></i>
|
||||
<em class="like-count">{{ item.like_count }}</em>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,10 +22,10 @@
|
||||
<div class="content">{{ item.content }}</div>
|
||||
<div class="footer">
|
||||
<span class="time">{{ date('Y-m-d H:i',item.create_time) }}</span>
|
||||
<span class="like">
|
||||
<i class="layui-icon layui-icon-praise icon-praise" title="点赞" data-url="{{ like_url }}"></i>
|
||||
<a href="javascript:" class="like" title="点赞" data-url="{{ like_url }}">
|
||||
<i class="layui-icon layui-icon-praise icon-praise"></i>
|
||||
<em class="like-count">{{ item.like_count }}</em>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
{{ partial('partials/macro_course') }}
|
||||
|
||||
{% set vip_flag = user.vip ? '<i class="layui-icon layui-icon-diamond vip-icon"></i>' : '' %}
|
||||
{% set vip_flag = user.vip ? '<i class="layui-icon layui-icon-diamond icon-vip"></i>' : '' %}
|
||||
|
||||
<div class="user-profile wrap clearfix">
|
||||
<div class="avatar">
|
||||
|
@ -15,6 +15,24 @@ layui.use(['jquery', 'form', 'element', 'layer', 'dropdown'], function () {
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (xhr) {
|
||||
xhr.setRequestHeader('X-Csrf-Token', $token.attr('content'));
|
||||
},
|
||||
statusCode: {
|
||||
400: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2, anim: 6});
|
||||
},
|
||||
401: function () {
|
||||
layer.msg('操作之前请先登录', {icon: 2, anim: 6});
|
||||
},
|
||||
403: function () {
|
||||
layer.msg('操作受限', {icon: 2, anim: 6});
|
||||
},
|
||||
404: function () {
|
||||
layer.msg('资源不存在', {icon: 2, anim: 6});
|
||||
},
|
||||
500: function () {
|
||||
layer.msg('服务器内部错误', {icon: 2, anim: 6});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -92,10 +110,6 @@ layui.use(['jquery', 'form', 'element', 'layer', 'dropdown'], function () {
|
||||
data: {priority: priority},
|
||||
success: function (res) {
|
||||
layer.msg(res.msg, {icon: 1});
|
||||
},
|
||||
error: function (xhr) {
|
||||
var json = JSON.parse(xhr.responseText);
|
||||
layer.msg(json.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -116,10 +130,6 @@ layui.use(['jquery', 'form', 'element', 'layer', 'dropdown'], function () {
|
||||
} else {
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
var json = JSON.parse(xhr.responseText);
|
||||
layer.msg(json.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -45,6 +45,7 @@
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
@ -419,6 +420,12 @@ body {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.breadcrumb .share {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: -5px;
|
||||
}
|
||||
|
||||
.course-meta .cover {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
@ -498,7 +505,7 @@ body {
|
||||
}
|
||||
|
||||
.course-details {
|
||||
font-size: 12px;
|
||||
line-height: 1.8em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
@ -709,6 +716,10 @@ body {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.sidebar-card .layui-card-header {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sidebar-order .order {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
@ -792,19 +803,6 @@ body {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.sidebar-chapter {
|
||||
padding: 20px 15px;
|
||||
}
|
||||
|
||||
.sidebar-chapter .layui-field-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.sidebar-chapter .layui-field-title legend {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sidebar-chapter-list {
|
||||
height: 405px;
|
||||
overflow-y: auto;
|
||||
@ -822,7 +820,6 @@ body {
|
||||
|
||||
.sidebar-lesson-list .lesson-title {
|
||||
line-height: 30px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.lesson-title .active {
|
||||
@ -838,24 +835,10 @@ body {
|
||||
}
|
||||
|
||||
.read-info {
|
||||
min-height: 454px;
|
||||
min-height: 428px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.chapter-action {
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.chapter-action .share {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.chapter-action .danmu-form {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.share .layui-icon {
|
||||
margin-right: 5px;
|
||||
cursor: pointer;
|
||||
@ -878,35 +861,46 @@ body {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.danmu-form .icon-danmu-set {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.danmu-form .layui-input {
|
||||
width: 500px;
|
||||
height: 32px;
|
||||
display: inline;
|
||||
line-height: 32px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.player-wrap {
|
||||
position: relative;
|
||||
width: 760px;
|
||||
height: 428px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.chat-wrap {
|
||||
padding: 10px 20px 20px 20px;
|
||||
background-color: white;
|
||||
.danmu-form {
|
||||
position: relative;
|
||||
left: 180px;
|
||||
bottom: 38px;
|
||||
width: 420px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vip-icon {
|
||||
color: orange;
|
||||
.danmu-form .icon-danmu-set {
|
||||
margin-right: 5px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.danmu-form .layui-input {
|
||||
width: 380px;
|
||||
height: 28px;
|
||||
display: inline;
|
||||
line-height: 28px;
|
||||
font-size: 12px;
|
||||
color: white;
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.chat-wrap .layui-card-header {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.chat-wrap .layui-card-body {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.chat-msg-list {
|
||||
height: 380px;
|
||||
height: 354px;
|
||||
margin-bottom: 10px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
@ -929,37 +923,21 @@ body {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.chat .icon-vip {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.chat .content {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.chat-login-tips {
|
||||
border-top: 1px solid #f2f2f2;
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.chat-msg-form .layui-input {
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.live-stats {
|
||||
height: 420px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.live-stats .stats {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.live-stats .count {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.vip-header {
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
@ -1213,7 +1191,7 @@ body {
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
.user-profile .vip-icon {
|
||||
.user-profile .icon-vip {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ layui.use(['jquery', 'form', 'helper'], function () {
|
||||
function showNewMessage(res) {
|
||||
var html = '<div class="chat">';
|
||||
if (res.user.vip === 1) {
|
||||
html += '<span class="vip-icon layui-icon layui-icon-diamond"></span>';
|
||||
html += '<span class="layui-icon layui-icon-diamond icon-vip"></span>';
|
||||
}
|
||||
html += '<span class="user">' + res.user.name + ':</span>';
|
||||
html += '<span class="content">' + res.content + '</span>';
|
@ -56,10 +56,34 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
||||
player.currentTime(position);
|
||||
}
|
||||
|
||||
$('.icon-danmu-set').on('click', function () {
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: '弹幕设置',
|
||||
area: '600px',
|
||||
shadeClose: true,
|
||||
content: $('#my-danmu-set')
|
||||
});
|
||||
});
|
||||
|
||||
var dt = null;
|
||||
|
||||
/**
|
||||
* 控制弹幕表单的可见性
|
||||
*/
|
||||
$('#player').hover(function () {
|
||||
clearTimeout(dt);
|
||||
$('.danmu-form').show();
|
||||
}, function () {
|
||||
dt = setTimeout(function () {
|
||||
$('.danmu-form').hide();
|
||||
}, 2500);
|
||||
});
|
||||
|
||||
$('#danmu').danmu({
|
||||
left: 20,
|
||||
top: 20,
|
||||
width: 750,
|
||||
width: 760,
|
||||
height: 380
|
||||
});
|
||||
|
||||
@ -101,10 +125,6 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
||||
isnew: 1
|
||||
});
|
||||
$danmuText.val('');
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
return false;
|
@ -16,6 +16,24 @@ layui.use(['jquery', 'form', 'element', 'layer', 'helper'], function () {
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (xhr) {
|
||||
xhr.setRequestHeader('X-Csrf-Token', $token.attr('content'));
|
||||
},
|
||||
statusCode: {
|
||||
400: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2, anim: 6});
|
||||
},
|
||||
401: function () {
|
||||
layer.msg('操作之前请先登录', {icon: 2, anim: 6});
|
||||
},
|
||||
403: function () {
|
||||
layer.msg('操作受限', {icon: 2, anim: 6});
|
||||
},
|
||||
404: function () {
|
||||
layer.msg('资源不存在', {icon: 2, anim: 6});
|
||||
},
|
||||
500: function () {
|
||||
layer.msg('服务器内部错误', {icon: 2, anim: 6});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -74,10 +92,6 @@ layui.use(['jquery', 'form', 'element', 'layer', 'helper'], function () {
|
||||
} else {
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
var json = JSON.parse(xhr.responseText);
|
||||
layer.msg(json.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -1,8 +1,7 @@
|
||||
layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
layui.use(['jquery', 'layer'], function () {
|
||||
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var helper = layui.helper;
|
||||
|
||||
var myShare = {
|
||||
title: $('input[name="share.title"]').val(),
|
||||
@ -11,16 +10,28 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
qrcode: $('input[name="share.qrcode"]').val()
|
||||
};
|
||||
|
||||
$('.icon-heart').on('click', function () {
|
||||
var $this = $(this);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: $this.parent().data('url'),
|
||||
success: function () {
|
||||
if ($this.hasClass('active')) {
|
||||
$this.removeClass('active');
|
||||
} else {
|
||||
$this.addClass('active');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('.icon-praise').on('click', function () {
|
||||
var $this = $(this);
|
||||
var $likeCount = $this.next();
|
||||
var likeCount = parseInt($likeCount.text());
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: $this.data('url'),
|
||||
beforeSend: function () {
|
||||
return helper.checkLogin();
|
||||
},
|
||||
url: $this.parent().data('url'),
|
||||
success: function () {
|
||||
if ($this.hasClass('active')) {
|
||||
$this.removeClass('active');
|
||||
@ -31,10 +42,6 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
$likeCount.text(likeCount + 1);
|
||||
likeCount += 1;
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -52,22 +59,28 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
|
||||
$('.icon-qq').on('click', function () {
|
||||
var title = '推荐一门好课:' + myShare.title + ',快来和我一起学习吧!';
|
||||
Share.qq(title, myShare.url, myShare.pic);
|
||||
qqShare(title, myShare.url, myShare.pic);
|
||||
});
|
||||
|
||||
$('.icon-weibo').on('click', function () {
|
||||
var title = '推荐一门好课:' + myShare.title + ',快来和我一起学习吧!';
|
||||
Share.weibo(title, myShare.url, myShare.pic);
|
||||
weiboShare(title, myShare.url, myShare.pic);
|
||||
});
|
||||
|
||||
$('.icon-danmu-set').on('click', function () {
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: '弹幕设置',
|
||||
area: '600px',
|
||||
shadeClose: true,
|
||||
content: $('#my-danmu-set')
|
||||
});
|
||||
});
|
||||
function qqShare(title, url, pic) {
|
||||
var shareUrl = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?';
|
||||
shareUrl += 'title=' + encodeURIComponent(title || document.title);
|
||||
shareUrl += '&url=' + encodeURIComponent(url || document.location);
|
||||
shareUrl += '&pics=' + pic;
|
||||
window.open(shareUrl, '_blank');
|
||||
}
|
||||
|
||||
function weiboShare(title, url, pic) {
|
||||
var shareUrl = 'http://v.t.sina.com.cn/share/share.php?';
|
||||
shareUrl += 'title=' + encodeURIComponent(title || document.title);
|
||||
shareUrl += '&url=' + encodeURIComponent(url || document.location);
|
||||
shareUrl += '&pic=' + encodeURIComponent(pic || '');
|
||||
window.open(shareUrl, '_blank');
|
||||
}
|
||||
|
||||
});
|
@ -4,13 +4,6 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
var layer = layui.layer;
|
||||
var helper = layui.helper;
|
||||
|
||||
var myShare = {
|
||||
title: $('input[name="share.title"]').val(),
|
||||
pic: $('input[name="share.cover"]').val(),
|
||||
url: $('input[name="share.url"]').val(),
|
||||
qrcode: $('input[name="share.qrcode"]').val()
|
||||
};
|
||||
|
||||
$('.rating-btn').on('click', function () {
|
||||
var url = $(this).data('url');
|
||||
layer.open({
|
||||
@ -21,59 +14,13 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
});
|
||||
});
|
||||
|
||||
$('.icon-heart').on('click', function () {
|
||||
var $this = $(this);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: $this.parent().data('url'),
|
||||
beforeSend: function () {
|
||||
return helper.checkLogin();
|
||||
},
|
||||
success: function () {
|
||||
if ($this.hasClass('active')) {
|
||||
$this.removeClass('active');
|
||||
} else {
|
||||
$this.addClass('active');
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('.icon-wechat').on('click', function () {
|
||||
var content = '<div class="qrcode"><img src="' + myShare.qrcode + '" alt="分享到微信"></div>';
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
shadeClose: true,
|
||||
content: content
|
||||
});
|
||||
});
|
||||
|
||||
$('.icon-qq').on('click', function () {
|
||||
var title = '推荐一门好课:' + myShare.title + ',快来和我一起学习吧!';
|
||||
Share.qq(title, myShare.url, myShare.pic);
|
||||
});
|
||||
|
||||
$('.icon-weibo').on('click', function () {
|
||||
var title = '推荐一门好课:' + myShare.title + ',快来和我一起学习吧!';
|
||||
Share.weibo(title, myShare.url, myShare.pic);
|
||||
});
|
||||
|
||||
$('body').on('click', '.icon-praise', function () {
|
||||
var $this = $(this);
|
||||
var $likeCount = $this.next();
|
||||
var likeCount = parseInt($likeCount.text());
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: $this.data('url'),
|
||||
beforeSend: function () {
|
||||
return helper.checkLogin();
|
||||
},
|
||||
url: $this.parent().data('url'),
|
||||
success: function () {
|
||||
if ($this.hasClass('active')) {
|
||||
$this.removeClass('active');
|
||||
@ -84,10 +31,6 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
||||
$likeCount.text(likeCount + 1);
|
||||
likeCount += 1;
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -34,10 +34,6 @@ layui.use(['jquery', 'form', 'layer', 'layim', 'helper'], function () {
|
||||
success: function (res) {
|
||||
layer.msg(res.msg, {icon: 1});
|
||||
layer.close(index);
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -63,10 +59,6 @@ layui.use(['jquery', 'form', 'layer', 'layim', 'helper'], function () {
|
||||
success: function (res) {
|
||||
layer.msg(res.msg, {icon: 1});
|
||||
layer.close(index);
|
||||
},
|
||||
error: function (xhr) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
var Share = {};
|
||||
|
||||
Share.qq = function (title, url, pic) {
|
||||
var shareUrl = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?';
|
||||
shareUrl += 'title=' + encodeURIComponent(title || document.title);
|
||||
shareUrl += '&url=' + encodeURIComponent(url || document.location);
|
||||
shareUrl += '&pics=' + pic;
|
||||
window.open(shareUrl, '_blank');
|
||||
};
|
||||
|
||||
Share.weibo = function (title, url, pic) {
|
||||
var shareUrl = 'http://v.t.sina.com.cn/share/share.php?';
|
||||
shareUrl += 'title=' + encodeURIComponent(title || document.title);
|
||||
shareUrl += '&url=' + encodeURIComponent(url || document.location);
|
||||
shareUrl += '&pic=' + encodeURIComponent(pic || '');
|
||||
window.open(shareUrl, '_blank');
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user