sw 10 years ago
commit 0215d2224e

@ -247,7 +247,7 @@ module Mobile
end end
get "course_dynamic/:id" do get "course_dynamic/:id" do
cs = CoursesService.new cs = CoursesService.new
count = cs.course_dynamic(params,current_user) count = cs.all_course_dynamics(params,current_user)
present :data, count, with: Mobile::Entities::CourseDynamic present :data, count, with: Mobile::Entities::CourseDynamic
present :status, 0 present :status, 0
end end

@ -1,13 +1,18 @@
module Mobile module Mobile
module Entities module Entities
class Attachment < Grape::Entity class Attachment < Grape::Entity
include Redmine::I18n
def self.attachment_expose(field) def self.attachment_expose(field)
expose field do |f,opt| expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field) if f.is_a?(Hash) && f.key?(field)
f[field] f[field]
elsif f.is_a?(::Attachment) elsif f.is_a?(::Attachment)
if f.respond_to?(field) if f.respond_to?(field)
f.send(field) if field == :created_on
format_time(f.send(field))
else
f.send(field)
end
else else
#case field #case field
# when "" # when ""
@ -21,6 +26,7 @@ module Mobile
attachment_expose :description attachment_expose :description
attachment_expose :downloads attachment_expose :downloads
attachment_expose :quotes attachment_expose :quotes
attachment_expose :created_on
end end
end end
end end

@ -6,6 +6,62 @@ module Mobile
expose field do |c,opt| expose field do |c,opt|
if field == :update_time if field == :update_time
(format_time(c[field]) if (c.is_a?(Hash) && c.key?(field))) (format_time(c[field]) if (c.is_a?(Hash) && c.key?(field)))
elsif field == :news_count
obj = nil
c[:dynamics].each do |d|
if d[:type] == 1
obj = d[:count]
end
end
obj
elsif field == :document_count
obj = nil
c[:dynamics].each do |d|
if d[:type] == 3
obj = d[:count]
end
end
obj
elsif field == :topic_count
obj = nil
c[:dynamics].each do |d|
if d[:type] == 2
obj = d[:count]
end
end
obj
elsif field == :homework_count
obj = nil
c[:dynamics].each do |d|
if d[:type] == 4
obj = d[:count]
end
end
obj
elsif field == :homework_submit_num
obj = nil
c[:dynamics].each do |d|
if d[:type] == 4
obj = d[:submit_count]
end
end
obj
elsif field == :homework_submit_students
obj = nil
c[:dynamics].each do |d|
if d[:type] == 4
obj = d[:studentlist]
end
end
obj
elsif field == :homework_status
obj = nil
c[:dynamics].each do |d|
if d[:type] == 4
obj = d[:homework_status]
end
end
obj
else else
c[field] if (c.is_a?(Hash) && c.key?(field)) c[field] if (c.is_a?(Hash) && c.key?(field))
end end
@ -21,6 +77,53 @@ module Mobile
course_dynamic_expose :course_img_url course_dynamic_expose :course_img_url
course_dynamic_expose :message course_dynamic_expose :message
course_dynamic_expose :update_time course_dynamic_expose :update_time
course_dynamic_expose :count
course_dynamic_expose :news_count
course_dynamic_expose :document_count
course_dynamic_expose :topic_count
course_dynamic_expose :homework_count
course_dynamic_expose :homework_submit_students
course_dynamic_expose :homework_submit_num
course_dynamic_expose :homework_status
#在dynamics里解析出四种动态
expose :document,using:Mobile::Entities::Attachment do |f,opt|
obj = nil
f[:dynamics].each do |d|
if d[:type] == 3
obj = d[:documents]
end
end
obj
end
expose :topic,using:Mobile::Entities::Message do |f,opt|
obj = nil
f[:dynamics].each do |d|
if d[:type] == 2
obj = d[:topic]
end
end
obj
end
expose :homework,using:Mobile::Entities::Homework do |f,opt|
obj = nil
f[:dynamics].each do |d|
if d[:type] == 4
obj = d[:homework]
end
end
obj
end
expose :news,using:Mobile::Entities::News do |f,opt|
obj = nil
f[:dynamics].each do |d|
if d[:type] == 1
obj = d
end
end
obj
end
end end
end end
end end

