From f81005408e0d10674f4034224cd6638de562a79c Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Sun, 4 Feb 2024 15:14:38 +0000 Subject: [PATCH] Add functionality to set default live video URL A new method has been added to the `CoursesController` which allows admins to fill default live video URLs for online lectures that don't have one. This feature is accessible via a button on the courses admin page. The routing for this new action has also been set up. --- app/controllers/admin/courses_controller.rb | 10 +++++++--- app/models/course.rb | 2 +- app/views/admin/course/_actions.html.erb | 6 ++++++ config/routes.rb | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/courses_controller.rb b/app/controllers/admin/courses_controller.rb index 1103581..5eccee1 100644 --- a/app/controllers/admin/courses_controller.rb +++ b/app/controllers/admin/courses_controller.rb @@ -1,9 +1,13 @@ module Admin class CoursesController < Admin::ApplicationController def renumber_lectures - course = Course.find(params[:id]) - course.renumber_lectures! - redirect_to admin_course_url(course), notice: "Lectures renumbered!" + requested_resource.renumber_lectures! + redirect_to admin_course_url(requested_resource), notice: "Lectures renumbered" + end + + def fill_in_default_live_video_url + requested_resource.fill_in_default_live_video_url! + redirect_to admin_course_url(requested_resource), notice: "Filled in default live video URL" end # Overwrite any of the RESTful controller actions to implement custom behavior diff --git a/app/models/course.rb b/app/models/course.rb index 7d4b739..e9bd4b6 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -87,6 +87,6 @@ class Course < ApplicationRecord def fill_in_default_live_video_url! raise "No default live video URL set" if self.default_live_video_url.nil? - lectures.where(live_video_url: nil).update_all!(live_video_url: self.default_live_video_url) + lectures.where(live_video_url: nil).update_all(live_video_url: self.default_live_video_url) end end diff --git a/app/views/admin/course/_actions.html.erb b/app/views/admin/course/_actions.html.erb index fffae75..24ff1d6 100644 --- a/app/views/admin/course/_actions.html.erb +++ b/app/views/admin/course/_actions.html.erb @@ -3,3 +3,9 @@ [namespace, page.resource, :renumber_lectures], class: "button", ) if accessible_action?(page.resource, :renumber_lectures) %> + +<%= link_to( + "Fill in default live video URL", + [namespace, page.resource, :fill_in_default_live_video_url], + class: "button", + ) if accessible_action?(page.resource, :fill_in_default_live_video_url) && page.resource.default_live_video_url.present? %> diff --git a/config/routes.rb b/config/routes.rb index 995dd4b..6fad381 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -9,6 +9,7 @@ Rails.application.routes.draw do root to: "courses#index" get '/courses/:id/renumber_lectures', to: 'courses#renumber_lectures', as: :course_renumber_lectures + get '/courses/:id/fill_in_default_live_video_url', to: 'courses#fill_in_default_live_video_url', as: :course_fill_in_default_live_video_url end root controller: :attendance_tracker, action: :index