Class: Www::CoursesController
- Inherits:
-
BasePortalController
- Object
- ActionController::Base
- ApplicationController
- BasePortalController
- Www::CoursesController
- Defined in:
- app/controllers/www/courses_controller.rb
Overview
Controller: courses.
Constant Summary
Constants included from Controllers::MasqueradeGuarded
Controllers::MasqueradeGuarded::DEFAULT_BLOCK_MESSAGE
Constants included from Controllers::AnalyticsEvents
Controllers::AnalyticsEvents::MAX_QUEUED_EVENTS, Controllers::AnalyticsEvents::SESSION_KEY
Constants included from Controllers::ErrorRendering
Controllers::ErrorRendering::NON_CONTENT_PATH_PREFIXES
Instance Method Summary collapse
-
#enroll ⇒ void
Enrolls the current user in a course, creating a customer topic per active topic category topic.
-
#index ⇒ Object
Static marketing listing: no per-user enrollment state.
-
#show ⇒ Object
Public syllabus preview: module titles, durations, and lesson counts are visible without signing in (decided 2026-07-07); lesson content itself still requires enrollment.
Methods inherited from BasePortalController
#current_ability, #portal_party, #set_catalog, #set_webpack
Methods included from Controllers::MasqueradeGuarded
block_while_masquerading, #masquerade_blocks?
Methods inherited from ApplicationController
#account_impersonated?, #add_to_flash, #after_sign_in_path_for, #bypass_forgery_protection?, #chat_enabled?, #cloudflare_cleared?, #default_catalog, #default_url_options, #enable_turbo_frames, #find_publication, #fix_invalid_accept_header, #init_js_utils, #is_globals_call?, #layout_by_resource, #locale_store, #redirect_to, #require_employee_for_crm, #set_base_host, #set_real_ip, #set_report_errors_for, #should_render_layout?, #skip_layout_for_turbo_frame?, #stamp_impersonation_context, #tab_frame_breakout_request?, #warmlyyours_canada_ip?, #warmlyyours_ip?, #y
Methods included from Controllers::ReturnPathHandling
#check_for_return_path, #redirect_to_return_path_or_default
Methods included from Controllers::AnalyticsEvents
#consume_queued_analytics_events, #registration_lead_type, #track_event
Methods included from Controllers::DeviceDetection
Methods included from Controllers::SubdomainDetection
#is_crm_request?, #is_www_request?, #json_request?
Methods included from Controllers::TurboSafeRedirect
Methods included from Controllers::TrackingDetection
#bot_request?, #gdpr_country?, #gdpr_country_data, #prevent_bots, #set_tracking_cookie, #track_visitor?
Methods included from Controllers::AcceleratedFileSending
#send_file_accelerated, #send_upload_accelerated
Methods included from Controllers::ErrorRendering
#excp_string, #mail_to_for_error_reporting, #render_400, #render_404, #render_406, #render_410, #render_500, #render_invalid_authenticity_token, #render_ip_spoof_error, #render_unpermitted_parameters, #safe_referer_or_fallback
Methods included from Controllers::TurnstileVerification
#load_turnstile_script_tag, #turnstile_lazy_widget, #turnstile_script_tag, #turnstile_widget, #validate_turnstile!
Methods included from Controllers::CloudflareCaching
edge_cached, #edge_cached_action?, #reset_cloudflare_cache, #set_cloudflare_cache, #skip_edge_cache!, #skip_session
Methods included from Controllers::Webpackable
#preload_webpack_fonts, #webpack_css_include, #webpack_css_url, #webpack_js_include, #wpd_is_running?
Methods included from Controllers::Localizable
#cloudflare_country_locale, #determine_request_locale, #geocoder_locale, #guest_user_locale_check, #locale_optional_www_auth_path?, #param_locale, #set_locale, #set_request_locale, #skip_localization?, #warmlyyours_ip_locale
Methods included from Controllers::Authenticable
#access_denied, #authenticate_account, #authenticate_account!, #authenticate_account_from_login_token!, #check_is_a_manager, #check_is_a_sales_manager, #check_is_an_admin, #check_is_an_employee, #check_party, #clear_mismatched_guest_user, #create_guest_user, #credentials?, #current_or_guest_user, #current_or_guest_user_id_read_only, #current_user, #devise_mapping, #fully_logged_in?, #generate_bot_id, #guest_user, #identifiable?, #init_current_user, #initialize_guest, #load_context_user, #logging_in, #resource, #resource_name, #restrict_access_for_non_employees, #scrubbed_request_path, #user_object, #warn_on_session_guest_id_leak
Methods included from UrlsHelper
#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?
Instance Method Details
#enroll ⇒ void
This method returns an undefined value.
Enrolls the current user in a course, creating a customer topic per
active topic category topic.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/controllers/www/courses_controller.rb', line 27 def enroll @course = Course.friendly.find(params.expect(:course_id)) if @context_user.can_be_certified? if (@enrollment = @context_user.course_enrollments.find_by(course_id: @course.id)).present? # This user is already enrolled redirect_to @enrollment else @enrollment = @course.course_enrollments.new(party_id: @context_user.id, enrollment_date: Time.current, state: 'active') ActiveRecord::Base.transaction do @enrollment.save! # Create all the CustomerTopics @course.topic_categories.active.each do |tc| course_category = @enrollment.course_categories.new( topic_category_id: tc.id, position: tc.position ) course_category.save! tc.topics.active.each do |topic| ct = course_category.customer_topics.new(party_id: @context_user.id, topic_id: topic.id, course_enrollment_id: @enrollment.id, state: :assigned, position: topic.position, comments: 'Auto assigned from enrolling in course') ct.save! end end @enrollment.notify_new_enrollment flash[:info] = 'Congratulations! You have successfully enrolled in this course.' redirect_to @enrollment rescue StandardError => e ErrorReporting.error(e, "An error ocurred while enrolling a customer into the course #{@course.id}.") flash[:error] = "We're experiencing some technical difficulties at the moment and we can't enroll you in this course. Our team is aware and working on fixing this issue. Please try again later." redirect_to '/courses' end end else flash[:error] = "You're not authorized to enroll in this course. Please call us at 800-875-5285 and one of our experts will help you with your request." redirect_to '/courses' end end |
#index ⇒ Object
Static marketing listing: no per-user enrollment state. All user-specific
CTAs (enroll / continue / certificate) live on the show page.
9 10 11 |
# File 'app/controllers/www/courses_controller.rb', line 9 def index @courses = Course.active.includes(topic_categories: :topics).order(:name) end |
#show ⇒ Object
Public syllabus preview: module titles, durations, and lesson counts are
visible without signing in (decided 2026-07-07); lesson content itself
still requires enrollment.
16 17 18 19 20 21 |
# File 'app/controllers/www/courses_controller.rb', line 16 def show @course = Course.active.friendly.find(params.expect(:id)) @topic_categories = @course.topic_categories.active.includes(:topics).order(:position) @topic_exam = @course.topic_exams.active.first @enrollment = @context_user&.course_enrollments&.find_by(course_id: @course.id) end |