@ -1,3 +1,4 @@
# 这个模块由于作业模块的改变,里边的注释以及属性不可信
module Mobile module Mobile
module Entities module Entities
class Homework < Grape::Entity class Homework < Grape::Entity
@ -14,7 +15,12 @@ module Mobile
if f.respond_to?(field) if f.respond_to?(field)
f.send(field) f.send(field)
else else
case field
when :homework_name
f.send(:name)
when :homework_notsubmit_num
f.course.members.count - f.student_works.count
end
end end
end end
end end
@ -60,6 +66,12 @@ module Mobile
f[:homework_for_anonymous_comments] if f.is_a?(Hash) && f.key?(:homework_for_anonymous_comments) f[:homework_for_anonymous_comments] if f.is_a?(Hash) && f.key?(:homework_for_anonymous_comments)
end end
homework_expose :homework_notsubmit_num
expose :submit_student_list ,using:Mobile::Entities::User do |f,opt|
f[:studentlist]
end
end end
end end
end end

@ -0,0 +1,46 @@
module Mobile
module Entities
class Message < Grape::Entity
include ApplicationHelper
include ApiHelper
def self.message_expose(f)
expose f do |u,opt|
if u.is_a?(Hash) && u.key?(f)
u[f]
elsif u.is_a?(::Message)
if u.respond_to?(f)
if f == :created_on
format_time( u.send(f))
else
u.send(f)
end
else
# case f
# when :xx
# #
# end
end
end
end
end
expose :user, using: Mobile::Entities::User do |c, opt|
if c.is_a?(::Message)
c.author
end
end
message_expose :board_id
message_expose :subject
message_expose :content
message_expose :replies_count
message_expose :created_on
message_expose :id
expose :message_children,using:Mobile::Entities::Message do |c,opt|
if c.is_a? (::Message)
c.children
end
end
end
end
end

@ -1,6 +1,6 @@
#added by baiyu #added by baiyu
class GitUsageController < ApplicationController class GitUsageController < ApplicationController
layout "project_base" layout "base_projects"
def ch_usage def ch_usage
end end

@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class IssueCategoriesController < ApplicationController class IssueCategoriesController < ApplicationController
layout "project_base" layout "base_projects"
menu_item :settings menu_item :settings
model_object IssueCategory model_object IssueCategory
before_filter :find_model_object, :except => [:index, :new, :create] before_filter :find_model_object, :except => [:index, :new, :create]

@ -1,5 +1,5 @@
class OrganizationController < ApplicationController class OrganizationController < ApplicationController
layout 'project_base' layout 'base_projects'
before_filter :require_admin, :except => [:index] before_filter :require_admin, :except => [:index]
def index def index

@ -438,9 +438,9 @@ class ProjectsController < ApplicationController
case params[:role] case params[:role]
when '1' when '1'
@subPage_title = l :label_teacher_list @subPage_title = l :label_teacher_list
@members = searchTeacherAndAssistant(@project) @members = searchTeacherAndAssistant(@project)
when '2' when '2'
@subPage_title = l :label_student_list @subPage_title = l :label_student_list
@members = searchStudent(@project) @members = searchStudent(@project)
else else
@subPage_title = '' @subPage_title = ''
@ -578,7 +578,7 @@ class ProjectsController < ApplicationController
format.api { render_api_ok } format.api { render_api_ok }
end end
else else
render :layout => "project_base" render :layout => "base_projects"
end end
# hide project in layout # hide project in layout
@project = nil @project = nil
@ -586,7 +586,7 @@ class ProjectsController < ApplicationController
def show_projects_score def show_projects_score
respond_to do |format| respond_to do |format|
format.html { render :layout => "project_base"} format.html { render :layout => "base_projects"}
format.js format.js
end end
end end
@ -674,10 +674,10 @@ class ProjectsController < ApplicationController
private private
def memberAccess def memberAccess
# 是课程,则判断当前用户是否参加了课程 # 如果是私有项目,项目成员不对外公开,公开项目成员列表对外公开。
# return 0 if @project.project_type == Project::ProjectType_project unless @project.is_public?
# currentUser = User.current render_403 unless User.current.member_of?(@project)
render_403 unless User.current.member_of?(@project) end
end end
def toggleCourse def toggleCourse

