微信最新动态修改

This commit is contained in:
Tim 2016-03-30 17:47:44 +08:00
parent 6f9fcbe1a7
commit 77e11fe0fe
16 changed files with 2800 additions and 2800 deletions

View File

@ -1,32 +1,32 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class Activities< Grape::API class Activities< Grape::API
resources :activities do resources :activities do
desc "get user activities" desc "get user activities"
get ':id' do get ':id' do
#uw = UserWechat.find params[:openid] #uw = UserWechat.find params[:openid]
user = User.find params[:id] user = User.find params[:id]
shield_project_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id) shield_project_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id)
shield_course_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) shield_course_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id)
page = params[:page] ? params[:page].to_i + 1 : 0 page = params[:page] ? params[:page].to_i + 1 : 0
user_project_ids = (user.projects.visible.map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.visible.map{|project| project.id}-shield_project_ids).join(",") + ")" user_project_ids = (user.projects.visible.map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.visible.map{|project| project.id}-shield_project_ids).join(",") + ")"
user_course_ids = (user.courses.visible.map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.visible.map{|course| course.id}-shield_course_ids).join(",") + ")" user_course_ids = (user.courses.visible.map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.visible.map{|course| course.id}-shield_course_ids).join(",") + ")"
course_types = "('Message','News','HomeworkCommon','Poll','Course')" course_types = "('Message','News','HomeworkCommon','Poll','Course')"
project_types = "('Message','Issue','ProjectCreateInfo')" project_types = "('Message','Issue','ProjectCreateInfo')"
principal_types = "JournalsForMessage" principal_types = "JournalsForMessage"
blog_ids = "("+user.blog.id.to_s+","+((User.watched_by(user.id).count == 0 )? '0' :User.watched_by(user.id).map{|u| u.blog.id}.join(','))+")" blog_ids = "("+user.blog.id.to_s+","+((User.watched_by(user.id).count == 0 )? '0' :User.watched_by(user.id).map{|u| u.blog.id}.join(','))+")"
activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" +
"or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+
"or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " + "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " +
"or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(page * 10) "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(page * 10)
present :data, activities, with: Mobile::Entities::Activity present :data, activities, with: Mobile::Entities::Activity
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class BlogComments< Grape::API class BlogComments< Grape::API
resources :blog_comments do resources :blog_comments do
desc "get special topic" desc "get special topic"
get ':id' do get ':id' do
blog = BlogComment.find params[:id] blog = BlogComment.find params[:id]
present :blog, message, with: Mobile::Entities::BlogComment present :blog, message, with: Mobile::Entities::BlogComment
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class Issues< Grape::API class Issues< Grape::API
resources :issues do resources :issues do
desc "get special issuse" desc "get special issuse"
get ':id' do get ':id' do
issue = Issue.find params[:id] issue = Issue.find params[:id]
present :data, issue, with: Mobile::Entities::Issue present :data, issue, with: Mobile::Entities::Issue
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class JournalForMessages< Grape::API class JournalForMessages< Grape::API
resources :journal_for_messages do resources :journal_for_messages do
desc "get special journal" desc "get special journal"
get ':id' do get ':id' do
jour = JournalsForMessage.find params[:id] jour = JournalsForMessage.find params[:id]
present :data, jour, with: Mobile::Entities::Jours present :data, jour, with: Mobile::Entities::Jours
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class Messages< Grape::API class Messages< Grape::API
resources :messages do resources :messages do
desc "get special topic" desc "get special topic"
get ':id' do get ':id' do
message = Message.find params[:id] message = Message.find params[:id]
present :data, message, with: Mobile::Entities::Message present :data, message, with: Mobile::Entities::Message
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class Newss< Grape::API class Newss< Grape::API
resources :newss do resources :newss do
desc "get special news" desc "get special news"
get ':id' do get ':id' do
news = News.find params[:id] news = News.find params[:id]
present :data, news, with: Mobile::Entities::News present :data, news, with: Mobile::Entities::News
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,17 +1,17 @@
#coding=utf-8 #coding=utf-8
module Mobile module Mobile
module Apis module Apis
class Whomeworks< Grape::API class Whomeworks< Grape::API
resources :whomeworks do resources :whomeworks do
desc "get one homework" desc "get one homework"
get ':id' do get ':id' do
homework = HomeworkCommon.find params[:id] homework = HomeworkCommon.find params[:id]
present :data, homework, with: Mobile::Entities::Whomework present :data, homework, with: Mobile::Entities::Whomework
present :status, 0 present :status, 0
end end
end end
end end
end end
end end

View File

