From 24214e8baa4494606b4fbd0b378c137eed0366c6 Mon Sep 17 00:00:00 2001 From: xiaochong0302 Date: Thu, 28 May 2020 19:38:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E5=89=8D=E7=AB=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Web/Controllers/CourseController.php | 29 +++++- app/Http/Web/Views/course/consults.volt | 22 +++++ app/Http/Web/Views/course/list.volt | 21 +++-- app/Http/Web/Views/course/list_filter.volt | 17 ++-- app/Http/Web/Views/course/reviews.volt | 29 ++++++ app/Http/Web/Views/course/show.volt | 37 ++++++-- app/Http/Web/Views/index/index.volt | 36 ++------ app/Http/Web/Views/partials/macro_course.volt | 8 +- app/Http/Web/Views/partials/pager_ajax.volt | 10 ++ app/Http/Web/Views/search/content_course.volt | 52 +++++------ app/Http/Web/Views/search/list.volt | 20 ++-- app/Repos/Course.php | 74 ++++++++++----- app/Repos/CourseCategory.php | 4 +- app/Repos/CourseUser.php | 16 ++++ public/static/web/css/common.css | 91 +++++++++++++++---- public/static/web/js/common.js | 16 +++- 16 files changed, 342 insertions(+), 140 deletions(-) create mode 100644 app/Http/Web/Views/course/consults.volt create mode 100644 app/Http/Web/Views/course/reviews.volt create mode 100644 app/Http/Web/Views/partials/pager_ajax.volt diff --git a/app/Http/Web/Controllers/CourseController.php b/app/Http/Web/Controllers/CourseController.php index bf8918b9..a49a8e00 100644 --- a/app/Http/Web/Controllers/CourseController.php +++ b/app/Http/Web/Controllers/CourseController.php @@ -14,6 +14,7 @@ use App\Services\Frontend\Course\RelatedList as CourseRelatedListService; use App\Services\Frontend\Course\ReviewList as CourseReviewListService; use App\Services\Frontend\Course\TeacherList as CourseTeacherListService; use App\Services\Frontend\Course\TopicList as CourseTopicListService; +use Phalcon\Mvc\View; /** * @RoutePrefix("/course") @@ -70,6 +71,18 @@ class CourseController extends Controller $packages = $service->handle($id); + $service = new CourseReviewListService(); + + $reviews = $service->handle($id); + + $reviews->items = kg_array_object($reviews->items); + + $service = new CourseConsultListService(); + + $consults = $service->handle($id); + + $consults->items = kg_array_object($consults->items); + $service = new CourseTeacherListService(); $teachers = $service->handle($id); @@ -89,6 +102,8 @@ class CourseController extends Controller $this->view->setVar('course', $course); $this->view->setVar('chapters', $chapters); $this->view->setVar('packages', $packages); + $this->view->setVar('consults', $consults); + $this->view->setVar('reviews', $reviews); $this->view->setVar('teachers', $teachers); $this->view->setVar('topics', $topics); $this->view->setVar('recommended_courses', $recommendedCourses); @@ -130,7 +145,12 @@ class CourseController extends Controller $pager = $service->handle($id); - return $this->jsonPaginate($pager); + $pager->target = $this->request->get('target', 'trim', 'tab-consults'); + + $pager->items = kg_array_object($pager->items); + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('pager', $pager); } /** @@ -142,7 +162,12 @@ class CourseController extends Controller $pager = $service->handle($id); - return $this->jsonPaginate($pager); + $pager->target = $this->request->get('target', 'trim', 'tab-reviews'); + + $pager->items = kg_array_object($pager->items); + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->setVar('pager', $pager); } /** diff --git a/app/Http/Web/Views/course/consults.volt b/app/Http/Web/Views/course/consults.volt new file mode 100644 index 00000000..5437eca7 --- /dev/null +++ b/app/Http/Web/Views/course/consults.volt @@ -0,0 +1,22 @@ +{% if pager.total_pages > 0 %} +
+ {% for item in pager.items %} + {% set user_url = url({'for':'web.user.show','id':item.id}) %} +
+
+ + {{ item.user.name }} + +
+
+
{{ item.question }}
+
{{ item.answer }}
+ +
+
+ {% endfor %} +
+ {{ partial('partials/pager_ajax') }} +{% endif %} \ 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 8e382625..900fcbd3 100644 --- a/app/Http/Web/Views/course/list.volt +++ b/app/Http/Web/Views/course/list.volt @@ -3,15 +3,20 @@ {% block content %} {{ partial('partials/macro_course') }} - {{ partial('course/list_filter') }} -
- {% for item in pager.items %} - {{ course_card(item) }} - {% endfor %} -
- - {{ partial('partials/pager') }} + {% if pager.total_pages > 0 %} +
+ {% for item in pager.items %} + {{ course_card(item) }} + {% endfor %} +
+ {{ partial('partials/pager') }} + {% else %} +
+
+
没有检索到相关课程哦
+
+ {% endif %} {% endblock %} \ No newline at end of file diff --git a/app/Http/Web/Views/course/list_filter.volt b/app/Http/Web/Views/course/list_filter.volt index 33756cd9..8df0f506 100644 --- a/app/Http/Web/Views/course/list_filter.volt +++ b/app/Http/Web/Views/course/list_filter.volt @@ -1,9 +1,10 @@ -
+
方向
+ {% set tc_val = request.get('tc','int','all') %} {% for category in top_categories %} - {% set class = request.get('tc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %} + {% set class = tc_val == category.id ? 'layui-btn layui-btn-xs' : 'none' %} {{ category.name }} {% endfor %}
@@ -12,8 +13,9 @@
分类
+ {% set sc_val = request.get('sc','int','all') %} {% for category in sub_categories %} - {% set class = request.get('sc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %} + {% set class = sc_val == category.id ? 'layui-btn layui-btn-xs' : 'none' %} {{ category.name }} {% endfor %}
@@ -22,8 +24,9 @@
类型
+ {% set model_val = request.get('model','trim','all') %} {% for model in models %} - {% set class = request.get('model','trim','all') == model.id ? 'layui-btn layui-btn-xs' : 'none' %} + {% set class = model_val == model.id ? 'layui-btn layui-btn-xs' : 'none' %} {{ model.name }} {% endfor %}
@@ -31,8 +34,9 @@
难度
+ {% set level_val = request.get('level','trim','all') %} {% for level in levels %} - {% set class = request.get('level','trim','all') == level.id ? 'layui-btn layui-btn-xs' : 'none' %} + {% set class = level_val == level.id ? 'layui-btn layui-btn-xs' : 'none' %} {{ level.name }} {% endfor %}
@@ -40,8 +44,9 @@
排序
+ {% set sort_val = request.get('sort','trim','score') %} {% for sort in sorts %} - {% set class = request.get('sort','trim','score') == sort.id ? 'layui-btn layui-btn-xs' : 'none' %} + {% set class = sort_val == sort.id ? 'layui-btn layui-btn-xs' : 'none' %} {{ sort.name }} {% endfor %}
diff --git a/app/Http/Web/Views/course/reviews.volt b/app/Http/Web/Views/course/reviews.volt new file mode 100644 index 00000000..59bd45e8 --- /dev/null +++ b/app/Http/Web/Views/course/reviews.volt @@ -0,0 +1,29 @@ +{%- macro star_info(rating) %} + {% set stars = [1,2,3,4,5] %} + {% for val in stars if val <= rating %} + + {% endfor %} +{%- endmacro %} + +{% if pager.total_pages > 0 %} +
+ {% for item in pager.items %} + {% set user_url = url({'for':'web.user.show','id':item.id}) %} +
+
+ + {{ item.user.name }} + +
+
+
{{ star_info(item.rating) }}
+
{{ item.content }}
+ +
+
+ {% endfor %} +
+ {{ partial('partials/pager_ajax') }} +{% endif %} \ No newline at end of file diff --git a/app/Http/Web/Views/course/show.volt b/app/Http/Web/Views/course/show.volt index 0e393370..5f48f29c 100644 --- a/app/Http/Web/Views/course/show.volt +++ b/app/Http/Web/Views/course/show.volt @@ -24,7 +24,7 @@
-
+
  • 详情
  • 目录
  • @@ -42,7 +42,7 @@
    {{ course.details }}
    -
    +
    {% if course.model == 'vod' %} {{ partial('course/chapters_vod') }} {% elseif course.model == 'live' %} @@ -52,13 +52,17 @@ {% endif %}
    {% if show_packages == 1 %} -
    {{ partial('course/packages') }}
    +
    + {{ partial('course/packages') }} +
    {% endif %} {% if show_consults == 1 %} -
    咨询
    + {% set consult_url = url({'for':'web.course.consults','id':course.id}) %} +
    {% endif %} {% if show_reviews == 1 %} -
    评价
    + {% set review_url = url({'for':'web.course.reviews','id':course.id}) %} +
    {% endif %}
@@ -67,19 +71,36 @@ {% if teachers %} {{ partial('course/sidebar_teachers') }} {% endif %} - {% if topics %} {{ partial('course/sidebar_topics') }} {% endif %} - {% if recommended_courses %} {{ partial('course/sidebar_recommended') }} {% endif %} - {% if related_courses %} {{ partial('course/sidebar_related') }} {% endif %}
+{% endblock %} + +{% block inline_js %} + + + {% endblock %} \ No newline at end of file diff --git a/app/Http/Web/Views/index/index.volt b/app/Http/Web/Views/index/index.volt index 4923f48f..748a01d8 100644 --- a/app/Http/Web/Views/index/index.volt +++ b/app/Http/Web/Views/index/index.volt @@ -2,6 +2,8 @@ {% block content %} + {{ partial('partials/macro_course') }} + {%- macro category_courses(courses) %}
    @@ -14,31 +16,9 @@ {% for category in courses %} {% set class = loop.first ? 'layui-tab-item layui-show' : 'layui-tab-item' %}
    -
    +
    {% for course in category.courses %} -
    -
    - - {{ course.title }} - -
    - -
    - {% if course.market_price > 0 %} - ¥{{ course.market_price }} - 中级 - {{ course.lesson_count }}节课 - {{ course.user_count }}人购买 - {% else %} - 免费 - 中级 - {{ course.lesson_count }}节课 - {{ course.user_count }}人报名 - {% endif %} -
    -
    + {{ course_card(course) }} {% endfor %}
    @@ -47,7 +27,7 @@
    {%- endmacro %} -