@ -361,16 +361,15 @@ module IssuesHelper
end end
end end
# 之所以注释是因为该功能冗余了
if detail.property == 'attr' && detail.prop_key == 'description' if detail.property == 'attr' && detail.prop_key == 'description'
s = l(:text_journal_changed_no_detail, :label => label) s = l(:text_journal_changed_no_detail, :label => label)
# unless no_html unless no_html
# diff_link = link_to l(:label_diff), diff_link = link_to l(:label_diff),
# {:controller => 'journals', :action => 'diff', :id => detail.journal_id, {:controller => 'journals', :action => 'diff', :id => detail.journal_id,
# :detail_id => detail.id, :only_path => options[:only_path]}, :detail_id => detail.id, :only_path => options[:only_path]},
# :title => l(:label_view_diff) :title => l(:label_view_diff)
# s << " (#{ diff_link })" s << " (#{ diff_link })"
# end end
s.html_safe s.html_safe
elsif detail.value.present? elsif detail.value.present?
case detail.property case detail.property

@ -124,8 +124,8 @@ class Mailer < ActionMailer::Base
attachments = courses[i].attachments.where("attachments.created_on between '#{date_from}' and '#{date_to}'").order('attachments.created_on DESC') attachments = courses[i].attachments.where("attachments.created_on between '#{date_from}' and '#{date_to}'").order('attachments.created_on DESC')
@bids += bids if bids.count > 0 @bids += bids if bids.count > 0
@attachments += attachments if attachments.count > 0 @attachments += attachments if attachments.count > 0
end end
@bids.sort {|a, b| a.created_at <=> b.created_at}
end end
# 项目附件 # 项目附件

