Add Request for Comments view per exercise, adopt policies for teachers
This commit is contained in:
@ -7,7 +7,7 @@ class ExercisesController < ApplicationController
|
|||||||
|
|
||||||
before_action :handle_file_uploads, only: [:create, :update]
|
before_action :handle_file_uploads, only: [:create, :update]
|
||||||
before_action :set_execution_environments, only: [:create, :edit, :new, :update]
|
before_action :set_execution_environments, only: [:create, :edit, :new, :update]
|
||||||
before_action :set_exercise_and_authorize, only: MEMBER_ACTIONS + [:clone, :implement, :working_times, :intervention, :search, :run, :statistics, :submit, :reload, :feedback, :study_group_dashboard]
|
before_action :set_exercise_and_authorize, only: MEMBER_ACTIONS + [:clone, :implement, :working_times, :intervention, :search, :run, :statistics, :submit, :reload, :feedback, :requests_for_comments, :study_group_dashboard]
|
||||||
before_action :set_external_user_and_authorize, only: [:statistics]
|
before_action :set_external_user_and_authorize, only: [:statistics]
|
||||||
before_action :set_file_types, only: [:create, :edit, :new, :update]
|
before_action :set_file_types, only: [:create, :edit, :new, :update]
|
||||||
before_action :set_course_token, only: [:implement]
|
before_action :set_course_token, only: [:implement]
|
||||||
@ -110,6 +110,18 @@ class ExercisesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def requests_for_comments
|
||||||
|
authorize!
|
||||||
|
@search = RequestForComment
|
||||||
|
.with_last_activity
|
||||||
|
.where(exercise: @exercise)
|
||||||
|
.ransack(params[:q])
|
||||||
|
@request_for_comments = @search.result
|
||||||
|
.order('last_comment DESC')
|
||||||
|
.paginate(page: params[:page])
|
||||||
|
render 'request_for_comments/index'
|
||||||
|
end
|
||||||
|
|
||||||
def import_proforma_xml
|
def import_proforma_xml
|
||||||
begin
|
begin
|
||||||
user = user_for_oauth2_request()
|
user = user_for_oauth2_request()
|
||||||
|
@ -3,11 +3,11 @@ class ExercisePolicy < AdminOrAuthorPolicy
|
|||||||
admin?
|
admin?
|
||||||
end
|
end
|
||||||
|
|
||||||
[:show?, :study_group_dashboard?].each do |action|
|
[:show?, :study_group_dashboard?, :feedback?, :requests_for_comments?].each do |action|
|
||||||
define_method(action) { admin? || teacher? }
|
define_method(action) { admin? || teacher? }
|
||||||
end
|
end
|
||||||
|
|
||||||
[:clone?, :destroy?, :edit?, :statistics?, :update?, :feedback?].each do |action|
|
[:clone?, :destroy?, :edit?, :statistics?, :update?].each do |action|
|
||||||
define_method(action) { admin? || author? }
|
define_method(action) { admin? || author? }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ h1 = Exercise.model_name.human(count: 2)
|
|||||||
ul.dropdown-menu.float-right role="menu"
|
ul.dropdown-menu.float-right role="menu"
|
||||||
li = link_to(t('shared.show'), exercise, 'data-turbolinks' => "false", class: 'dropdown-item') if policy(exercise).show?
|
li = link_to(t('shared.show'), exercise, 'data-turbolinks' => "false", class: 'dropdown-item') if policy(exercise).show?
|
||||||
li = link_to(t('activerecord.models.user_exercise_feedback.other'), feedback_exercise_path(exercise), class: 'dropdown-item') if policy(exercise).feedback?
|
li = link_to(t('activerecord.models.user_exercise_feedback.other'), feedback_exercise_path(exercise), class: 'dropdown-item') if policy(exercise).feedback?
|
||||||
|
li = link_to(t('activerecord.models.request_for_comment.other'), requests_for_comments_exercise_path(exercise), class: 'dropdown-item') if policy(exercise).requests_for_comments?
|
||||||
li = link_to(t('shared.destroy'), exercise, data: {confirm: t('shared.confirm_destroy')}, method: :delete, class: 'dropdown-item') if policy(exercise).destroy?
|
li = link_to(t('shared.destroy'), exercise, data: {confirm: t('shared.confirm_destroy')}, method: :delete, class: 'dropdown-item') if policy(exercise).destroy?
|
||||||
li = link_to(t('.clone'), clone_exercise_path(exercise), data: {confirm: t('shared.confirm_destroy')}, method: :post, class: 'dropdown-item') if policy(exercise).clone?
|
li = link_to(t('.clone'), clone_exercise_path(exercise), data: {confirm: t('shared.confirm_destroy')}, method: :post, class: 'dropdown-item') if policy(exercise).clone?
|
||||||
|
|
||||||
|
@ -353,6 +353,7 @@ de:
|
|||||||
implement: Implementieren
|
implement: Implementieren
|
||||||
test_files: Test-Dateien
|
test_files: Test-Dateien
|
||||||
feedback: Feedback
|
feedback: Feedback
|
||||||
|
requests_for_comments: Kommentaranfragen
|
||||||
study_group_dashboard: Live Dashboard
|
study_group_dashboard: Live Dashboard
|
||||||
statistics:
|
statistics:
|
||||||
average_score: Durchschnittliche Punktzahl
|
average_score: Durchschnittliche Punktzahl
|
||||||
|
@ -353,6 +353,7 @@ en:
|
|||||||
implement: Implement
|
implement: Implement
|
||||||
test_files: Test Files
|
test_files: Test Files
|
||||||
feedback: Feedback
|
feedback: Feedback
|
||||||
|
requests_for_comments: Requests for Comments
|
||||||
study_group_dashboard: Live Dashboard
|
study_group_dashboard: Live Dashboard
|
||||||
statistics:
|
statistics:
|
||||||
average_score: Average Score
|
average_score: Average Score
|
||||||
|
@ -81,6 +81,7 @@ Rails.application.routes.draw do
|
|||||||
post :search
|
post :search
|
||||||
get :statistics
|
get :statistics
|
||||||
get :feedback
|
get :feedback
|
||||||
|
get :requests_for_comments
|
||||||
get :reload
|
get :reload
|
||||||
post :submit
|
post :submit
|
||||||
get 'study_group_dashboard/:study_group_id', to: 'exercises#study_group_dashboard'
|
get 'study_group_dashboard/:study_group_id', to: 'exercises#study_group_dashboard'
|
||||||
|
Reference in New Issue
Block a user