From 772e0f2d7e0966a4b3b63313d3923c825f48625d Mon Sep 17 00:00:00 2001 From: xiaochong0302 Date: Thu, 21 May 2020 21:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Web/Controllers/CourseController.php | 73 +++++++++++ app/Http/Web/Services/CourseQuery.php | 18 +-- app/Http/Web/Views/course/chapters.volt | 24 ++++ app/Http/Web/Views/course/list.volt | 42 ++++--- app/Http/Web/Views/course/show.volt | 6 +- .../Web/Views/course/widget_recommended.volt | 6 +- app/Http/Web/Views/course/widget_related.volt | 6 +- app/Http/Web/Views/course/widget_teacher.volt | 6 +- app/Http/Web/Views/course/widget_topic.volt | 6 +- app/Http/Web/Views/index/index.volt | 26 ++-- app/Http/Web/Views/templates/base.volt | 2 +- public/static/web/css/common.css | 119 ++++++++++++++++++ 12 files changed, 284 insertions(+), 50 deletions(-) diff --git a/app/Http/Web/Controllers/CourseController.php b/app/Http/Web/Controllers/CourseController.php index 56aea8bd..af4a9eae 100644 --- a/app/Http/Web/Controllers/CourseController.php +++ b/app/Http/Web/Controllers/CourseController.php @@ -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") */ diff --git a/app/Http/Web/Services/CourseQuery.php b/app/Http/Web/Services/CourseQuery.php index e1f816ed..ef547743 100644 --- a/app/Http/Web/Services/CourseQuery.php +++ b/app/Http/Web/Services/CourseQuery.php @@ -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']; } diff --git a/app/Http/Web/Views/course/chapters.volt b/app/Http/Web/Views/course/chapters.volt index e69de29b..31962796 100644 --- a/app/Http/Web/Views/course/chapters.volt +++ b/app/Http/Web/Views/course/chapters.volt @@ -0,0 +1,24 @@ +{%- macro lesson_info(lesson) %} + {% if lesson.attrs.model == 'vod' %} +
  • {{ lesson.title }}
  • + {% elseif lesson.attrs.model == 'live' %} +
  • {{ lesson.title }}
  • + {% elseif lesson.attrs.model == 'read' %} +
  • {{ lesson.title }}
  • + {% endif %} +{%- endmacro %} + +
    + {% for chapter in chapters %} +
    +

    {{ chapter.title }}

    +
    +
      + {% for lesson in chapter.children %} + {{ lesson_info(lesson) }} + {% endfor %} +
    +
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/app/Http/Web/Views/course/list.volt b/app/Http/Web/Views/course/list.volt index bab0c1dd..11e3056a 100644 --- a/app/Http/Web/Views/course/list.volt +++ b/app/Http/Web/Views/course/list.volt @@ -3,38 +3,40 @@ {% block 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' %} {{ category.name }} {% endfor %}
    -
    -
    分类
    -
    - {% for category in sub_categories %} - {% set class = request.get('sc') == category.id ? 'layui-badge active' : 'layui-badge' %} - {{ category.name }} - {% endfor %} + {% if sub_categories %} +
    +
    分类
    +
    + {% for category in sub_categories %} + {% set class = request.get('sc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %} + {{ category.name }} + {% endfor %} +
    -
    -
    + {% endif %} +
    类型
    {% 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' %} {{ model.name }} {% endfor %}
    -
    +
    难度
    {% 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' %} {{ level.name }} {% endfor %}
    @@ -48,11 +50,17 @@ {% endfor %}
    -
    +
    {% for item in pager.items %}
    -
    -
    {{ item['title'] }}
    +
    + + {{ item['title'] }} + +
    +
    {% endfor %} diff --git a/app/Http/Web/Views/course/show.volt b/app/Http/Web/Views/course/show.volt index c6dce620..115116a2 100644 --- a/app/Http/Web/Views/course/show.volt +++ b/app/Http/Web/Views/course/show.volt @@ -17,8 +17,8 @@
    -
    -
    +
    +
    • 详情
    • @@ -36,7 +36,7 @@
    -
    +