@ -330,7 +330,7 @@ class CoursesService
def homework_list params,current_user def homework_list params,current_user
course = Course.find(params[:id]) course = Course.find(params[:id])
if course.is_public != 0 || current_user.member_of_course?(course) if course.is_public != 0 || current_user.member_of_course?(course)
bids = course.homework_commons.order('end_time DESC') bids = course.homework_commons.page(1).per(3).order('created_at DESC')
bids = bids.like(params[:name]) if params[:name].present? bids = bids.like(params[:name]) if params[:name].present?
homeworks = [] homeworks = []
bids.each do |bid| bids.each do |bid|
@ -540,14 +540,35 @@ class CoursesService
#student_questions_count = bid.journals_for_messages.where('m_parent_id IS NULL').count #student_questions_count = bid.journals_for_messages.where('m_parent_id IS NULL').count
description = bid.description description = bid.description
#if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 #if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2
state = bid.homework_detail_manual.comment_status #state = bid.homework_detail_manual.comment_status
if !bid.nil?
if bid.homework_type == 1 && bid.homework_detail_manual
case bid.homework_detail_manual.comment_status
when 1
state = show_homework_deadline bid
when 2
state = "正在匿评中"
when 3
state = "匿评已结束"
end
elsif bid.homework_type == 0
state = "未启用匿评"
elsif bid.homework_type == 2
state = "编程作业"
else
end
end
studentlist = []
bid.student_works.order("created_at desc").page(1).per(6).each do |work|
studentlist << work.user
end
unless is_course_teacher unless is_course_teacher
homework_for_anonymous_comments = get_student_batch_homework_list bid,current_user homework_for_anonymous_comments = get_student_batch_homework_list bid,current_user
end end
#end #end
open_anonymous_evaluation = bid.homework_detail_manual.comment_status open_anonymous_evaluation = bid.homework_detail_manual.comment_status
{:course_name => course.name,:course_id => course.id,:id => bid.id, :author => bid.user,:author_real_name => author_real_name, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => 0, {:course_name => course.name,:course_id => course.id,:id => bid.id, :author => bid.user,:author_real_name => author_real_name, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => 0,
:description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation,:homework_for_anonymous_comments => homework_for_anonymous_comments,:created_on => bid.created_at,:deadline => bid.end_time} :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation,:homework_for_anonymous_comments => homework_for_anonymous_comments,:created_on => bid.created_at,:deadline => bid.end_time,:studentlist => studentlist}
end end
@ -615,9 +636,103 @@ class CoursesService
homework_scores homework_scores
end end
#app新版api
#
#
#课程动态
public
def all_course_dynamics params, current_user
#获取当前用户的所有课程
@user = User.find(params[:id])
if current_user.nil? && !current_user.admin? && !@user.active?
raise '404'
return
end
if current_user == @user || current_user.admin?
membership = @user.coursememberships.page(1).per(10)
else
membership = @user.coursememberships.page(1).per(10).all(:conditions => Course.visible_condition(current_user))
end
if membership.nil? || membership.count == 0
raise l(:label_no_courses, :locale => get_user_language(current_user))
end
membership.sort! { |older, newer| newer.created_on <=> older.created_on }
#定义一个数组集合存放hash数组该hash数组包括课程的信息并包含课程的最新发布的资源最新的讨论区留言最新的作业最新的通知
result = []
#对用户所有的课程进行循环,找到每个课程最新发布的资源,最新的讨论区留言,最新的作业,最新的通知,并存进数组
membership.each do |mp|
course = mp.course
latest_course_dynamics = []
dynamics_count = 0
# 课程通知
latest_news = course.news.order("created_on desc").first
unless latest_news.nil?
latest_course_dynamics << {:type => 1, :time => latest_news.created_on,:count=>course.news.count,
:news => latest_news}
dynamics_count += 1
end
# 课程讨论区
latest_message = course.boards.first.topics[0]
unless latest_message.nil?
latest_course_dynamics << {:type => 2, :time => latest_message.created_on, :count =>course.boards.nil? ? 0 : course.boards.first.topics.count,
:topic => latest_message}
dynamics_count += 1
end
# 课程资源
latest_attachment = course.attachments.order("created_on desc").first
unless latest_attachment.nil?
latest_course_dynamics << {:type => 3, :time => latest_attachment.created_on,:count =>course.attachments.count , :documents=>latest_attachment}
dynamics_count += 1
end
#课程作业 已经交的学生列表暂定显示6人未交的学生列表作业的状态
homework = course.homework_commons.order('created_at desc').first
homework_status = "";
# 判断作业所处的状态,如果是刚发布,就获取剩余时间
#如果是匿评状态,显示正在匿评
#如果是匿评结束,显示匿评结束
#获取作业提交的前6个人不足6个显示所有
studentlist = []
if !homework.nil?
if homework.homework_type == 1 && homework.homework_detail_manual
case homework.homework_detail_manual.comment_status
when 1
homework_status = show_homework_deadline homework
when 2
homework_status = "正在匿评中"
when 3
homework_status = "匿评已结束"
end
elsif homework.homework_type == 0
homework_status = "未启用匿评"
elsif homework.homework_type == 2
homework_status = "编程作业"
else
end
# 获取提交作业的前六个学生的名字 和 头像路径
homework.student_works.order("created_at desc").page(1).per(6).each do |work|
studentlist << {:image_url=> url_to_avatar(work.user),:user_name=>work.user.realname}
end
latest_course_dynamics << {:type => 4, :time => homework.updated_at, :count=>course.homework_commons.count,:submit_count => homework.student_works.count , :homework => homework, :homework_status => homework_status, :studentlist => studentlist}
dynamics_count += 1
end
latest_course_dynamics.sort! { |order, newer| newer[:time] <=> order[:time] }
latest_course_dynamic = latest_course_dynamics.first
unless latest_course_dynamic.nil?
result << {:course_name => course.name, :course_id => course.id, :course_img_url => url_to_avatar(course), :course_time => course.time, :course_term => course.term,:message => dynamics_count, :dynamics => latest_course_dynamics, :count => dynamics_count}
end
end
#返回数组集合
result.sort! { |order, newer| newer[:update_time] <=> order[:update_time] }
result
end
#计算作业的截止日期,剩余日期
def show_homework_deadline homework
"距作业截止还有" << (Date.parse(Time.now.to_s) - Date.parse(homework.end_time.to_s)).to_i.to_s << ""
end
end
end

