diff --git a/app/controllers/poll_answer_controller.rb b/app/controllers/poll_answer_controller.rb
new file mode 100644
index 000000000..521f7ed3f
--- /dev/null
+++ b/app/controllers/poll_answer_controller.rb
@@ -0,0 +1,2 @@
+class PollAnswerController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb
new file mode 100644
index 000000000..a21fdb549
--- /dev/null
+++ b/app/controllers/poll_controller.rb
@@ -0,0 +1,2 @@
+class PollController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/controllers/poll_question_controller.rb b/app/controllers/poll_question_controller.rb
new file mode 100644
index 000000000..46a75c0ab
--- /dev/null
+++ b/app/controllers/poll_question_controller.rb
@@ -0,0 +1,2 @@
+class PollQuestionController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/controllers/poll_user_controller.rb b/app/controllers/poll_user_controller.rb
new file mode 100644
index 000000000..0373fe085
--- /dev/null
+++ b/app/controllers/poll_user_controller.rb
@@ -0,0 +1,2 @@
+class PollUserController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/controllers/poll_vote_controller.rb b/app/controllers/poll_vote_controller.rb
new file mode 100644
index 000000000..e77bdc622
--- /dev/null
+++ b/app/controllers/poll_vote_controller.rb
@@ -0,0 +1,2 @@
+class PollVoteController < ApplicationController
+end
\ No newline at end of file
diff --git a/app/models/poll.rb b/app/models/poll.rb
new file mode 100644
index 000000000..803ee6ac6
--- /dev/null
+++ b/app/models/poll.rb
@@ -0,0 +1,9 @@
+class Poll < ActiveRecord::Base
+ #attr_accessible :closed_at, :polls_group_id, :polls_name, :polls_status, :polls_type, :published_at, :user_id
+ include Redmine::SafeAttributes
+
+ belongs_to :user
+ has_many :poll_questions, :dependent => :destroy
+ has_many :poll_users, :dependent => :destroy
+ has_many :users, :through => :poll_users #该文件被哪些用户提交答案过
+end
diff --git a/app/models/poll_answer.rb b/app/models/poll_answer.rb
new file mode 100644
index 000000000..93c75da97
--- /dev/null
+++ b/app/models/poll_answer.rb
@@ -0,0 +1,7 @@
+class PollAnswer < ActiveRecord::Base
+ # attr_accessible :answer_position, :answer_text, :poll_questions_id
+ include Redmine::SafeAttributes
+
+ belongs_to :poll_question
+ has_many :poll_votes, :dependent => :destroy
+end
diff --git a/app/models/poll_question.rb b/app/models/poll_question.rb
new file mode 100644
index 000000000..66dcea67e
--- /dev/null
+++ b/app/models/poll_question.rb
@@ -0,0 +1,8 @@
+class PollQuestion < ActiveRecord::Base
+ # attr_accessible :is_necessary, :polls_id, :question_title, :question_type
+ include Redmine::SafeAttributes
+
+ belongs_to :poll
+ has_many :poll_answers, :dependent => :destroy
+ has_many :poll_votes, :dependent => :destroy
+end
diff --git a/app/models/poll_user.rb b/app/models/poll_user.rb
new file mode 100644
index 000000000..e7a122da9
--- /dev/null
+++ b/app/models/poll_user.rb
@@ -0,0 +1,7 @@
+class PollUser < ActiveRecord::Base
+ # attr_accessible :poll_id, :user_id
+ include Redmine::SafeAttributes
+
+ belongs_to :poll
+ belongs_to :user
+end
diff --git a/app/models/poll_vote.rb b/app/models/poll_vote.rb
new file mode 100644
index 000000000..550563e38
--- /dev/null
+++ b/app/models/poll_vote.rb
@@ -0,0 +1,8 @@
+class PollVote < ActiveRecord::Base
+ # attr_accessible :poll_answers_id, :poll_questions_id, :user_id, :vote_text
+ include Redmine::SafeAttributes
+
+ belongs_to :poll_answer
+ belongs_to :poll_question
+ belongs_to :user
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index e966742f1..735b80762 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -77,6 +77,13 @@ class User < Principal
has_many :homework_attaches, :through => :homework_users
has_many :homework_evaluations
+ #问卷相关关关系
+ has_many :poll_users, :dependent => :destroy
+ has_many :poll_votes, :dependent => :destroy
+ has_many :poll, :dependent => :destroy #用户创建的问卷
+ has_many :answers, :source => :poll, :through => :poll_users, :dependent => :destroy #用户已经完成问答的问卷
+ # end
+
has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)},
:after_remove => Proc.new {|user, group| group.user_removed(user)}
has_many :changesets, :dependent => :nullify
diff --git a/app/views/tags/_tag.html.erb b/app/views/tags/_tag.html.erb
index c08a3b553..21aefa511 100644
--- a/app/views/tags/_tag.html.erb
+++ b/app/views/tags/_tag.html.erb
@@ -77,10 +77,10 @@
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
-
+
<%= l(:button_project_tags_add)%>
- <%= link_to_function l(:button_cancel), '$("#put-tag-form").slideUp();',:class=>'ButtonColor m3p10'%>
+ <%= link_to_function l(:button_cancel), '$("#put-tag-form").slideUp();',:class=>'ButtonColor m3p10' ,:style=>"padding:3px 6px"%>
<% end %>
<% end %>
diff --git a/db/migrate/20150108034148_create_polls.rb b/db/migrate/20150108034148_create_polls.rb
new file mode 100644
index 000000000..454f73b21
--- /dev/null
+++ b/db/migrate/20150108034148_create_polls.rb
@@ -0,0 +1,19 @@
+class CreatePolls < ActiveRecord::Migration
+ def up
+ create_table :polls do |t|
+ t.string :polls_name
+ t.string :polls_type
+ t.integer :polls_group_id
+ t.integer :polls_status
+ t.integer :user_id
+ t.datetime :published_at
+ t.datetime :closed_at
+
+ t.timestamps
+ end
+ end
+
+ def down
+ drop_table :polls
+ end
+end
diff --git a/db/migrate/20150108034253_create_poll_questions.rb b/db/migrate/20150108034253_create_poll_questions.rb
new file mode 100644
index 000000000..2fa586dd5
--- /dev/null
+++ b/db/migrate/20150108034253_create_poll_questions.rb
@@ -0,0 +1,16 @@
+class CreatePollQuestions < ActiveRecord::Migration
+ def up
+ create_table :poll_questions do |t|
+ t.string :question_title
+ t.integer :question_type
+ t.integer :is_necessary
+ t.integer :poll_id
+
+ t.timestamps
+ end
+ end
+
+ def down
+ drop_table :poll_questions
+ end
+end
diff --git a/db/migrate/20150108034414_create_poll_answers.rb b/db/migrate/20150108034414_create_poll_answers.rb
new file mode 100644
index 000000000..b6276fad0
--- /dev/null
+++ b/db/migrate/20150108034414_create_poll_answers.rb
@@ -0,0 +1,15 @@
+class CreatePollAnswers < ActiveRecord::Migration
+ def up
+ create_table :poll_answers do |t|
+ t.integer :poll_question_id
+ t.text :answer_text
+ t.integer :answer_position
+
+ t.timestamps
+ end
+ end
+
+ def down
+ drop_table :poll_answers
+ end
+end
diff --git a/db/migrate/20150108035301_create_poll_votes.rb b/db/migrate/20150108035301_create_poll_votes.rb
new file mode 100644
index 000000000..0b7192ab8
--- /dev/null
+++ b/db/migrate/20150108035301_create_poll_votes.rb
@@ -0,0 +1,16 @@
+class CreatePollVotes < ActiveRecord::Migration
+ def up
+ create_table :poll_votes do |t|
+ t.integer :user_id
+ t.integer :poll_question_id
+ t.integer :poll_answer_id
+ t.text :vote_text
+
+ t.timestamps
+ end
+ end
+
+ def down
+ drop_table :poll_votes
+ end
+end
diff --git a/db/migrate/20150108035338_create_poll_users.rb b/db/migrate/20150108035338_create_poll_users.rb
new file mode 100644
index 000000000..73d155890
--- /dev/null
+++ b/db/migrate/20150108035338_create_poll_users.rb
@@ -0,0 +1,14 @@
+class CreatePollUsers < ActiveRecord::Migration
+ def up
+ create_table :poll_users do |t|
+ t.integer :user_id
+ t.integer :poll_id
+
+ t.timestamps
+ end
+ end
+
+ def down
+ drop_table :poll_users
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 04a2e54c8..00d308293 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20141231085350) do
+ActiveRecord::Schema.define(:version => 20150108035338) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -790,6 +790,51 @@ ActiveRecord::Schema.define(:version => 20141231085350) do
t.integer "project_id"
end
+ create_table "poll_answers", :force => true do |t|
+ t.integer "poll_question_id"
+ t.text "answer_text"
+ t.integer "answer_position"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "poll_questions", :force => true do |t|
+ t.string "question_title"
+ t.integer "question_type"
+ t.integer "is_necessary"
+ t.integer "poll_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "poll_users", :force => true do |t|
+ t.integer "user_id"
+ t.integer "poll_id"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "poll_votes", :force => true do |t|
+ t.integer "user_id"
+ t.integer "poll_question_id"
+ t.integer "poll_answer_id"
+ t.text "vote_text"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ create_table "polls", :force => true do |t|
+ t.string "polls_name"
+ t.string "polls_type"
+ t.integer "polls_group_id"
+ t.integer "polls_status"
+ t.integer "user_id"
+ t.datetime "published_at"
+ t.datetime "closed_at"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
create_table "praise_tread_caches", :force => true do |t|
t.integer "object_id", :null => false
t.string "object_type"
diff --git a/test/unit/poll_answers_test.rb b/test/unit/poll_answers_test.rb
new file mode 100644
index 000000000..ce8f558f4
--- /dev/null
+++ b/test/unit/poll_answers_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PollAnswersTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/unit/poll_questions_test.rb b/test/unit/poll_questions_test.rb
new file mode 100644
index 000000000..bbe79ea40
--- /dev/null
+++ b/test/unit/poll_questions_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PollQuestionsTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/unit/poll_user_test.rb b/test/unit/poll_user_test.rb
new file mode 100644
index 000000000..7dab4b63f
--- /dev/null
+++ b/test/unit/poll_user_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PollUserTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/unit/poll_votes_test.rb b/test/unit/poll_votes_test.rb
new file mode 100644
index 000000000..77ab9121e
--- /dev/null
+++ b/test/unit/poll_votes_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PollVotesTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/unit/polls_test.rb b/test/unit/polls_test.rb
new file mode 100644
index 000000000..5217817bb
--- /dev/null
+++ b/test/unit/polls_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PollsTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end