1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-22 19:44:02 +08:00

整理代码

This commit is contained in:
xiaochong0302 2020-05-21 21:14:11 +08:00
parent 01932654f5
commit 772e0f2d7e
12 changed files with 284 additions and 50 deletions

View File

@ -94,6 +94,31 @@ class CourseController extends Controller
$this->view->setVar('category_paths', $categoryPaths);
}
/**
* @Get("/{id:[0-9]+}/chapters", name="web.course.chapters")
*/
public function chaptersAction($id)
{
$service = new CourseChapterListService();
$chapters = $service->handle($id);
return $this->jsonSuccess(['chapters' => $chapters]);
}
/**
* @Get("/{id:[0-9]+}/packages", name="web.course.packages")
*/
public function packagesAction($id)
{
$service = new CoursePackageListService();
$packages = $service->handle($id);
return $this->jsonSuccess(['packages' => $packages]);
}
/**
* @Get("/{id:[0-9]+}/consults", name="web.course.consults")
*/
@ -118,6 +143,54 @@ class CourseController extends Controller
return $this->jsonPaginate($pager);
}
/**
* @Get("/{id:[0-9]+}/teachers", name="web.course.teachers")
*/
public function teachersAction($id)
{
$service = new CourseTeacherListService();
$teachers = $service->handle($id);
return $this->jsonSuccess(['teachers' => $teachers]);
}
/**
* @Get("/{id:[0-9]+}/recommended", name="web.course.recommended")
*/
public function recommendedAction($id)
{
$service = new CourseRecommendedListService();
$courses = $service->handle($id);
return $this->jsonSuccess(['courses' => $courses]);
}
/**
* @Get("/{id:[0-9]+}/related", name="web.course.related")
*/
public function relatedAction($id)
{
$service = new CourseRelatedListService();
$courses = $service->handle($id);
return $this->jsonSuccess(['courses' => $courses]);
}
/**
* @Get("/{id:[0-9]+}/topics", name="web.course.topics")
*/
public function topicsAction($id)
{
$service = new CourseTopicListService();
$topics = $service->handle($id);
return $this->jsonSuccess(['topics' => $topics]);
}
/**
* @Post("/{id:[0-9]+}/favorite", name="web.course.favorite")
*/

View File