@ -1,132 +1,132 @@
# encoding: utf-8 # encoding: utf-8
module Mobile module Mobile
module Entities module Entities
class Activity <Grape::Entity class Activity <Grape::Entity
include ApplicationHelper include ApplicationHelper
include ApiHelper include ApiHelper
def self.act_expose(f) def self.act_expose(f)
expose f do |ac,opt| expose f do |ac,opt|
if ac.is_a?(Hash) && ac.key?(f) if ac.is_a?(Hash) && ac.key?(f)
ac[f] ac[f]
elsif ac.is_a?(::UserActivity) elsif ac.is_a?(::UserActivity)
if ac.respond_to?(f) if ac.respond_to?(f)
ac.send(f) ac.send(f)
else else
case f case f
when :user_act when :user_act
if ac.act_type == "ProjectCreateInfo" if ac.act_type == "ProjectCreateInfo"
ac unless ac.nil? ac unless ac.nil?
else else
ac.act unless ac.nil? || ac.act.nil? ac.act unless ac.nil? || ac.act.nil?
end end
when :reply_count when :reply_count
if ac.act_type == "HomeworkCommon" if ac.act_type == "HomeworkCommon"
ac.nil? || ac.act.nil? ? 0 : ac.act.journals_for_messages.count ac.nil? || ac.act.nil? ? 0 : ac.act.journals_for_messages.count
elsif ac.act_type == "News" elsif ac.act_type == "News"
ac.nil? || ac.act.nil? ? 0 : ac.act.comments.count ac.nil? || ac.act.nil? ? 0 : ac.act.comments.count
elsif ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" elsif ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage"
ac.nil? || ac.act.nil? ? 0 : ac.act.children.count ac.nil? || ac.act.nil? ? 0 : ac.act.children.count
elsif ac.act_type == "Issue" elsif ac.act_type == "Issue"
ac.nil? || ac.act.nil? ? 0 : ac.act.journals.count ac.nil? || ac.act.nil? ? 0 : ac.act.journals.count
end end
when :subject when :subject
if ac.act_type == "HomeworkCommon" if ac.act_type == "HomeworkCommon"
ac.act.name unless ac.nil? || ac.act.nil? ac.act.name unless ac.nil? || ac.act.nil?
elsif ac.act_type == "News" || ac.act_type == "BlogComment" elsif ac.act_type == "News" || ac.act_type == "BlogComment"
ac.act.title unless ac.nil? || ac.act.nil? ac.act.title unless ac.nil? || ac.act.nil?
elsif ac.act_type == "Message" || ac.act_type == "Issue" elsif ac.act_type == "Message" || ac.act_type == "Issue"
ac.act.subject unless ac.nil? || ac.act.nil? ac.act.subject unless ac.nil? || ac.act.nil?
elsif ac.act_type == "JournalsForMessage" elsif ac.act_type == "JournalsForMessage"
ac.act.private == 0 ? "留言" : "私信" ac.act.private == 0 ? "留言" : "私信"
end end
when :description when :description
if ac.act_type == "HomeworkCommon" || ac.act_type == "Issue" || ac.act_type == "News" if ac.act_type == "HomeworkCommon" || ac.act_type == "Issue" || ac.act_type == "News"
ac.act.description unless ac.nil? || ac.act.nil? ac.act.description unless ac.nil? || ac.act.nil?
elsif ac.act_type == "Message" || ac.act_type == "BlogComment" elsif ac.act_type == "Message" || ac.act_type == "BlogComment"
ac.act.content unless ac.nil? || ac.act.nil? ac.act.content unless ac.nil? || ac.act.nil?
end end
when :latest_update when :latest_update
time_from_now ac.updated_at unless ac.nil? time_from_now ac.updated_at unless ac.nil?
when :activity_praise_count when :activity_praise_count
if ac.act_type == "HomeworkCommon" || ac.act_type == "News" || ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" || ac.act_type == "Issue" if ac.act_type == "HomeworkCommon" || ac.act_type == "News" || ac.act_type == "Message" || ac.act_type == "BlogComment" || ac.act_type == "JournalsForMessage" || ac.act_type == "Issue"
ac.nil? || ac.act.nil? ? 0 : get_activity_praise_num(ac.act) ac.nil? || ac.act.nil? ? 0 : get_activity_praise_num(ac.act)
end end
#when :homework_common_detail_manual #when :homework_common_detail_manual
# if ac.act_type == "HomeworkCommon" # if ac.act_type == "HomeworkCommon"
# ac.act.homework_detail_manual unless ac.nil? || ac.act.nil? || ac.act.homework_detail_manual.nil? # ac.act.homework_detail_manual unless ac.nil? || ac.act.nil? || ac.act.homework_detail_manual.nil?
# end # end
when :course_project_name when :course_project_name
if ac.container_type == "Course" if ac.container_type == "Course"
name = (get_course(ac.container_id)).name name = (get_course(ac.container_id)).name
name name
elsif ac.container_type == "Project" elsif ac.container_type == "Project"
name = (get_project(ac.container_id)).name name = (get_project(ac.container_id)).name
name name
elsif ac.container_type == "Blog" elsif ac.container_type == "Blog"
"发表博客" "发表博客"
end end
when :activity_type_name when :activity_type_name
if ac.container_type == "Course" if ac.container_type == "Course"
case ac.act_type case ac.act_type
when "HomeworkCommon" when "HomeworkCommon"
"课程作业" "课程作业"
when "News" when "News"
"课程通知" "课程通知"
when "Message" when "Message"
"课程问答区" "课程问答区"
when "Poll" when "Poll"
"课程问卷" "课程问卷"
when "Course" when "Course"
"课程" "课程"
end end
elsif ac.container_type == "Project" elsif ac.container_type == "Project"
case ac.act_type case ac.act_type
when "Issue" when "Issue"
"项目缺陷" "项目缺陷"
when "Message" when "Message"
"项目问答区" "项目问答区"
when "ProjectCreateInfo" when "ProjectCreateInfo"
"项目" "项目"
end end
end end
end end
end end
end end
end end
end end
expose :act_type #缺陷/作业/讨论区/留言等类型 expose :act_type #缺陷/作业/讨论区/留言等类型
expose :container_type #课程/项目/博客/个人 expose :container_type #课程/项目/博客/个人
expose :author, using: Mobile::Entities::User do |a, opt| #用户信息 expose :author, using: Mobile::Entities::User do |a, opt| #用户信息
if a.is_a? ::UserActivity if a.is_a? ::UserActivity
if a.act_type == "ProjectCreateInfo" if a.act_type == "ProjectCreateInfo"
get_user(get_project(a.act_id).user_id) get_user(get_project(a.act_id).user_id)
elsif a.act_type == 'Issue' || a.act_type == 'News' || a.act_type == 'Message' || a.act_type == 'BlogComment' elsif a.act_type == 'Issue' || a.act_type == 'News' || a.act_type == 'Message' || a.act_type == 'BlogComment'
a.act.author a.act.author
elsif a.act_type == 'HomeworkCommon' || a.act_type == 'Poll' || a.act_type == 'JournalsForMessage' elsif a.act_type == 'HomeworkCommon' || a.act_type == 'Poll' || a.act_type == 'JournalsForMessage'
a.act.user a.act.user
elsif a.act_type == 'Course' elsif a.act_type == 'Course'
a.act.teacher a.act.teacher
end end
end end
end end
expose :homework_common_detail , using: Mobile::Entities::Whomework do |a, opt| #作业相关信息 expose :homework_common_detail , using: Mobile::Entities::Whomework do |a, opt| #作业相关信息
if a.act_type == "HomeworkCommon" if a.act_type == "HomeworkCommon"
a.act a.act
end end
end end
expose :issue_detail, using: Mobile::Entities::Issue do |a, opt| #缺陷信息 expose :issue_detail, using: Mobile::Entities::Issue do |a, opt| #缺陷信息
if a.act_type == "Issue" if a.act_type == "Issue"
a.act a.act
end end
end end
act_expose :reply_count #回复数 act_expose :reply_count #回复数
act_expose :activity_praise_count #点赞数 act_expose :activity_praise_count #点赞数
#act_expose :user_act #某个动态 #act_expose :user_act #某个动态
act_expose :subject #标题 act_expose :subject #标题
act_expose :description #描述 act_expose :description #描述
act_expose :latest_update #最新更新时间 act_expose :latest_update #最新更新时间
act_expose :course_project_name #课程/项目名字 act_expose :course_project_name #课程/项目名字
act_expose :activity_type_name #课程问答区/项目缺陷等 act_expose :activity_type_name #课程问答区/项目缺陷等
end end
end end
end end

