diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb
index c82b9a385..a843e9d9b 100644
--- a/app/controllers/poll_controller.rb
+++ b/app/controllers/poll_controller.rb
@@ -1,5 +1,5 @@
class PollController < ApplicationController
- before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question,:commit_poll]
+ before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question,:commit_poll,:commit_answer]
before_filter :find_container, :only => [:new,:create, :index]
before_filter :is_member_of_course, :only => [:index,:show]
before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy]
@@ -19,10 +19,16 @@ class PollController < ApplicationController
def show
@poll = Poll.find params[:id]
- poll_questions = @poll.poll_questions
- @poll_questions = paginateHelper poll_questions,3 #分页
- respond_to do |format|
- format.html {render :layout => 'base_courses'}
+ #已提交问卷的用户不能再访问该界面
+ if has_commit_poll?(@poll.id,User.current.id) && (!User.current.admin?)
+ render_403
+ else
+ @can_edit_poll = (!has_commit_poll?(@poll.id,User.current.id)) || User.current.admin?
+ poll_questions = @poll.poll_questions
+ @poll_questions = paginateHelper poll_questions,3 #分页
+ respond_to do |format|
+ format.html {render :layout => 'base_courses'}
+ end
end
end
@@ -165,6 +171,10 @@ class PollController < ApplicationController
#提交答案
def commit_answer
pq = PollQuestion.find(params[:poll_question_id])
+ if has_commit_poll?(@poll.id,User.current.id) && (!User.current.admin?)
+ render :text => 'failure'
+ return
+ end
if pq.question_type == 1
#单选题
pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id)
@@ -212,15 +222,8 @@ class PollController < ApplicationController
render :text => "failure"
end
else
-
+ render :text => "failure"
end
-
-
- #respond_to do |format|
- # format.js
- # format.json
- #end
-
end
#提交问卷
@@ -232,9 +235,12 @@ class PollController < ApplicationController
pu.poll_id = @poll.id
if pu.save
#redirect_to poll_index_path(:polls_group_id => @course.id,:polls_type => 'Course')
+ @status = 0 #提交成功
+ else
+ @status = 2 #未知错误
end
else
-
+ @status = 1 #有未做得必答题
end
respond_to do |format|
format.js
diff --git a/app/helpers/poll_helper.rb b/app/helpers/poll_helper.rb
index 1c9ecd40f..7816d8e37 100644
--- a/app/helpers/poll_helper.rb
+++ b/app/helpers/poll_helper.rb
@@ -37,4 +37,14 @@ module PollHelper
pv.vote_text
end
end
+
+ #判断用户是否已经提交了问卷
+ def has_commit_poll?(poll_id,user_id)
+ pu = PollUser.find_by_poll_id_and_user_id(poll_id,user_id)
+ if pu.nil?
+ false
+ else
+ true
+ end
+ end
end
\ No newline at end of file
diff --git a/app/views/poll/_commit_alert.html.erb b/app/views/poll/_commit_alert.html.erb
index 007ae5ba7..76bbda416 100644
--- a/app/views/poll/_commit_alert.html.erb
+++ b/app/views/poll/_commit_alert.html.erb
@@ -1,3 +1,12 @@
-
- shaksdkfdks
+
+ <% if status == 0 %>
+
提交成功!
+ <%= link_to "确定", poll_index_path(:polls_group_id => @course.id,:polls_type => 'Course'),:class => 'commit'%>
+ <% elsif status == 1 %>
+ 您还有尚未作答的题目请完成后在提交!
+ <%= link_to "确定", "javascript:void(0)",:onclick => 'hidden_atert_form();',:class => 'commit'%>
+ <% else %>
+ 发生未知错误,请检查您的网络。
+ <%= link_to "确定", "javascript:void(0)",:onclick => 'hidden_atert_form();',:class => 'commit'%>
+ <% end %>
diff --git a/app/views/poll/commit_poll.js.erb b/app/views/poll/commit_poll.js.erb
index e0b9960b9..f7a1b56fe 100644
--- a/app/views/poll/commit_poll.js.erb
+++ b/app/views/poll/commit_poll.js.erb
@@ -1,10 +1,9 @@
-$('#ajax-modal').html('<%= escape_javascript(render :partial => 'commit_alert') %>');
-showModal('ajax-modal', '513px');
-$('#ajax-modal').css('height','200px');
+$('#ajax-modal').html('<%= escape_javascript(render :partial => 'commit_alert',:locals => {:status => @status}) %>');
+showModal('ajax-modal', '400px');
+$('#ajax-modal').css('height','100px');
$('#ajax-modal').siblings().remove();
-$('#ajax-modal').before("
" +
+$('#ajax-modal').before("" +
"
");
$('#ajax-modal').parent().removeClass("alert_praise");
-$('#ajax-modal').parent().css("top","50%").css("left","20%");
-$('#ajax-modal').parent().css("position","absolute");
+$('#ajax-modal').parent().css("top","").css("left","");
$('#ajax-modal').parent().addClass("alert_box");
\ No newline at end of file
diff --git a/app/views/poll/index.html.erb b/app/views/poll/index.html.erb
index 9d0bd5549..e45bdfabb 100644
--- a/app/views/poll/index.html.erb
+++ b/app/views/poll/index.html.erb
@@ -13,7 +13,11 @@
<% @polls.each do |poll|%>
-
- <%= link_to poll.polls_name, poll_path(poll.id), :class => "polls_title fl" %>
+ <% if has_commit_poll?(poll.id ,User.current) %>
+ <%= poll.polls_name %>
+ <% else %>
+ <%= link_to poll.polls_name, poll_path(poll.id), :class => "polls_title fl" %>
+ <% end %>
-
<%if @is_teacher%>
diff --git a/app/views/poll/show.html.erb b/app/views/poll/show.html.erb
index 2db65ec97..dca45c25c 100644
--- a/app/views/poll/show.html.erb
+++ b/app/views/poll/show.html.erb
@@ -4,6 +4,21 @@
问卷调查_问卷页面
<%= stylesheet_link_tag 'polls', :media => 'all' %>
+
- <%= radio_button "poll_vote","poll_answer_id",pa.id,:class=>"ur_radio",:onclick =>"click_#{pa.id}(this);return false;",:checked => answer_be_selected?(pa,User.current) %>
+ <%= radio_button "poll_vote","poll_answer_id",pa.id,:class=>"ur_radio",:onclick =>"click_#{pa.id}(this);return false;",:checked => answer_be_selected?(pa,User.current),:disabled => !@can_edit_poll %>
<%= pa.answer_text %>
@@ -115,7 +130,7 @@
});
}
- >
+ <%= @can_edit_poll?"":"disabled=disabled" %> >
<%= pa.answer_text %>
@@ -156,7 +171,7 @@
}
-
+ >
<% elsif pq.question_type == 4 %>
@@ -188,7 +203,7 @@
});
}
- <%= get_anwser_vote_text(pq.id,User.current.id) %>
+ " onblur="onblur_<%= pq.id %>(this);"><%= get_anwser_vote_text(pq.id,User.current.id) %>
diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog.css
index 4c89f602d..e663e3c5e 100644
--- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog.css
+++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog.css
@@ -1,160 +1,160 @@
-.overlay_mac_os_x_dialog {
- background-color: #FF7224;
- filter:alpha(opacity=60);
- -moz-opacity: 0.6;
- opacity: 0.6;
-}
-
-.mac_os_x_dialog_nw {
- background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
- width:16px;
- height:16px;
-}
-
-.mac_os_x_dialog_n {
- background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
- height:18px;
-}
-
-.mac_os_x_dialog_ne {
- background: transparent url(mac_os_x_dialog/R.png) repeat-y top left;
- width:16px;
- height:16px;
-}
-
-.mac_os_x_dialog_w {
- background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
- width:16px;
-}
-
-.mac_os_x_dialog_e {
- background: transparent url(mac_os_x_dialog/R.png) repeat-y top right;
- width:16px;
-}
-
-.mac_os_x_dialog_sw {
- background: transparent url(mac_os_x_dialog/BL.png) no-repeat 0 0;
- width:31px;
- height:40px;
-}
-
-.mac_os_x_dialog_s {
- background: transparent url(mac_os_x_dialog/B.png) repeat-x 0 0;
- height:40px;
-}
-
-.mac_os_x_dialog_se, .mac_os_x_dialog_sizer {
- background: transparent url(mac_os_x_dialog/BR.png) no-repeat 0 0;
- width:31px;
- height:40px;
-}
-
-.mac_os_x_dialog_sizer {
- cursor:se-resize;
-}
-
-.mac_os_x_dialog_close {
- width: 19px;
- height: 19px;
- background: transparent url(mac_os_x_dialog/close.gif) no-repeat 0 0;
- position:absolute;
- top:12px;
- left:25px;
- cursor:pointer;
- z-index:1000;
-}
-
-.mac_os_x_dialog_minimize {
- width: 19px;
- height: 19px;
- background: transparent url(mac_os_x_dialog/minimize.gif) no-repeat 0 0;
- position:absolute;
- top:12px;
- left:45px;
- cursor:pointer;
- z-index:1000;
-}
-
-.mac_os_x_dialog_maximize {
- width: 19px;
- height: 19px;
- background: transparent url(mac_os_x_dialog/maximize.gif) no-repeat 0 0;
- position:absolute;
- top:12px;
- left:65px;
- cursor:pointer;
- z-index:1000;
-}
-
-.mac_os_x_dialog_title {
- float:left;
- height:14px;
- font-family: Tahoma, Arial, sans-serif;
- font-size:12px;
- text-align:center;
- margin-top:6px;
- width:100%;
- color:#000;
-}
-
-.mac_os_x_dialog_content {
- overflow:auto;
- color: #222;
- font-family: Tahoma, Arial, sans-serif;
- font-size: 10px;
- background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
-}
-
-.mac_os_x_dialog_buttons {
- text-align: center;
-}
-/* FOR IE */
-* html .mac_os_x_dialog_nw {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
-}
-
-
-* html .mac_os_x_dialog_ne {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
-}
-
-* html .mac_os_x_dialog_w {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
-}
-
-* html .mac_os_x_dialog_e {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
-}
-
-* html .mac_os_x_dialog_sw {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BL.png", sizingMethod="crop");
-}
-
-* html .mac_os_x_dialog_s {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/B.png", sizingMethod="scale");
-}
-
-* html .mac_os_x_dialog_se {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
-}
-
-* html .mac_os_x_dialog_sizer {
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
-}
-
+.overlay_mac_os_x_dialog {
+ background-color: #FF7224;
+ filter:alpha(opacity=60);
+ -moz-opacity: 0.6;
+ opacity: 0.6;
+}
+
+.mac_os_x_dialog_nw {
+ background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
+ width:16px;
+ height:16px;
+}
+
+.mac_os_x_dialog_n {
+ background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
+ height:18px;
+}
+
+.mac_os_x_dialog_ne {
+ background: transparent url(mac_os_x_dialog/R.png) repeat-y top left;
+ width:16px;
+ height:16px;
+}
+
+.mac_os_x_dialog_w {
+ background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
+ width:16px;
+}
+
+.mac_os_x_dialog_e {
+ background: transparent url(mac_os_x_dialog/R.png) repeat-y top right;
+ width:16px;
+}
+
+.mac_os_x_dialog_sw {
+ background: transparent url(mac_os_x_dialog/BL.png) no-repeat 0 0;
+ width:31px;
+ height:40px;
+}
+
+.mac_os_x_dialog_s {
+ background: transparent url(mac_os_x_dialog/B.png) repeat-x 0 0;
+ height:40px;
+}
+
+.mac_os_x_dialog_se, .mac_os_x_dialog_sizer {
+ background: transparent url(mac_os_x_dialog/BR.png) no-repeat 0 0;
+ width:31px;
+ height:40px;
+}
+
+.mac_os_x_dialog_sizer {
+ cursor:se-resize;
+}
+
+.mac_os_x_dialog_close {
+ width: 19px;
+ height: 19px;
+ background: transparent url(mac_os_x_dialog/close.gif) no-repeat 0 0;
+ position:absolute;
+ top:12px;
+ left:25px;
+ cursor:pointer;
+ z-index:1000;
+}
+
+.mac_os_x_dialog_minimize {
+ width: 19px;
+ height: 19px;
+ background: transparent url(mac_os_x_dialog/minimize.gif) no-repeat 0 0;
+ position:absolute;
+ top:12px;
+ left:45px;
+ cursor:pointer;
+ z-index:1000;
+}
+
+.mac_os_x_dialog_maximize {
+ width: 19px;
+ height: 19px;
+ background: transparent url(mac_os_x_dialog/maximize.gif) no-repeat 0 0;
+ position:absolute;
+ top:12px;
+ left:65px;
+ cursor:pointer;
+ z-index:1000;
+}
+
+.mac_os_x_dialog_title {
+ float:left;
+ height:14px;
+ font-family: Tahoma, Arial, sans-serif;
+ font-size:12px;
+ text-align:center;
+ margin-top:6px;
+ width:100%;
+ color:#000;
+}
+
+.mac_os_x_dialog_content {
+ overflow:auto;
+ color: #222;
+ font-family: Tahoma, Arial, sans-serif;
+ font-size: 10px;
+ background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
+}
+
+.mac_os_x_dialog_buttons {
+ text-align: center;
+}
+/* FOR IE */
+* html .mac_os_x_dialog_nw {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
+}
+
+
+* html .mac_os_x_dialog_ne {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
+}
+
+* html .mac_os_x_dialog_w {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
+}
+
+* html .mac_os_x_dialog_e {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
+}
+
+* html .mac_os_x_dialog_sw {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BL.png", sizingMethod="crop");
+}
+
+* html .mac_os_x_dialog_s {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/B.png", sizingMethod="scale");
+}
+
+* html .mac_os_x_dialog_se {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
+}
+
+* html .mac_os_x_dialog_sizer {
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
+}
+
diff --git a/public/stylesheets/polls.css b/public/stylesheets/polls.css
index b13cb1da2..e89e50be4 100644
--- a/public/stylesheets/polls.css
+++ b/public/stylesheets/polls.css
@@ -27,6 +27,7 @@ a.newbtn{ float:right; display:block; width:80px; height:30px; background:#64bdd
a:hover.newbtn{ background:#55a1b9; text-decoration:none;}
.polls_list ul{ padding-left:10px; border-bottom:1px dashed #c9c9c9; height:32px; padding-top:8px;}
a.polls_title{ font-weight:bold; color:#3e6d8e;}
+.polls_title{ font-weight:bold; color:#3e6d8e;}
a.pollsbtn{ display:block; width:66px; height:22px; text-align:center; border:1px solid #64bdd9; color:#64bdd9;}
a:hover.pollsbtn{ background:#64bdd9; color:#fff; text-decoration:none;}
.polls_date{ color:#666666;}