Merge branch 'szzh' into develop
This commit is contained in:
commit
9990845f31
|
@ -4,6 +4,7 @@
|
||||||
/.bundle
|
/.bundle
|
||||||
*.swp
|
*.swp
|
||||||
/config/database.yml
|
/config/database.yml
|
||||||
|
/config/configuration.yml
|
||||||
/files/*
|
/files/*
|
||||||
/log/*
|
/log/*
|
||||||
/tmp/*
|
/tmp/*
|
||||||
|
@ -14,5 +15,4 @@
|
||||||
/db/schema.rb
|
/db/schema.rb
|
||||||
/Gemfile.lock
|
/Gemfile.lock
|
||||||
/lib/plugins/acts_as_versioned/test/debug.log
|
/lib/plugins/acts_as_versioned/test/debug.log
|
||||||
/config/configuration.yml
|
|
||||||
.rbenv-gemsets
|
.rbenv-gemsets
|
||||||
|
|
2
Gemfile
2
Gemfile
|
@ -18,7 +18,7 @@ gem "builder", "3.0.0"
|
||||||
gem 'acts-as-taggable-on', '2.4.1'
|
gem 'acts-as-taggable-on', '2.4.1'
|
||||||
gem 'spreadsheet'
|
gem 'spreadsheet'
|
||||||
gem 'ruby-ole'
|
gem 'ruby-ole'
|
||||||
gem 'email_verifier'
|
#gem 'email_verifier'
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'better_errors', path: 'lib/better_errors'
|
gem 'better_errors', path: 'lib/better_errors'
|
||||||
|
|
|
@ -273,6 +273,7 @@ class CoursesController < ApplicationController
|
||||||
|
|
||||||
if valid_attr.eql?('name')
|
if valid_attr.eql?('name')
|
||||||
faker.name = valid_value
|
faker.name = valid_value
|
||||||
|
faker.course_id = params[:course_id]
|
||||||
faker.valid?
|
faker.valid?
|
||||||
req[:valid] = faker.errors[:name].blank?
|
req[:valid] = faker.errors[:name].blank?
|
||||||
req[:message] = faker.errors[:name]
|
req[:message] = faker.errors[:name]
|
||||||
|
|
|
@ -160,12 +160,15 @@ class ForumsController < ApplicationController
|
||||||
def create
|
def create
|
||||||
@forum = Forum.new(params[:forum])
|
@forum = Forum.new(params[:forum])
|
||||||
@forum.creator_id = User.current.id
|
@forum.creator_id = User.current.id
|
||||||
|
if @forum.save
|
||||||
|
respond_to do |format|
|
||||||
|
|
||||||
respond_to do |format|
|
format.html { redirect_to @forum, notice: l(:label_forum_create_succ) }
|
||||||
if @forum.save
|
format.json { render json: @forum, status: :created, location: @forum }
|
||||||
format.html { redirect_to @forum, notice: l(:label_forum_create_succ) }
|
end
|
||||||
format.json { render json: @forum, status: :created, location: @forum }
|
|
||||||
else
|
else
|
||||||
|
respond_to do |format|
|
||||||
flash.now[:error] = "#{l :label_forum_create_fail}: #{@forum.errors.full_messages[0]}"
|
flash.now[:error] = "#{l :label_forum_create_fail}: #{@forum.errors.full_messages[0]}"
|
||||||
format.html { render action: "new" }
|
format.html { render action: "new" }
|
||||||
format.json { render json: @forum.errors, status: :unprocessable_entity }
|
format.json { render json: @forum.errors, status: :unprocessable_entity }
|
||||||
|
|
|
@ -47,6 +47,7 @@ class PollController < ApplicationController
|
||||||
:user_id => User.current.id,
|
:user_id => User.current.id,
|
||||||
:published_at => Time.now,
|
:published_at => Time.now,
|
||||||
:closed_at => Time.now,
|
:closed_at => Time.now,
|
||||||
|
:show_result => 1,
|
||||||
:polls_description => ""
|
:polls_description => ""
|
||||||
}
|
}
|
||||||
@poll = Poll.create option
|
@poll = Poll.create option
|
||||||
|
@ -69,8 +70,8 @@ class PollController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@poll.polls_name = params[:polls_name].empty? ? l(:label_poll_title) : params[:polls_name]
|
@poll.polls_name = params[:polls_name]
|
||||||
@poll.polls_description = params[:polls_description].empty? ? l(:label_poll_description) : params[:polls_description]
|
@poll.polls_description = params[:polls_description]
|
||||||
if @poll.save
|
if @poll.save
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
|
|
|
@ -494,7 +494,7 @@ module ApplicationHelper
|
||||||
def principals_check_box_tags_ex(name, principals)
|
def principals_check_box_tags_ex(name, principals)
|
||||||
s = ''
|
s = ''
|
||||||
principals.each do |principal|
|
principals.each do |principal|
|
||||||
s << "<label>#{ check_box_tag name, principal.id, false, :id => nil } #{h principal.userInfo }</label>\n"
|
s << "<label>#{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id)}</label>\n"
|
||||||
end
|
end
|
||||||
s.html_safe
|
s.html_safe
|
||||||
end
|
end
|
||||||
|
|
|
@ -112,7 +112,7 @@ module CoursesHelper
|
||||||
# end
|
# end
|
||||||
|
|
||||||
#获取课程所有成员
|
#获取课程所有成员
|
||||||
def course_member course
|
def course_all_member course
|
||||||
course.members
|
course.members
|
||||||
end
|
end
|
||||||
# 学生人数计算
|
# 学生人数计算
|
||||||
|
|
|
@ -12,11 +12,20 @@ class CourseGroup < ActiveRecord::Base
|
||||||
before_destroy :set_member_nil
|
before_destroy :set_member_nil
|
||||||
|
|
||||||
attr_accessible :name
|
attr_accessible :name
|
||||||
validates :name, :presence => true, :length => {:maximum => 20},
|
validates :name, :presence => true, :length => {:maximum => 20}
|
||||||
:uniqueness => {case_sensitive: false}
|
validate :unique_name_and_course
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def set_member_nil
|
def set_member_nil
|
||||||
if self.members && self.members.count > 0
|
if self.members && self.members.count > 0
|
||||||
self.members.update_all("course_group_id = 0")
|
self.members.update_all("course_group_id = 0")
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Forum < ActiveRecord::Base
|
||||||
|
|
||||||
acts_as_taggable
|
acts_as_taggable
|
||||||
scope :by_join_date, order("created_at DESC")
|
scope :by_join_date, order("created_at DESC")
|
||||||
|
after_create :send_email
|
||||||
def reset_counters!
|
def reset_counters!
|
||||||
self.class.reset_counters!(id)
|
self.class.reset_counters!(id)
|
||||||
end
|
end
|
||||||
|
@ -33,6 +33,11 @@ class Forum < ActiveRecord::Base
|
||||||
self.creator == user || user.admin?
|
self.creator == user || user.admin?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def send_email
|
||||||
|
Thread.start do
|
||||||
|
Mailer.forum_add(self).deliver if Setting.notified_events.include?('forum_add')
|
||||||
|
end
|
||||||
|
end
|
||||||
# Updates topic_count, memo_count and last_memo_id attributes for +board_id+
|
# Updates topic_count, memo_count and last_memo_id attributes for +board_id+
|
||||||
def self.reset_counters!(forum_id)
|
def self.reset_counters!(forum_id)
|
||||||
forum_id = forum_id.to_i
|
forum_id = forum_id.to_i
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
class ForumObserver < ActiveRecord::Observer
|
||||||
|
def after_create(forum)
|
||||||
|
Thread.start do
|
||||||
|
Mailer.forum_add(forum).deliver if Setting.notified_events.include?('forum_add')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -19,7 +19,8 @@ class IssueObserver < ActiveRecord::Observer
|
||||||
|
|
||||||
def after_create(issue)
|
def after_create(issue)
|
||||||
Thread.start do
|
Thread.start do
|
||||||
recipients = issue.recipients
|
# 将跟踪者与本项目的其他成员都设为收件方,并去重,不在进行抄送,
|
||||||
|
recipients = issue.recipients - issue.watcher_recipients + issue.watcher_recipients
|
||||||
recipients.each do |rec|
|
recipients.each do |rec|
|
||||||
Mailer.issue_add(issue,rec).deliver if Setting.notified_events.include?('issue_added')
|
Mailer.issue_add(issue,rec).deliver if Setting.notified_events.include?('issue_added')
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,7 +24,8 @@ class JournalObserver < ActiveRecord::Observer
|
||||||
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
|
(Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
|
||||||
)
|
)
|
||||||
Thread.start do
|
Thread.start do
|
||||||
recipients = journal.recipients
|
# 将跟踪者与本项目的其他成员都设为收件方,并去重,不在进行抄送,
|
||||||
|
recipients = journal.recipients - journal.watcher_recipients + journal.watcher_recipients
|
||||||
recipients.each do |rec|
|
recipients.each do |rec|
|
||||||
|
|
||||||
Mailer.issue_edit(journal,rec).deliver
|
Mailer.issue_edit(journal,rec).deliver
|
||||||
|
|
|
@ -26,7 +26,39 @@ class Mailer < ActionMailer::Base
|
||||||
def self.default_url_options
|
def self.default_url_options
|
||||||
{ :host => Setting.host_name, :protocol => Setting.protocol }
|
{ :host => Setting.host_name, :protocol => Setting.protocol }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 贴吧新建贴吧发送邮件
|
||||||
|
# example Mailer.forum(forum).deliver
|
||||||
|
def forum_add(forum)
|
||||||
|
|
||||||
|
redmine_headers 'Forum' => forum.id
|
||||||
|
@forum = forum
|
||||||
|
@author = forum.creator
|
||||||
|
recipients = forum.creator.mail
|
||||||
|
# cc = wiki_content.page.wiki.watcher_recipients - recipients
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
|
@forum_url = url_for(:controller => 'forums', :action => 'show', :id => forum.id)
|
||||||
|
mail :to => recipients,:subject => "[ #{l(:label_forum)} : #{forum.name} #{l(:notice_successful_create)}]"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def forum_message_added(memo)
|
||||||
|
@memo = memo
|
||||||
|
redmine_headers 'Memo' => memo.id
|
||||||
|
@forum = memo.forum
|
||||||
|
@author = memo.author
|
||||||
|
@forum_url = url_for(:controller => 'forums', :action => 'show', :id => @forum.id)
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
|
recipients ||= []
|
||||||
|
mems = memo.self_and_siblings
|
||||||
|
mems.each do |mem|
|
||||||
|
recipients << mem.author.mail unless recipients.include? mem.author.mail
|
||||||
|
end
|
||||||
|
# cc = wiki_content.page.wiki.watcher_recipients - recipients
|
||||||
|
|
||||||
|
@memo_url = url_for(forum_memo_url(@forum, (@memo.parent_id.nil? ? @memo : @memo.parent_id)))
|
||||||
|
mail :to => recipients,:subject => "[ #{l(:label_message_plural)} : #{memo.subject} #{l(:label_memo_create_succ)}]"
|
||||||
|
end
|
||||||
# Builds a Mail::Message object used to email recipients of the added journals for message.
|
# Builds a Mail::Message object used to email recipients of the added journals for message.
|
||||||
|
|
||||||
# 留言分为直接留言,和对留言人留言的回复
|
# 留言分为直接留言,和对留言人留言的回复
|
||||||
|
@ -39,7 +71,7 @@ class Mailer < ActionMailer::Base
|
||||||
@mail = journals_for_message.at_user if journals_for_message.at_user
|
@mail = journals_for_message.at_user if journals_for_message.at_user
|
||||||
@message = journals_for_message.notes
|
@message = journals_for_message.notes
|
||||||
@title = "#@user #{t(:label_leave_your_message, :locale => 'zh')}"
|
@title = "#@user #{t(:label_leave_your_message, :locale => 'zh')}"
|
||||||
|
@issue_author_url = url_for(user_activities_url(@user))
|
||||||
@url = case journals_for_message.jour.class.to_s.to_sym # 判断留言的对象所属类型
|
@url = case journals_for_message.jour.class.to_s.to_sym # 判断留言的对象所属类型
|
||||||
when :Bid
|
when :Bid
|
||||||
course_for_bid_url(journals_for_message.jour, anchor: "word_li_#{journals_for_message.id}")
|
course_for_bid_url(journals_for_message.jour, anchor: "word_li_#{journals_for_message.id}")
|
||||||
|
@ -62,7 +94,7 @@ class Mailer < ActionMailer::Base
|
||||||
course = journals_for_message.jour
|
course = journals_for_message.jour
|
||||||
@author = journals_for_message.user
|
@author = journals_for_message.user
|
||||||
#课程的教师
|
#课程的教师
|
||||||
@members = course_member journals_for_message.jour
|
@members = course_all_member journals_for_message.jour
|
||||||
#收件人邮箱
|
#收件人邮箱
|
||||||
@recipients ||= []
|
@recipients ||= []
|
||||||
@members.each do |teacher|
|
@members.each do |teacher|
|
||||||
|
@ -118,10 +150,10 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
@user_url = url_for(my_account_url(user,:token => @token.value))
|
@user_url = url_for(my_account_url(user,:token => @token.value))
|
||||||
|
|
||||||
cc = issue.watcher_recipients - issue.recipients
|
|
||||||
subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] (#{issue.status.name}) #{issue.subject}"
|
subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] (#{issue.status.name}) #{issue.subject}"
|
||||||
mail(:to => recipients,
|
mail(:to => recipients,
|
||||||
:cc => cc,
|
|
||||||
:subject => subject)
|
:subject => subject)
|
||||||
end
|
end
|
||||||
# issue.attachments.each do |attach|
|
# issue.attachments.each do |attach|
|
||||||
|
@ -166,9 +198,8 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Watchers in cc
|
|
||||||
|
|
||||||
cc = journal.watcher_recipients - journal.recipients
|
|
||||||
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] "
|
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] "
|
||||||
s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
|
s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
|
||||||
s << issue.subject
|
s << issue.subject
|
||||||
|
@ -176,7 +207,7 @@ class Mailer < ActionMailer::Base
|
||||||
@journal = journal
|
@journal = journal
|
||||||
# @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}")
|
# @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}")
|
||||||
mail(:to => recipients,
|
mail(:to => recipients,
|
||||||
:cc => cc,
|
|
||||||
:subject => s)
|
:subject => s)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -260,6 +291,7 @@ class Mailer < ActionMailer::Base
|
||||||
redmine_headers 'Project' => document.project.identifier
|
redmine_headers 'Project' => document.project.identifier
|
||||||
@author = User.current
|
@author = User.current
|
||||||
@document = document
|
@document = document
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
@document_url = url_for(:controller => 'documents', :action => 'show', :id => document)
|
@document_url = url_for(:controller => 'documents', :action => 'show', :id => document)
|
||||||
mail :to => document.recipients,
|
mail :to => document.recipients,
|
||||||
:subject => "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
|
:subject => "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
|
||||||
|
@ -275,6 +307,7 @@ class Mailer < ActionMailer::Base
|
||||||
added_to = ''
|
added_to = ''
|
||||||
added_to_url = ''
|
added_to_url = ''
|
||||||
@author = attachments.first.author
|
@author = attachments.first.author
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
case container.class.name
|
case container.class.name
|
||||||
when 'Project'
|
when 'Project'
|
||||||
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container)
|
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container)
|
||||||
|
@ -282,7 +315,7 @@ class Mailer < ActionMailer::Base
|
||||||
recipients = container.notified_users.select { |user| user.allowed_to?(:view_files, container) }.collect { |u| u.mail }
|
recipients = container.notified_users.select { |user| user.allowed_to?(:view_files, container) }.collect { |u| u.mail }
|
||||||
when 'Course'
|
when 'Course'
|
||||||
added_to_url = url_for(:controller => 'files', :action => 'index', :course_id => container)
|
added_to_url = url_for(:controller => 'files', :action => 'index', :course_id => container)
|
||||||
added_to = "#{l(:label_course)}: #{container}"
|
added_to = "#{l(:label_course)}: #{container.name}"
|
||||||
recipients = container.notified_users.select { |user| user.allowed_to?(:view_files, container) }.collect { |u| u.mail }
|
recipients = container.notified_users.select { |user| user.allowed_to?(:view_files, container) }.collect { |u| u.mail }
|
||||||
when 'Version'
|
when 'Version'
|
||||||
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project)
|
added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project)
|
||||||
|
@ -323,13 +356,27 @@ class Mailer < ActionMailer::Base
|
||||||
# news_added(news) => Mail::Message object
|
# news_added(news) => Mail::Message object
|
||||||
# Mailer.news_added(news).deliver => sends an email to the news' project recipients
|
# Mailer.news_added(news).deliver => sends an email to the news' project recipients
|
||||||
def news_added(news)
|
def news_added(news)
|
||||||
redmine_headers 'Project' => news.project.identifier
|
|
||||||
@author = news.author
|
if news.project
|
||||||
message_id news
|
redmine_headers 'Project' => news.project.identifier
|
||||||
@news = news
|
@author = news.author
|
||||||
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
mail :to => news.recipients,
|
message_id news
|
||||||
:subject => "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
@news = news
|
||||||
|
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
||||||
|
mail :to => news.recipients,
|
||||||
|
:subject => "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
||||||
|
elsif news.course
|
||||||
|
redmine_headers 'Course' => news.course.id
|
||||||
|
@author = news.author
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
|
message_id news
|
||||||
|
@news = news
|
||||||
|
recipients = news.course.notified_users.select { |user| user.allowed_to?(:view_files, news.course) }.collect { |u| u.mail }
|
||||||
|
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
||||||
|
mail :to => recipients,
|
||||||
|
:subject => "[#{news.course.name}] #{l(:label_news)}: #{news.title}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Builds a Mail::Message object used to email recipients of a news' project when a news comment is added.
|
# Builds a Mail::Message object used to email recipients of a news' project when a news comment is added.
|
||||||
|
@ -339,15 +386,30 @@ class Mailer < ActionMailer::Base
|
||||||
# Mailer.news_comment_added(comment) => sends an email to the news' project recipients
|
# Mailer.news_comment_added(comment) => sends an email to the news' project recipients
|
||||||
def news_comment_added(comment)
|
def news_comment_added(comment)
|
||||||
news = comment.commented
|
news = comment.commented
|
||||||
redmine_headers 'Project' => news.project.identifier
|
if news.project
|
||||||
@author = comment.author
|
redmine_headers 'Project' => news.project.identifier
|
||||||
message_id comment
|
@author = comment.author
|
||||||
@news = news
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
@comment = comment
|
message_id comment
|
||||||
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
@news = news
|
||||||
mail :to => news.recipients,
|
@comment = comment
|
||||||
:cc => news.watcher_recipients,
|
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
||||||
:subject => "Re: [#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
mail :to => news.recipients,
|
||||||
|
:cc => news.watcher_recipients,
|
||||||
|
:subject => "Re: [#{news.project.name}] #{l(:label_news)}: #{news.title}"
|
||||||
|
elsif news.course
|
||||||
|
redmine_headers 'Course' => news.course.id
|
||||||
|
@author = comment.author
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
|
message_id comment
|
||||||
|
@news = news
|
||||||
|
@comment = comment
|
||||||
|
@news_url = url_for(:controller => 'news', :action => 'show', :id => news)
|
||||||
|
recipients = news.course.notified_users.select { |user| user.allowed_to?(:view_files, news.course) }.collect { |u| u.mail }
|
||||||
|
|
||||||
|
mail :to => recipients,
|
||||||
|
:subject => "[#{news.course.name}] #{l(:label_news)}: #{news.title}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Builds a Mail::Message object used to email the recipients of the specified message that was posted.
|
# Builds a Mail::Message object used to email the recipients of the specified message that was posted.
|
||||||
|
@ -356,18 +418,35 @@ class Mailer < ActionMailer::Base
|
||||||
# message_posted(message) => Mail::Message object
|
# message_posted(message) => Mail::Message object
|
||||||
# Mailer.message_posted(message).deliver => sends an email to the recipients
|
# Mailer.message_posted(message).deliver => sends an email to the recipients
|
||||||
def message_posted(message)
|
def message_posted(message)
|
||||||
redmine_headers 'Project' => message.project.identifier,
|
if message.project
|
||||||
'Topic-Id' => (message.parent_id || message.id)
|
redmine_headers 'Project' => message.project.identifier,
|
||||||
@author = message.author
|
'Topic-Id' => (message.parent_id || message.id)
|
||||||
message_id message
|
@author = message.author
|
||||||
references message.parent unless message.parent.nil?
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
recipients = message.recipients
|
message_id message
|
||||||
cc = ((message.root.watcher_recipients + message.board.watcher_recipients).uniq - recipients)
|
references message.parent unless message.parent.nil?
|
||||||
@message = message
|
recipients = message.recipients
|
||||||
@message_url = url_for(message.event_url)
|
cc = ((message.root.watcher_recipients + message.board.watcher_recipients).uniq - recipients)
|
||||||
mail :to => recipients,
|
@message = message
|
||||||
:cc => cc,
|
@message_url = url_for(message.event_url)
|
||||||
:subject => "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
|
mail :to => recipients,
|
||||||
|
:cc => cc,
|
||||||
|
:subject => "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
|
||||||
|
elsif message.course
|
||||||
|
redmine_headers 'Course' => message.course.id,
|
||||||
|
'Topic-Id' => (message.parent_id || message.id)
|
||||||
|
@author = message.author
|
||||||
|
@issue_author_url = url_for(user_activities_url(@author))
|
||||||
|
message_id message
|
||||||
|
references message.parent unless message.parent.nil?
|
||||||
|
recipients = message.course.notified_users.select { |user| user.allowed_to?(:view_files, message.course) }.collect { |u| u.mail }
|
||||||
|
cc = ((message.root.watcher_recipients + message.board.watcher_recipients).uniq - recipients)
|
||||||
|
@message = message
|
||||||
|
@message_url = url_for(message.event_url)
|
||||||
|
mail :to => recipients,
|
||||||
|
:cc => cc,
|
||||||
|
:subject => "[#{message.board.course.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Builds a Mail::Message object used to email the recipients of a project of the specified wiki content was added.
|
# Builds a Mail::Message object used to email the recipients of a project of the specified wiki content was added.
|
||||||
|
|
|
@ -43,7 +43,7 @@ class Memo < ActiveRecord::Base
|
||||||
"parent_id",
|
"parent_id",
|
||||||
"replies_count"
|
"replies_count"
|
||||||
|
|
||||||
after_create :add_author_as_watcher, :reset_counters!#,:be_user_score -- 公共区发帖暂不计入得分
|
after_create :add_author_as_watcher, :reset_counters!, :sendmail#,:be_user_score -- 公共区发帖暂不计入得分
|
||||||
# after_update :update_memos_forum
|
# after_update :update_memos_forum
|
||||||
after_destroy :reset_counters!#,:down_user_score -- 公共区发帖暂不计入得分
|
after_destroy :reset_counters!#,:down_user_score -- 公共区发帖暂不计入得分
|
||||||
# after_create :send_notification
|
# after_create :send_notification
|
||||||
|
@ -54,6 +54,12 @@ class Memo < ActiveRecord::Base
|
||||||
# includes(:forum => ).where()
|
# includes(:forum => ).where()
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
def sendmail
|
||||||
|
thread1=Thread.new do
|
||||||
|
Mailer.forum_message_added(self).deliver if Setting.notified_events.include?('forum_message_added')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def cannot_reply_to_locked_topic
|
def cannot_reply_to_locked_topic
|
||||||
errors.add :base, l(:label_memo_locked) if root.locked? && self != root
|
errors.add :base, l(:label_memo_locked) if root.locked? && self != root
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
class MemoObserver < ActiveRecord::Observer
|
||||||
|
def after_create(memo)
|
||||||
|
|
||||||
|
thread1=Thread.new do
|
||||||
|
Mailer.forum_message_added(memo).deliver if Setting.notified_events.include?('forum_message_added')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -188,7 +188,7 @@ class User < Principal
|
||||||
validates_confirmation_of :password, :allow_nil => true
|
validates_confirmation_of :password, :allow_nil => true
|
||||||
validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true
|
validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true
|
||||||
validate :validate_password_length
|
validate :validate_password_length
|
||||||
validates_email_realness_of :mail
|
#validates_email_realness_of :mail
|
||||||
before_create :set_mail_notification
|
before_create :set_mail_notification
|
||||||
before_save :update_hashed_password
|
before_save :update_hashed_password
|
||||||
before_destroy :remove_references_before_destroy
|
before_destroy :remove_references_before_destroy
|
||||||
|
|
|
@ -56,18 +56,30 @@
|
||||||
<%= link_to(bid.name, course_for_bid_path(bid), :class => 'bid_path') %>
|
<%= link_to(bid.name, course_for_bid_path(bid), :class => 'bid_path') %>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td style="width: 110px;">
|
<td style="width: 150px;">
|
||||||
<span style="float: right">
|
<span style="float: right">
|
||||||
<% if User.current.logged? && is_cur_course_student(@course) %>
|
<% if User.current.logged? && is_cur_course_student(@course) %>
|
||||||
<% cur_user_homework = cur_user_homework_for_bid(bid) %>
|
<% cur_user_homework = cur_user_homework_for_bid(bid) %>
|
||||||
|
<span class="span_wping">
|
||||||
|
<% if bid.open_anonymous_evaluation == 1 %>
|
||||||
|
<% case bid.comment_status %>
|
||||||
|
<% when 0 %>
|
||||||
|
<a>未开启匿评</a>
|
||||||
|
<% when 1 %>
|
||||||
|
<a> 匿评中.. </a>
|
||||||
|
<% when 2 %>
|
||||||
|
<a> 匿评结束 </a>
|
||||||
|
<% end %>
|
||||||
|
<% end%>
|
||||||
|
</span>
|
||||||
<% if cur_user_homework && cur_user_homework.empty? %>
|
<% if cur_user_homework && cur_user_homework.empty? %>
|
||||||
<span class="span_wping">
|
<span class="span_wping">
|
||||||
<%= link_to l(:label_commit_homework),new_exercise_book_path(bid) %>
|
<%= link_to l(:label_commit_homework),new_exercise_book_path(bid) %>
|
||||||
</span>
|
</span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span style="color: green; float: right">
|
<span class="span_wping">
|
||||||
<%= l(:lable_has_commit_homework)%>
|
<a>已 提 交</a>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if (User.current.admin?||User.current.allowed_to?(:as_teacher,@course)) %>
|
<% if (User.current.admin?||User.current.allowed_to?(:as_teacher,@course)) %>
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<%= l(:label_tags_course_name) %>
|
<%= l(:label_tags_course_name) %>
|
||||||
<span class="required">* </span>
|
<span class="required">* </span>
|
||||||
</label>
|
</label>
|
||||||
<input id="course_name" type="text" value="<%= @course.name %>" style="width:490px;size:60;" name = "course[name]" maxlength="100">
|
<input id="course_name" type="text" value="<%= @course.name %>" style="width:490px; size:60;" name = "course[name]" maxlength="100">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<%= f.fields_for @course do |m| %>
|
<%= f.fields_for @course do |m| %>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<span class="info" align="right" style="width: 90px; font-weight: bold ;margin-left:22px">
|
<span class="info" align="right" style="width: 90px; font-weight: bold ; margin-left:19px">
|
||||||
<%= l(:label_class_period) %>
|
<%= l(:label_class_period) %>
|
||||||
<span class="required"> * </span>
|
<span class="required"> * </span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
</label>
|
</label>
|
||||||
<input id="course_course_password" type="text" style="width:488px;margin-left: 10px;" value="<%= @course.password %>" size="60" name="course[password]"/>
|
<input id="course_course_password" type="text" style="width:488px;margin-left: 10px;" value="<%= @course.password %>" size="60" name="course[password]"/>
|
||||||
</p>
|
</p>
|
||||||
<em class="info" style="margin-left:95px;">
|
<em class="info" style="margin-left:95px; padding-left: 5px;">
|
||||||
<%= l(:text_command) %>
|
<%= l(:text_command) %>
|
||||||
</em>
|
</em>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
$.get(
|
$.get(
|
||||||
'<%=valid_ajax_course_path%>',
|
'<%=valid_ajax_course_path%>',
|
||||||
{ valid: "name",
|
{ valid: "name",
|
||||||
value: document.getElementById('group_name').value },
|
value: document.getElementById('group_name').value,
|
||||||
|
course_id: <%= @course.id %> },
|
||||||
function (data) {
|
function (data) {
|
||||||
if (!data.valid) {
|
if (!data.valid) {
|
||||||
alert(data.message);
|
alert(data.message);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<%= labelled_form_for @course do |f| %>
|
<%= labelled_form_for @course do |f| %>
|
||||||
<div class="box tabular">
|
<div class="box tabular">
|
||||||
<%= render :partial => 'course_form', :locals => { :f => f } %>
|
<%= render :partial => 'course_form', :locals => { :f => f } %>
|
||||||
<span style="padding-left: 60px">
|
<span style="padding-left: 60px; margin-left: 36px">
|
||||||
<%= submit_tag l(:button_create), :class => "enterprise"%>
|
<%= submit_tag l(:button_create), :class => "enterprise"%>
|
||||||
</span>
|
</span>
|
||||||
<!-- <%#= submit_tag l(:button_create_and_continue), :name => 'course_continue' %> -->
|
<!-- <%#= submit_tag l(:button_create_and_continue), :name => 'course_continue' %> -->
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button name="button" class="f_l ml10" onclick="_file.click()" onmouseover="this.focus()" type="button" style="width:80px; height:26px;">上传文件</button>
|
<button name="button" class="f_l ml10" onclick="_file.click()" onmouseover="this.focus()" type="button" style="width:20%; height:26%;"><%= l(:label_browse)%></button>
|
||||||
<%= file_field_tag 'attachments[dummy][file]',
|
<%= file_field_tag 'attachments[dummy][file]',
|
||||||
:id => '_file',
|
:id => '_file',
|
||||||
:class => 'file_selector',
|
:class => 'file_selector',
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<div id="popbox_upload" style="margin-top: -30px;margin-left: -20px;margin-right: -10px;">
|
<div id="popbox_upload" style="margin-top: -30px;margin-left: -20px;margin-right: -10px;">
|
||||||
<div class="upload_con">
|
<div class="upload_con">
|
||||||
<h2>上传资源</h2>
|
<h2><%= l(:label_upload_files)%></h2>
|
||||||
<div class="upload_box">
|
<div class="upload_box">
|
||||||
<%= error_messages_for 'attachment' %>
|
<%= error_messages_for 'attachment' %>
|
||||||
<div id="network_issue" style="color: red; display: none;">上传出现错误,请您检查您的网络环境,并刷新页面重新上传。</div>
|
<div id="network_issue" style="color: red; display: none;"><%= l(:label_file_upload_error_messages)%></div>
|
||||||
<%= form_tag(course_files_path(course), :multipart => true,:remote => true,:method => :post,:name=>"upload_form") do %>
|
<%= form_tag(course_files_path(course), :multipart => true,:remote => true,:method => :post,:name=>"upload_form") do %>
|
||||||
<label style="margin-top:3px;">文件浏览:</label>
|
<label style="margin-top:3px;"><%= l(:label_file_upload)%></label>
|
||||||
<%= render :partial => 'attachement_list',:locals => {:course => course} %>
|
<%= render :partial => 'attachement_list',:locals => {:course => course} %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<a id="submit_resource" href="javascript:void(0);" class="upload_btn" onclick="submit_resource();">确 认</a>
|
<a id="submit_resource" href="javascript:void(0);" class="upload_btn" onclick="submit_resource();"><%= l(:button_confirm)%></a>
|
||||||
<a href="javascript:void(0);" class="upload_btn upload_btn_grey" onclick="closeModal();">取 消</a>
|
<a href="javascript:void(0);" class="upload_btn upload_btn_grey" onclick="closeModal();"><%= l(:button_cancel)%></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,49 +1,122 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<style type="text/css">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
#scrollsidebar{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#fff; font-style:normal;}
|
||||||
<head>
|
#scrollsidebar div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,ol{ }
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
#scrollsidebar div,img,tr,td,table{ border:0;}
|
||||||
<title>意见反馈浮窗</title>
|
#scrollsidebar ol,ul,li{ list-style-type:none}
|
||||||
|
#scrollsidebar .cl{ clear:both; overflow:hidden; }
|
||||||
|
#scrollsidebar a{ text-decoration:none;}
|
||||||
|
|
||||||
|
html{ overflow-x:hidden;}
|
||||||
|
.custom_service p img {display: inline; margin-top:-5px; vertical-align:middle;}
|
||||||
|
.scrollsidebar{position:absolute; z-index:999; top:150px;}
|
||||||
|
.side_content{width:154px; height:auto; overflow:hidden; float:left; }
|
||||||
|
.side_content .side_list {width:154px;overflow:hidden;}
|
||||||
|
.show_btn{ width:0; height:112px; overflow:hidden; margin-top:50px; float:left; cursor:pointer;}
|
||||||
|
.show_btn span { display:none;}
|
||||||
|
.close_btn{width:24px;height:24px;cursor:pointer;}
|
||||||
|
.side_title,.side_bottom,.close_btn,.show_btn {background:url(/images/sidebar_bg.png) no-repeat;}
|
||||||
|
.side_title {height:46px;}
|
||||||
|
.side_bottom { height:8px;}
|
||||||
|
.side_center {font-family:Verdana, Geneva, sans-serif; padding:5px 12px; font-size:12px;}
|
||||||
|
.close_btn { float:right; display:block; width:21px; height:16px; margin:16px 10px 0 0; _margin:16px 5px 0 0;}
|
||||||
|
.close_btn span { display:none;}
|
||||||
|
.side_center .custom_service p { text-align:center; padding:6px 0; margin:0; vertical-align:middle;}
|
||||||
|
.msgserver { margin:10px 0 4px 4px;}
|
||||||
|
.msgserver a { background:url(/images/sidebar_bg.png) no-repeat -119px -115px; padding-left:22px;}
|
||||||
|
.opnionText{ width:120px; height:180px; border-color:#cecece; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; color:#999; padding:3px;}
|
||||||
|
a.opnionButton{ display:block; font-weight: bold; margin:-25px auto 0; text-align:center;}
|
||||||
|
a:hover.opnionButton{ text-decoration:underline;}
|
||||||
|
|
||||||
|
|
||||||
|
/* blue skin as the default skin */
|
||||||
|
.side_title {background-position:-195px 0;}
|
||||||
|
.side_center {background:url(/images/blue_line.png) repeat-y center;}
|
||||||
|
.side_bottom {background-position:-195px -50px;}
|
||||||
|
.close_btn {background-position:-44px 0;}
|
||||||
|
.close_btn:hover {background-position:-66px 0;}
|
||||||
|
.show_btn {background-position:-119px 0;}
|
||||||
|
.msgserver a {color:#15bccf; }
|
||||||
|
.msgserver a:hover { text-decoration:underline; }
|
||||||
|
</style>
|
||||||
<script>
|
<script>
|
||||||
function mypostion(o){
|
/* =================================================
|
||||||
var width=$(window).width();
|
//
|
||||||
var height=$(window).height();
|
// jQuery Fixed Plugins 1.3.1
|
||||||
var divW=$(o).outerWidth();
|
// author :
|
||||||
var divH=$(o).outerHeight();
|
// Url:
|
||||||
var left=(width-divW)/2+$(window).scrollLeft();
|
// Data : 2012-03-30
|
||||||
var top=(height-divH)/2+$(window).scrollTop();
|
//
|
||||||
return {"left":left,"top":top};
|
// ???? : float --> ????[left or right]
|
||||||
};
|
// minStatue --> ??С???????show_btn
|
||||||
|
// skin --> ???????
|
||||||
|
// durationTime --> ??????
|
||||||
|
//???? :
|
||||||
|
$("#scrollsidebar2").fix({
|
||||||
|
float : 'right', //default.left or right
|
||||||
|
minStatue : true, //default.false or true
|
||||||
|
skin : 'green', //default.gray or yellow ??blue ??green ??orange ??white
|
||||||
|
durationTime : 1000 //
|
||||||
|
});
|
||||||
|
//
|
||||||
|
// =================================================*/
|
||||||
|
|
||||||
function myTips(msg,status){
|
(function($){
|
||||||
if(status!="success" && status!="error"){status="error";};
|
$.fn.fix = function(options){
|
||||||
if (status=="success") {
|
var defaults = {
|
||||||
$("body").append('<div class="ui-mask" id="ui-mask"></div><div class="change_success" id="change_success"><!--span class="send_close" onclick="$(this).parent().remove();$("#ui-mask").remove();"></span--><i></i>'+msg+'</div>');
|
float : 'left',
|
||||||
var my=mypostion("#change_success");
|
minStatue : false,
|
||||||
$("#change_success").css({"position":"absolute","z-index":"9999999","top":my.top+"px","left":my.left+"px"});
|
skin : 'blue',
|
||||||
$("#ui-mask").show();
|
durationTime : 1000
|
||||||
$("#change_success").show();
|
}
|
||||||
setTimeout(function(){
|
var options = $.extend(defaults, options);
|
||||||
$("#change_success,#ui-mask").fadeOut("slow",function(){
|
|
||||||
$("#ui-mask").remove();
|
this.each(function(){
|
||||||
$("#change_success").remove();
|
//???????
|
||||||
|
var thisBox = $(this),
|
||||||
|
closeBtn = thisBox.find('.close_btn' ),
|
||||||
|
show_btn = thisBox.find('.show_btn' ),
|
||||||
|
sideContent = thisBox.find('.side_content'),
|
||||||
|
sideList = thisBox.find('.side_list')
|
||||||
|
;
|
||||||
|
var defaultTop = thisBox.offset().top; //????????top
|
||||||
|
|
||||||
|
thisBox.css(options.float, 0);
|
||||||
|
if(options.minStatue){
|
||||||
|
$(".show_btn").css("float", options.float);
|
||||||
|
sideContent.css('width', 0);
|
||||||
|
show_btn.css('width', 25);
|
||||||
|
|
||||||
|
}
|
||||||
|
//???????
|
||||||
|
if(options.skin) thisBox.addClass('side_'+options.skin);
|
||||||
|
|
||||||
|
|
||||||
|
//????scroll???
|
||||||
|
$(window).bind("scroll",function(){
|
||||||
|
var offsetTop = defaultTop + $(window).scrollTop() + "px";
|
||||||
|
thisBox.animate({
|
||||||
|
top: offsetTop
|
||||||
|
},
|
||||||
|
{
|
||||||
|
duration: options.durationTime,
|
||||||
|
queue: false //???????????????????
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},2500);
|
//close???
|
||||||
}
|
closeBtn.bind("click",function(){
|
||||||
else{
|
sideContent.animate({width: '0px'},"fast");
|
||||||
$("body").append('<div class="ui-mask" id="ui-mask"></div><div class="change_error" id="change_error"><!--span class="send_close" onclick="$(this).parent().remove();$("#ui-mask").remove();"></span--><i></i>'+msg+'</div>');
|
show_btn.stop(true, true).delay(300).animate({ width: '25px'},"fast");
|
||||||
var my=mypostion("#change_error");
|
|
||||||
$("#change_error").css({"position":"absolute","z-index":"9999999","top":my.top+"px","left":my.left+"px"});
|
|
||||||
$("#ui-mask").show();
|
|
||||||
$("#change_error").show();
|
|
||||||
setTimeout(function(){
|
|
||||||
$("#change_error,#ui-mask").fadeOut("slow",function(){
|
|
||||||
$("#ui-mask").remove();
|
|
||||||
$("#change_error").remove();
|
|
||||||
});
|
});
|
||||||
},1000);
|
//show???
|
||||||
};
|
show_btn.click(function() {
|
||||||
};
|
$(this).animate({width: '0px'},"fast");
|
||||||
|
sideContent.stop(true, true).delay(200).animate({ width: '154px'},"fast");
|
||||||
|
});
|
||||||
|
|
||||||
|
}); //end this.each
|
||||||
|
|
||||||
|
};
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
|
@ -59,92 +132,52 @@ function f_submit()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style type="text/css">
|
|
||||||
/*浮窗*/
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
/*body{ height:3000px; font-family:'微软雅黑';}*/
|
<head>
|
||||||
/*div,ul,li,body,h3,p{margin:0; padding:0;}*/
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
|
||||||
#roll a{ text-decoration:none;}
|
<title>意见反馈</title>
|
||||||
#roll{ background:url(/images/f_opnion.jpg) 0 0 no-repeat;width:157px; height:332px; position:absolute;}
|
|
||||||
.opnionBox{ width: 130px; height:146px; margin:76px auto 20px; }
|
|
||||||
.opnionText{ width: 120px !important; height:130px; outline:none; border:none !important;padding: 0 5px !important; color: #03a8bb;line-height:1.5; font-size:12px; }
|
|
||||||
a.opnionButton{ width:40px; height:20px; display:block; margin:0 auto;font-size:14px; color:#fd6e2a; font-weight: bold; }
|
|
||||||
a:hover.opnionButton{ text-decoration:underline;}
|
|
||||||
.opnionCall{ color:#03a8bb; font-size:12px; width:105px; margin:0 auto;}
|
|
||||||
.opnionCall .tectitle{ font-size:14px; alignment-adjust: central; color:#03a8bb; margin-bottom:8px,}
|
|
||||||
/*提示框*/
|
|
||||||
.ui-mask{background-color:#000;opacity:0.5;filter:alpha(opacity=50);width:100%;height:100%;position:fixed;_position:absolute;left:0;top:0;z-index:9999998;display:none;}
|
|
||||||
.change_success{
|
|
||||||
display:block;
|
|
||||||
height:60px;
|
|
||||||
width:300px;
|
|
||||||
line-height:1.9;
|
|
||||||
font-size:14px;
|
|
||||||
font-weight:500;
|
|
||||||
background:#fff;
|
|
||||||
color:#1395a4;
|
|
||||||
border:5px solid #1395a4;
|
|
||||||
font-size:14px;
|
|
||||||
padding:30px 20px;
|
|
||||||
position: absolute;
|
|
||||||
_position: absolute;
|
|
||||||
left:0;
|
|
||||||
top:0;
|
|
||||||
z-index:9999999;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
|
<body style="height:auto">
|
||||||
<body>
|
<!-- ?ú?? ???? -->
|
||||||
<div id="roll">
|
<div class="scrollsidebar" id="scrollsidebar">
|
||||||
<div class="opnionBox">
|
<div class="side_content">
|
||||||
|
<div class="side_list">
|
||||||
<% get_memo %>
|
<div class="side_title"><a title="意见反馈" class="close_btn"><span><%= l(:label_feedback) %></span></a></div>
|
||||||
<%= form_for(@new_memo, :url => create_feedback_forum_path(@public_forum)) do |f| %>
|
<div class="side_center">
|
||||||
<div class="actions" style="max-width:680px;">
|
<div class="custom_service">
|
||||||
<p style="margin:0; padding:0;">
|
<% get_memo %>
|
||||||
<%= f.text_area :subject, :class => "opnionText",:placeholder => "有什么想说的,尽管来咆哮吧~~"%>
|
<%= form_for(@new_memo, :url => create_feedback_forum_path(@public_forum)) do |f| %>
|
||||||
</p>
|
<%= f.text_area :subject, :class => "opnionText",:placeholder => "有什么想说的,尽管来咆哮吧~~"%>
|
||||||
<p style="margin:0; padding:0;">
|
<%= f.hidden_field :content, :required => true ,:value=>'该贴来自用户反馈!'%>
|
||||||
<%= f.hidden_field :content, :required => true ,:value=>'该贴来自用户反馈!'%>
|
<%#= f.submit :value => l(:label_memo_create), :class => "opnionButton", :id => "button1" %>
|
||||||
</p>
|
<a href="javascript:void(0);" class="opnionButton" style=" color:#fd6e2a;" id="" onclick="f_submit();">提 交</a>
|
||||||
<%#= f.submit :value => l(:label_memo_create), :class => "opnionButton", :id => "button1" %>
|
<% end %>
|
||||||
<a href="javascript:void(0);" class="opnionButton" id="" onclick="f_submit();">提 交</a>
|
</div>
|
||||||
<% end %>
|
<div class="msgserver">
|
||||||
</div>
|
<p>
|
||||||
|
<a href="http://user.trustie.net/users/12/user_newfeedback" style="color: #15BCCF;"><%= l(:label_technical_support) %>黄井泉</a></br>
|
||||||
|
<a href="http://user.trustie.net/users/34/user_newfeedback" style="color: #15BCCF;"><%= l(:label_technical_support) %>白 羽</a>
|
||||||
</form>
|
</p>
|
||||||
<div class="clear"></div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="side_bottom"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="show_btn"><span>提交</span></div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- ?ú?? ?á?? -->
|
||||||
<div class="opnionCall">
|
<script type="text/javascript">
|
||||||
<div class="tectitle">技术支持:</div>
|
$(function() {
|
||||||
<p style="margin:0; padding:0;" ><%= l(:label_course_adcolick) %><a href="http://user.trustie.net/users/12/user_newfeedback">黄井泉</a><br>
|
$("#scrollsidebar").fix({
|
||||||
<%= l(:label_course_adcolick) %><a href="http://user.trustie.net/users/34/user_newfeedback">白羽</a></p>
|
float : 'right', //default.left or right
|
||||||
</div>
|
//minStatue : true,
|
||||||
|
skin : 'green', //default.gray or blue
|
||||||
</div>
|
durationTime : 600
|
||||||
|
});
|
||||||
</body>
|
});
|
||||||
</html>
|
|
||||||
<script>
|
|
||||||
var roll=document.getElementById('roll'),
|
|
||||||
initX=0,
|
|
||||||
initY,
|
|
||||||
compY,
|
|
||||||
sp=15,
|
|
||||||
//可调整时间间隔,步进值不宜过大,不然IE下有点闪屏;
|
|
||||||
timeGap=5,
|
|
||||||
doc=document.documentElement,
|
|
||||||
docBody=document.body;
|
|
||||||
compY=initY=100;
|
|
||||||
roll.style.right=initX+"px";
|
|
||||||
;(function(){
|
|
||||||
var curScrollTop=(doc.scrollTop||docBody.scrollTop||0)-(doc.clientTop||docBody.clientTop||0);
|
|
||||||
//每次comP的值都不一样;直到roll.style.top===doc.scrollTop+initY;
|
|
||||||
compY+=(curScrollTop+initY-compY)/sp;
|
|
||||||
roll.style.top=Math.ceil(compY)+"px";
|
|
||||||
setTimeout(arguments.callee,timeGap);
|
|
||||||
})();
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -305,7 +305,7 @@
|
||||||
.polls_btn a{font-size:14px; color:#444444;font-weight:bold;}
|
.polls_btn a{font-size:14px; color:#444444;font-weight:bold;}
|
||||||
.polls_btn span{ color:#15bed1; font-size:12px; font-weight:normal;}
|
.polls_btn span{ color:#15bed1; font-size:12px; font-weight:normal;}
|
||||||
.polls_btn a{ float:left;}
|
.polls_btn a{ float:left;}
|
||||||
.polls_n{float: left;background: #ff5d31;color: #fff;width: 12px;padding-left: 2px;height: 7px;padding-bottom: 5px;padding-top: 3px;margin-top: -4px;margin-left: 3px; }
|
.polls_n{float: left;background: #ff5d31;color: #fff;width: 32px;padding-left: 2px;height: 7px;padding-bottom: 5px;padding-top: 3px;margin-top: -4px;margin-left: 3px; }
|
||||||
.polls_n p{ margin-top:-4px;}
|
.polls_n p{ margin-top:-4px;}
|
||||||
.cl{ clear:both; overflow:hidden; }
|
.cl{ clear:both; overflow:hidden; }
|
||||||
</style>
|
</style>
|
||||||
|
@ -313,7 +313,7 @@
|
||||||
<!--<a href="#">问卷调查<span >(12)</span></a>-->
|
<!--<a href="#">问卷调查<span >(12)</span></a>-->
|
||||||
<%= link_to l(:label_poll), poll_index_path(:polls_type => "Course", :polls_group_id => @course.id)%>
|
<%= link_to l(:label_poll), poll_index_path(:polls_type => "Course", :polls_group_id => @course.id)%>
|
||||||
<div class="polls_n">
|
<div class="polls_n">
|
||||||
<p>N</p>
|
<p>NEW</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,37 +10,43 @@ body{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; back
|
||||||
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,ol{ margin:0; padding:0;}
|
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,ol{ margin:0; padding:0;}
|
||||||
div,img,tr,td,table{ border:0;}
|
div,img,tr,td,table{ border:0;}
|
||||||
table,tr,td{border:0;cellspacing:0; cellpadding:0;}
|
table,tr,td{border:0;cellspacing:0; cellpadding:0;}
|
||||||
ol,ul,li{ list-style-type:none}
|
|
||||||
.cl{ clear:both; overflow:hidden; }
|
|
||||||
a{ text-decoration:none; }
|
|
||||||
a:hover{ text-decoration:underline; }
|
|
||||||
.mail_box,ul,li{ list-style-type:none}
|
|
||||||
.mail{ width:600px; margin:20px; height:auto; color:#4b4b4b; font-size:14px; }
|
.mail{ width:600px; margin:20px; height:auto; color:#4b4b4b; font-size:14px; }
|
||||||
|
ol,ul,li{ list-style-type:none}
|
||||||
|
.cl{ clear:both; overflow:hidden; margin-top: 30px;}
|
||||||
|
.mail_box,ul,li{ list-style-type:none}
|
||||||
.mail a{color:#1b55a7; font-weight: bold; }
|
.mail a{color:#1b55a7; font-weight: bold; }
|
||||||
.mail_content{ margin-top:30px;}
|
.mail_content{ margin-top:30px;}
|
||||||
.c_blue{ color:#1b55a7;}
|
.c_blue{ color:#1b55a7;}
|
||||||
.mail_box{ border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;}
|
.mail_box{ border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;}
|
||||||
.mail_box_p{ float:left; display: block; width:527px;}
|
.mail_box_p{ float:left; display: block; width:527px;}
|
||||||
a.mail_reply{ display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px;}
|
|
||||||
a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}
|
|
||||||
.mail_fujian{ float:left; width:527px; display: block; }
|
.mail_fujian{ float:left; width:527px; display: block; }
|
||||||
.mail_fujian a{ font-weight:normal; font-size:12px;}
|
.mail_fujian a{ font-weight:normal; font-size:12px;}
|
||||||
.mail_foot a{ font-size:12px; font-weight:normal;}
|
.mail_foot a{ font-size:12px; font-weight:normal;}
|
||||||
|
|
||||||
|
a{ text-decoration:none; }
|
||||||
|
a:hover{ text-decoration:underline; }
|
||||||
|
a.mail_reply{ display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px;}
|
||||||
|
a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
|
||||||
<div class="container">
|
<body style="font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#fff; font-style:normal; margin:0; padding:0; border:0;">
|
||||||
<div class="mail">
|
<div class="container" style="margin:0; padding:0; border:0;">
|
||||||
<div class="mail_head">
|
<div class="mail" style="width:600px; margin:20px; height:auto; color:#4b4b4b; font-size:14px; margin:0; padding:0; border:0;">
|
||||||
<p>亲爱的Trustie用户,您好!</p>
|
<div class="mail_head" style="margin:0; padding:0; border:0;">
|
||||||
|
<p><%= l(:mail_issue_greetings)%></p>
|
||||||
</div><!--mail_head end-->
|
</div><!--mail_head end-->
|
||||||
<%= yield %>
|
<%= yield %>
|
||||||
<hr />
|
<hr />
|
||||||
<span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer).html_safe %></span><!--mail_foot end-->
|
<span class="footer" style="margin:0; padding:0;"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer).html_safe %></span><!--mail_foot end-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,32 +1,40 @@
|
||||||
<!-- <h1><%#= link_to(h("#{issue.tracker.name} ##{issue.project_index}: #{issue.subject}"), issue_url) %></h1> -->
|
<!-- <h1><%#= link_to(h("#{issue.tracker.name} ##{issue.project_index}: #{issue.subject}"), issue_url) %></h1> -->
|
||||||
<p>
|
<p>
|
||||||
<span class="c_blue">
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
<%= link_to(h("#{@issue.author}(#{@issue.author.show_name})"), @issue_author_url) %>
|
<%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
</span>在
|
</span><%= l(:mail_issue_title_userin)%>
|
||||||
<span class="c_blue"><%= link_to(h("#{@issue.project.name}"),@project_url) %></span>中有了一个与您相关的最新活动,请您关注!</p>
|
<span class="c_blue" style="color:#1b55a7;"><%= link_to(h("#{@issue.project.name}"), @project_url, :style=>'color:#1b55a7; font-weight:bold;') %></span><%= l(:mail_issue_title_active)%></p>
|
||||||
<div class="mail_box">
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
<ul>
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
<li style="list-style-type:none"><span style="float: left"><strong>标题:</strong></span><span style="float: left; width: 500px"><%= link_to(issue.subject, issue_url) %></span></li>
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span><span style="float: left; width: 526px"><%= link_to(issue.subject, issue_url, :style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
<li style="list-style-type:none"><span style="float: left"> <strong>来源:</strong></span><span style="float: left; width: 500px"><%= issue.project.name %><b>| </b>项目<%= issue.tracker.name%></span></li>
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_sent_from)%></strong></span><span style="float: left; width: 526px"><%= issue.project.name %><b>| </b><%= l(:mail_issue_from_project)%></span></li>
|
||||||
<li style="list-style-type:none"><span style="float: left"> <strong >内容:</strong></span><span style="float: left; width: 500px">
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
<%= issue.description %></span>
|
<span style="float: left; width: 526px">
|
||||||
|
<% if @journal.nil? %>
|
||||||
|
<%= issue.description %>
|
||||||
|
<% else %>
|
||||||
|
<%= @journal.notes %>
|
||||||
|
<% end%>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li style="list-style-type:none">
|
<li style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
|
||||||
<% unless @issue.attachments.nil? %>
|
<% unless @issue.attachments.nil? %>
|
||||||
<span style="float: left"> <strong>附件:</strong>
|
<span style="float: left"> <strong><%= l(:mail_issue_attachments)%></strong></span>
|
||||||
</span><span style="float: left; width: 500px">
|
<span style="float: left; width: 526px; margin:0; padding:0;">
|
||||||
<% @issue.attachments.each do |attach| %>
|
<% @issue.attachments.each do |attach| %>
|
||||||
<p><%= link_to_attachment(attach, :download => true, :token => @token.value, :only_path => false) %></p>
|
<p style="float: left; width: 526px; margin:0; padding:0;"><%= link_to_attachment(attach, :download => true, :token => @token.value, :only_path => false, :style=>'color:#1b55a7; font-weight:bold;')%></p>
|
||||||
<% end %></span>
|
<% end %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
<label class="mail_reply"><%= link_to( "我要回复", issue_url, :class => "mail_reply") %></label>
|
<label class="mail_reply">
|
||||||
<div class="cl"></div>
|
<%= link_to( l(:mail_issue_reply), issue_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <li><%#=l(:field_author)%>: <%#=h issue.author %></li>
|
<!-- <li><%#=l(:field_author)%>: <%#=h issue.author %></li>
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
|
|
||||||
<%= 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) %>中有了一个与您相关的最新活动,请您关注!
|
<%= link_to(h("#{@issue.project.name}"),@project_url) %><%= l(:mail_issue_title_active)%>
|
||||||
标题:<%= link_to(issue.subject, issue_url) %>
|
<%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url) %>
|
||||||
来源:<%= issue.project.name %>| 项目缺陷<
|
<%= l(:mail_issue_sent_from)%>| <%= l(:mail_issue_from_project)%>
|
||||||
内容:
|
<%= l(:mail_issue_content)%>
|
||||||
|
<% if @journal.nil? %>
|
||||||
<%= issue.description %>
|
<%= issue.description %>
|
||||||
|
<% else %>
|
||||||
|
<%= @journal.notes %>
|
||||||
|
<% end%>
|
||||||
<% unless @issue.attachments.nil? %>
|
<% unless @issue.attachments.nil? %>
|
||||||
附件:
|
<%= l(:mail_issue_attachments)%>
|
||||||
|
|
||||||
|
|
||||||
<% @issue.attachments.each do |attach| %>
|
<% @issue.attachments.each do |attach| %>
|
||||||
|
@ -16,4 +20,4 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
<%= link_to( "我要回复", issue_url) %>
|
<%= link_to( l(:mail_issue_reply), issue_url) %>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<%= link_to(h("#{@forum.creator.login}(#{@forum.creator.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
|
||||||
|
</span><%= l(:label_forum_new)%>
|
||||||
|
<%= link_to(h(@forum.name), @forum_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
</p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px"> <%= link_to(h(@forum.name), @forum_url,:style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
|
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @forum.description.html_safe %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @forum_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<%= @forum_url %>
|
||||||
|
<%= @author.name %>
|
||||||
|
|
||||||
|
<%= @forum.description %>
|
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
</span><%= l(:mail_issue_title_userin)%>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<%= link_to(h(@forum.name), @forum_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
|
||||||
|
</span><%= l(:mail_issue_title_active)%></p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px"> <%= link_to(h(@memo.subject), @memo_url,:style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_sent_from)%></strong></span>
|
||||||
|
<%= link_to(h(@forum.name), @forum_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
</li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @memo.content.html_safe %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @memo_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%= @memo_url %>
|
||||||
|
<%= @author.name %>
|
||||||
|
|
||||||
|
<%= @memo.subject %>
|
||||||
|
<%= @memo.content %>
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="mail_content">
|
<div class="mail_content" style="margin-top:30px; margin:0; padding:0; border:0;">
|
||||||
|
|
||||||
|
|
||||||
<%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
<%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mail_foot"><%= link_to("退订该邮件?", @user_url) %> </div>
|
<div class="mail_foot" style="margin:0; padding:0; border:0;"><%= link_to( l(:mail_issue_footer), @user_url , :style=>'font-size:12px; font-weight:normal; color:#1b55a7;') %> </div>
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
|
|
||||||
<%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
<%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
||||||
<%= link_to("退订该邮件?", @user_url) %>
|
<%= link_to( l(:mail_issue_footer), @user_url) %>
|
|
@ -1,15 +1,11 @@
|
||||||
<%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => h(@journal.user)) %>
|
<div>
|
||||||
|
<%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => h(@journal.user)) %>
|
||||||
|
|
||||||
<ul>
|
|
||||||
<% details_to_strings(@journal.details, false, :only_path => false, :token => @token.value).each do |string| %>
|
</div>
|
||||||
<% if (!string.include? l(:label_attachment)) && (!string.include? "attachments") %>
|
<div class="cl" style="margin-top: 15px; clear:both; overflow:hidden;"></div>
|
||||||
<li><%= string %></li>
|
<hr/>
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<span style="float: left"><strong><%= l(:field_content)%>:</strong></span><span style="float: left; width: 540px"><%= @journal.notes %></span>
|
|
||||||
<hr />
|
|
||||||
<%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
<%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
||||||
<div class="mail_foot"><%= link_to("退订该邮件?", @user_url) %> </div>
|
<div class="mail_foot"><%= link_to( l(:mail_issue_footer), @user_url, :style=>'font-size:12px; font-weight:normal; color:#1b55a7;') %> </div>
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,8 @@
|
||||||
<%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => @journal.user) %>
|
<%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => @journal.user) %>
|
||||||
|
|
||||||
<% details_to_strings(@journal.details, true, :token => @token.value).each do |string| -%>
|
|
||||||
<% if (!string.include? l(:label_attachment)) && (!string.include? "attachments") %>
|
|
||||||
<li><%= string %></li>
|
|
||||||
<% end %>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
<% if @journal.notes? -%>
|
|
||||||
<%= l(:field_content)%>:<%= @journal.notes %>
|
|
||||||
|
|
||||||
<% end -%>
|
--------------------------------------------------------------------------------
|
||||||
----------------------------------------
|
|
||||||
<%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
<%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :issue_url => @issue_url } %>
|
||||||
|
|
||||||
<%= link_to("退订该邮件?", @user_url) %>
|
<%= link_to( l(:mail_issue_footer), @user_url) %>
|
|
@ -1,5 +1,25 @@
|
||||||
<em>尊敬的用户,<%= @user %>给你留言了:</em>
|
|
||||||
<div><%= @message %></div>
|
<p>
|
||||||
<h1>点击链接查看最新回复<%= link_to(@url, @url) %></h1>
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
<h4><%= link_to(l(:lable_not_receive_mail),"http://" + Setting.host_name + "/my/account")%></h4>
|
|
||||||
|
<%= link_to(h("#{@user.login}(#{@user.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
</span>给你留言了
|
||||||
|
</p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @message %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,38 @@
|
||||||
<h1><%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to(h(@message.subject), @message_url) %></h1>
|
|
||||||
<em><%=h @message.author %></em>
|
|
||||||
|
|
||||||
<%= textilizable(@message, :content, :only_path => false) %>
|
<p>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<%= link_to(h("#{@message.author.login}(#{@message.author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
|
||||||
|
</span><%= l(:mail_issue_title_userin)%>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<% 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,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
<% end %>
|
||||||
|
</span><%= l(:mail_issue_title_active)%></p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span><span style="float: left; width: 526px"> <%= link_to(h(@message.subject), @message_url, :style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_sent_from)%></strong></span>
|
||||||
|
<% if @message.project %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @message.board.project.name %> - <%=h @message.board.name %></span>
|
||||||
|
<% elsif @message.course %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @message.board.course.name %> - <%=h @message.board.name %></span>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @message.content %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @message_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,41 @@
|
||||||
<h1><%= link_to(h(@news.title), @news_url) %></h1>
|
|
||||||
<em><%=h @news.author.name %></em>
|
|
||||||
|
|
||||||
<%= textilizable(@news, :description, :only_path => false) %>
|
<p>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
|
||||||
|
<%= link_to(h("#{@news.author.login}(#{@news.author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
|
||||||
|
</span><%= l(:mail_issue_title_userin)%>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<% if @news.project %>
|
||||||
|
<%=h @news.project.name %> : <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
<% elsif @news.course %>
|
||||||
|
<%=h @news.course.name %> : <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
<% end %>
|
||||||
|
</span><%= l(:mail_issue_title_active)%></p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px"> <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_sent_from)%></strong></span>
|
||||||
|
<% if @news.project %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @news.project.name %></span>
|
||||||
|
<% elsif @news.course %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @news.course.name %></span>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @news.description %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @news_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,40 @@
|
||||||
<h1><%= link_to(h(@news.title), @news_url) %></h1>
|
|
||||||
|
|
||||||
<p><%= l(:text_user_wrote, :value => h(@comment.author)) %></p>
|
<p>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<%= link_to(h("#{@comment.author.login}(#{@comment.author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
|
||||||
|
</span><%= l(:mail_issue_title_userin)%>
|
||||||
|
<span class="c_blue" style="color:#1b55a7;">
|
||||||
|
<% if @news.project %>
|
||||||
|
<%=h @news.project.name %> : <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
<% elsif @news.course %>
|
||||||
|
<%=h @news.course.name %> : <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %>
|
||||||
|
<% end %>
|
||||||
|
</span><%= l(:mail_issue_title_active)%></p>
|
||||||
|
<div class="mail_box" style="border:1px solid #c8c8c8; width:570px; height: auto; padding:15px; margin-top:10px; margin-bottom:10px;">
|
||||||
|
<ul style="list-style-type:none; margin:0; padding:0;">
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_subject)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px"> <%= link_to(h(@news.title), @news_url,:style=>'color:#1b55a7; font-weight:bold;') %></span></li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_sent_from)%></strong></span>
|
||||||
|
<% if @news.project %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @news.project.name %></span>
|
||||||
|
<% elsif @news.course %>
|
||||||
|
<span style="float: left; width: 526px"><%=h @news.course.name %></span>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li style="list-style-type:none; margin:0; padding:0;"><span style="float: left;"><strong><%= l(:mail_issue_content)%></strong></span>
|
||||||
|
<span style="float: left; width: 526px">
|
||||||
|
<%= @news.description %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
<label class="mail_reply">
|
||||||
|
<%= link_to(l(:mail_issue_reply), @news_url, :class => "mail_reply", :style =>'display:block; float:right; width:80px; text-align:center; height:30px; background:#15bccf; color:#fff; font-weight:normal; font-size:14px; line-height: 30px;') %>
|
||||||
|
</label>
|
||||||
|
<div class="cl" style="margin-top: 30px; clear:both; overflow:hidden;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<%= textilizable @comment, :comments, :only_path => false %>
|
|
||||||
|
|
|
@ -123,10 +123,10 @@
|
||||||
<br/>
|
<br/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p style="width:400px;padding-left: 50px;">
|
<p style="width:400px;padding-left: 53px;">
|
||||||
<label style="margin-right: 1px;">
|
<label for="userIdentity">
|
||||||
<%= l(:label_identity) %><span style="color: #bb0000;"> *</span></label>
|
<%= l(:label_identity) %><span class="required"> *</span></label>
|
||||||
<select onchange="showtechnical_title(this.value, $('#userTechnical_title'));" name="identity" id="userIdentity" class="location" style="margin: 0px;">
|
<select onchange="showtechnical_title(this.value, $('#userTechnical_title'));" name="identity" id="userIdentity" class="location" style="margin: -4px;">
|
||||||
<option value="">
|
<option value="">
|
||||||
<%= l(:label_account_identity_choose) %>
|
<%= l(:label_account_identity_choose) %>
|
||||||
</option>
|
</option>
|
||||||
|
@ -187,19 +187,19 @@
|
||||||
<!-- added by bai 增加账户里的性别-->
|
<!-- added by bai 增加账户里的性别-->
|
||||||
<span id='gender' style='display:none'>
|
<span id='gender' style='display:none'>
|
||||||
<% if @user.user_extensions.nil? %>
|
<% if @user.user_extensions.nil? %>
|
||||||
<p style="width:400px;padding-left: 52px;">
|
<p style="width:400px;padding-left: 53px;">
|
||||||
<%= l(:label_gender) %>
|
<label for="gender"><%= l(:label_gender) %> </label>
|
||||||
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
||||||
</p>
|
</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% if @user.user_extensions.gender == 0 %><!-- label_gender_male -->
|
<% if @user.user_extensions.gender == 0 %><!-- label_gender_male -->
|
||||||
<p style="width:400px;padding-left: 52px;">
|
<p style="width:400px;padding-left: 53px;">
|
||||||
<%= l(:label_gender) %>
|
<label for="gender"><%= l(:label_gender) %> </label>
|
||||||
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
||||||
</p>
|
</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p style="width:400px;padding-left: 54px;">
|
<p style="width:400px;padding-left: 54px;">
|
||||||
<%= l(:label_gender) %>
|
<label for="gender"><%= l(:label_gender) %> </label>
|
||||||
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1' selected='selected'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option><option value = '1' selected='selected'>#{l(:label_gender_female)}</option>".html_safe, :class => 'gender' %>
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -212,9 +212,9 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- added by Wen -->
|
<!-- added by Wen -->
|
||||||
<p id="occupation_detail" style="padding-left: 24px; display: none">
|
<p id="occupation_detail" style="padding-left: 25px; display: none">
|
||||||
|
|
||||||
<%= l(:field_occupation) %>
|
<label for="occupation_name"><%= l(:field_occupation) %></label>
|
||||||
<span class="required"> </span>
|
<span class="required"> </span>
|
||||||
<% if User.current.user_extensions.nil? %>
|
<% if User.current.user_extensions.nil? %>
|
||||||
<input id="province" name="province" style="display: none" type="text" value="请单击选择省份及学校" readonly>
|
<input id="province" name="province" style="display: none" type="text" value="请单击选择省份及学校" readonly>
|
||||||
|
@ -318,7 +318,7 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<p style="width:400px;padding-left: 55px;"><label style="margin-right: 5px;"><%= l(:label_location) %></label>
|
<p style="width:400px;padding-left: 55px;"><label style="margin-right: 5px;" for="userProvince"><%= l(:label_location) %></label>
|
||||||
<select onchange="showcity(this.value, document.getElementById('userCity'));" name="province" id="userProvince" class="location">
|
<select onchange="showcity(this.value, document.getElementById('userCity'));" name="province" id="userProvince" class="location">
|
||||||
<option value="">--请选择省份--</option>
|
<option value="">--请选择省份--</option>
|
||||||
<option value="北京">北京</option>
|
<option value="北京">北京</option>
|
||||||
|
@ -382,7 +382,7 @@
|
||||||
<legend onclick="toggleFieldset(this);">
|
<legend onclick="toggleFieldset(this);">
|
||||||
<%= l(:field_mail_notification) %>
|
<%= l(:field_mail_notification) %>
|
||||||
</legend>
|
</legend>
|
||||||
<div style="padding-left: 8px;"> <!-- modified by ming -->
|
<div style="padding-left: 3px;"> <!-- modified by ming -->
|
||||||
<p style="width:380px;">
|
<p style="width:380px;">
|
||||||
<%= render :partial => 'users/mail_notifications' %>
|
<%= render :partial => 'users/mail_notifications' %>
|
||||||
</p></div>
|
</p></div>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<textarea name="polls_description" maxlength="300" id="polls_description" class="textarea_editor"><%= @poll.polls_description%></textarea>
|
<textarea name="polls_description" maxlength="300" id="polls_description" class="textarea_editor"><%= @poll.polls_description%></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="ur_editor_footer">
|
<div class="ur_editor_footer">
|
||||||
<a class="btn_submit" data-button="ok" onclick="$(this).parent().parent().parent().submit();">确定</a>
|
<a class="btn_submit" data-button="ok" onclick="pollsSubmit($(this));">确定</a>
|
||||||
<a class="btn_cancel" data-button="cancel" onclick="pollsCancel();">取消</a>
|
<a class="btn_cancel" data-button="cancel" onclick="pollsCancel();">取消</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
<li>
|
<li>
|
||||||
<%if @is_teacher %>
|
<%if @is_teacher %>
|
||||||
<% if poll.polls_status == 1 %>
|
<% if poll.polls_status == 1 %>
|
||||||
<a href="#" class="pollsbtn btn_pu fl ml5" onclick="poll_submit(<%= poll.id%>);">发布问卷</a>
|
<a href="#" class="pollsbtn btn_pu fl ml5" onclick="poll_submit(<%= poll.id%>,<%= poll.polls_name.length %>);">发布问卷</a>
|
||||||
<% elsif poll.polls_status == 2%>
|
<% elsif poll.polls_status == 2%>
|
||||||
<a href="#" class="pollsbtn btn_de fl ml5" onclick="republish_poll(<%= poll.id%>);">取消发布</a>
|
<a href="#" class="pollsbtn btn_de fl ml5" onclick="republish_poll(<%= poll.id%>);">取消发布</a>
|
||||||
<% end%>
|
<% end%>
|
||||||
|
|
|
@ -25,6 +25,10 @@
|
||||||
}
|
}
|
||||||
//问卷头
|
//问卷头
|
||||||
function pollsCancel(){$("#polls_head_edit").hide();$("#polls_head_show").show();}
|
function pollsCancel(){$("#polls_head_edit").hide();$("#polls_head_show").show();}
|
||||||
|
function pollsSubmit(doc){
|
||||||
|
var title = $.trim($("#polls_title").val());
|
||||||
|
if(title.length == 0){alert("问卷标题不能为空");}else{doc.parent().parent().parent().submit();}
|
||||||
|
}
|
||||||
function pollsEdit(){$("#polls_head_edit").show();$("#polls_head_show").hide();}
|
function pollsEdit(){$("#polls_head_edit").show();$("#polls_head_show").hide();}
|
||||||
//
|
//
|
||||||
function pollQuestionCancel(question_id){
|
function pollQuestionCancel(question_id){
|
||||||
|
@ -57,15 +61,22 @@
|
||||||
|
|
||||||
function poll_submit()
|
function poll_submit()
|
||||||
{
|
{
|
||||||
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'poll_submit', locals: { :poll => @poll,:is_remote => false}) %>');
|
var title = $.trim($("#polls_name_h").html());
|
||||||
showModal('ajax-modal', '310px');
|
if(title.length == 0)
|
||||||
$('#ajax-modal').css('height','110px');
|
{
|
||||||
$('#ajax-modal').siblings().remove();
|
alert("问卷标题不能为空");
|
||||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
}
|
||||||
"<a href='#' onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
else{
|
||||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'poll_submit', locals: { :poll => @poll,:is_remote => false}) %>');
|
||||||
$('#ajax-modal').parent().css("top","").css("left","");
|
showModal('ajax-modal', '310px');
|
||||||
$('#ajax-modal').parent().addClass("popbox_polls");
|
$('#ajax-modal').css('height','115px');
|
||||||
|
$('#ajax-modal').siblings().remove();
|
||||||
|
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||||
|
"<a href='#' onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||||
|
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||||
|
$('#ajax-modal').parent().css("top","").css("left","");
|
||||||
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="ur_page_head ur_editor02"><!--头部显示 start-->
|
<div class="ur_page_head ur_editor02"><!--头部显示 start-->
|
||||||
<a href="#" class="ur_icon_edit" title="编辑" onclick="pollsEdit();"></a>
|
<a href="#" class="ur_icon_edit" title="编辑" onclick="pollsEdit();"></a>
|
||||||
<h1 class="ur_page_title" id="polls_name_h">
|
<h1 class="ur_page_title" id="polls_name_h">
|
||||||
<%= poll.polls_name.empty? ? l(:label_poll_new) : poll.polls_name%>
|
<%= poll.polls_name%>
|
||||||
</h1>
|
</h1>
|
||||||
<p class="ur_prefix_content" id="polls_description_p">
|
<p class="ur_prefix_content" id="polls_description_p">
|
||||||
<%= @poll.polls_description%>
|
<%= @poll.polls_description%>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="ur_inputs">
|
<div class="ur_inputs">
|
||||||
<p>
|
<p>
|
||||||
<%= get_anwser_vote_text poll_question.id,User.current.id%>
|
<%= get_anwser_vote_text(poll_question.id,User.current.id).html_safe%>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"</div>" +
|
"</div>" +
|
||||||
"</div>");
|
"</div>");
|
||||||
showModal('ajax-modal', '310px');
|
showModal('ajax-modal', '310px');
|
||||||
$('#ajax-modal').css('height','110px');
|
$('#ajax-modal').css('height','115px');
|
||||||
$('#ajax-modal').siblings().remove();
|
$('#ajax-modal').siblings().remove();
|
||||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||||
"<a onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
"<a onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||||
|
@ -26,28 +26,35 @@
|
||||||
|
|
||||||
function clickCanel(){hideModal("#popbox02");}
|
function clickCanel(){hideModal("#popbox02");}
|
||||||
|
|
||||||
function poll_submit(poll_id)
|
function poll_submit(poll_id,poll_name)
|
||||||
{
|
{
|
||||||
$('#ajax-modal').html("<div id='popbox02'>" +
|
if(poll_name == 0)
|
||||||
"<div class='upload_con'>" +
|
{
|
||||||
"<div class='upload_box'>" +
|
alert("问卷标题不能为空");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('#ajax-modal').html("<div id='popbox02'>" +
|
||||||
|
"<div class='upload_con'>" +
|
||||||
|
"<div class='upload_box'>" +
|
||||||
"<p class='polls_box_p'>问卷发布后将不能对问卷进行修改,<br />是否确定发布该问卷?</p>" +
|
"<p class='polls_box_p'>问卷发布后将不能对问卷进行修改,<br />是否确定发布该问卷?</p>" +
|
||||||
"<div class='polls_btn_box'>" +
|
"<div class='polls_btn_box'>" +
|
||||||
"<a href='/poll/"+ poll_id +"/publish_poll' class='upload_btn' onclick='clickCanel();' data-remote='true'>确 定</a>" +
|
"<a href='/poll/"+ poll_id +"/publish_poll' class='upload_btn' onclick='clickCanel();' data-remote='true'>确 定</a>" +
|
||||||
"<a class='upload_btn upload_btn_grey' onclick='clickCanel();'>取 消</a>" +
|
"<a class='upload_btn upload_btn_grey' onclick='clickCanel();'>取 消</a>" +
|
||||||
"</div>" +
|
"</div>" +
|
||||||
"<div class='cl'></div>" +
|
"<div class='cl'></div>" +
|
||||||
"</div>" +
|
"</div>" +
|
||||||
"</div>" +
|
"</div>" +
|
||||||
"</div>");
|
"</div>");
|
||||||
showModal('ajax-modal', '310px');
|
showModal('ajax-modal', '310px');
|
||||||
$('#ajax-modal').css('height','110px');
|
$('#ajax-modal').css('height','115px');
|
||||||
$('#ajax-modal').siblings().remove();
|
$('#ajax-modal').siblings().remove();
|
||||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||||
"<a href='#' onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
"<a href='#' onclick='clickCanel();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||||
$('#ajax-modal').parent().css("top","").css("left","");
|
$('#ajax-modal').parent().css("top","").css("left","");
|
||||||
$('#ajax-modal').parent().addClass("popbox_polls");
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<div class="polls_content" id="polls" style="width:677px;">
|
<div class="polls_content" id="polls" style="width:677px;">
|
||||||
|
|
|
@ -2,34 +2,43 @@
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<title><%= l(:label_poll_result) %></title>
|
<title>
|
||||||
|
<%= l(:label_poll_result) %>
|
||||||
|
</title>
|
||||||
<%= stylesheet_link_tag 'polls', :media => 'all' %>
|
<%= stylesheet_link_tag 'polls', :media => 'all' %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="polls_content polls_box" id="polls">
|
<div class="polls_content polls_box" id="polls">
|
||||||
<div class="ur_page_head" >
|
<div class="ur_page_head" >
|
||||||
<h1 class="ur_page_title"><%= @poll.polls_name %> <%= l(:label_poll) %></h1>
|
<h1 class="ur_page_title">
|
||||||
|
<%= @poll.polls_name %>
|
||||||
|
<%= l(:label_poll) %>
|
||||||
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="">
|
<div>
|
||||||
<% @poll_questions.each do |poll_question| %>
|
<% @poll_questions.each do |poll_question| %>
|
||||||
<ol>
|
<ol style="margin-left: -40px;">
|
||||||
<li class="ur_question_item">
|
<li class="ur_question_item">
|
||||||
<div class="ur_title_result">
|
<div class="ur_title_result">
|
||||||
<span class="title_index">第<%= poll_question.question_number %>题:</span><%= poll_question.question_title %> <span class="title_index">[<%= options_show(poll_question.question_type) %>]</span>
|
<span class="title_index">
|
||||||
</div>
|
第<%= poll_question.question_number %>题:
|
||||||
<% if poll_question.question_type == 1 || poll_question.question_type == 2 %>
|
</span>
|
||||||
<%= render :partial =>'choice_show', :locals =>{ :poll_question => poll_question } %>
|
<%= poll_question.question_title %>
|
||||||
<% else %>
|
<span class="title_index">
|
||||||
<%= render :partial =>'quiz_answers', :locals =>{ :poll_question => poll_question } %>
|
[<%= options_show(poll_question.question_type) %>]
|
||||||
<% end %>
|
</span>
|
||||||
</li>
|
</div>
|
||||||
</ol>
|
<% if poll_question.question_type == 1 || poll_question.question_type == 2 %>
|
||||||
<% end %>
|
<%= render :partial =>'choice_show', :locals =>{ :poll_question => poll_question } %>
|
||||||
<ul class="wlist">
|
<% else %>
|
||||||
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%>
|
<%= render :partial =>'quiz_answers', :locals =>{ :poll_question => poll_question } %>
|
||||||
</ul>
|
<% end %>
|
||||||
<div class="cl"></div>
|
</li>
|
||||||
<div class="ur_buttons"></div>
|
</ol>
|
||||||
|
<% end %>
|
||||||
|
<ul class="wlist">
|
||||||
|
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%>
|
||||||
|
</ul>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<p>
|
<p>
|
||||||
<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted_bak" %>
|
<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted_bak" , :style=> 'margin-right: 5px;'%>
|
||||||
<%= select_tag(
|
<%= select_tag(
|
||||||
'user[mail_notification]',
|
'user[mail_notification]',
|
||||||
options_for_select(
|
options_for_select(
|
||||||
|
|
|
@ -47,7 +47,7 @@ form #search_type{
|
||||||
<%#完了把上面东西放到 .css 里%>
|
<%#完了把上面东西放到 .css 里%>
|
||||||
</style>
|
</style>
|
||||||
<%= form_tag({controller: :welcome, action: :search }, method: :get) do %>
|
<%= form_tag({controller: :welcome, action: :search }, method: :get) do %>
|
||||||
<div class="project-search" style="float: right; width: 260px">
|
<div class="project-search" style="float: right">
|
||||||
<div class='search_widget'>
|
<div class='search_widget'>
|
||||||
<%= text_field_tag :q, nil, placeholder:'请输入要搜索的关键字', :size => 27, style: "float:left" %>
|
<%= text_field_tag :q, nil, placeholder:'请输入要搜索的关键字', :size => 27, style: "float:left" %>
|
||||||
<%= select_tag(:search_type, options_for_select(select_option), :style => "float:right" ) %>
|
<%= select_tag(:search_type, options_for_select(select_option), :style => "float:right" ) %>
|
||||||
|
|
|
@ -86,7 +86,7 @@ form #search_by
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<%= form_tag({controller: :welcome, action: :search }, method: :get) do %>
|
<%= form_tag({controller: :welcome, action: :search }, method: :get) do %>
|
||||||
<div class="project-search" style="float: right; width: 260px">
|
<div class="project-search" style="float: right">
|
||||||
<div class='search_widget' >
|
<div class='search_widget' >
|
||||||
|
|
||||||
<%= text_field_tag :q, nil, placeholder:'请输入要搜索的关键字', style:"float:left" %>
|
<%= text_field_tag :q, nil, placeholder:'请输入要搜索的关键字', style:"float:left" %>
|
||||||
|
|
|
@ -17,9 +17,9 @@ module RedmineApp
|
||||||
# -- all .rb files in that directory are automatically loaded.
|
# -- all .rb files in that directory are automatically loaded.
|
||||||
|
|
||||||
# verifier if email is real
|
# verifier if email is real
|
||||||
EmailVerifier.config do |config|
|
# EmailVerifier.config do |config|
|
||||||
config.verifier_email = "lizanle521@126.com"
|
# config.verifier_email = "lizanle521@126.com"
|
||||||
end
|
# end
|
||||||
|
|
||||||
config.generators do |g|
|
config.generators do |g|
|
||||||
g.test_framework :rspec,
|
g.test_framework :rspec,
|
||||||
|
|
|
@ -92,7 +92,7 @@ default:
|
||||||
domain: smtp.126.com
|
domain: smtp.126.com
|
||||||
authentication: :plain
|
authentication: :plain
|
||||||
user_name: "alanlong9278@126.com"
|
user_name: "alanlong9278@126.com"
|
||||||
password: "alanlong8788786"
|
password: 'alanlong8788786'
|
||||||
|
|
||||||
# Absolute path to the directory where attachments are stored.
|
# Absolute path to the directory where attachments are stored.
|
||||||
# The default is the 'files' directory in your Redmine instance.
|
# The default is the 'files' directory in your Redmine instance.
|
||||||
|
|
|
@ -235,7 +235,25 @@ en:
|
||||||
mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}."
|
mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}."
|
||||||
mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
|
mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
|
||||||
mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}."
|
mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}."
|
||||||
|
|
||||||
|
# edit by meng
|
||||||
|
# emailer
|
||||||
|
mail_issue_greetings: "Dear user , Greetings from Trustie"
|
||||||
|
mail_issue_footer: "Unsubscribe this message?"
|
||||||
|
mail_issue_title_userin: "in"
|
||||||
|
mail_issue_title_active: "has a new activity which relevants to you , please pay more attention to this!"
|
||||||
|
mail_issue_subject: "Title:"
|
||||||
|
mail_issue_content: "Content:"
|
||||||
|
mail_issue_sent_from: "From:"
|
||||||
|
mail_issue_from_project: "project issue"
|
||||||
|
mail_issue_attachments: "Attachments:"
|
||||||
|
mail_issue_reply: "Want reply"
|
||||||
|
#end
|
||||||
|
# modified by meng
|
||||||
|
label_file_upload: Resource files
|
||||||
|
label_file_upload_error_messages: "Upload error, please check your network environment, and refresh the page to upload."
|
||||||
|
button_confirm: Confirm
|
||||||
|
# end
|
||||||
field_name: Name
|
field_name: Name
|
||||||
field_description: Description
|
field_description: Description
|
||||||
field_summary: Summary
|
field_summary: Summary
|
||||||
|
@ -331,7 +349,7 @@ en:
|
||||||
field_identity_url: OpenID URL
|
field_identity_url: OpenID URL
|
||||||
field_content: Content
|
field_content: Content
|
||||||
field_group_by: Group results by
|
field_group_by: Group results by
|
||||||
field_sharing: Sharing
|
field_sharing: Sharinglable_hot_course
|
||||||
field_parent_issue: Parent task
|
field_parent_issue: Parent task
|
||||||
field_member_of_group: "Assignee's group"
|
field_member_of_group: "Assignee's group"
|
||||||
field_assigned_to_role: "Assignee's role"
|
field_assigned_to_role: "Assignee's role"
|
||||||
|
@ -522,6 +540,70 @@ en:
|
||||||
project_module_boards: Forums
|
project_module_boards: Forums
|
||||||
project_module_calendar: Calendar
|
project_module_calendar: Calendar
|
||||||
project_module_gantt: Gantt
|
project_module_gantt: Gantt
|
||||||
|
|
||||||
|
#edit by meng
|
||||||
|
lable_hot_course: Hot projects
|
||||||
|
lable_hot_projects: Active courses
|
||||||
|
lable_user_active: User movements
|
||||||
|
lable_bar_active: Bar posts
|
||||||
|
label_project_score: Score
|
||||||
|
label_course_join_student: Join a course
|
||||||
|
label_join_project: Join a project
|
||||||
|
label_contest_modify_settings: Configuration
|
||||||
|
bale_news_notice: Add a notification
|
||||||
|
label_field_correct: correct input
|
||||||
|
label_work_description_lengthlimit: less than 500 characters
|
||||||
|
label_create_new_projects: Create a project
|
||||||
|
label_work_scores_people: The total number of users given scores
|
||||||
|
label_project_new_description: A project can be used to do anything that requires distributed collaboration
|
||||||
|
label_project_grade: Score
|
||||||
|
label_user_for_project_grade: Score
|
||||||
|
label_relation_files: Select an existing resource
|
||||||
|
|
||||||
|
label_my_brief_introduction: How are feeling today? Leave your footprints ~
|
||||||
|
label_submit: Submit
|
||||||
|
|
||||||
|
label_tags_course_name: Course Title
|
||||||
|
label_new_course_password: Password
|
||||||
|
label_new_course_description: Description
|
||||||
|
field_open_student: Student list is public?
|
||||||
|
label_course_board: Forum
|
||||||
|
label_course_open_student_info: (Tick as "open list of students," if not open, the external person couldn't see the list of students)
|
||||||
|
label_teacher_list: Teacher list
|
||||||
|
label_student_list: Student list
|
||||||
|
label_export_excel: Export list
|
||||||
|
|
||||||
|
label_course_organizers: Institute
|
||||||
|
label_poll: Questionnaire
|
||||||
|
|
||||||
|
field_open_anonymous_evaluation: Use anonymous mutual-evaluation
|
||||||
|
field_evaluation_num: Number of anonymous works sent to each student
|
||||||
|
|
||||||
|
label_edit_homework: Update homework
|
||||||
|
label_homework_list: Work list
|
||||||
|
|
||||||
|
label_teacher_score: Teacher's score
|
||||||
|
label_time: Commit time
|
||||||
|
label_student_score: Student's score
|
||||||
|
label_without_score: No evaluated
|
||||||
|
label_homework_description: Description
|
||||||
|
label_responses: Messages
|
||||||
|
|
||||||
|
lable_has_commit_homework: You have submitted your work
|
||||||
|
|
||||||
|
|
||||||
|
label_user_create_project_homework: created the task
|
||||||
|
label_commit_limit: Expired but can submit your work
|
||||||
|
|
||||||
|
label_current_group: Current group
|
||||||
|
|
||||||
|
project_module_dts: DTS Test tool
|
||||||
|
label_module_share: DTS Test tool
|
||||||
|
field_dts_test: DTS Test tool
|
||||||
|
|
||||||
|
label_technical_support: Support :
|
||||||
|
label_feedback: Feedback
|
||||||
|
#end
|
||||||
|
|
||||||
label_user: User
|
label_user: User
|
||||||
label_user_plural: Users
|
label_user_plural: Users
|
||||||
|
@ -568,6 +650,8 @@ en:
|
||||||
label_document_new: New document
|
label_document_new: New document
|
||||||
label_document_plural: Documents
|
label_document_plural: Documents
|
||||||
label_document_added: Document added
|
label_document_added: Document added
|
||||||
|
label_forum_message_added: Message added
|
||||||
|
label_forum_add: Forum added
|
||||||
label_document_public_info: "If you don't choose public, only the project's members can see the document."
|
label_document_public_info: "If you don't choose public, only the project's members can see the document."
|
||||||
label_role: Role
|
label_role: Role
|
||||||
label_role_plural: Roles
|
label_role_plural: Roles
|
||||||
|
@ -602,7 +686,7 @@ en:
|
||||||
label_home: Home
|
label_home: Home
|
||||||
label_my_page: My page
|
label_my_page: My page
|
||||||
label_my_account: My account
|
label_my_account: My account
|
||||||
label_my_message: My messages
|
label_my_message: Msgs
|
||||||
label_my_projects: My projects
|
label_my_projects: My projects
|
||||||
label_my_page_block: My page block
|
label_my_page_block: My page block
|
||||||
label_administration: Administration
|
label_administration: Administration
|
||||||
|
@ -1233,6 +1317,7 @@ en:
|
||||||
|
|
||||||
#fq
|
#fq
|
||||||
button_leave_meassge: Submit
|
button_leave_meassge: Submit
|
||||||
|
button_clear_meassge: Reset
|
||||||
label_leave_message_to: leave %{name} a message
|
label_leave_message_to: leave %{name} a message
|
||||||
label_leave_message: Message content
|
label_leave_message: Message content
|
||||||
label_message: message board
|
label_message: message board
|
||||||
|
@ -1334,9 +1419,9 @@ en:
|
||||||
label_leave_others_message: leave message to him/her
|
label_leave_others_message: leave message to him/her
|
||||||
label_leave_a_message: Leave him/her a message:
|
label_leave_a_message: Leave him/her a message:
|
||||||
label_leave_your_message: Leave a message to you
|
label_leave_your_message: Leave a message to you
|
||||||
label_new_activities: ' has new activity in' # modified by bai
|
label_new_activities: ' has a new activity in' # modified by bai
|
||||||
label_new_activity: ' has new activity in'
|
label_new_activity: ' has a new activity in'
|
||||||
label_i_new_activity: ' have new activity in'
|
label_i_new_activity: ' have a new activity in'
|
||||||
label_create_project: had participated in
|
label_create_project: had participated in
|
||||||
label_praise: praise
|
label_praise: praise
|
||||||
label_cancel_praise: cancel praise
|
label_cancel_praise: cancel praise
|
||||||
|
@ -1615,7 +1700,7 @@ en:
|
||||||
label_bids_form_contest_new_description: Enterprise or college can release a contest here.
|
label_bids_form_contest_new_description: Enterprise or college can release a contest here.
|
||||||
label_contest_name: Input the name of the contest
|
label_contest_name: Input the name of the contest
|
||||||
label_contest_description: Content:description your contest
|
label_contest_description: Content:description your contest
|
||||||
label_main_teacher: Main teacher
|
label_main_teacher: Lecturer
|
||||||
label_main_term: Term
|
label_main_term: Term
|
||||||
label_teacher_work_unit: Position
|
label_teacher_work_unit: Position
|
||||||
label_course_overview: Status
|
label_course_overview: Status
|
||||||
|
@ -1682,7 +1767,7 @@ en:
|
||||||
label_reply_empty: Reply Cann't Empty.
|
label_reply_empty: Reply Cann't Empty.
|
||||||
label_setup_time: Start date
|
label_setup_time: Start date
|
||||||
label_endup_time: Over date
|
label_endup_time: Over date
|
||||||
label_class_period: Class hour
|
label_class_period: Lessons
|
||||||
label_class_hour: period
|
label_class_hour: period
|
||||||
label_activity_time: publish date
|
label_activity_time: publish date
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ zh:
|
||||||
not_same_project: "不属于同一个项目"
|
not_same_project: "不属于同一个项目"
|
||||||
circular_dependency: "此关联将导致循环依赖"
|
circular_dependency: "此关联将导致循环依赖"
|
||||||
cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务"
|
cant_link_an_issue_with_a_descendant: "问题不能关联到它的子任务"
|
||||||
|
groupname_repeat: "该班名已存在"
|
||||||
|
|
||||||
|
|
||||||
actionview_instancetag_blank_option: 请选择
|
actionview_instancetag_blank_option: 请选择
|
||||||
|
@ -250,6 +250,25 @@ zh:
|
||||||
mail_body_wiki_content_added: "'%{id}' wiki页面已由 %{author} 添加。"
|
mail_body_wiki_content_added: "'%{id}' wiki页面已由 %{author} 添加。"
|
||||||
mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新。"
|
mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新。"
|
||||||
mail_body_wiki_content_updated: "'%{id}' wiki页面已由 %{author} 更新。"
|
mail_body_wiki_content_updated: "'%{id}' wiki页面已由 %{author} 更新。"
|
||||||
|
|
||||||
|
# edit by meng
|
||||||
|
# emailer
|
||||||
|
mail_issue_greetings: "亲爱的Trustie用户,您好!"
|
||||||
|
mail_issue_footer: "退订该邮件!"
|
||||||
|
mail_issue_title_userin: "在"
|
||||||
|
mail_issue_title_active: "中有了一个与您相关的最新活动,请您关注!"
|
||||||
|
mail_issue_subject: "标题:"
|
||||||
|
mail_issue_content: "内容:"
|
||||||
|
mail_issue_sent_from: "来源:"
|
||||||
|
mail_issue_from_project: "项目问题跟踪"
|
||||||
|
mail_issue_attachments: "附件:"
|
||||||
|
mail_issue_reply: "我要回复"
|
||||||
|
#end
|
||||||
|
# modified by meng
|
||||||
|
label_file_upload: 资源文件
|
||||||
|
label_file_upload_error_messages: "上传出现错误,请您检查您的网络环境,并刷新页面重新上传。"
|
||||||
|
button_confirm: 确认
|
||||||
|
# end
|
||||||
field_name: 名称
|
field_name: 名称
|
||||||
#added by huang
|
#added by huang
|
||||||
field_tea_name: 教师
|
field_tea_name: 教师
|
||||||
|
@ -581,6 +600,9 @@ zh:
|
||||||
label_document_new: 新建文档
|
label_document_new: 新建文档
|
||||||
label_document_plural: 文档
|
label_document_plural: 文档
|
||||||
label_document_added: 文档已添加
|
label_document_added: 文档已添加
|
||||||
|
label_forum_message_added: 发帖成功
|
||||||
|
label_forum_add: 贴吧创建成功
|
||||||
|
label_message_reply: 回帖人
|
||||||
label_document_public_info: (打钩为公开,不打钩则不公开,若不公开,仅项目成员可见该文档。)
|
label_document_public_info: (打钩为公开,不打钩则不公开,若不公开,仅项目成员可见该文档。)
|
||||||
label_role: 角色
|
label_role: 角色
|
||||||
label_role_plural: 角色
|
label_role_plural: 角色
|
||||||
|
@ -2284,3 +2306,5 @@ zh:
|
||||||
label_answer_total: 总计:
|
label_answer_total: 总计:
|
||||||
label_join_project: 加入项目
|
label_join_project: 加入项目
|
||||||
|
|
||||||
|
label_technical_support: 技术支持:
|
||||||
|
label_feedback: 意见反馈
|
||||||
|
|
|
@ -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
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20150121030451) do
|
ActiveRecord::Schema.define(:version => 20150123020615) do
|
||||||
|
|
||||||
create_table "activities", :force => true do |t|
|
create_table "activities", :force => true do |t|
|
||||||
t.integer "act_id", :null => false
|
t.integer "act_id", :null => false
|
||||||
|
@ -832,9 +832,10 @@ ActiveRecord::Schema.define(:version => 20150121030451) do
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "published_at"
|
t.datetime "published_at"
|
||||||
t.datetime "closed_at"
|
t.datetime "closed_at"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
t.text "polls_description"
|
t.text "polls_description"
|
||||||
|
t.integer "show_result", :default => 1
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "praise_tread_caches", :force => true do |t|
|
create_table "praise_tread_caches", :force => true do |t|
|
||||||
|
|
|
@ -20,6 +20,8 @@ module Redmine
|
||||||
notifications << Notifiable.new('message_posted')
|
notifications << Notifiable.new('message_posted')
|
||||||
notifications << Notifiable.new('wiki_content_added')
|
notifications << Notifiable.new('wiki_content_added')
|
||||||
notifications << Notifiable.new('wiki_content_updated')
|
notifications << Notifiable.new('wiki_content_updated')
|
||||||
|
notifications << Notifiable.new('forum_add')
|
||||||
|
notifications << Notifiable.new('forum_message_added', 'forum_add')
|
||||||
notifications
|
notifications
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
|
@ -1433,8 +1433,8 @@ ul.contest-notification-list li span{
|
||||||
}
|
}
|
||||||
|
|
||||||
.xls {
|
.xls {
|
||||||
background: url('../images/icon_excel.gif') no-repeat scroll 1px 50% transparent;
|
/*background: url('../images/icon_excel.gif') no-repeat scroll 1px 50% transparent;*/
|
||||||
padding: 2px 0px 3px 16px;
|
/*padding: 2px 0px 3px 16px;*/
|
||||||
font-family:微软雅黑 !important;
|
font-family:微软雅黑 !important;
|
||||||
font-size: 12px !important;
|
font-size: 12px !important;
|
||||||
color: #136b3b !important;
|
color: #136b3b !important;
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/* CSS Document */
|
/* CSS Document */
|
||||||
#polls{ font-size:12px; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;}
|
#polls{ font-size:12px; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;}
|
||||||
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span{ margin:0; padding:0;}
|
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span{ margin:0; padding:0;}
|
||||||
#polls div,img,tr,td{ border:0;}
|
div,img,tr,td{ border:0;}
|
||||||
#polls table,tr,td{border:0; cellspacing:0; cellpadding:0;}
|
table,tr,td{border:0; cellspacing:0; cellpadding:0;}
|
||||||
#polls ul,li{ list-style-type:none}
|
ul,li{ list-style-type:none}
|
||||||
#polls .cl{ clear:both; overflow:hidden; }
|
.cl{ clear:both; overflow:hidden; }
|
||||||
#polls a{ text-decoration:none; }
|
a{ text-decoration:none; }
|
||||||
#polls a:hover{ text-decoration:underline; }
|
a:hover{ text-decoration:underline; }
|
||||||
#polls .ml10{ margin-left:10px;}
|
.ml10{ margin-left:10px;}
|
||||||
#polls .ml20{ margin-left:20px;}
|
.ml20{ margin-left:20px;}
|
||||||
#polls .mr10{ margin-right:10px;}
|
.mr10{ margin-right:10px;}
|
||||||
#polls .fl{ float: left;}
|
.fl{ float: left;}
|
||||||
#polls .fr{ float:right;}
|
.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{ height:33px;border-top:1px solid #15bed1; border-bottom:1px solid #15bed1;border-right:1px solid #cee6e6; width:225px; padding:7px 0 0 15px; }*/
|
||||||
|
@ -41,7 +41,7 @@ ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
|
||||||
|
|
||||||
|
|
||||||
/*问卷页面*/
|
/*问卷页面*/
|
||||||
.polls_box{ border:1px solid #dcdcdc; padding:15px 30px;}
|
.polls_box{ border:1px solid #dcdcdc; padding:15px 30px;margin-left: 7px;}
|
||||||
.ur_page_title{ font-size:16px; text-align:center; color:#353535; word-break:break-all; word-wrap:break-word;}
|
.ur_page_title{ font-size:16px; text-align:center; color:#353535; word-break:break-all; word-wrap:break-word;}
|
||||||
.ur_prefix_content{ color:#656565; text-indent:30px; margin-top:10px; }
|
.ur_prefix_content{ color:#656565; text-indent:30px; margin-top:10px; }
|
||||||
.ur_card{border-top:1px solid #dcdcdc;margin-top:20px; color:#3a3a3a;}
|
.ur_card{border-top:1px solid #dcdcdc;margin-top:20px; color:#3a3a3a;}
|
||||||
|
@ -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 label{ padding-left:10px;word-break: break-all; word-wrap: break-word;}
|
||||||
.ur_inputs input{ margin-right:5px;}
|
.ur_inputs input{ margin-right:5px;}
|
||||||
.ur_text{ height:30px;}
|
.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;}
|
.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.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;}
|
a:hover.ur_button{ background:#0fa9bb; text-decoration:none;}
|
||||||
|
@ -113,7 +113,7 @@ a:hover.icon_add{background:url(images/icons.png) -20px -310px no-repeat;}
|
||||||
a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;}
|
a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;}
|
||||||
.ur_editor_toolbar{ margin-bottom:10px;}
|
.ur_editor_toolbar{ margin-bottom:10px;}
|
||||||
.ur_editor_toolbar input{ width:40px; height:20px;}
|
.ur_editor_toolbar input{ width:40px; height:20px;}
|
||||||
.ur_editor02{width:655px; border:1px solid #cbcbcb; padding:10px; margin-bottom:10px;}
|
.ur_editor02{width:655px; padding:10px; margin-bottom:10px;}
|
||||||
a.ur_button_submit{ display:block; width:106px; height:37px; margin:0 auto; background:#15bccf; color:#fff; font-size:16px; text-align:center; padding-top:3px; margin-bottom:10px; }
|
a.ur_button_submit{ display:block; width:106px; height:37px; margin:0 auto; background:#15bccf; color:#fff; font-size:16px; text-align:center; padding-top:3px; margin-bottom:10px; }
|
||||||
a:hover.ur_button_submit{ background:#0fa9bb; text-decoration:none;}
|
a:hover.ur_button_submit{ background:#0fa9bb; text-decoration:none;}
|
||||||
a.ur_icon_de{ background:url(images/icons.png) 0px -338px no-repeat; width:16px; height:27px; display:block;float:right; margin-top:15px;}
|
a.ur_icon_de{ background:url(images/icons.png) 0px -338px no-repeat; width:16px; height:27px; display:block;float:right; margin-top:15px;}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe ForumObserver do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe MemoObserver do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
Reference in New Issue