View File

@ -1,46 +1,46 @@
module Mobile module Mobile
module Entities module Entities
class BlogComment < Grape::Entity class BlogComment < Grape::Entity
include ApplicationHelper include ApplicationHelper
include ApiHelper include ApiHelper
def self.blog_comment_expose(f) def self.blog_comment_expose(f)
expose f do |u,opt| expose f do |u,opt|
if u.is_a?(Hash) && u.key?(f) if u.is_a?(Hash) && u.key?(f)
u[f] u[f]
elsif u.is_a?(::BlogComment) elsif u.is_a?(::BlogComment)
if u.respond_to?(f) if u.respond_to?(f)
if f == :created_at if f == :created_at
format_time( u.send(f)) format_time( u.send(f))
else else
u.send(f) u.send(f)
end end
else else
# case f # case f
# when :xx # when :xx
# # # #
# end # end
end end
end end
end end
end end
expose :user, using: Mobile::Entities::User do |c, opt| expose :user, using: Mobile::Entities::User do |c, opt|
if c.is_a?(::BlogComment) if c.is_a?(::BlogComment)
c.author c.author
end end
end end
blog_comment_expose :blog_id blog_comment_expose :blog_id
blog_comment_expose :title blog_comment_expose :title
blog_comment_expose :content blog_comment_expose :content
blog_comment_expose :comments_count blog_comment_expose :comments_count
blog_comment_expose :created_at blog_comment_expose :created_at
blog_comment_expose :id blog_comment_expose :id
expose :blog_comment_children, using:Mobile::Entities::BlogComment do |c,opt| expose :blog_comment_children, using:Mobile::Entities::BlogComment do |c,opt|
if c.is_a? (::BlogComment) if c.is_a? (::BlogComment)
c.children c.children
end end
end end
end end
end end
end end

View File

