diff --git a/app/controllers/course_videos_controller.rb b/app/controllers/course_videos_controller.rb new file mode 100644 index 000000000..b5915e0ed --- /dev/null +++ b/app/controllers/course_videos_controller.rb @@ -0,0 +1,31 @@ +class CourseVideosController < ApplicationController + before_action :require_login + before_action :validate_params + before_action :find_course, only: [:create] + before_action :find_video, only: [:update] + before_action :teacher_allowed + + def create + title = params[:name].strip + link = params[:link].strip + @course.course_videos.create!(title: title, link: link, is_link: 1, user_id: current_user.id) + render_ok + end + + def update + + end + + private + + def validate_params + tip_exception("视频名称不能为空") if params[:name].blank? + tip_exception("链接地址不能为空") if params[:link].blank? + end + + def find_video + @video = CourseVideo.find params[:id] + @course = @video.course + end + +end \ No newline at end of file diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 0a59c379a..e29b177d6 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -102,17 +102,17 @@ class CoursesController < ApplicationController end def course_videos - videos = @course.videos + videos = @course.course_videos @video_module = @course.course_modules.find_by(module_type: "video") if params[:category_id].present? && params[:category_id].to_i != 0 @category = @video_module&.course_second_categories.find_by(id: params[:category_id]) tip_exception("子目录id有误") if !@category.present? - videos = videos.where(course_videos: {course_second_category_id: params[:category_id].to_i}) + videos = videos.where(course_second_category_id: params[:category_id].to_i) end videos = custom_sort(videos, params[:sort_by], params[:sort_direction]) @count = videos.count - @videos = paginate videos.includes(user: :user_extension) + @videos = paginate videos.includes(video: [user: :user_extension], user: :user_extension) end def delete_course_video diff --git a/app/models/course_video.rb b/app/models/course_video.rb index e61a439dc..246be34fd 100644 --- a/app/models/course_video.rb +++ b/app/models/course_video.rb @@ -1,4 +1,7 @@ class CourseVideo < ApplicationRecord belongs_to :course - belongs_to :video + belongs_to :video, optional: true + belongs_to :user, optional: true + + validates :title, length: { maximum: 60, too_long: "不能超过60个字符" } end diff --git a/app/views/courses/course_videos.json.jbuilder b/app/views/courses/course_videos.json.jbuilder index db4f4006c..627b0d6e9 100644 --- a/app/views/courses/course_videos.json.jbuilder +++ b/app/views/courses/course_videos.json.jbuilder @@ -1,5 +1,19 @@ json.count @count -json.videos @videos, partial: 'users/videos/video', as: :video + +json.videos @videos do |video| + Rails.logger.info("video@############{video.id}, #{video.is_link}") + if video.is_link + json.(video, :id, :title, :link, :user_id) + + user = video.user + json.user_name user&.real_name + json.user_img url_to_avatar(user) + json.user_login user&.login + else + json.partial! 'users/videos/video', locals: { video: video.video } + end +end + json.course_id @course.id if @category.present? json.category_id @category.id diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index f9671eec1..4c5c808ac 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -183,6 +183,9 @@ zh-CN: attendance_date: '签到日期' start_time: '开始时间' end_time: '结束时间' + course_video: + title: '视频名称' + link: '链接地址' diff --git a/config/routes.rb b/config/routes.rb index 1f9d4cfc4..7bf1b6c1b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -538,6 +538,8 @@ Rails.application.routes.draw do get 'search_slim' end + resources :course_videos, only:[:create, :update], shallow: true + resources :course_stages, shallow: true do member do post :up_position diff --git a/db/migrate/20200309101753_add_link_to_course_videos.rb b/db/migrate/20200309101753_add_link_to_course_videos.rb new file mode 100644 index 000000000..d5580d92e --- /dev/null +++ b/db/migrate/20200309101753_add_link_to_course_videos.rb @@ -0,0 +1,8 @@ +class AddLinkToCourseVideos < ActiveRecord::Migration[5.2] + def change + add_column :course_videos, :is_link, :boolean, default: 0 + add_column :course_videos, :title, :string + add_column :course_videos, :link, :string + add_column :course_videos, :user_id, :integer, index: true + end +end