@ -104,6 +104,7 @@
<div class="project_board_content break_word" id="content_<%=topic.id%>"> <div class="project_board_content break_word" id="content_<%=topic.id%>">
<div id="contentmessage<%=topic.id %>" class="upload_img"> <div id="contentmessage<%=topic.id %>" class="upload_img">
<%= topic.content.html_safe %> <%= topic.content.html_safe %>
<!-- -->
</div> </div>
</div> </div>
@ -166,7 +167,10 @@
<div class="Msg_txt"> <div class="Msg_txt">
<%= link_to_user_header message.author,false,:class => 'fl c_orange ' %> <%= link_to_user_header message.author,false,:class => 'fl c_orange ' %>
<br/> <br/>
<div class="fl break_word"><%= textAreailizable message,:content,:attachments => message.attachments %></div> <div class="fl break_word">
<%= textAreailizable message,:content,:attachments => message.attachments %>
<!-- -->
</div>
<input nhname="nh_content_val" value="<%= message.content %>" type="hidden"/> <input nhname="nh_content_val" value="<%= message.content %>" type="hidden"/>
<br/><div class="cl"></div> <br/><div class="cl"></div>
<span class=" c_grey fl"><%= format_time(message.created_on) %></span> <span class=" c_grey fl"><%= format_time(message.created_on) %></span>

@ -98,6 +98,7 @@
<div class="project_board_content break_word" id="content_<%=topic.id%>"> <div class="project_board_content break_word" id="content_<%=topic.id%>">
<div id="contentmessage<%=topic.id %>" class="upload_img"> <div id="contentmessage<%=topic.id %>" class="upload_img">
<%= topic.content.html_safe %> <%= topic.content.html_safe %>
<!-- -->
</div> </div>
</div> </div>
<p style="display: none;" id="project_show_<%= topic.id%>"> <p style="display: none;" id="project_show_<%= topic.id%>">
@ -153,7 +154,10 @@
<div class="Msg_txt"> <div class="Msg_txt">
<%= link_to_user_header message.author,false,:class => 'fl c_orange ' %> <%= link_to_user_header message.author,false,:class => 'fl c_orange ' %>
<br/> <br/>
<div class="fl break_word"><%= textAreailizable message,:content,:attachments => message.attachments %></div> <div class="fl break_word">
<%= textAreailizable message,:content,:attachments => message.attachments %>
<!-- -->
</div>
<input nhname="nh_content_val" type="hidden" value="<%= message.content %>"/> <input nhname="nh_content_val" type="hidden" value="<%= message.content %>"/>
<br/><div class="cl"></div> <br/><div class="cl"></div>
<span class=" c_grey fl"><%= format_time(message.created_on) %></span> <span class=" c_grey fl"><%= format_time(message.created_on) %></span>

@ -25,7 +25,7 @@
<% if file.is_public? || User.current.member_of_course?(course) %> <% if file.is_public? || User.current.member_of_course?(course) %>
<div class="re_con_box" id="container_files_<%= file.id %>"> <div class="re_con_box" id="container_files_<%= file.id %>">
<div class=""> <div class="">
<%= link_to truncate(file.filename,length: 35, omission: '...'), <%= link_to truncate(file.filename,length: 35, omission: '...'),
download_named_attachment_path(file.id, file.filename), download_named_attachment_path(file.id, file.filename),
:title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "c_dblue f_14 f_b f_l" %> :title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "c_dblue f_14 f_b f_l" %>
<% if User.current.logged? %> <% if User.current.logged? %>