@ -1,35 +1,35 @@
module Mobile module Mobile
module Entities module Entities
class Issue <Grape::Entity class Issue <Grape::Entity
include ApiHelper include ApiHelper
include Redmine::I18n include Redmine::I18n
def self.issue_expose(f) def self.issue_expose(f)
expose f do |issue, opt| expose f do |issue, opt|
if issue.is_a?(Hash) && issue.key?(f) if issue.is_a?(Hash) && issue.key?(f)
issue[f] issue[f]
elsif issue.is_a?(::Issue) elsif issue.is_a?(::Issue)
if issue.respond_to?(f) if issue.respond_to?(f)
issue.send(f) issue.send(f)
else else
case f case f
when :issue_priority when :issue_priority
get_issue_priority_api issue.priority_id get_issue_priority_api issue.priority_id
when :issue_assigned_to when :issue_assigned_to
(get_user(issue.assigned_to_id)).login (get_user(issue.assigned_to_id)).login
when :issue_status when :issue_status
IssueStatus.find(issue.status_id).name IssueStatus.find(issue.status_id).name
end end
end end
end end
end end
end end
expose :subject expose :subject
expose :description expose :description
expose :author, using: Mobile::Entities::User expose :author, using: Mobile::Entities::User
expose :done_ratio expose :done_ratio
issue_expose :issue_priority issue_expose :issue_priority
issue_expose :issue_assigned_to issue_expose :issue_assigned_to
issue_expose :issue_status issue_expose :issue_status
end end
end end
end end

View File

@ -1,66 +1,66 @@
# encoding: utf-8 # encoding: utf-8
module Mobile module Mobile
module Entities module Entities
class Whomework <Grape::Entity class Whomework <Grape::Entity
include ApiHelper include ApiHelper
include ApplicationHelper include ApplicationHelper
include Redmine::I18n include Redmine::I18n
def self.whomework_expose(f) def self.whomework_expose(f)
expose f do |wh, opt| expose f do |wh, opt|
if wh.is_a?(Hash) && wh.key?(f) if wh.is_a?(Hash) && wh.key?(f)
if f == :created_at if f == :created_at
format_time(wh[f]) format_time(wh[f])
else else
wh[f] wh[f]
end end
elsif wh.is_a?(::HomeworkCommon) elsif wh.is_a?(::HomeworkCommon)
if wh.respond_to?(f) if wh.respond_to?(f)
wh.send(f) wh.send(f)
else else
case f case f
when :absence_penalty when :absence_penalty
wh.nil? || wh.homework_detail_manual.nil? ? 0 : wh.homework_detail_manual.absence_penalty wh.nil? || wh.homework_detail_manual.nil? ? 0 : wh.homework_detail_manual.absence_penalty
when :evaluation_start when :evaluation_start
wh.nil? || wh.homework_detail_manual.nil? ? nil : convert_to_time(wh.homework_detail_manual.evaluation_start, 0) wh.nil? || wh.homework_detail_manual.nil? ? nil : convert_to_time(wh.homework_detail_manual.evaluation_start, 0)
when :evaluation_end when :evaluation_end
wh.nil? || wh.homework_detail_manual.nil? ? nil : convert_to_time(wh.homework_detail_manual.evaluation_end, 1) wh.nil? || wh.homework_detail_manual.nil? ? nil : convert_to_time(wh.homework_detail_manual.evaluation_end, 1)
when :whomework_praise_count when :whomework_praise_count
get_activity_praise_num(wh) get_activity_praise_num(wh)
when :whomework_journal_count when :whomework_journal_count
wh.journals_for_messages.count wh.journals_for_messages.count
end end
end end
end end
end end
end end
expose :author, using: Mobile::Entities::User do |w, opt| expose :author, using: Mobile::Entities::User do |w, opt|
if w.is_a?(::HomeworkCommon) if w.is_a?(::HomeworkCommon)
w.user w.user
end end
end end
expose :name expose :name
expose :description expose :description
expose :publish_time expose :publish_time
expose :end_time expose :end_time
expose :homework_type expose :homework_type
expose :late_penalty expose :late_penalty
expose :course_id expose :course_id
expose :anonymous_comment expose :anonymous_comment
expose :quotes expose :quotes
expose :is_open expose :is_open
whomework_expose :created_at whomework_expose :created_at
whomework_expose :absence_penalty whomework_expose :absence_penalty
whomework_expose :evaluation_start whomework_expose :evaluation_start
whomework_expose :evaluation_end whomework_expose :evaluation_end
whomework_expose :whomework_praise_count whomework_expose :whomework_praise_count
whomework_expose :whomework_journal_count whomework_expose :whomework_journal_count
expose :journals_for_messages, using: Mobile::Entities::Jours do |f, opt| expose :journals_for_messages, using: Mobile::Entities::Jours do |f, opt|
#f[:journals_for_messages] if f.is_a?(Hash) && f.key?(:journals_for_messages) #f[:journals_for_messages] if f.is_a?(Hash) && f.key?(:journals_for_messages)
if f.is_a?(::HomeworkCommon) if f.is_a?(::HomeworkCommon)
f.journals_for_messages f.journals_for_messages
end end
end end
end end
end end
end end

View File

