rfc can now be solved.
show.html still needs to be finished
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
class RequestForCommentsController < ApplicationController
|
||||
before_action :set_request_for_comment, only: [:show, :edit, :update, :destroy]
|
||||
before_action :set_request_for_comment, only: [:show, :edit, :update, :destroy, :mark_as_solved]
|
||||
|
||||
skip_after_action :verify_authorized
|
||||
|
||||
@ -20,6 +20,18 @@ class RequestForCommentsController < ApplicationController
|
||||
render 'index'
|
||||
end
|
||||
|
||||
def mark_as_solved
|
||||
authorize!
|
||||
@request_for_comment.solved = true
|
||||
respond_to do |format|
|
||||
if @request_for_comment.save
|
||||
format.json { render :show, status: :ok, location: @request_for_comment }
|
||||
else
|
||||
format.json { render json: @request_for_comment.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# GET /request_for_comments/1
|
||||
# GET /request_for_comments/1.json
|
||||
def show
|
||||
@ -70,6 +82,6 @@ class RequestForCommentsController < ApplicationController
|
||||
|
||||
# Never trust parameters from the scary internet, only allow the white list through.
|
||||
def request_for_comment_params
|
||||
params.require(:request_for_comment).permit(:exercise_id, :file_id, :question, :requested_at).merge(user_id: current_user.id, user_type: current_user.class.name)
|
||||
params.require(:request_for_comment).permit(:exercise_id, :file_id, :question, :requested_at, :solved).merge(user_id: current_user.id, user_type: current_user.class.name)
|
||||
end
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
class RequestForComment < ActiveRecord::Base
|
||||
include Creation
|
||||
belongs_to :exercise
|
||||
belongs_to :file, class_name: 'CodeOcean::File'
|
||||
belongs_to :user, polymorphic: true
|
||||
|
||||
before_create :set_requested_timestamp
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
class RequestForCommentPolicy < ApplicationPolicy
|
||||
|
||||
def author?
|
||||
@user == @record.author
|
||||
end
|
||||
private :author?
|
||||
|
||||
def create?
|
||||
everyone
|
||||
@ -13,6 +16,10 @@ class RequestForCommentPolicy < ApplicationPolicy
|
||||
define_method(action) { admin? }
|
||||
end
|
||||
|
||||
def mark_as_solved?
|
||||
admin? || author?
|
||||
end
|
||||
|
||||
def edit?
|
||||
admin?
|
||||
end
|
||||
|
@ -21,6 +21,11 @@
|
||||
<%= t('request_for_comments.no_question') %>
|
||||
<% end %>
|
||||
</h5>
|
||||
<% if (policy(@request_for_comment).mark_as_solved? and not @request_for_comment.solved?) %>
|
||||
<button class="btn btn-default" id="mark-as-solved-button">Bla</button>
|
||||
<% else %>
|
||||
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
@ -37,6 +42,22 @@ also, all settings from the rails model needed for the editor configuration in t
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var solvedButton = $('#mark-as-solved-button');
|
||||
|
||||
solvedButton.on('click', function(event){
|
||||
var jqrequest = $.ajax({
|
||||
dataType: 'json',
|
||||
method: 'GET',
|
||||
url: location + '/mark_as_solved'
|
||||
});
|
||||
|
||||
jqrequest.done(function(response){
|
||||
if(response.solved){
|
||||
solvedButton.hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// set file paths for ace
|
||||
var ACE_FILES_PATH = '/assets/ace/';
|
||||
_.each(['modePath', 'themePath', 'workerPath'], function(attribute) {
|
||||
|
@ -1 +1 @@
|
||||
json.extract! @request_for_comment, :id, :user_id, :exercise_id, :file_id, :requested_at, :created_at, :updated_at, :user_type
|
||||
json.extract! @request_for_comment, :id, :user_id, :exercise_id, :file_id, :requested_at, :created_at, :updated_at, :user_type, :solved
|
||||
|
@ -2,13 +2,17 @@ FILENAME_REGEXP = /[\w\.]+/ unless Kernel.const_defined?(:FILENAME_REGEXP)
|
||||
|
||||
Rails.application.routes.draw do
|
||||
resources :code_harbor_links
|
||||
resources :request_for_comments
|
||||
get '/my_request_for_comments', as: 'my_request_for_comments', to: 'request_for_comments#get_my_comment_requests'
|
||||
resources :request_for_comments do
|
||||
member do
|
||||
get :mark_as_solved
|
||||
end
|
||||
end
|
||||
resources :comments, except: [:destroy] do
|
||||
collection do
|
||||
delete :destroy
|
||||
end
|
||||
end
|
||||
get '/my_request_for_comments', as: 'my_request_for_comments', to: 'request_for_comments#get_my_comment_requests'
|
||||
|
||||
delete '/comment_by_id', to: 'comments#destroy_by_id'
|
||||
put '/comments', to: 'comments#update'
|
||||
|
@ -0,0 +1,5 @@
|
||||
class AddSolvedToRequestForComments < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :request_for_comments, :solved, :boolean
|
||||
end
|
||||
end
|
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20160512131539) do
|
||||
ActiveRecord::Schema.define(version: 20160624130951) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@ -190,6 +190,7 @@ ActiveRecord::Schema.define(version: 20160512131539) do
|
||||
t.datetime "updated_at"
|
||||
t.string "user_type"
|
||||
t.text "question"
|
||||
t.boolean "solved"
|
||||
end
|
||||
|
||||
create_table "submissions", force: true do |t|
|
||||
|
Reference in New Issue
Block a user