@ -7,7 +7,7 @@
<div class="wmail_main" style="padding:20px 10px 0px;"> <div class="wmail_main" style="padding:20px 10px 0px;">
<h3 class="wmail_h2" style="color:#15bccf; "><%= l(:label_course_overview)%></h3> <h3 class="wmail_h2" style="color:#15bccf; "><%= l(:label_course_overview)%></h3>
<!-- 课程通知 --> <!-- 课程通知 -->
<% unless @course_news.first.nil? %> <% unless @course_news.first.nil? || @course_news_comments.first.nil? %>
<ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;"> <ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#474646; font-size:14px; margin-bottom:5px;" > <span class="wmail_h4" style="color:#474646; font-size:14px; margin-bottom:5px;" >
<%= l(:label_course_news) %> <%= l(:label_course_news) %>
@ -33,23 +33,15 @@
</li> </li>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</ul><!--课程通知 end--> <!--课程通知回复-->
<% end %>
<!-- 课程通知回复 -->
<% unless @course_news_comments.first.nil? %>
<ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#474646; font-size:14px; margin-bottom:5px;" >
<%= l(:label_course_mail_news_reply) %>
</span>
<% @course_news_comments.each do |course_news_comment|%> <% @course_news_comments.each do |course_news_comment|%>
<li style="clear: both; list-style: none;"> <li style="clear: both; list-style: none;">
<span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span> <span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span> <span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span>
<% unless course_news_comment.commented.nil? %> <% unless course_news_comment.commented.nil? %>
<%= link_to truncate(course_news_comment.commented.course.name,length: 30,omission: '...'), course_url(course_news_comment.commented.course, :token => @token.value), <%= link_to truncate(course_news_comment.commented.course.name,length: 30,omission: '...'), course_url(course_news_comment.commented.course, :token => @token.value),
:class=> "wmail_column", :class=> "wmail_column",
:style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %> :style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<% end %> <% end %>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span> <span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span>
@ -57,7 +49,7 @@
:style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%> :style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%>
<span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_project_notice) %></span> <span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_project_notice) %></span>
<%= link_to truncate(course_news_comment.comments,length: 30,omission: '...'), news_url(course_news_comment.commented,:token => @token.value), <%= link_to truncate(course_news_comment.comments.html_safe,length: 30,omission: '...'), news_url(course_news_comment.commented,:token => @token.value),
:class => 'wmail_info', :class => 'wmail_info',
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" :style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"
%> %>
@ -65,7 +57,7 @@
</li> </li>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</ul><!--课程通知回复 end--> </ul><!--课程通知 end-->
<% end %> <% end %>
<!--课程作业--> <!--课程作业-->
@ -89,7 +81,7 @@
:style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%> :style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%>
<span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_course_homework) %></span> <span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_course_homework) %></span>
<%= link_to truncate(bid.name,length: 30,omission: '...'), student_work_index_path(:homework => bid.id,:token => @token.value), <%= link_to truncate(bid.name.html_safe,length: 30,omission: '...'), student_work_index_path(:homework => bid.id,:token => @token.value),
:class => 'wmail_info', :class => 'wmail_info',
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" :style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"
%> %>
@ -150,7 +142,7 @@
<%= link_to course_message.author, user_activities_url(course_message.author,:token => @token.value), :class => "wmail_name", <%= link_to course_message.author, user_activities_url(course_message.author,:token => @token.value), :class => "wmail_name",
:style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%> :style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%>
<span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_send_course_messages) %></span> <span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_send_course_messages) %></span>
<%= link_to truncate(course_message.subject,length: 30,omission: '...'),board_message_url(course_message, :board_id => course_message.board_id,:token => @token.value), <%= link_to truncate(course_message.subject.html_safe,length: 30,omission: '...'),board_message_url(course_message, :board_id => course_message.board_id,:token => @token.value),
:class => 'wmail_info', :class => 'wmail_info',
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %> :style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(course_message.created_on) %></span> <span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(course_message.created_on) %></span>
@ -198,7 +190,7 @@
@project_news_comments.first %> @project_news_comments.first %>
<div class="wmail_main" style="padding:20px 10px 0px;"> <div class="wmail_main" style="padding:20px 10px 0px;">
<h3 class="wmail_h2" style="color:#15BCCF; "><%= l(:label_project_overview_new)%></h3> <h3 class="wmail_h2" style="color:#15BCCF; "><%= l(:label_project_overview_new)%></h3>
<% unless @issues.first.nil? %> <% unless @issues.first.nil? || @issues_journals.first.nil? %>
<ul class="wmail_ul" style="margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;"> <ul class="wmail_ul" style="margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" > <span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" >
<%= l(:label_issue_tracking) %> <%= l(:label_issue_tracking) %>
@ -220,44 +212,32 @@
<span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(issue.created_on) %></span> <span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(issue.created_on) %></span>
</li> </li>
<% end %> <% end %>
<div class="cl"></div>
<% @issues_journals.each do |issues_journal| %>
<li style="clear: both; list-style: none;">
<span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span>
<%= link_to truncate(issues_journal.issue.project.name,length: 30,omission: '...'), project_url(issues_journal.issue.project, :token => @token.value),
:class=> "wmail_column",
:style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span>
<%= link_to issues_journal.user, user_activities_url(issues_journal.user,:token => @token.value), :class => "wmail_name",
:style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%>
<span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_project_issue) %></span>
<% if issues_journal.notes.blank? || issues_journal.notes.nil? %>
<%= link_to truncate(l(:label_isuue_mail_status),length: 30,omission: '...'),issue_url(issues_journal.issue, :token => @token.value),
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<% else %>
<%= link_to truncate(issues_journal.notes.html_safe,length: 30,omission: '...'),issue_url(issues_journal.issue, :token => @token.value),
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<% end %>
<span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(issues_journal.created_on) %></span>
</li>
<% end %>
<div class="cl"></div> <div class="cl"></div>
</ul><!--问题跟踪 end--> </ul><!--问题跟踪 end-->
<% end %> <% end %>
<!-- issues回复 -->
<% unless @issues_journals.first.nil? %>
<ul class="wmail_ul" style="margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" >
<%= l(:label_issue_tracking) %>
</span>
<% @issues_journals.each do |issues_journal| %>
<li style="clear: both; list-style: none;">
<span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span>
<%= link_to truncate(issues_journal.issue.project.name,length: 30,omission: '...'), project_url(issues_journal.issue.project, :token => @token.value),
:class=> "wmail_column",
:style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span>
<%= link_to issues_journal.user, user_activities_url(issues_journal.user,:token => @token.value), :class => "wmail_name",
:style => "color:#2E8DD7; float:left;display:block; margin-right:5px; margin-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"%>
<span class="wmail_txt" style="float:left; margin-right:5px;color:#ACAEB1;"><%= l(:label_project_issue) %></span>
<% if issues_journal.notes.blank? || issues_journal.notes.nil? %>
<%= l(:label_isuue_mail_status) %>
<% else %>
<%= link_to truncate(issues_journal.notes.html_safe,length: 30,omission: '...'),issue_url(issues_journal.issue, :token => @token.value),
:style => "color:#2E8DD7;float:left; font-weight:normal;margin-right:5px; display:block;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;"
%>
<% end %>
<span class="wmail_date" style="color:#6e6e6e; float:left;display:block; margin-left:40px;"><%= format_time(issues_journal.created_on) %></span>
</li>
<% end %>
<div class="cl"></div>
</ul><!--问题跟踪 end-->
<% end %>
<!-- 讨论区 --> <!-- 讨论区 -->
<% unless @project_messages.first.nil? %> <% unless @project_messages.first.nil? %>
<ul class="wmail_ul" style="margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;"> <ul class="wmail_ul" style="margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
@ -322,7 +302,7 @@
<% end %> <% end %>
<!--项目新闻--> <!--项目新闻-->
<% unless @project_news.first.nil? %> <% unless @project_news.first.nil? || @project_news_comments.first.nil? %>
<ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;"> <ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" > <span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" >
<%= l(:label_project_news) %> <%= l(:label_project_news) %>
@ -347,23 +327,14 @@
</li> </li>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</ul><!-- 项目新闻end -->
<% end %>
<!-- 项目新闻回复 -->
<% unless @project_news_comments.first.nil? %>
<ul class="wmail_ul" style=" list-style-type:none;clear: both;margin-left:10px; border-bottom:1px dashed #cfcfcf; padding-bottom:15px; width:1020px; margin-bottom:15px;">
<span class="wmail_h4" style="color:#666; font-size:14px; margin-bottom:5px;" >
<%= l(:label_project_news) %>
</span>
<% @project_news_comments.each do |project_news_comment|%> <% @project_news_comments.each do |project_news_comment|%>
<li style="clear: both; list-style: none;"> <li style="clear: both; list-style: none;">
<span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span> <span class="wmail_dis" style="float:left; color:#000000; margin-right:5px;">▪</span>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span> <span class="wmail_b" style="color:#666; font-weight:bold; float:left;">[</span>
<% unless project_news_comment.commented.nil? %> <% unless project_news_comment.commented.nil? %>
<%= link_to truncate(project_news_comment.commented.project.name,length: 30,omission: '...'), project_url(project_news_comment.commented.project, :token => @token.value), <%= link_to truncate(project_news_comment.commented.project.name,length: 30,omission: '...'), project_url(project_news_comment.commented.project, :token => @token.value),
:class=> "wmail_column", :class=> "wmail_column",
:style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %> :style=> " font-weight: bold; display:block; float:left; color:#666;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;" %>
<% end %> <% end %>
<span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span> <span class="wmail_b" style="color:#666; font-weight:bold; float:left;">]</span>
<%= link_to project_news_comment.author, user_activities_url(project_news_comment.author,:token => @token.value), :class => "wmail_name", <%= link_to project_news_comment.author, user_activities_url(project_news_comment.author,:token => @token.value), :class => "wmail_name",
@ -377,7 +348,7 @@
</li> </li>
<% end %> <% end %>
<div class="cl"></div> <div class="cl"></div>
</ul><!-- 项目新闻回复end --> </ul><!-- 项目新闻end -->
<% end %> <% end %>
<!-- 项目上传资源 --> <!-- 项目上传资源 -->

