added intervention controller and stuff
This commit is contained in:
55
app/controllers/interventions_controller.rb
Normal file
55
app/controllers/interventions_controller.rb
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
class InterventionsController < ApplicationController
|
||||||
|
include CommonBehavior
|
||||||
|
|
||||||
|
before_action :set_intervention, only: MEMBER_ACTIONS
|
||||||
|
|
||||||
|
def authorize!
|
||||||
|
authorize(@intervention || @interventions)
|
||||||
|
end
|
||||||
|
private :authorize!
|
||||||
|
|
||||||
|
def create
|
||||||
|
#@intervention = Intervention.new(intervention_params)
|
||||||
|
#authorize!
|
||||||
|
#create_and_respond(object: @intervention)
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
destroy_and_respond(object: @intervention)
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def intervention_params
|
||||||
|
params[:intervention].permit(:name)
|
||||||
|
end
|
||||||
|
private :intervention_params
|
||||||
|
|
||||||
|
def index
|
||||||
|
@interventions = Intervention.all.paginate(page: params[:page])
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
#@intervention = Intervention.new
|
||||||
|
#authorize!
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_intervention
|
||||||
|
@intervention = Intervention.find(params[:id])
|
||||||
|
authorize!
|
||||||
|
end
|
||||||
|
private :set_intervention
|
||||||
|
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
update_and_respond(object: @intervention, params: intervention_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
name
|
||||||
|
end
|
||||||
|
end
|
@ -1,15 +1,16 @@
|
|||||||
class Intervention < ActiveRecord::Base
|
class Intervention < ActiveRecord::Base
|
||||||
|
|
||||||
NAME = %w(overallSlower longSession syntaxErrors videoNotWatched)
|
|
||||||
|
|
||||||
has_many :user_exercise_interventions
|
has_many :user_exercise_interventions
|
||||||
has_many :users, through: :user_exercise_interventions, source_type: "ExternalUser"
|
has_many :users, through: :user_exercise_interventions, source_type: "ExternalUser"
|
||||||
#belongs_to :user, polymorphic: true
|
|
||||||
#belongs_to :external_users, source: :user, source_type: ExternalUser
|
|
||||||
#belongs_to :internal_users, source: :user, source_type: InternalUser, through: :user_interventions
|
|
||||||
# alias_method :users, :external_users
|
|
||||||
#has_many :exercises, through: :user_interventions
|
|
||||||
|
|
||||||
validates :name, inclusion: {in: NAME}
|
def to_s
|
||||||
|
name
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.createDefaultInterventions
|
||||||
|
%w(BreakIntervention QuestionIntervention).each do |name|
|
||||||
|
Intervention.find_or_create_by(name: name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
34
app/policies/intervention_policy.rb
Normal file
34
app/policies/intervention_policy.rb
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
class InterventionPolicy < AdminOrAuthorPolicy
|
||||||
|
def author?
|
||||||
|
@user == @record.author
|
||||||
|
end
|
||||||
|
private :author?
|
||||||
|
|
||||||
|
def batch_update?
|
||||||
|
admin?
|
||||||
|
end
|
||||||
|
|
||||||
|
def show?
|
||||||
|
@user.internal_user?
|
||||||
|
end
|
||||||
|
|
||||||
|
[:clone?, :destroy?, :edit?, :update?].each do |action|
|
||||||
|
define_method(action) { admin? || author?}
|
||||||
|
end
|
||||||
|
|
||||||
|
[:reload?].each do |action|
|
||||||
|
define_method(action) { everyone }
|
||||||
|
end
|
||||||
|
|
||||||
|
class Scope < Scope
|
||||||
|
def resolve
|
||||||
|
if @user.admin?
|
||||||
|
@scope.all
|
||||||
|
elsif @user.internal_user?
|
||||||
|
@scope.where('user_id = ? OR public = TRUE', @user.id)
|
||||||
|
else
|
||||||
|
@scope.none
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
6
app/views/interventions/_form.html.slim
Normal file
6
app/views/interventions/_form.html.slim
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
= form_for(@intervention) do |f|
|
||||||
|
= render('shared/form_errors', object: @intervention)
|
||||||
|
.form-group
|
||||||
|
= f.label(:name)
|
||||||
|
= f.text_field(:name, class: 'form-control', required: true)
|
||||||
|
.actions = render('shared/submit_button', f: f, object: @intervention)
|
14
app/views/interventions/index.html.slim
Normal file
14
app/views/interventions/index.html.slim
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
h1 = Intervention.model_name.human(count: 2)
|
||||||
|
|
||||||
|
.table-responsive
|
||||||
|
table.table
|
||||||
|
thead
|
||||||
|
tr
|
||||||
|
th = t('activerecord.attributes.intervention.name')
|
||||||
|
tbody
|
||||||
|
- @interventions.each do |intervention|
|
||||||
|
tr
|
||||||
|
td = intervention.name
|
||||||
|
td = link_to(t('shared.show'), intervention)
|
||||||
|
|
||||||
|
= render('shared/pagination', collection: @interventions)
|
4
app/views/interventions/show.html.slim
Normal file
4
app/views/interventions/show.html.slim
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
h1
|
||||||
|
= @intervention.name
|
||||||
|
|
||||||
|
= row(label: 'intervention.name', value: @intervention.name)
|
@ -75,6 +75,8 @@ de:
|
|||||||
message: Nachricht
|
message: Nachricht
|
||||||
name: Name
|
name: Name
|
||||||
regular_expression: Regulärer Ausdruck
|
regular_expression: Regulärer Ausdruck
|
||||||
|
intervention:
|
||||||
|
name: Name
|
||||||
internal_user:
|
internal_user:
|
||||||
activated: Aktiviert
|
activated: Aktiviert
|
||||||
consumer: Konsument
|
consumer: Konsument
|
||||||
|
@ -96,6 +96,8 @@ en:
|
|||||||
message: Message
|
message: Message
|
||||||
name: Name
|
name: Name
|
||||||
regular_expression: Regular Expression
|
regular_expression: Regular Expression
|
||||||
|
intervention:
|
||||||
|
name: Name
|
||||||
internal_user:
|
internal_user:
|
||||||
activated: Activated
|
activated: Activated
|
||||||
consumer: Consumer
|
consumer: Consumer
|
||||||
|
@ -61,6 +61,7 @@ Rails.application.routes.draw do
|
|||||||
post :clone
|
post :clone
|
||||||
get :implement
|
get :implement
|
||||||
get :working_times
|
get :working_times
|
||||||
|
post :intervention
|
||||||
get :statistics
|
get :statistics
|
||||||
get :reload
|
get :reload
|
||||||
post :submit
|
post :submit
|
||||||
@ -83,6 +84,14 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :interventions do
|
||||||
|
member do
|
||||||
|
post :clone
|
||||||
|
get :reload
|
||||||
|
post :submit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :external_users, only: [:index, :show], concerns: :statistics do
|
resources :external_users, only: [:index, :show], concerns: :statistics do
|
||||||
resources :exercises, concerns: :statistics
|
resources :exercises, concerns: :statistics
|
||||||
end
|
end
|
||||||
|
@ -4,6 +4,7 @@ class CreateInterventions < ActiveRecord::Migration
|
|||||||
t.belongs_to :user, polymorphic: true
|
t.belongs_to :user, polymorphic: true
|
||||||
t.belongs_to :exercise
|
t.belongs_to :exercise
|
||||||
t.belongs_to :intervention
|
t.belongs_to :intervention
|
||||||
|
t.integer :accumulated_worktime_s
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -12,5 +13,10 @@ class CreateInterventions < ActiveRecord::Migration
|
|||||||
t.text :markup
|
t.text :markup
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Intervention.createDefaultInterventions
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user