@@ -300,9 +300,9 @@ class CoursesController < ApplicationController
300300 include CustomSidebarLinksHelper
301301 include SyllabusHelper
302302
303- before_filter :require_user , :only => [ :index , :activity_stream , :activity_stream_summary , :effective_due_dates , :offline_web_exports ]
303+ before_filter :require_user , :only => [ :index , :activity_stream , :activity_stream_summary , :effective_due_dates , :offline_web_exports , :start_offline_web_export ]
304304 before_filter :require_user_or_observer , :only => [ :user_index ]
305- before_filter :require_context , :only => [ :roster , :locks , :create_file , :ping , :effective_due_dates , :offline_web_exports ]
305+ before_filter :require_context , :only => [ :roster , :locks , :create_file , :ping , :effective_due_dates , :offline_web_exports , :start_offline_web_export ]
306306 skip_after_filter :update_enrollment_last_activity_at , only : [ :enrollment_invitation , :activity_stream_summary ]
307307
308308 include Api ::V1 ::Course
@@ -2463,6 +2463,27 @@ def effective_due_dates
24632463 ] )
24642464 end
24652465
2466+ # @API Permissions
2467+ # Returns permission information for provided course & current_user
2468+ #
2469+ # @argument permissions[] [String]
2470+ # List of permissions to check against authenticated user
2471+ #
2472+ # @example_request
2473+ # curl https://<canvas>/api/v1/courses/<course_id>/permissions \
2474+ # -H 'Authorization: Bearer <token>' \
2475+ # -d 'permissions[]=manage_grades'
2476+ # -d 'permissions[]=send_messages'
2477+ #
2478+ # @example_response
2479+ # {'manage_grades': 'false', 'send_messages': 'true'}
2480+ def permissions
2481+ get_context
2482+ return unless authorized_action ( @context , @current_user , :read )
2483+ permissions = Array ( params [ :permissions ] ) . map ( &:to_sym )
2484+ render json : @context . rights_status ( @current_user , session , *permissions )
2485+ end
2486+
24662487 def student_view
24672488 get_context
24682489 if authorized_action ( @context , @current_user , :use_student_view )
@@ -2735,8 +2756,6 @@ def can_change_group_weighting_scheme?
27352756 def offline_web_exports
27362757 return render status : 404 , template : 'shared/errors/404_message' unless @context . allow_web_export_download?
27372758 if authorized_action ( WebZipExport . new ( course : @context ) , @current_user , :create )
2738- @service = EpubExports ::CreateService . new ( @context , @current_user , :web_zip_export )
2739- @service . save
27402759 title = t ( 'Course Content Downloads' )
27412760 @page_title = title
27422761 add_crumb ( title )
@@ -2745,6 +2764,16 @@ def offline_web_exports
27452764 render :text => '<div id="course-webzip-export-app"></div>' . html_safe , :layout => true
27462765 end
27472766 end
2767+
2768+ def start_offline_web_export
2769+ return render status : 404 , template : 'shared/errors/404_message' unless @context . allow_web_export_download?
2770+ if authorized_action ( WebZipExport . new ( course : @context ) , @current_user , :create )
2771+ @service = EpubExports ::CreateService . new ( @context , @current_user , :web_zip_export )
2772+ @service . save
2773+ redirect_to context_url ( @context , :context_offline_web_exports_url )
2774+ end
2775+ end
2776+
27482777 private
27492778
27502779 def effective_due_dates_params
0 commit comments