@ -3,3 +3,15 @@
<% elsif @course %> <% elsif @course %>
<%= render :partial => 'course_show', locals: {course: @course} %> <%= render :partial => 'course_show', locals: {course: @course} %>
<% end %> <% end %>
<script type="text/javascript">
$(function(){
$("#add_comment_form").submit(function(){
if($("#comment").val() == ''){
alert('请输入评论内容');
return false;
}
$(this)[0].submit();
//return true;
});
})
</script>

@ -20,7 +20,7 @@ zh:
label_course_mail_news_reply: 课程通知回复 label_course_mail_news_reply: 课程通知回复
label_main_teacher: 主讲教师 label_main_teacher: 主讲教师
label_course_term: 开课学期 label_course_term: 开课学期
label_isuue_mail_status: 更新了issue状态 label_isuue_mail_status: 更新了issue状态
label_join_course: 加入 label_join_course: 加入
label_exit_course: 退出 label_exit_course: 退出

@ -721,6 +721,16 @@ ActiveRecord::Schema.define(:version => 20150619060110) do
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_details_copy", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details_copy", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_replies", :id => false, :force => true do |t| create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id" t.integer "journal_id"
t.integer "user_id" t.integer "user_id"

@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class CodeReviewController < ApplicationController class CodeReviewController < ApplicationController
layout "project_base" layout "base_projects"
unloadable unloadable
before_filter :find_project, :authorize, :find_user, :find_setting, :find_repository before_filter :find_project, :authorize, :find_user, :find_setting, :find_repository