@ -1,96 +1,96 @@
require File.expand_path('../boot', __FILE__) require File.expand_path('../boot', __FILE__)
require 'rails/all' require 'rails/all'
require 'sprockets/railtie' require 'sprockets/railtie'
require 'elasticsearch/model' require 'elasticsearch/model'
if defined?(Bundler) if defined?(Bundler)
# If you precompile assets before deploying to production, use this line # If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test))) Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line # If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env) # Bundler.require(:default, :assets, Rails.env)
end end
module RedmineApp module RedmineApp
class Application < Rails::Application class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here. # Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers # Application configuration should go into files in config/initializers
# -- 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
config.generators do |g| config.generators do |g|
g.test_framework :rspec, g.test_framework :rspec,
fixtures: true, fixtures: true,
view_specs: false, view_specs: false,
helper_specs: false, helper_specs: false,
routing_specs: false, routing_specs: false,
controller_specs: true, controller_specs: true,
request_specs: false request_specs: false
g.fixture_replacement :factory_girl, dir: "spec/factories" g.fixture_replacement :factory_girl, dir: "spec/factories"
end end
# Custom directories with classes and modules you want to be autoloadable. # Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += %w(#{RAILS_ROOT}/app/sweepers) config.autoload_paths += %w(#{RAILS_ROOT}/app/sweepers)
# Only load the plugins named here, in the order given (default is alphabetical). # Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named. # :all can be used as a placeholder for all plugins not explicitly named.
# config.plugins = [ :exception_notification, :ssl_requirement, :all ] # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# Activate observers that should always be running. # Activate observers that should always be running.
config.active_record.observers = :journals_for_message_observer, :issue_observer, :journal_observer, :wiki_content_observer config.active_record.observers = :journals_for_message_observer, :issue_observer, :journal_observer, :wiki_content_observer
config.active_record.store_full_sti_class = true config.active_record.store_full_sti_class = true
config.active_record.default_timezone = :local config.active_record.default_timezone = :local
config.time_zone = 'Beijing' config.time_zone = 'Beijing'
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)' # config.time_zone = 'Central Time (US & Canada)'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.default_locale = :zh config.i18n.default_locale = :zh
#config.i18n.enforce_available_locales = true #config.i18n.enforce_available_locales = true
#I18n.config.enforce_available_locales = true #I18n.config.enforce_available_locales = true
# Configure the default encoding used in templates for Ruby 1.9. # Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8" config.encoding = "utf-8"
# Configure sensitive parameters which will be filtered from the log file. # Configure sensitive parameters which will be filtered from the log file.
config.filter_parameters += [:password] config.filter_parameters += [:password]
# Enable the asset pipeline # Enable the asset pipeline
config.assets.enabled = false config.assets.enabled = false
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
config.action_mailer.perform_deliveries = false config.action_mailer.perform_deliveries = false
# Do not include all helpers # Do not include all helpers
config.action_controller.include_all_helpers = false config.action_controller.include_all_helpers = false
config.action_view.sanitized_allowed_tags = 'div', 'p', 'span', 'img', 'embed' config.action_view.sanitized_allowed_tags = 'div', 'p', 'span', 'img', 'embed'
config.before_initialize do config.before_initialize do
end end
config.after_initialize do config.after_initialize do
if RbConfig::CONFIG['target_os'] == 'mingw32' if RbConfig::CONFIG['target_os'] == 'mingw32'
Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true
elsif RbConfig::CONFIG['target_os'] == 'linux' && ["fast76"].include?(`hostname`.gsub("\n","")) elsif RbConfig::CONFIG['target_os'] == 'linux' && ["fast76"].include?(`hostname`.gsub("\n",""))
Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true
elsif RbConfig::CONFIG['target_os'] == 'linux' && ["testtrustie11","agent12"].include?(`hostname`.gsub("\n","")) elsif RbConfig::CONFIG['target_os'] == 'linux' && ["testtrustie11","agent12"].include?(`hostname`.gsub("\n",""))
Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.11:9200','192.168.80.12:9200'], retry_on_failure: true Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.11:9200','192.168.80.12:9200'], retry_on_failure: true
elsif RbConfig::CONFIG['target_os'] == 'linux' && ["trustie168","trustieserver14","trustieserver16","Trustie18"].include?(`hostname`.gsub("\n","")) elsif RbConfig::CONFIG['target_os'] == 'linux' && ["trustie168","trustieserver14","trustieserver16","Trustie18"].include?(`hostname`.gsub("\n",""))
Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.168:9200'], retry_on_failure: true Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.168:9200'], retry_on_failure: true
else else
Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true
end end
end end
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
end end
end end
end end

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>react js</title> <title>最新动态</title>
<meta charset='utf-8' /> <meta charset='utf-8' />
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="description" content="" /> <meta name="description" content="" />
@ -20,65 +20,65 @@
<!-- 模板1开始可以使用scripttype设置为text/html来存放模板片段并且用id标示 --> <!-- 模板1开始可以使用scripttype设置为text/html来存放模板片段并且用id标示 -->
<script id="t:result-list" type="text/html"> <script id="t:result-list" type="text/html">
<! for(var i =0; i <activities.length; ++i){ !> <! for(var i =0; i < activities.length; ++i){ !>
<! var container_type = "course"; var act_type = "homework"; !> <! var container_type = activities[i].container_type; var act_type = activities[i].act_type; !>
<! if (container_type == "course") { !> <! if (container_type == "Course") { !>
<! if (act_type == "homework") { !> <! if (act_type == "HomeworkCommon") { !>
<!--homework --> <!--homework -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<a herf="javascript:void(0);" class="ml10">我的私有课程&nbsp;&nbsp;|&nbsp;&nbsp;课程作业</a></div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<a herf="javascript:void(0);" class="ml10"><!=activities[i].course_project_name!>&nbsp;&nbsp;|&nbsp;&nbsp;<!=activities[i].activity_type_name!></a></div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<div class="post-all-content"><!:=activities[i].description!><br /> <div class="post-all-content"><!:=activities[i].description!><br />
<span class="mr15">迟交扣分:10分</span> 匿评开启时间2016-03-14 00:00<br /> <span class="mr15">迟交扣分:<!:=activities[i].homework_common_detail.late_penalty!></span> 匿评开启时间:<!:=activities[i].homework_common_detail.evaluation_start!><br />
<span class="mr15">缺评扣分:5分/作品</span> 匿评关闭时间2016-03-21 23:59</div> <span class="mr15">缺评扣分:<!:=activities[i].homework_common_detail.absence_penalty!>分/作品</span> 匿评关闭时间:<!:=activities[i].homework_common_detail.evaluation_end!></div>
</div> </div>
<a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a> <a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a>
<div class="cl"></div> <div class="cl"></div>
<span class="c-grey f13 mt10 fl"><!=activities[i].created_on!></span> <span class="c-grey f13 mt10 fl"><!=activities[i].latest_update!></span>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复<!=activities[i].reply_num!></div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"><!=activities[i].praise_num!></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
<! } else if (act_type == "news") { !> <! } else if (act_type == "News") { !>
<!-- course news --> <!-- course news -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<a herf="javascript:void(0);" class="ml10">我的私有课程&nbsp;&nbsp;|&nbsp;&nbsp;课程讨论区</a></div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<!=activities[i].course_project_name!>&nbsp;&nbsp;|&nbsp;&nbsp;<!=activities[i].activity_type_name!></div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<div class="post-all-content"><!:=activities[i].description!></div> <div class="post-all-content"><!:=activities[i].description!></div>
</div> </div>
<a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a> <a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a>
<div class="cl"></div> <div class="cl"></div>
<span class="c-grey f13 mt10 fl"><!=activities[i].created_on!></span> <span class="c-grey f13 mt10 fl"><!=activities[i].latest_update!></span>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
<! } else if (act_type == "messge") { !> <! } else if (act_type == "Message") { !>
<!--course message --> <!--course message -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="images/post-avatar.jpg" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="images/post-avatar.jpg" width="45" height="45" class="border-radius" /></div>
<div class="post-title fl mb10 hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a> <span style="vertical-align:top;">给您留言了</span><br /> <div class="post-title fl mb10 hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a> <span style="vertical-align:top;">给您留言了</span><br />
<span class="c-grey"><!=activities[i].created_on!></span> </div> <span class="c-grey"><!=activities[i].latest_update!></span> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<p class="post-all-content"><!:=activities[i].description!></p> <p class="post-all-content"><!:=activities[i].description!></p>
@ -87,68 +87,68 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
<! } else if (act_type == "course") { !> <! } else if (act_type == "Course") { !>
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].author.nickname!></span>创建了<span class="c-grey3 f15 fb">我的私有课程 | 课程</span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].author.nickname!></span>创建了<span class="c-grey3 f15 fb">我的私有课程 | 课程</span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].created_on!></a></div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].latest_update!></a></div>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</div> </div>
</div> </div>
<! } !> <! } !>
<! } else if (container_type == "project") { !> <! } else if (container_type == "Project") { !>
<! if (act_type == "activities") { !> <! if (act_type == "Issue") { !>
<!-- activities --> <!-- activities -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to</div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<!=activities[i].course_project_name!>&nbsp;&nbsp;|&nbsp;&nbsp;<!=activities[i].activity_type_name!></div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<div class="post-all-content"><!:=activities[i].description!><br /> <div class="post-all-content"><!:=activities[i].description!><br />
<span class="mr15">指派给:黄井泉</span> <span class="mr15">状态:新增</span> <span class="mr15">完成度:30%</span></div> <span class="mr15">状态:<!:=activities[i].issue_detail.issue_status!></span> <span class="mr15">优先级:<!:=activities[i].issue_detail.issue_priority!></span> <br /> <span class="mr15">指派给:<!:=activities[i].issue_detail.issue_assigned_to!></span> <span class="mr15">完成度:<!:=activities[i].issue_detail.done_ratio!></span></div>
</div> </div>
<a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a> <a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a>
<div class="cl"></div> <div class="cl"></div>
<span class="c-grey f13 mt10 fl"><!=activities[i].created_on!></span> <span class="c-grey f13 mt10 fl"><!=activities[i].latest_update!></span>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
<! } else if (act_type == "message") { !> <! } else if (act_type == "Message") { !>
<!-- project news --> <!-- project news -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].subject!></span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<a herf="javascript:void(0);" class="ml10">我的私有课程&nbsp;&nbsp;|&nbsp;&nbsp;课程讨论区</a></div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a>to<!=activities[i].course_project_name!>&nbsp;&nbsp;|&nbsp;&nbsp;<!=activities[i].activity_type_name!></div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<div class="post-all-content"><!:=activities[i].description!></div> <div class="post-all-content"><!:=activities[i].description!></div>
</div> </div>
<a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a> <a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a>
<div class="cl"></div> <div class="cl"></div>
<span class="c-grey f13 mt10 fl"><!=activities[i].created_on!></span> <span class="c-grey f13 mt10 fl"><!=activities[i].latest_update!></span>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
@ -159,7 +159,7 @@
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="<!=activities[i].author.img_url!>" width="45" height="45" class="border-radius" /></div>
<div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].author.nickname!></span>创建了<span class="c-grey3 f15 fb">我的私有课程 | 课程</span></div> <div class="post-title hidden mb5"><span class="c-grey3 f15 fb"><!=activities[i].author.nickname!></span>创建了<span class="c-grey3 f15 fb">我的私有课程 | 课程</span></div>
<div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].created_on!></a></div> <div class="post-title hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].latest_update!></a></div>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</div> </div>
@ -172,7 +172,7 @@
<div class="post-main"> <div class="post-main">
<div class="post-avatar fl"><img src="images/post-avatar.jpg" width="45" height="45" class="border-radius" /></div> <div class="post-avatar fl"><img src="images/post-avatar.jpg" width="45" height="45" class="border-radius" /></div>
<div class="post-title fl mb10 hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a> <span style="vertical-align:top;">给您留言了</span><br /> <div class="post-title fl mb10 hidden"><a herf="javascript:void(0);" class="mr10"><!=activities[i].author.nickname!></a> <span style="vertical-align:top;">给您留言了</span><br />
<span class="c-grey"><!=activities[i].created_on!></span> </div> <span class="c-grey"><!=activities[i].latest_update!></span> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="post-content c-grey2 mt10"> <div class="post-content c-grey2 mt10">
<p class="post-all-content"><!:=activities[i].description!></p> <p class="post-all-content"><!:=activities[i].description!></p>
@ -181,12 +181,12 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>
<! } else if (container_type == "blog") { !> <! } else if (container_type == "Blog") { !>
<!--blog --> <!--blog -->
<div class="post-container"> <div class="post-container">
<div class="post-wrapper"> <div class="post-wrapper">
@ -200,12 +200,12 @@
</div> </div>
<a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a> <a herf="javascript:void(0);" class="link-blue f13 fl mt5 post-more undis" style="text-decoration:underline">点击展开</a>
<div class="cl"></div> <div class="cl"></div>
<span class="c-grey f13 mt10 fl"><!=activities[i].created_on!></span> <span class="c-grey f13 mt10 fl"><!=activities[i].latest_update!></span>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<div class="post-interactive"> <div class="post-interactive">
<div class="post-interactive-column c-grey2">回复</div> <div class="post-interactive-column c-grey2">回复 (<!=activities[i].reply_count!>)</div>
<div class="post-interactive-column c-grey2"></div> <div class="post-interactive-column c-grey2"> (<!=activities[i].activity_praise_count!>)</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,65 +1,65 @@
/** /**
* Created by root on 3/25/16. * Created by root on 3/25/16.
*/ */
$(document).ready(function(){ $(document).ready(function(){
var bt=baidu.template; var bt=baidu.template;
bt.LEFT_DELIMITER='<!'; bt.LEFT_DELIMITER='<!';
bt.RIGHT_DELIMITER='!>'; bt.RIGHT_DELIMITER='!>';
var apiUrl = '/api/v1/'; var apiUrl = '/api/v1/';
var setTemplate = function(data){ var setTemplate = function(data){
console.log(data); console.log(data);
var html=bt('t:result-list',{activities: data}); var html=bt('t:result-list',{activities: data});
$('#container').prepend(html); $('#container').prepend(html);
descToggle(); descToggle();
}; };
var loadDataFromServer = function(id){ var loadDataFromServer = function(id){
//getOpenId(function(openid){ //getOpenId(function(openid){
$.ajax({ $.ajax({
url: apiUrl + 'activities/' + id, url: apiUrl + 'activities/' + id,
dataType: 'json', dataType: 'json',
success: function(data){ success: function(data){
setTemplate(data.data); setTemplate(data.data);
}, },
error: function(xhr,status,err){ error: function(xhr,status,err){
console.log(err); console.log(err);
} }
}); });
//}) //})
}; };
loadDataFromServer(8686); loadDataFromServer(8686);
var descToggle = function(){ var descToggle = function(){
var postWidth = $(".post-wrapper").width(); var postWidth = $(".post-wrapper").width();
var titleWidth = postWidth - 80; var titleWidth = postWidth - 80;
$(".post-title").css("maxWidth",titleWidth); $(".post-title").css("maxWidth",titleWidth);
$(".post-all-content").each(function(){ $(".post-all-content").each(function(){
var postHeight = $(this).height(); var postHeight = $(this).height();
if (postHeight > 90){ if (postHeight > 90){
$(this).parent().next().css("display","block"); $(this).parent().next().css("display","block");
$(this).parent().next().toggle(function(){ $(this).parent().next().toggle(function(){
$(this).text("点击隐藏"); $(this).text("点击隐藏");
$(this).prev().css("height",postHeight); $(this).prev().css("height",postHeight);
},function(){ },function(){
$(this).text("点击展开"); $(this).text("点击展开");
$(this).prev().css("height",90); $(this).prev().css("height",90);
}); });
} }
}); });
} }
var timeSpilt = function(){ var timeSpilt = function(){
} }
}); });

View File

@ -1,97 +1,97 @@
/** /**
* Created by guange on 16/3/21. * Created by guange on 16/3/21.
*//* *//*
var Index = React.createClass({ var Index = React.createClass({
render: function(){ render: function(){
return (<div>index page</div>); return (<div>index page</div>);
} }
}); });
var apiUrl = '/api/v1/'; var apiUrl = '/api/v1/';
var PostContainer = React.createClass({ var PostContainer = React.createClass({
loadDataFromServer: function(){ loadDataFromServer: function(){
$.ajax({ $.ajax({
url: apiUrl + 'issues/' + this.props.params.id, url: apiUrl + 'issues/' + this.props.params.id,
dataType: 'json', dataType: 'json',
success: function(data){ success: function(data){
this.setState({data: data.data}); this.setState({data: data.data});
}.bind(this), }.bind(this),
error: function(xhr,status,err){ error: function(xhr,status,err){
console.log(err); console.log(err);
}.bind(this) }.bind(this)
}) })
}, },
componentDidMount: function(){ componentDidMount: function(){
this.loadDataFromServer(); this.loadDataFromServer();
}, },
getInitialState: function(){ getInitialState: function(){
return {data: null}; return {data: null};
}, },
render: function(){ render: function(){
return ( return (
<PostView data={this.state.data}/> <PostView data={this.state.data}/>
) )
} }
}); });
var PostView = React.createClass({ var PostView = React.createClass({
testClick: function(){ testClick: function(){
console.log("123123"); console.log("123123");
}, },
render: function(){ render: function(){
if(!this.props.data){ if(!this.props.data){
return <div></div> return <div></div>
} }
var issueEach = this.props.data.map(function(issue){ var issueEach = this.props.data.map(function(issue){
var descMarkup = converter.makeHtml(issue.description.toString()); var descMarkup = converter.makeHtml(issue.description.toString());
return ( return (
<div className="post-container"> <div className="post-container">
<div className="post-wrapper"> <div className="post-wrapper">
<div className="post-main"> <div className="post-main">
<div className="post-avatar fl"><img src={issue.author.img_url} width="45" height="45" className="border-radius" /></div> <div className="post-avatar fl"><img src={issue.author.img_url} width="45" height="45" className="border-radius" /></div>
<div className="post-title hidden mb5"><span className="c-grey3 f15 fb">{issue.subject}</span></div> <div className="post-title hidden mb5"><span className="c-grey3 f15 fb">{issue.subject}</span></div>
<div className="post-title hidden"><a herf="javascript:void(0);" className="mr10">{issue.author.nickname}</a>项目问题</div> <div className="post-title hidden"><a herf="javascript:void(0);" className="mr10">{issue.author.nickname}</a>项目问题</div>
<div className="cl"></div> <div className="cl"></div>
<div className="post-content c-grey2 mt10"> <div className="post-content c-grey2 mt10">
<div className="post-all-content" dangerouslySetInnerHTML={{__html: descMarkup}}></div> <div className="post-all-content" dangerouslySetInnerHTML={{__html: descMarkup}}></div>
</div> </div>
<a herf="javascript:void(0);" className="link-blue f13 fl mt5 post-more " style={{textDecoration: 'underline'}}>点击展开</a> <a herf="javascript:void(0);" className="link-blue f13 fl mt5 post-more " style={{textDecoration: 'underline'}}>点击展开</a>
<div className="cl"></div> <div className="cl"></div>
<span onClick={this.testClick} className="c-grey f13 mt10 fl">{issue.created_on}</span> <span onClick={this.testClick} className="c-grey f13 mt10 fl">{issue.created_on}</span>
<div className="cl"></div> <div className="cl"></div>
</div> </div>
</div> </div>
</div> </div>
) )
}); });
return( return(
<div>{issueEach}</div> <div>{issueEach}</div>
); );
} }
}); });
var Route = ReactRouter.Route; var Route = ReactRouter.Route;
var Router = ReactRouter.Router; var Router = ReactRouter.Router;
var routes = ( var routes = (
<Router> <Router>
<Route path="/" component={Index}/> <Route path="/" component={Index}/>
<Route path="issue/:id" component={PostContainer} /> <Route path="issue/:id" component={PostContainer} />
</Router> </Router>
); );
React.render(routes, document.getElementById("container")); React.render(routes, document.getElementById("container"));
*/ */