diff --git a/.gitignore b/.gitignore
index 0cd336786..944ad4ef2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
/.bundle
*.swp
/config/database.yml
+/config/configuration.yml
/files/*
/log/*
/tmp/*
@@ -14,5 +15,4 @@
/db/schema.rb
/Gemfile.lock
/lib/plugins/acts_as_versioned/test/debug.log
-/config/configuration.yml
.rbenv-gemsets
diff --git a/Gemfile b/Gemfile
index 5045cb822..dc834e68d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -18,7 +18,7 @@ gem "builder", "3.0.0"
gem 'acts-as-taggable-on', '2.4.1'
gem 'spreadsheet'
gem 'ruby-ole'
-gem 'email_verifier'
+#gem 'email_verifier'
group :development do
gem 'better_errors', path: 'lib/better_errors'
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index edd3f1b9d..b5e0362b3 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -273,6 +273,7 @@ class CoursesController < ApplicationController
if valid_attr.eql?('name')
faker.name = valid_value
+ faker.course_id = params[:course_id]
faker.valid?
req[:valid] = faker.errors[:name].blank?
req[:message] = faker.errors[:name]
diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb
index 4abddaa5e..0ee17222e 100644
--- a/app/controllers/poll_controller.rb
+++ b/app/controllers/poll_controller.rb
@@ -47,6 +47,7 @@ class PollController < ApplicationController
:user_id => User.current.id,
:published_at => Time.now,
:closed_at => Time.now,
+ :show_result => 1,
:polls_description => ""
}
@poll = Poll.create option
diff --git a/app/models/course_group.rb b/app/models/course_group.rb
index 144c43c6e..c7fc81df4 100644
--- a/app/models/course_group.rb
+++ b/app/models/course_group.rb
@@ -12,11 +12,20 @@ class CourseGroup < ActiveRecord::Base
before_destroy :set_member_nil
attr_accessible :name
- validates :name, :presence => true, :length => {:maximum => 20},
- :uniqueness => {case_sensitive: false}
+ validates :name, :presence => true, :length => {:maximum => 20}
+ validate :unique_name_and_course
+
+
+
def set_member_nil
if self.members && self.members.count > 0
self.members.update_all("course_group_id = 0")
end
end
+ private
+ def unique_name_and_course
+ if CourseGroup.where("name=? and course_id=?", name, course_id).first
+ errors.add(:name, :groupname_repeat)
+ end
+ end
end
diff --git a/app/models/issue_observer.rb b/app/models/issue_observer.rb
index 50cbf2a42..e404a4a1c 100644
--- a/app/models/issue_observer.rb
+++ b/app/models/issue_observer.rb
@@ -19,7 +19,8 @@ class IssueObserver < ActiveRecord::Observer
def after_create(issue)
Thread.start do
- recipients = issue.recipients
+ # 将跟踪者与本项目的其他成员都设为收件方,并去重,不在进行抄送,
+ recipients = issue.recipients - issue.watcher_recipients + issue.watcher_recipients
recipients.each do |rec|
Mailer.issue_add(issue,rec).deliver if Setting.notified_events.include?('issue_added')
end
diff --git a/app/models/journal_observer.rb b/app/models/journal_observer.rb
index 10d3f7b4b..b58464a9b 100644
--- a/app/models/journal_observer.rb
+++ b/app/models/journal_observer.rb
@@ -24,7 +24,8 @@ class JournalObserver < ActiveRecord::Observer
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
)
Thread.start do
- recipients = journal.recipients
+ # 将跟踪者与本项目的其他成员都设为收件方,并去重,不在进行抄送,
+ recipients = journal.recipients - journal.watcher_recipients + journal.watcher_recipients
recipients.each do |rec|
Mailer.issue_edit(journal,rec).deliver
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index 23ac36054..1760d9004 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -147,13 +147,11 @@ class Mailer < ActionMailer::Base
@project_url = url_for(:controller => 'projects', :action => 'show', :id => issue.project_id, :token => @token.value)
@user_url = url_for(my_account_url(user,:token => @token.value))
- cc = nil
- if recipients == issue.recipients[0]
- cc = issue.watcher_recipients - issue.recipients
- end
+
+
subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] (#{issue.status.name}) #{issue.subject}"
mail(:to => recipients,
- :cc => cc,
+
:subject => subject)
end
# issue.attachments.each do |attach|
@@ -198,11 +196,7 @@ class Mailer < ActionMailer::Base
- # Watchers in cc
- cc = nil
- if recipients == journal.recipients[0]
- cc = journal.watcher_recipients - journal.recipients
- end
+
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] "
s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
@@ -211,7 +205,7 @@ class Mailer < ActionMailer::Base
@journal = journal
# @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}")
mail(:to => recipients,
- :cc => cc,
+
:subject => s)
end
diff --git a/app/models/user.rb b/app/models/user.rb
index bef65fe54..06f59c764 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -188,7 +188,7 @@ class User < Principal
validates_confirmation_of :password, :allow_nil => true
validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true
validate :validate_password_length
- validates_email_realness_of :mail
+ #validates_email_realness_of :mail
before_create :set_mail_notification
before_save :update_hashed_password
before_destroy :remove_references_before_destroy
diff --git a/app/views/bids/_bid_homework_show.html.erb b/app/views/bids/_bid_homework_show.html.erb
index 2d6c35555..1009f405f 100644
--- a/app/views/bids/_bid_homework_show.html.erb
+++ b/app/views/bids/_bid_homework_show.html.erb
@@ -56,18 +56,30 @@
<%= link_to(bid.name, course_for_bid_path(bid), :class => 'bid_path') %>
-
+ |
<% if User.current.logged? && is_cur_course_student(@course) %>
<% cur_user_homework = cur_user_homework_for_bid(bid) %>
+
+ <% if bid.open_anonymous_evaluation == 1 %>
+ <% case bid.comment_status %>
+ <% when 0 %>
+ 未开启匿评
+ <% when 1 %>
+ 匿评中..
+ <% when 2 %>
+ 匿评结束
+ <% end %>
+ <% end%>
+
<% if cur_user_homework && cur_user_homework.empty? %>
<%= link_to l(:label_commit_homework),new_exercise_book_path(bid) %>
<% else %>
-
- <%= l(:lable_has_commit_homework)%>
-
+
+ 已 提 交
+
<% end %>
<% end %>
<% if (User.current.admin?||User.current.allowed_to?(:as_teacher,@course)) %>
diff --git a/app/views/courses/member.html.erb b/app/views/courses/member.html.erb
index 803be3731..e2c1fb418 100644
--- a/app/views/courses/member.html.erb
+++ b/app/views/courses/member.html.erb
@@ -6,7 +6,8 @@
$.get(
'<%=valid_ajax_course_path%>',
{ valid: "name",
- value: document.getElementById('group_name').value },
+ value: document.getElementById('group_name').value,
+ course_id: <%= @course.id %> },
function (data) {
if (!data.valid) {
alert(data.message);
diff --git a/app/views/layouts/_base_feedback.html.erb b/app/views/layouts/_base_feedback.html.erb
index ae85d9479..f1c829c1f 100644
--- a/app/views/layouts/_base_feedback.html.erb
+++ b/app/views/layouts/_base_feedback.html.erb
@@ -1,10 +1,10 @@
@@ -313,7 +313,7 @@
<%= link_to l(:label_poll), poll_index_path(:polls_type => "Course", :polls_group_id => @course.id)%>
diff --git a/app/views/mailer/_issue.html.erb b/app/views/mailer/_issue.html.erb
index cd5fbc091..0ec585868 100644
--- a/app/views/mailer/_issue.html.erb
+++ b/app/views/mailer/_issue.html.erb
@@ -1,7 +1,7 @@
- <%= link_to(h("#{@issue.author}(#{@issue.author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
+ <%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
<%= l(:mail_issue_title_userin)%>
<%= link_to(h("#{@issue.project.name}"), @project_url, :style=>'color:#1b55a7; font-weight:bold;') %><%= l(:mail_issue_title_active)%>
diff --git a/app/views/mailer/_issue.text.erb b/app/views/mailer/_issue.text.erb
index 8848e494a..e0579824f 100644
--- a/app/views/mailer/_issue.text.erb
+++ b/app/views/mailer/_issue.text.erb
@@ -1,5 +1,5 @@
- <%= link_to(h("#{@issue.author}(#{@issue.author.show_name})"), @issue_author_url) %>
+ <%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url) %>
<%= l(:mail_issue_title_userin)%>
<%= link_to(h("#{@issue.project.name}"),@project_url) %><%= l(:mail_issue_title_active)%>
<%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url) %>
diff --git a/app/views/mailer/journals_for_message_add.html.erb b/app/views/mailer/journals_for_message_add.html.erb
index 1aa8e45f8..f39b49026 100644
--- a/app/views/mailer/journals_for_message_add.html.erb
+++ b/app/views/mailer/journals_for_message_add.html.erb
@@ -1,5 +1,5 @@
尊敬的用户,<%= @user %>给你留言了:
<%= @message %>
- 点击链接查看最新回复<%= link_to(@url, @url) %>
- <%= link_to(l(:lable_not_receive_mail),"http://" + Setting.host_name + "/my/account")%>
+ 点击链接查看最新回复<%= link_to(@url, @url) %>
+ <%= link_to(l(:lable_not_receive_mail),"http://" + Setting.host_name + "/my/account")%>
diff --git a/app/views/mailer/message_posted.html.erb b/app/views/mailer/message_posted.html.erb
index 4bb487405..1fe28e04f 100644
--- a/app/views/mailer/message_posted.html.erb
+++ b/app/views/mailer/message_posted.html.erb
@@ -1,10 +1,37 @@
-
- <% if @message.project %>
- <%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url) %>
+
+
+
+ <%= h @message.author %>(<%= @message.author.show_name %>)
+ <%= l(:mail_issue_title_userin)%>
+
+ <% if @message.project %>
+ <%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url,:style=>'color:#1b55a7; font-weight:bold;') %>
<% elsif @message.course %>
- <%=h @message.board.course.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url) %>
- <% end %>
-
-<%=h @message.author %>
+ <%=h @message.board.course.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url,:style=>'color:#1b55a7; font-weight:bold;') %>
+ <% end %>
+ <%= l(:mail_issue_title_active)%>
+
+
+ - <%= l(:mail_issue_subject)%> <%= link_to(h(@message.subject), @message_url, :style=>'color:#1b55a7; font-weight:bold;') %>
+ - <%= l(:mail_issue_sent_from)%>
+ <% if @message.project %>
+ <%=h @message.board.project.name %> - <%=h @message.board.name %>
+ <% elsif @message.course %>
+ <%=h @message.board.course.name %> - <%=h @message.board.name %>
+ <% end %>
+
+ - <%= l(:mail_issue_content)%>
+
+ <%= @message.content %>
+
+
+
+
+
+
+
+
+
-<%= textilizable(@message, :content, :only_path => false) %>
diff --git a/app/views/poll/_poll_form.html.erb b/app/views/poll/_poll_form.html.erb
index b3fae8b4a..df4859613 100644
--- a/app/views/poll/_poll_form.html.erb
+++ b/app/views/poll/_poll_form.html.erb
@@ -59,7 +59,7 @@
{
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'poll_submit', locals: { :poll => @poll,:is_remote => false}) %>');
showModal('ajax-modal', '310px');
- $('#ajax-modal').css('height','110px');
+ $('#ajax-modal').css('height','115px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before(" " +
" ");
diff --git a/app/views/poll/_show_mulit_result.html.erb b/app/views/poll/_show_mulit_result.html.erb
index e54cca505..786ed9460 100644
--- a/app/views/poll/_show_mulit_result.html.erb
+++ b/app/views/poll/_show_mulit_result.html.erb
@@ -13,7 +13,7 @@
diff --git a/app/views/poll/index.html.erb b/app/views/poll/index.html.erb
index de30b5deb..a8aca1308 100644
--- a/app/views/poll/index.html.erb
+++ b/app/views/poll/index.html.erb
@@ -15,7 +15,7 @@
"" +
"");
showModal('ajax-modal', '310px');
- $('#ajax-modal').css('height','110px');
+ $('#ajax-modal').css('height','115px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("" +
" ");
@@ -41,7 +41,7 @@
"" +
"");
showModal('ajax-modal', '310px');
- $('#ajax-modal').css('height','110px');
+ $('#ajax-modal').css('height','115px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("" +
" ");
diff --git a/config/configuration.yml b/config/configuration.yml
index 9a9373e45..f17881485 100644
--- a/config/configuration.yml
+++ b/config/configuration.yml
@@ -87,12 +87,12 @@ default:
- address: smtp.163.com
+ address: smtp.126.com
port: 25
- domain: smtp.163.com
+ domain: smtp.126.com
authentication: :plain
- user_name: mcb592@163.com
- password: 'mcb1989822'
+ user_name: "alanlong9278@126.com"
+ password: 'alanlong8788786'
# Absolute path to the directory where attachments are stored.
# The default is the 'files' directory in your Redmine instance.
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 77a5b4a1b..0f7d67cb8 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -152,7 +152,7 @@ zh:
not_same_project: "不属于同一个项目"
circular_dependency: "此关联将导致循环依赖"
cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务"
-
+ groupname_repeat: "该班名已存在"
actionview_instancetag_blank_option: 请选择
@@ -598,6 +598,7 @@ zh:
label_document_added: 文档已添加
label_forum_message_added: 发帖成功
label_forum_add: 贴吧创建成功
+ label_message_reply: 回帖人
label_document_public_info: (打钩为公开,不打钩则不公开,若不公开,仅项目成员可见该文档。)
label_role: 角色
label_role_plural: 角色
diff --git a/db/migrate/20150123020615_add_show_result.rb b/db/migrate/20150123020615_add_show_result.rb
new file mode 100644
index 000000000..0407abceb
--- /dev/null
+++ b/db/migrate/20150123020615_add_show_result.rb
@@ -0,0 +1,9 @@
+class AddShowResult < ActiveRecord::Migration
+ def up
+ add_column :polls, :show_result, :integer, default: 1
+ end
+
+ def down
+ remove_column :polls, :show_result
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 7d10abc35..d0d755bd3 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -23,6 +23,18 @@ ActiveRecord::Schema.define(:version => 20150121030451) do
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
+ create_table "api_keys", :force => true do |t|
+ t.string "access_token"
+ t.datetime "expires_at"
+ t.integer "user_id"
+ t.boolean "active", :default => true
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
+ add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
+
create_table "applied_projects", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
diff --git a/public/stylesheets/nyan.css b/public/stylesheets/nyan.css
index c532e7112..ac7142c71 100644
--- a/public/stylesheets/nyan.css
+++ b/public/stylesheets/nyan.css
@@ -1433,8 +1433,8 @@ ul.contest-notification-list li span{
}
.xls {
- background: url('../images/icon_excel.gif') no-repeat scroll 1px 50% transparent;
- padding: 2px 0px 3px 16px;
+ /*background: url('../images/icon_excel.gif') no-repeat scroll 1px 50% transparent;*/
+ /*padding: 2px 0px 3px 16px;*/
font-family:微软雅黑 !important;
font-size: 12px !important;
color: #136b3b !important;
diff --git a/public/stylesheets/polls.css b/public/stylesheets/polls.css
index e601d231d..a4e2010f0 100644
--- a/public/stylesheets/polls.css
+++ b/public/stylesheets/polls.css
@@ -14,9 +14,9 @@ div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span{ margi
#polls .fr{ float:right;}
/*问卷按钮*/
-.polls_btn{ height:33px;border-top:1px solid #15bed1; border-bottom:1px solid #15bed1;border-right:1px solid #cee6e6; width:225px; padding:7px 0 0 15px; }
-.polls_btn a{font-size:14px; color:#444444;font-weight:bold;}
-.polls_btn span{ color:#15bed1; font-size:12px; font-weight:normal;}
+/*.polls_btn{ height:33px;border-top:1px solid #15bed1; border-bottom:1px solid #15bed1;border-right:1px solid #cee6e6; width:225px; padding:7px 0 0 15px; }*/
+/*.polls_btn a{font-size:14px; color:#444444;font-weight:bold;}*/
+/*.polls_btn span{ color:#15bed1; font-size:12px; font-weight:normal;}*/
/*问卷列表*/
.polls_content{ width:615px;padding-left: 6px;}
@@ -53,7 +53,7 @@ ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
.ur_inputs label{ padding-left:10px;word-break: break-all; word-wrap: break-word;}
.ur_inputs input{ margin-right:5px;}
.ur_text{ height:30px;}
-.ur_textbox{ border:1px solid #dcdcdc !important; color:#676765;}
+.ur_textbox{ border:1px solid #dcdcdc !important; color:#676765; word-break:break-all; word-wrap:break-word;}
.ur_buttons{ width:250px; margin:20px auto 10px;}
a.ur_button{ display:block; width:106px; height:37px; background:#15bccf; color:#fff; font-size:16px; text-align:center; padding-top:3px; float:left; margin-right:15px;}
a:hover.ur_button{ background:#0fa9bb; text-decoration:none;}
|