@ -2795,3 +2795,5 @@ div.repos_explain{
} }
.upload_img img{max-width: 100%;} .upload_img img{max-width: 100%;}
#activity .upload_img img{max-width: 580px;} #activity .upload_img img{max-width: 580px;}
img,embed{max-width: 100%;}

@ -244,7 +244,7 @@ a.remove-upload:hover {text-decoration:none !important;}
#attachments_fields span.ispublic-label {display: inline-block;width: 30px;margin-left: 10px;} #attachments_fields span.ispublic-label {display: inline-block;width: 30px;margin-left: 10px;}
a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;} a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;}
#attachments_fields input.filename {border: 0;height: 1.8em;width: 150px;color: #555;background-color: inherit;background: url(../images/attachment.png) no-repeat 1px 50%;padding-left: 18px;padding-top: 2px;} #attachments_fields input.filename {border: 0;height: 1.8em;width: 150px;color: #555;background-color: inherit;background: url(../images/attachment.png) no-repeat 1px 50%;padding-left: 18px;padding-top: 2px; white-space: nowrap; text-overflow:ellipsis;}
span.add_attachment {font-size: 80%;line-height: 2.5em;} span.add_attachment {font-size: 80%;line-height: 2.5em;}
#attachments_fields span {display: block;white-space: nowrap;} #attachments_fields span {display: block;white-space: nowrap;}
.file_selector{position: relative;opacity: 0;filter: alpha(opacity:0);} .file_selector{position: relative;opacity: 0;filter: alpha(opacity:0);}

@ -439,7 +439,7 @@ a.box_close{background:url(../images/img_floatbox.png) -22px 0 no-repeat;}
/*文本左对齐*/ /*文本左对齐*/
.tl{text-align: left;} .tl{text-align: left;}
img{max-width: 100%;} img,embed{max-width: 100%;}
.attachments {clear: both;} .attachments {clear: both;}
.is_public_checkbox{margin-left: 15px;margin-right: 10px;} .is_public_checkbox{margin-left: 15px;margin-right: 10px;}
.author_name{color: #3ca5c6 !important;} .author_name{color: #3ca5c6 !important;}

Loading…
Cancel
Save