简答题答题

This commit is contained in:
z9hang 2015-01-15 17:36:30 +08:00
parent d684acf527
commit 77dc9607df
6 changed files with 122 additions and 8 deletions

View File

@ -1,5 +1,5 @@
class PollController < ApplicationController class PollController < ApplicationController
before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question] before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question,:commit_poll]
before_filter :find_container, :only => [:new,:create, :index] before_filter :find_container, :only => [:new,:create, :index]
before_filter :is_member_of_course, :only => [:index,:show] before_filter :is_member_of_course, :only => [:index,:show]
before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy] before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy]
@ -146,8 +146,20 @@ class PollController < ApplicationController
render :text => "failure" render :text => "failure"
end end
end end
elsif pq.question_type == 3 elsif pq.question_type == 3 || pq.question_type == 4
elsif pq.question_type == 4 pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id)
if pv.nil?
pv = PollVote.new
pv.user_id = User.current.id
pv.poll_question_id = params[:poll_question_id]
end
pv.vote_text = params[:vote_text]
if pv.save
render :text => pv.vote_text
else
render :text => "failure"
end
else
end end
@ -159,6 +171,24 @@ class PollController < ApplicationController
end end
#提交问卷
def commit_poll
@uncomplete_question = get_uncomplete_question(@poll)
if @uncomplete_question.count < 1
pu = get_poll_user(@poll.id,User.current.id)
pu.user_id = User.current.id
pu.poll_id = @poll.id
if pu.save
#redirect_to poll_index_path(:polls_group_id => @course.id,:polls_type => 'Course')
end
else
end
respond_to do |format|
format.js
end
end
private private
def find_poll_and_course def find_poll_and_course
@poll = Poll.find params[:id] @poll = Poll.find params[:id]
@ -187,4 +217,25 @@ class PollController < ApplicationController
def is_course_teacher def is_course_teacher
render_403 unless(@course && User.current.allowed_to?(:as_teacher,@course)) render_403 unless(@course && User.current.allowed_to?(:as_teacher,@course))
end end
#获取未完成的题目
def get_uncomplete_question poll
necessary_questions = poll.poll_questions.where("#{PollQuestion.table_name}.is_necessary = 1")
uncomplete_question = []
necessary_questions.each do |question|
if question.poll_votes.nil? || question.poll_votes.count < 1
uncomplete_question << question
end
end
uncomplete_question
end
#PollUser记录用户是否已提交问卷有对应的记录则已提交没有则新建一个
def get_poll_user poll_id,user_id
pu = PollUser.find_by_poll_id_and_user_id(poll_id,user_id)
if pu.nil?
pu = PollUser.new
end
pu
end
end end

View File

@ -27,4 +27,14 @@ module PollHelper
false false
end end
end end
#获取文本题答案
def get_anwser_vote_text(question_id,user_id)
pv = PollVote.find_by_poll_question_id_and_user_id(question_id,user_id)
if pv.nil?
''
else
pv.vote_text
end
end
end end

View File

@ -0,0 +1,3 @@
<div id="popbox">
shaksdkfdks
</div>

View File

@ -0,0 +1,10 @@
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'commit_alert') %>');
showModal('ajax-modal', '513px');
$('#ajax-modal').css('height','200px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<span style='float: right;cursor:pointer;padding-left: 513px;'>" +
"<a href='#' onclick='hidden_atert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
$('#ajax-modal').parent().removeClass("alert_praise");
$('#ajax-modal').parent().css("top","50%").css("left","20%");
$('#ajax-modal').parent().css("position","absolute");
$('#ajax-modal').parent().addClass("alert_box");

View File

@ -4,7 +4,12 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>问卷调查_问卷页面</title> <title>问卷调查_问卷页面</title>
<%= stylesheet_link_tag 'polls', :media => 'all' %> <%= stylesheet_link_tag 'polls', :media => 'all' %>
<%= javascript_heads %> <script type="text/javascript">
function hidden_atert_form(cur_page,cur_type)
{
hideModal($("#popbox"));
}
</script>
</head> </head>
<body> <body>
@ -133,9 +138,27 @@
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="ur_inputs"> <div class="ur_inputs">
<input class="ur_text ur_textbox" type="text" size="" maxlength=""value=""> <script>
function onblur_<%= pq.id %>(obj)
{
$(window).unbind('beforeunload');
$.ajax({
type: "post",
url: "<%= commit_answer_poll_path(@poll) %>",
data: {
poll_question_id: <%= pq.id %> ,
vote_text: obj.value
},
success: function (data) {
// obj.value = data;
}
});
}
</script>
<input class="ur_text ur_textbox" type="text" size="" maxlength="" value="<%= get_anwser_vote_text(pq.id,User.current.id) %>" onblur="onblur_<%= pq.id %>(this);">
</div> </div>
</li><!--当行输入 end--> </li><!--行输入 end-->
<% elsif pq.question_type == 4 %> <% elsif pq.question_type == 4 %>
<!-- 多行文字--> <!-- 多行文字-->
<li class="ur_question_item textarea"> <li class="ur_question_item textarea">
@ -149,7 +172,23 @@
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="ur_inputs"> <div class="ur_inputs">
<textarea class="ur_textbox" rows="5" cols="60"></textarea> <script>
function onblur_<%= pq.id %>(obj)
{
$.ajax({
type: "post",
url: "<%= commit_answer_poll_path(@poll) %>",
data: {
poll_question_id: <%= pq.id %> ,
vote_text: obj.innerHTML
},
success: function (data) {
// obj.value = data;
}
});
}
</script>
<div contenteditable='true' class="ur_textbox" style="min-height: 150px;width: 100%" onblur="onblur_<%= pq.id %>(this);"><%= get_anwser_vote_text(pq.id,User.current.id) %></div>
</div> </div>
</div> </div>
</li><!--多行输入 end--> </li><!--多行输入 end-->
@ -163,7 +202,7 @@
</ul> </ul>
<div class="cl"></div> <div class="cl"></div>
<div class="ur_buttons" style="width: 100px;"> <div class="ur_buttons" style="width: 100px;">
<a href="#" class="ur_button" >提交</a> <%= link_to "提交",commit_poll_poll_path(@poll), :method => :post,:class => "ur_button",:format => 'js',:remote=>true %>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="ur_progress_text">答题已完成 <strong class="ur_progress_number">0%</strong> </div> <div class="ur_progress_text">答题已完成 <strong class="ur_progress_number">0%</strong> </div>

View File

@ -63,6 +63,7 @@ RedmineApp::Application.routes.draw do
get 'statistics_result' get 'statistics_result'
post 'commit_answer' post 'commit_answer'
post 'create_poll_question' post 'create_poll_question'
post 'commit_poll'
end end
end end