@ -31,7 +31,7 @@ class CourseQuery extends Service
$baseUrl = $this->url->get(['for' => 'web.course.list']);
$defaultItem = [
'id' => 0,
'id' => 'all',
'name' => '全部',
'url' => $baseUrl . $this->buildQueryParams($params),
];
@ -79,7 +79,7 @@ class CourseQuery extends Service
$baseUrl = $this->url->get(['for' => 'web.course.list']);
$defaultItem = [
'id' => 0,
'id' => 'all',
'name' => '全部',
'url' => $baseUrl . $this->buildQueryParams($params),
];
@ -109,7 +109,7 @@ class CourseQuery extends Service
}
$defaultItem = [
'id' => 0,
'id' => 'all',
'name' => '全部',
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
@ -141,7 +141,7 @@ class CourseQuery extends Service
}
$defaultItem = [
'id' => 0,
'id' => 'all',
'name' => '全部',
'url' => $this->baseUrl . $this->buildQueryParams($params),
];
@ -218,27 +218,27 @@ class CourseQuery extends Service
$validator = new \App\Validators\CourseQuery();
if (!empty($query['tc'])) {
if (isset($query['tc']) && $query['tc'] != 'all') {
$validator->checkTopCategory($query['tc']);
$params['tc'] = $query['tc'];
}
if (!empty($query['sc'])) {
if (isset($query['sc']) && $query['tc'] != 'all') {
$validator->checkSubCategory($query['sc']);
$params['sc'] = $query['sc'];
}
if (!empty($query['model'])) {
if (isset($query['model']) && $query['model'] != 'all') {
$validator->checkModel($query['model']);
$params['model'] = $query['model'];
}
if (!empty($query['level'])) {
if (isset($query['level']) && $query['level'] != 'all') {
$validator->checkLevel($query['level']);
$params['level'] = $query['level'];
}
if (!empty($query['sort'])) {
if (isset($query['sort'])) {
$validator->checkSort($query['sort']);
$params['sort'] = $query['sort'];
}

View File

@ -0,0 +1,24 @@
{%- macro lesson_info(lesson) %}
{% if lesson.attrs.model == 'vod' %}
<li>{{ lesson.title }}</li>
{% elseif lesson.attrs.model == 'live' %}
<li>{{ lesson.title }}</li>
{% elseif lesson.attrs.model == 'read' %}
<li>{{ lesson.title }}</li>
{% endif %}
{%- endmacro %}
<div class="layui-collapse">
{% for chapter in chapters %}
<div class="layui-colla-item">
<h2 class="layui-colla-title">{{ chapter.title }}</h2>
<div class="layui-colla-content layui-show">
<ul class="lesson-list">
{% for lesson in chapter.children %}
{{ lesson_info(lesson) }}
{% endfor %}
</ul>
</div>
</div>
{% endfor %}
</div>

View File

@ -3,38 +3,40 @@
{% block content %}
<div class="course-filter">
<div class="group">
<div class="course-filter-group">
<div class="title">方向</div>
<div class="content">
{% for category in top_categories %}
{% set class = request.get('tc') == category.id ? 'layui-badge active' : 'layui-badge' %}
{% set class = request.get('tc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
{% endfor %}
</div>
</div>
<div class="group">
<div class="title">分类</div>
<div class="content">
{% for category in sub_categories %}
{% set class = request.get('sc') == category.id ? 'layui-badge active' : 'layui-badge' %}
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
{% endfor %}
{% if sub_categories %}
<div class="course-filter-group">
<div class="title">分类</div>
<div class="content">
{% for category in sub_categories %}
{% set class = request.get('sc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
{% endfor %}
</div>
</div>
</div>
<div class="group">
{% endif %}
<div class="course-filter-group">
<div class="title">类型</div>
<div class="content">
{% for model in models %}
{% set class = request.get('model') == model.id ? 'layui-badge active' : 'layui-badge' %}
{% set class = request.get('model','trim','all') == model.id ? 'layui-btn layui-btn-xs' : 'none' %}
<a class="{{ class }}" href="{{ model.url }}">{{ model.name }}</a>
{% endfor %}
</div>
</div>
<div class="group">
<div class="course-filter-group">
<div class="title">难度</div>
<div class="content">
{% for level in levels %}
{% set class = request.get('level') == level.id ? 'layui-badge active' : 'layui-badge' %}
{% set class = request.get('level','trim','all') == level.id ? 'layui-btn layui-btn-xs' : 'none' %}
<a class="{{ class }}" href="{{ level.url }}">{{ level.name }}</a>
{% endfor %}
</div>
@ -48,11 +50,17 @@
{% endfor %}
</div>
<div class="course-list">
<div class="course-list layui-clear">
{% for item in pager.items %}
<div class="course-card">
<div class="cover"></div>
<div class="title">{{ item['title'] }}</div>
<div class="cover">
<a href="{{ url({'for':'web.course.show','id':item['id']}) }}" title="{{ item['title'] }}">
<img src="{{ item['cover'] }}!cover_270" alt="{{ item['title'] }}">
</a>
</div>
<div class="title">
<a href="{{ url({'for':'web.course.show','id':item['id']}) }}" title="{{ item['title'] }}">{{ substr(item['title'],0,18) }}</a>
</div>
<div class="info"></div>
</div>
{% endfor %}

View File

@ -17,8 +17,8 @@
<div class="right"></div>
</div>
<div class="course-body">
<div class="left">
<div class="course-body layui-clear">
<div class="content">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title">
<li class="layui-this">详情</li>
@ -36,7 +36,7 @@
</div>
</div>
</div>
<div class="right">
<div class="sidebar">
{% if teachers %}
{{ partial('course/widget_teacher', {'teachers':teachers}) }}
{% endif %}

View File

@ -1,6 +1,6 @@
<div class="course-widget widget">
<div class="head">推荐课程</div>
<div class="body">
<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>

View File

@ -1,6 +1,6 @@
<div class="course-widget widget">
<div class="head">相关课程</div>
<div class="body">
<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>

View File

@ -1,6 +1,6 @@
<div class="teacher-widget widget">
<div class="head">授课教师</div>
<div class="body">
<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>

View File

@ -1,6 +1,6 @@
<div class="teacher-widget widget">
<div class="head">热门专题</div>
<div class="body">
<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 %}

View File

@ -14,13 +14,21 @@
{% for category in courses %}
{% set class = loop.first ? 'layui-tab-item layui-show' : 'layui-tab-item' %}
<div class="{{ class }}">
{% for course in category.courses %}
<div class="course-card">
<div class="cover"></div>
<div class="title">{{ course.title }}</div>
<div class="info"></div>
</div>
{% endfor %}
<div class="course-list layui-clear">
{% for course in category.courses %}
<div class="course-card">
<div class="cover">
<a href="{{ url({'for':'web.course.show','id':course.id}) }}" title="{{ course.title }}">
<img lay-src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
</a>
</div>
<div class="title">
<a href="{{ url({'for':'web.course.show','id':course.id}) }}" title="{{ course.title }}">{{ substr(course.title,0,15) }}</a>
</div>
<div class="info"></div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
@ -67,13 +75,15 @@
{% block inline_js %}
<script>
layui.use(['carousel'], function () {
layui.use(['carousel', 'flow'], function () {
var carousel = layui.carousel;
var flow = layui.flow;
carousel.render({
elem: '#carousel',
width: '600px',
height: '338px'
});
flow.lazyimg();
});
</script>

View File

@ -18,7 +18,7 @@
{{ partial('partials/header') }}
</div>
<div id="content">
<div id="main" class="layui-main">
{% block content %}{% endblock %}
</div>

View File

@ -1,3 +1,122 @@
.layui-badge, .layui-badge-rim, .layui-badge-dot {
padding-bottom: 1px;
}
.clearfix:after {
display: block;
clear: both;
content: "";
visibility: hidden;
height: 0
}
.clearfix {
zoom: 1
}
.float-left {
float: left;
}
.float-right {
float: right;
}
#footer {
text-align: center;
}
.pager {
text-align: center;
}
.index-module {
margin-bottom: 15px;
}
.index-module .layui-tab-title {
border: none;
}
.index-module .layui-tab-content {
padding: 20px 10px;
}
.index-module .header {
text-align: center;
font-size: 20px;
line-height: 30px;
}
.index-module .content {
}
.course-card {
float: left;
width: 25%;
height: 250px;
}
.course-card .cover {
width: 270px;
height: 148px;
margin-bottom: 10px;
}
.course-card .cover img {
width: 100%;
height: 100%;
}
.course-card .title {
margin-bottom: 10px;
}
.course-card .info {
}
.course-meta .left {
float: left;
}
.course-filter {
margin-bottom: 15px;
}
.course-filter-group {
line-height: 40px;
margin-bottom: 15px;
clear: both;
}
.course-filter-group .title {
float: left;
width: 50px;
font-weight: 700;
}
.course-filter-group .content {
float: left;
}
.course-filter-group .content a {
margin-right: 15px;
}
.course-meta .right {
float: right;
}
.course-body {
}
.course-body .content {
float: left;
width: 780px;
}
.course-body .sidebar {
float: left;
width: 320px;
}