scinote-web/app/controllers/experiments_controller.rb

93 lines
2.4 KiB
Ruby
Raw Normal View History

class ExperimentsController < ApplicationController
include PermissionHelper
before_action :set_experiment, except: [:new, :create]
before_action :set_project, only: [:new, :create]
2016-07-28 16:15:58 +08:00
before_action :check_view_permissions, only: [:canvas]
2016-07-28 17:00:56 +08:00
# except parameter could be used but it is not working.
layout :choose_layout
2016-07-28 17:30:34 +08:00
def new
@experiment = Experiment.new
2016-07-28 20:44:44 +08:00
respond_to do |format|
2016-07-29 16:41:08 +08:00
format.json do
render json: {
html: render_to_string(
partial: 'new_modal.html.erb'
)
2016-07-28 20:44:44 +08:00
}
2016-07-29 16:41:08 +08:00
end
2016-07-28 20:44:44 +08:00
end
end
def create
@experiment = Experiment.new(experiment_params)
@experiment.created_by = current_user
2016-07-28 20:44:44 +08:00
@experiment.last_modified_by = current_user
@experiment.project = @project
if @experiment.save
flash[:success] = t('experiments.create.success_flash', experiment: @experiment.name)
2016-07-28 20:44:44 +08:00
# have to change to experiments path
redirect_to root_path
else
flash[:alert] = t('experiments.create.error_flash')
redirect_to :back
end
end
2016-07-28 15:01:44 +08:00
def canvas
@project = @experiment.project
end
def update
@experiment.update_attributes(experiment_params)
@experiment.last_modified_by = current_user
if @experiment.save
flash[:success] = t('experiments.update.success_flash', experiment: @experiment.name)
2016-07-28 20:44:44 +08:00
# have to change to experiments path
redirect_to root_path
else
flash[:alert] = t('experiments.update.error_flash')
redirect_to :back
end
end
def archive_experiment
@experiment.archived = true
@experiment.archived_by = current_user
@experiment.archived_on = DateTime.now
if @experiment.save
flash[:success] = t('experiments.archive.success_flash', experiment: @experiment.name)
2016-07-28 20:44:44 +08:00
# have to change to experiments path
redirect_to root_path
else
flash[:alert] = t('experiments.archive.error_flash')
redirect_to :back
end
end
private
def set_experiment
@experiment = Experiment.find_by_id(params[:id])
2016-07-28 16:15:58 +08:00
render_404 unless @experiment
end
def set_project
2016-07-28 20:44:44 +08:00
@project = Project.find_by_id(params[:project_id])
2016-07-28 16:15:58 +08:00
render_404 unless @project
end
def experiment_params
2016-07-28 20:44:44 +08:00
params.require(:experiment).permit(:name, :description)
end
2016-07-28 17:00:56 +08:00
2016-07-28 16:15:58 +08:00
def check_view_permissions
render_403 unless can_view_experiment(@experiment)
end
2016-07-28 17:00:56 +08:00
def choose_layout
action_name.in?(['index', 'archive']) ? 'main' : 'fluid'
end
end