diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb
index b4fb90ea7..4d07c23f8 100644
--- a/app/api/mobile/apis/activities.rb
+++ b/app/api/mobile/apis/activities.rb
@@ -13,50 +13,55 @@ module Mobile
requires :container_type, type: String
end
post do
- authenticate!
+ begin
+ authenticate!
- user = current_user
+ user = current_user
- container_type = params[:container_type] ? params[:container_type] : "All"
+ container_type = params[:container_type] ? params[:container_type] : "All"
- if container_type == "All" || container_type == "Project"
- shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id)
- user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")"
- project_types = "('Message','Issue','Project')"
+ if container_type == "All" || container_type == "Project"
+ shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id)
+ user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")"
+ project_types = "('Message','Issue','Project')"
+ end
+
+ if container_type == "All" || container_type == "Course"
+ shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id)
+ user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")"
+ course_types = "('Message','News','HomeworkCommon','Poll','Course')"
+ end
+
+ page = params[:page] ? params[:page] : 0
+ principal_types = "JournalsForMessage"
+ watched_user_ids = User.watched_by(user.id).count == 0 ? " " : ("," + User.watched_by(user.id).map{|u| u.id.to_s }.join(','))
+ user_ids = "(" + user.id.to_s + watched_user_ids + ")"
+ watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}").count == 0 ? " " :Blog.select("id").where("author_id in #{user_ids}").map { |blog| blog.id}.join(",")
+ blog_ids = "(" + watched_user_blog_ids + ")"
+
+ if container_type == "Course"
+ activities = UserActivity.where("(container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types})").order('updated_at desc')
+ elsif container_type == "Project"
+ activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})").order('updated_at desc')
+ else
+ 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 = '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')
+ end
+ all_count = activities.count
+ activities = activities.limit(10).offset(page * 10)
+ count = activities.count
+ present :data, activities, with: Mobile::Entities::Activity,user: user
+ present :all_count, all_count
+ present :count, count
+ present :page, page
+ present :status, 0
+ present :container_type, container_type
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
end
-
- if container_type == "All" || container_type == "Course"
- shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id)
- user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")"
- course_types = "('Message','News','HomeworkCommon','Poll','Course')"
- end
-
- page = params[:page] ? params[:page] : 0
- principal_types = "JournalsForMessage"
- watched_user_ids = User.watched_by(user.id).count == 0 ? " " : ("," + User.watched_by(user.id).map{|u| u.id.to_s }.join(','))
- user_ids = "(" + user.id.to_s + watched_user_ids + ")"
- watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}").count == 0 ? " " :Blog.select("id").where("author_id in #{user_ids}").map { |blog| blog.id}.join(",")
- blog_ids = "(" + watched_user_blog_ids + ")"
-
- if container_type == "Course"
- activities = UserActivity.where("(container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types})").order('updated_at desc')
- elsif container_type == "Project"
- activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})").order('updated_at desc')
- else
- 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 = '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')
- end
- all_count = activities.count
- activities = activities.limit(10).offset(page * 10)
- count = activities.count
- present :data, activities, with: Mobile::Entities::Activity,user: user
- present :all_count, all_count
- present :count, count
- present :page, page
- present :status, 0
- present :container_type, container_type
end
end
end
diff --git a/app/api/mobile/apis/blog_comments.rb b/app/api/mobile/apis/blog_comments.rb
index 39b6a486a..ddfd65524 100644
--- a/app/api/mobile/apis/blog_comments.rb
+++ b/app/api/mobile/apis/blog_comments.rb
@@ -7,17 +7,22 @@ module Mobile
desc "get special topic"
post ':id' do
- user = current_user
+ begin
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
- blog = BlogComment.find params[:id]
- present :data, blog, with: Mobile::Entities::BlogComment,user: user,type: type,page: page
- present :type, type
- present :page, page
- present :status, 0
+ blog = BlogComment.find params[:id]
+ present :data, blog, with: Mobile::Entities::BlogComment,user: user,type: type,page: page
+ present :type, type
+ present :page, page
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
+ end
end
end
end
diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index 575048211..369185ca2 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -167,8 +167,20 @@ module Mobile
requires :course_id, type: Integer, desc: "课程id"
end
get 'teachers' do
+
+ course = Course.find(params[:course_id])
+
cs = CoursesService.new
teachers = cs.course_teacher_or_student_list({role: '1'}, params[:course_id],current_user)
+
+ teachers.each do |m|
+ if m[:id] == course.tea_id
+ teachers.delete(m)
+ teachers.insert(0,m)
+ break
+ end
+ end
+
present :data, teachers, with: Mobile::Entities::User
present :status, 0
end
diff --git a/app/api/mobile/apis/issues.rb b/app/api/mobile/apis/issues.rb
index 36b558652..dfd5a3335 100644
--- a/app/api/mobile/apis/issues.rb
+++ b/app/api/mobile/apis/issues.rb
@@ -8,17 +8,25 @@ module Mobile
desc "get special issuse"
post ':id' do
- authenticate!
- user = current_user
+ begin
+ # authenticate!
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
- issue = Issue.find params[:id]
- present :data, issue, with: Mobile::Entities::Issue,user: user,type: type,page: page
- present :type, type
- present :page, page
- present :status, 0
+ #is_public true 公开 false 私有 1公开 0私有
+
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
+ issue = Issue.find params[:id]
+ present :data, issue, with: Mobile::Entities::Issue,user: user,type: type,page: page
+ present :type, type
+ present :page, page
+ present :is_public, issue.project.is_public
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
+ end
end
end
end
diff --git a/app/api/mobile/apis/journal_for_messages.rb b/app/api/mobile/apis/journal_for_messages.rb
index 6ac484513..0ef875780 100644
--- a/app/api/mobile/apis/journal_for_messages.rb
+++ b/app/api/mobile/apis/journal_for_messages.rb
@@ -7,18 +7,33 @@ module Mobile
desc "get special journal"
post ':id' do
- authenticate!
- user = current_user
+ begin
+ # authenticate!
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
- jour = JournalsForMessage.find params[:id]
- present :data, jour, with: Mobile::Entities::Jours,user: user,type: type,page: page
- present :type, type
- present :page, page
- present :status, 0
+ jour = JournalsForMessage.find params[:id]
+
+ is_public = 1
+
+ if jour.jour_type == "Project"
+ is_public = jour.project.is_public
+ elsif jour.jour_type == "Course"
+ is_public = jour.course.is_public
+ end
+
+ present :data, jour, with: Mobile::Entities::Jours,user: user,type: type,page: page
+ present :type, type
+ present :page, page
+ present :is_public, is_public
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
+ end
end
end
end
diff --git a/app/api/mobile/apis/messages.rb b/app/api/mobile/apis/messages.rb
index ceda5058f..963d2f4ab 100644
--- a/app/api/mobile/apis/messages.rb
+++ b/app/api/mobile/apis/messages.rb
@@ -7,17 +7,36 @@ module Mobile
desc "get special topic"
post ':id' do
- authenticate!
- user = current_user
+ begin
+ # authenticate!
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
- message = Message.find params[:id]
- present :data, message, with: Mobile::Entities::Message,user: user,type: type,page: page
- present :type, type
- present :page, page
- present :status, 0
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
+ message = Message.find params[:id]
+
+ is_public = 1
+ type_name = ""
+
+ if message.project
+ is_public = message.project.is_public
+ type_name = "project"
+ elsif message.course
+ is_public = message.course.is_public
+ type_name = "course"
+ end
+
+ present :data, message, with: Mobile::Entities::Message,user: user,type: type,page: page
+ present :type, type
+ present :page, page
+ present :is_public, is_public
+ present :type_name, type_name
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
+ end
end
end
end
diff --git a/app/api/mobile/apis/new_comment.rb b/app/api/mobile/apis/new_comment.rb
index 5b7159301..6d46b2f59 100644
--- a/app/api/mobile/apis/new_comment.rb
+++ b/app/api/mobile/apis/new_comment.rb
@@ -11,69 +11,208 @@ module Mobile
params do
requires :type, type: String
requires :content, type: String
- requires :token, type: String
end
post ':id' do
+ unless current_user
+ #如果当前用户不存在 则需要根据微信昵称注册一个帐号
+ openid = session[:wechat_openid]
+ raise "无法获取到openid,请在微信中打开本页面" unless openid
+ us = UsersService.new
+
+ access_token = session[:access_token]
+ refresh_token = session[:refresh_token]
+
+ if access_token.present? && refresh_token.present?
+ begin
+ refreshinfo = Wechat.api.web_refresh_access_token(refresh_token)
+ rescue
+ info = Wechat.api.web_access_token(session[:wechat_code])
+ openid =info["openid"]
+ access_token =info["access_token"]
+ if access_token
+ session[:access_token] = access_token
+ end
+ refresh_token = info["refresh_token"]
+ if refresh_token
+ session[:refresh_token] = refresh_token
+ end
+ refreshinfo = Wechat.api.web_refresh_access_token(refresh_token)
+ end
+
+ access_token = refreshinfo["access_token"]
+ refresh_token = refreshinfo["refresh_token"]
+ session[:access_token] = access_token
+ session[:refresh_token] = refresh_token
+
+ #获取用户信息
+ userinfo = Wechat.api.web_userinfo(access_token,openid)
+ Rails.logger.info "userinfo!!!!!!!!!"
+ Rails.logger.info userinfo
+ name = userinfo["nickname"]
+ else
+ name = openid[0..3]+"***"+openid.last
+ end
+
+ user = us.register ({:login=>openid, :mail=>"#{openid}@163.com",
+ :password=>"12345678", :password_confirmation=>"12345678",
+ :should_confirmation_password => true})
+ raise user.errors.full_messages.first if user.new_record?
+ user.update_attributes(:lastname=>name)
+ #自动激活
+ if Setting.self_registration != '3'
+ user.activate
+ user.last_login_on = Time.now
+ if user.save
+ UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
+ end
+ end
+ UserWechat.create!(
+ openid: openid,
+ user: user,
+ bindtype: 1
+ )
+ end
+
authenticate!
+
+ subscribe = 0 #默认未关注
+
+ #-------------------获取用户是否关注此公众号-----------------------------
+ openid = session[:wechat_openid]
+ raise "无法获取到openid,请在微信中打开本页面" unless openid
+ user_info = Wechat.api.user(openid)
+ Rails.logger.info "user_info!!!!!!!!!"
+ Rails.logger.info user_info
+ subscribe = user_info["subscribe"]
+
+ status = 0
+ tip = 0 #0班级1项目
type = params[:type]
result = 1
if params[:content]!="" && current_user
case type
when "HomeworkCommon"
homework_common = HomeworkCommon.find(params[:id])
+
+ #如果是私有的 并且不是成员则不能回复
+ # is_public = homework_common.course.is_public
+ # if is_public == 0 && !current_user.member_of_course?(homework_common.course)
+ # status = -1
+ # tip = 0
+ # else
+ # feedback = HomeworkCommon.add_homework_jour(current_user, params[:content], params[:id])
+ # if (feedback.errors.empty?)
+ # homework_common.update_column(:updated_at, Time.now)
+ # result = 2
+ # end
+ # end
feedback = HomeworkCommon.add_homework_jour(current_user, params[:content], params[:id])
if (feedback.errors.empty?)
homework_common.update_column(:updated_at, Time.now)
result = 2
end
+
when "News"
news = News.find(params[:id])
- comment = Comment.new
- comment.comments = params[:content]
- comment.author = current_user
- if news.comments << comment
- result = 2
+
+ # if news.project
+ # if news.project.is_public == false && !current_user.member_of?(news.project)
+ # status = -1
+ # tip = 1
+ # end
+ # elsif news.course
+ # if news.course.is_public == 0 && !current_user.member_of_course?(news.course)
+ # status = -1
+ # tip = 0
+ # end
+ # end
+
+ if status == 0
+ comment = Comment.new
+ comment.comments = params[:content]
+ comment.author = current_user
+ if news.comments << comment
+ result = 2
+ end
end
when "Message"
message = Message.find(params[:id])
board = Board.find(message.board_id)
- topic = message.root
- reply = Message.new
- reply.author = current_user
- reply.board = board
- reply.content = params[:content]
- reply.parent_id = params[:id]
- reply.subject = "RE: #{topic.subject}"
- if topic.children << reply
- result = 2
+
+ # if message.project
+ # if message.project.is_public == false && !current_user.member_of?(message.project)
+ # status = -1
+ # tip = 1
+ # end
+ # elsif message.course
+ # if message.course.is_public == 0 && !current_user.member_of_course?(message.course)
+ # status = -1
+ # tip = 0
+ # end
+ # end
+
+ if status == 0
+ topic = message.root
+ reply = Message.new
+ reply.author = current_user
+ reply.board = board
+ reply.content = params[:content]
+ reply.parent_id = params[:id]
+ reply.subject = "RE: #{topic.subject}"
+ if topic.children << reply
+ result = 2
+ end
end
when "JournalsForMessage"
jour = JournalsForMessage.find params[:id]
- parent_id = params[:id]
- author_id = current_user.id
- reply_user_id = jour.user_id
- reply_id = params[:id]
- content = params[:content]
- options = {:user_id => author_id,
- :status => true,
- :m_parent_id => parent_id,
- :m_reply_id => reply_id,
- :reply_id => reply_user_id,
- :notes => content,
- :is_readed => false}
- jfm = jour.user.add_jour(nil, nil, nil, options)
- if jfm.errors.empty?
- (JournalsForMessage.find parent_id).update_attribute(:updated_on,Time.now)
- result = 2
+
+ # if jour.jour_type == "Project"
+ # if jour.project.is_public == false && !current_user.member_of?(jour.project)
+ # status = -1
+ # tip = 1
+ # end
+ # elsif jour.jour_type == "Course"
+ # if jour.course.is_public == 0 && !current_user.member_of_course?(jour.course)
+ # status = -1
+ # tip = 0
+ # end
+ # end
+
+ if status == 0
+ parent_id = params[:id]
+ author_id = current_user.id
+ reply_user_id = jour.user_id
+ reply_id = params[:id]
+ content = params[:content]
+ options = {:user_id => author_id,
+ :status => true,
+ :m_parent_id => parent_id,
+ :m_reply_id => reply_id,
+ :reply_id => reply_user_id,
+ :notes => content,
+ :is_readed => false}
+ jfm = jour.user.add_jour(nil, nil, nil, options)
+ if jfm.errors.empty?
+ (JournalsForMessage.find parent_id).update_attribute(:updated_on,Time.now)
+ result = 2
+ end
end
when 'Issue'
issue = Issue.find params[:id]
- is_jour = Journal.new
- is_jour.user_id = current_user.id
- is_jour.notes = params[:content]
- is_jour.journalized = issue
- if is_jour.save
- result = 2
+
+ # if issue.project.is_public == false && !current_user.member_of?(issue.project)
+ # status = -1
+ # tip = 1
+ # end
+
+ if status == 0
+ is_jour = Journal.new
+ is_jour.user_id = current_user.id
+ is_jour.notes = params[:content]
+ is_jour.journalized = issue
+ if is_jour.save
+ result = 2
+ end
end
when 'BlogComment'
blog = BlogComment.find(params[:id]).root
@@ -97,7 +236,9 @@ module Mobile
result = 3
end
present :result, result
- present :status, 0
+ present :status, status
+ present :tip, tip
+ present :subscribe,subscribe
end
end
end
diff --git a/app/api/mobile/apis/newss.rb b/app/api/mobile/apis/newss.rb
index 6e012ca4b..c2e2fcb5c 100644
--- a/app/api/mobile/apis/newss.rb
+++ b/app/api/mobile/apis/newss.rb
@@ -7,17 +7,32 @@ module Mobile
desc "get special news"
post ':id' do
- authenticate!
- user = current_user
+ begin
+ # authenticate!
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
- news = News.find params[:id]
- present :data, news, with: Mobile::Entities::News,user: user,type: type,page: page
- present :type, type
- present :page, page
- present :status, 0
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
+ news = News.find params[:id]
+
+ is_public = 1
+
+ if news.project
+ is_public = news.project.is_public
+ elsif news.course
+ is_public = news.course.is_public
+ end
+
+ present :data, news, with: Mobile::Entities::News,user: user,type: type,page: page
+ present :type, type
+ present :page, page
+ present :is_public, is_public
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
+ end
end
end
end
diff --git a/app/api/mobile/apis/syllabuses.rb b/app/api/mobile/apis/syllabuses.rb
index 8538fae99..100760f8e 100644
--- a/app/api/mobile/apis/syllabuses.rb
+++ b/app/api/mobile/apis/syllabuses.rb
@@ -28,9 +28,10 @@ module Mobile
ss = SyllabusesService.new
sy = ::Syllabus.find(params[:id])
- sy.courses = sy.courses.not_deleted
- present :data, sy, with: Mobile::Entities::Syllabus,user: current_user
+ result = {:title=>sy.title, :id=>sy.id , :user_id=>sy.user_id,:courses=>sy.courses.not_deleted}
+
+ present :data, result, with: Mobile::Entities::Syllabus,user: current_user
present :status, 0
end
diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb
index 9b1be37c3..764dc957f 100644
--- a/app/api/mobile/apis/users.rb
+++ b/app/api/mobile/apis/users.rb
@@ -29,7 +29,7 @@ module Mobile
logger.debug "openid ============== #{openid}"
raise "无法获取到openid,请在微信中打开本页面" unless openid
uw = UserWechat.where(openid: openid).first
- raise "此微信号已绑定用户(#{uw.user.login}), 不能重复绑定" if uw
+ raise "此微信号已绑定用户(#{uw.user.login}), 不能重复绑定" if uw && uw.real?
user, last_login_on = User.try_to_login(params[:login], params[:password])
raise "用户名或密码错误,请重新输入" unless user
@@ -37,12 +37,17 @@ module Mobile
raise "此用户已经绑定过公众号, 请换一个帐户试试" if user.user_wechat
- UserWechat.create!(
+ if uw && !uw.real?
+ uw.migrate_user(user)
+ else
+ UserWechat.create!(
openid: openid,
user: user
- )
+ )
+ end
+
ws = WechatService.new
- ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.login, Time.now.strftime("%Y-%m-%d"))
+ ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.show_name+"("+user.login+")", Time.now.strftime("%Y-%m-%d"))
present status: 0, message: '您已成功绑定Trustie平台'
end
@@ -53,22 +58,38 @@ module Mobile
requires :password, type: String, desc: 'password'
end
post do
-
openid = session[:wechat_openid]
logger.debug "openid ============== #{openid}"
raise "无法获取到openid,请在微信中打开本页面" unless openid
-
+ uw = UserWechat.where(openid: openid).first
+ raise "此微信号已绑定用户(#{uw.user.login}), 不能重复绑定" if uw && uw.real?
us = UsersService.new
user = us.register params.merge(:password_confirmation => params[:password],
:should_confirmation_password => true)
raise user.errors.full_messages.first if user.new_record?
- UserWechat.create!(
+ #自动激活
+ if Setting.self_registration != '3'
+ # user = automatically_register(user)
+ user.activate
+ user.last_login_on = Time.now
+ if user.save
+ UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
+ end
+ end
+
+ if uw && !uw.real?
+ user.update_attributes(:lastname=>uw.user[:lastname])
+ uw.migrate_user(user)
+ else
+ UserWechat.create!(
openid: openid,
user: user
- )
+ )
+ end
+
ws = WechatService.new
- ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.login, Time.now.strftime("%Y-%m-%d"))
+ ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.show_name+"("+user.login+")", Time.now.strftime("%Y-%m-%d"))
present :data, user, with: Mobile::Entities::User
present :status, 0
end
diff --git a/app/api/mobile/apis/whomeworks.rb b/app/api/mobile/apis/whomeworks.rb
index 9d03eed9f..572ce5e0b 100644
--- a/app/api/mobile/apis/whomeworks.rb
+++ b/app/api/mobile/apis/whomeworks.rb
@@ -7,23 +7,32 @@ module Mobile
desc "get one homework"
post ':id' do
- authenticate!
- user = current_user
+ begin
+ # authenticate!
+ user = current_user
- #0一级回复的更多 1 二级回复的更多
- type = params[:type] || 0
- page = params[:page] || 0
+ #0一级回复的更多 1 二级回复的更多
+ type = params[:type] || 0
+ page = params[:page] || 0
- if type == 0
- homework = HomeworkCommon.find params[:id]
- present :data, homework, with: Mobile::Entities::Whomework,user: user,type: type,page: page,comment_type: "homework"
- else
- jour = JournalsForMessage.find params[:id]
- present :data, jour, with: Mobile::Entities::Jours,user: user,type: type,page: page,comment_type: "homework"
+ is_public = 1
+
+ if type == 0
+ homework = HomeworkCommon.find params[:id]
+ is_public = homework.course.is_public
+ present :data, homework, with: Mobile::Entities::Whomework,user: user,type: type,page: page,comment_type: "homework"
+ else
+ jour = JournalsForMessage.find params[:id]
+ present :data, jour, with: Mobile::Entities::Jours,user: user,type: type,page: page,comment_type: "homework"
+ end
+ present :type, type
+ present :page, page
+ present :is_public, is_public
+ present :status, 0
+ rescue Exception=>e
+ present :status, -1
+ present :message, e.message
end
- present :type, type
- present :page, page
- present :status, 0
end
end
end
diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb
index aaf5dd78b..fc78cc14e 100644
--- a/app/api/mobile/entities/course.rb
+++ b/app/api/mobile/entities/course.rb
@@ -65,9 +65,9 @@ module Mobile
end
member = course.members.where("user_id=#{current_user.id} and course_id=#{course.id}")[0]
- roleName = member.roles[0].name if member
+ role_ids = member.role_ids if member
- if roleName && (roleName == "TeachingAsistant" || roleName == "Teacher" )
+ if role_ids && (role_ids.include?(7) || role_ids.include?(9) )
can_setting = true
end
@@ -76,6 +76,15 @@ module Mobile
end
can_setting
end
+ expose :is_member, if: lambda { |instance, options| options[:user] } do |instance, options|
+ current_user = options[:user]
+ if instance[:course]
+ course = instance[:course]
+ else
+ course = instance
+ end
+ current_user.member_of_course?(course)
+ end
expose :teacher, using: Mobile::Entities::User do |c, opt|
if c.is_a? ::Course
c.teacher
diff --git a/app/api/mobile/entities/project.rb b/app/api/mobile/entities/project.rb
index 073f7cd0f..8da151b42 100644
--- a/app/api/mobile/entities/project.rb
+++ b/app/api/mobile/entities/project.rb
@@ -23,6 +23,16 @@ module Mobile
current_user.id == instance.user_id
end
+ expose :is_member, if: lambda { |instance, options| options[:user] } do |instance, options|
+ current_user = options[:user]
+ if instance[:project]
+ project = instance[:project]
+ else
+ project = instance
+ end
+ current_user.member_of?(project)
+ end
+
expose :member_count, if: lambda { |instance, options| options[:user] } do |instance, options|
instance.members.count
diff --git a/app/api/mobile/entities/syllabus.rb b/app/api/mobile/entities/syllabus.rb
index e4dd2e07a..4e9f858c8 100644
--- a/app/api/mobile/entities/syllabus.rb
+++ b/app/api/mobile/entities/syllabus.rb
@@ -5,8 +5,8 @@ module Mobile
expose :id
expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options|
current_user = options[:user]
- can_setting = instance.user_id == current_user.id ? true : false
- can_setting = false if instance.id.nil?
+ can_setting = instance[:user_id] == current_user.id ? true : false
+ can_setting = false if instance[:id].nil?
can_setting
end
expose :courses, using: Mobile::Entities::Course
diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index 8187055be..731a251f2 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -26,7 +26,13 @@ class AccountController < ApplicationController
if request.get?
@login = params[:login] || true
if User.current.logged?
- redirect_to user_path(User.current)
+ # 判断用户基本资料是否完善,不完善讲强制完善基本资料,完善进入主页
+ user = UserExtensions.where(:user_id => User.current.id).first
+ if user.gender.nil? || user.school_id.nil? || User.current.lastname.nil?
+ redirect_to my_account_path(:tip => 1)
+ else
+ redirect_to user_path(User.current)
+ end
else
render :layout => 'login'
end
@@ -127,7 +133,7 @@ class AccountController < ApplicationController
session[:auth_source_registration] = nil
self.logged_user = @user
flash[:notice] = l(:notice_account_activated)
- redirect_to my_account_path
+ redirect_to my_account_path(:tip=>1)
end
else
us = UsersService.new
@@ -144,7 +150,7 @@ class AccountController < ApplicationController
if !@user.new_record?
self.logged_user = @user
flash[:notice] = l(:notice_account_activated)
- redirect_to my_account_url
+ redirect_to my_account_url(:tip=>1)
else
redirect_to signin_path
end
@@ -347,9 +353,15 @@ class AccountController < ApplicationController
else
#by young
#redirect_back_or_default my_page_path
- redirect_back_or_default User.current
+ # 基本资料不完善的用户,将强制用户完善基本资料。
+ user = UserExtensions.where(:user_id => User.current.id).first
+ if user.gender.nil? || user.school_id.nil? || User.current.lastname.nil?
+ redirect_to my_account_path(:tip => 1)
+ else
+ redirect_back_or_default User.current
#redirect_to my_account_url
#redirect_to User.current
+ end
end
end
end
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index 3c012fce7..25cc85ae2 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -698,7 +698,7 @@ class AdminController < ApplicationController
apply_school_ids = apply_schools.empty? ? "(-1)" : "(" + apply_schools.map{|sc| sc.school_id}.join(',') + ")"
if !params[:search].nil?
search = "%#{params[:search].to_s.strip.downcase}%"
- @schools = School.where("id not in #{apply_school_ids} and #{School.table_name}.name like :p",:p=>search)
+ @schools = School.where("id not in #{apply_school_ids} and #{School.table_name}.name like :p", :p => search)
#@schools = School.all
else
#@course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id}").select { |course| @user.allowed_to?(:as_teacher,course)}
diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb
index 6bcffddf8..30978367c 100644
--- a/app/controllers/applied_project_controller.rb
+++ b/app/controllers/applied_project_controller.rb
@@ -75,6 +75,8 @@ class AppliedProjectController < ApplicationController
@project.project_infos << project_info
@project.user_grades << user_grades unless user_grades.first.user_id.nil?
+ ps = ProjectsService.new
+ ps.send_wechat_join_project_notice User.current,@project,5,0
else
@flag = 4
role = params[:member] == "member_manager" ? 3 : (params[:member] == "member_developer" ? 4 :5)
diff --git a/app/controllers/at_controller.rb b/app/controllers/at_controller.rb
index 0e48cd962..66cbf27b8 100644
--- a/app/controllers/at_controller.rb
+++ b/app/controllers/at_controller.rb
@@ -10,7 +10,7 @@ class AtController < ApplicationController
@users = users.uniq { |u| u.id }.delete_if { |u| u.id == User.current.id }.sort{|x,y| to_pinyin(x.show_name) <=> to_pinyin(y.show_name)} if users
#加上all
- if @user && @users.size > 0
+ if User.current.logged? && @users.size > 0
allUser = Struct.new(:id, :name).new
allUser.id = @users.map{|u| u.id}.join(",")
allUser.name = "all"
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb
index f14416442..d661350c6 100644
--- a/app/controllers/members_controller.rb
+++ b/app/controllers/members_controller.rb
@@ -84,7 +84,8 @@ class MembersController < ApplicationController
# 添加成功后,申请人收到消息
AppliedMessage.create(:user_id => @applied_message.applied_user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,
:status => 6, :viewed => false, :applied_user_id => @applied_message.user_id, :role => applied_project.role, :project_id => applied_project.project_id)
-
+ ps = ProjectsService.new
+ ps.send_wechat_join_project_notice user,project,ap_role,0
# 添加成功后,批准人收到消息
# AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,
# :status => 7, :viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id)
@@ -114,6 +115,11 @@ class MembersController < ApplicationController
@applied_message = AppliedMessage.find(params[:applied_message_id])
# AppliedMessage.create(:user_id => @applied_message.user_id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 5,
# :viewed => true, :applied_user_id => @applied_message.applied_user_id, :role => applied_project.role, :project_id => applied_project.project_id)
+ ps = ProjectsService.new
+ user = User.find(@applied_message.applied_user_id)
+ ap_role = applied_project.try(:role)
+ ps.send_wechat_join_project_notice user,project,ap_role,1
+
applied_project.delete
end
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index 05b93d302..3aefdfd1d 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -114,9 +114,15 @@ class MyController < ApplicationController
applied_message.update_attribute(:viewed, true)
end
+ # 基本资料不完善 @force为false, 完善 @force为true
+ @force = false
+ if params[:tip]
+ @force = true
+ end
+
@user = User.current
- lg=@user.login
+ lg = @user.login
@pref = @user.pref
diskfile = disk_filename('User', @user.id)
diskfile1 = diskfile + 'temp'
@@ -178,7 +184,12 @@ class MyController < ApplicationController
File.delete(diskfile1) if File.exist?(diskfile1)
end
- render :layout=>'new_base_user'
+ # 基本资料不完善,无法使用其他功能,完善着可继续使用
+ if @force
+ render :layout => 'new_base_user_show'
+ else
+ render :layout => 'new_base_user'
+ end
end
# Destroys user's account
diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb
index 5e21f9af0..b67a74439 100644
--- a/app/controllers/pull_requests_controller.rb
+++ b/app/controllers/pull_requests_controller.rb
@@ -1,8 +1,10 @@
class PullRequestsController < ApplicationController
+ before_filter :authorize_logged
before_filter :find_project_and_repository
before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes, :new,
:update_pull_request, :pull_request_comments, :create_pull_request_comment]
+
layout "base_projects"
include PullRequestsHelper
include ApplicationHelper
@@ -235,6 +237,13 @@ class PullRequestsController < ApplicationController
end
private
+ def authorize_logged
+ if !User.current.logged?
+ redirect_to signin_path
+ return
+ end
+ end
+
def connect_gitlab
@g = Gitlab.client
end
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 65b4a15d6..a79890870 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -386,9 +386,9 @@ update
project_score.update_column(:changeset_num, @changesets_all_count)
end
- # unless @changesets_latest_coimmit.blank?
- # update_commits_date(@project, @changesets_latest_coimmit)
- # end
+ unless @changesets_latest_coimmit.blank?
+ update_commits_date(@project, @changesets_latest_coimmit)
+ end
@creator = @project.owner.to_s
gitlab_address = Redmine::Configuration['gitlab_address']
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index 8f3ebff98..722845ef7 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -868,6 +868,7 @@ class StudentWorkController < ApplicationController
update_org_activity(@homework.class,@homework.id)
if @work.save
@work = @homework.student_works.select("student_works.*,student_works.work_score as score").where(:id => @work.id).first
+ @count = @homework.student_works.has_committed.count
respond_to do |format|
format.js
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 1c2b1a50e..e929153ad 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -353,14 +353,14 @@ class UsersController < ApplicationController
def dealwith_apply_request
@msg = CourseMessage.find(params[:msg_id])
#CourseMessage content存的是role 7教辅 9 教师
+ apply_user = User.find(@msg.course_message_id)
+ ids = @msg.content.split(",") # [@msg.content] msg content保存的是申请的职位角色
+ integer_ids = []
+ ids.each do |role_id|
+ integer_ids << role_id.to_i
+ end
case params[:agree]
when 'Y'
- apply_user = User.find(@msg.course_message_id)
- ids = @msg.content.split(",") # [@msg.content] msg content保存的是申请的职位角色
- integer_ids = []
- ids.each do |role_id|
- integer_ids << role_id.to_i
- end
if apply_user.member_of_course?(Course.find(@msg.course_id))
#将角色改为老师或者教辅
member = Course.find(@msg.course_id).members.where(:user_id=>apply_user.id).all[0]
@@ -383,11 +383,32 @@ class UsersController < ApplicationController
Course.find(@msg.course_id).members << members
CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>1)
@msg.update_attributes(:status=>1,:viewed=>1)
+
+ if integer_ids.include?(9)
+ cs = CoursesService.new
+ c = Course.find(@msg.course_id)
+ cs.send_wechat_join_class_notice apply_user,c,9,0
+ else
+ cs = CoursesService.new
+ c = Course.find(@msg.course_id)
+ cs.send_wechat_join_class_notice apply_user,c,7,0
+ end
end
when 'N'
CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>2)
@msg.update_attributes(:status=>2,:viewed=>1)
+
+ if integer_ids.include?(9)
+ cs = CoursesService.new
+ c = Course.find(@msg.course_id)
+ cs.send_wechat_join_class_notice apply_user,c,9,1
+ else
+ cs = CoursesService.new
+ c = Course.find(@msg.course_id)
+ cs.send_wechat_join_class_notice apply_user,c,7,1
+ end
+
end
respond_to do |format|
format.js
diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb
index c5ef8c24e..cfa5f4414 100644
--- a/app/controllers/wechats_controller.rb
+++ b/app/controllers/wechats_controller.rb
@@ -137,7 +137,7 @@ class WechatsController < ActionController::Base
on :fallback, respond: 'fallback message'
on :click, with: 'FEEDBACK' do |request, key|
- request.reply.text "如有反馈问题,请直接切换至输入框,发微信给我们即可"
+ request.reply.text "如有问题反馈,请您:\n1、直接切换至输入框,发微信给我们。\n2、加入QQ群:173184401,我们直接互动。\n欢迎大家积极反馈,谢谢啦!"
end
on :click, with: 'MY_NEWS' do |request, key|
@@ -252,13 +252,16 @@ class WechatsController < ActionController::Base
end
def sendBind(request)
+ tmpurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities'}&response_type=code&scope=snsapi_base&state=login&connect_redirect=1#wechat_redirect"
+ logger.info "tmpurl!!!!!!!!!!!!!!"
+ logger.info tmpurl
news = (1..1).each_with_object([]) { |n, memo| memo << { title: '绑定登录', content: "欢迎使用Trustie创新实践服务平台!
在这里您可以随时了解您的课程和项目动态,随时点赞和回复。
我们将会与微信不断结合,为您提供更有价值的服务。
您还未绑定确实的用户,请先绑定,谢谢!" } }
request.reply.news(news) do |article, n, index| # article is return object
- url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities'}&response_type=code&scope=snsapi_base&state=login#wechat_redirect"
+ url = tmpurl
pic_url = "#{ROOT_URL}/images/weixin_pic.jpg"
article.item title: "#{n[:title]}",
description: n[:content],
@@ -284,7 +287,7 @@ class WechatsController < ActionController::Base
end
news = (1..1).each_with_object([]) { |n, memo| memo << { title: '恭喜您成功加入班级,开始学习吧!',
- content: "课程名称:#{course.name}\n班级名称:#{course.name}\n任课老师:#{course.teacher.show_name}\n进入班级,和小伙伴愉快的学习吧!"} }
+ content: "课程名称:#{course.syllabus.title}\n班级名称:#{course.name}\n任课老师:#{course.teacher.show_name}\n进入班级,和小伙伴愉快的学习吧!"} }
return request.reply.news(news) do |article, n, index| # article is return object
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities#/class?id='+course.id.to_s}&response_type=code&scope=snsapi_base&state=myclass#wechat_redirect"
pic_url = "#{ROOT_URL}/images/wechat/class.jpg"
@@ -314,7 +317,7 @@ class WechatsController < ActionController::Base
creator = User.find(project.user_id)
news = (1..1).each_with_object([]) { |n, memo| memo << { title: '恭喜您成功加入项目,开始研发吧!',
- content: "项目名称:#{project.name}\n发起人:#{creator.name}\n进入项目,和小伙伴轻松的研发吧!"} }
+ content: "项目名称:#{project.name}\n发起人:#{creator.show_name}\n进入项目,和小伙伴轻松的研发吧!"} }
return request.reply.news(news) do |article, n, index| # article is return object
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities#/project?id='+project.id.to_s}&response_type=code&scope=snsapi_base&state=myproject#wechat_redirect"
pic_url = "#{ROOT_URL}/images/wechat/project.jpg"
@@ -333,10 +336,12 @@ class WechatsController < ActionController::Base
code = params[:code] || session[:wechat_code]
openid = get_openid_from_code(code)
- raise "无法获取到微信openid" unless openid
+ # raise "无法获取到微信openid" unless openid
+
+ raise "请在微信中关注Trustie创新实践平台后再打开本页面" unless openid
uw = UserWechat.where(openid: openid).first
- raise "还未绑定trustie帐户" unless uw
+ raise "还未绑定trustie帐户" unless (uw && uw.bindtype == 0)
logger.debug "get_bind ============= #{uw}"
user = uw.user
@@ -349,13 +354,25 @@ class WechatsController < ActionController::Base
end
end
+ def is_bind
+ begin
+ code = params[:code] || session[:wechat_code]
+ open_id = get_openid_from_code(code)
+ raise "还未绑定trustie帐户" unless user_binded?(open_id)
+ render :json => {status: 0}
+ rescue Exception=>e
+ render :json => {status: -1, message: e.message}
+ end
+ end
+
def bind
begin
code = params[:code] || session[:wechat_code]
openid = get_openid_from_code(code)
- raise "无法获取到openid,请在微信中打开本页面" unless openid
+ # raise "无法获取到openid,请在微信中打开本页面" unless openid
+ raise "请在微信中关注Trustie创新实践平台后再打开本页面" unless openid
raise "此微信号已绑定用户,不能重复绑定" if user_binded?(openid)
user, last_login_on = User.try_to_login(params[:username], params[:password])
@@ -369,7 +386,7 @@ class WechatsController < ActionController::Base
user: user
)
ws = WechatService.new
- ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台!", user.login, format_time(Time.now))
+ ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台!", user.show_name+"("+user.login+")", format_time(Time.now))
render :json => {status:0, msg: "绑定成功"}
rescue Exception=>e
render :json => {status: -1, msg: e.message}
@@ -398,8 +415,16 @@ class WechatsController < ActionController::Base
unless open_id
render 'wechats/open_wechat', layout: nil and return
end
+
+ logger.info "user_activities!!!!!!!!!!!!!!"
+ logger.info params
+
+ #保证下面的redirect_to "/wechat/user_activities##{@path}?id=...不会往下走
+ if params[:state] == nil
+ return
+ end
- unless user_binded?(open_id)
+ unless (user_binded?(open_id) || params[:state] == "invite_code" || params[:state] == "project_invite_code" || params[:state] == "blog_comment" || params[:state] == "course_notice" || params[:state] == "project_discussion" || params[:state] == "course_discussion" || params[:state] == "homework" || params[:state] == "issues" || params[:state] == "journal_for_message")
@path = '/login'
else
if params[:state] == 'myclass'
@@ -410,7 +435,14 @@ class WechatsController < ActionController::Base
session[:wechat_openid] = open_id
if params[:code]
- redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}" and return
+ if params[:userid]
+ redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}&userid=#{params[:userid]}" and return
+ elsif params[:id]
+ redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}" and return
+ else
+ redirect_to "/wechat/user_activities##{@path}" and return
+ end
+ # redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}" and return
end
end
render 'wechats/user_activities', layout: nil
@@ -421,10 +453,19 @@ class WechatsController < ActionController::Base
def get_openid_from_code(code)
return 'oCnvgvz8R7QheXE-R9Kkr39j8Ndg' if code =='only-for-test'
openid = session[:wechat_openid]
-
unless openid
if code
- openid = wechat.web_access_token(code)["openid"]
+ #不能联系调两次web_access_token 否则会提示请在微信客户端打开次链接
+ info = wechat.web_access_token(code)
+ openid =info["openid"]
+ access_token =info["access_token"]
+ if access_token
+ session[:access_token] = access_token
+ end
+ refresh_token = info["refresh_token"]
+ if refresh_token
+ session[:refresh_token] = refresh_token
+ end
end
end
@@ -437,6 +478,11 @@ class WechatsController < ActionController::Base
def user_binded?(openid)
uw = UserWechat.where(openid: openid).first
+ if uw && uw.bindtype == 0
+ uw
+ else
+ nil
+ end
end
def current_url
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index da66f249b..0c0e0919e 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -2169,7 +2169,7 @@ module ApplicationHelper
candown= User.current.member_of_course?(course) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2
elsif attachment.container.is_a?(OrgSubfield)
org = attachment.container.organization
- candown = User.current.member_of_org?(org) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2
+ candown = User.current.member_of_org?(org) || ((attachment.is_public == 1 || attachment.get_status_by_attach(User.current.id) == 2) && org.allow_guest_download == true)
elsif attachment.container.is_a?(OrgDocumentComment)
org = attachment.container.organization
candown = org.allow_guest_download || User.current.member_of_org?(org) || (org.is_public && attachment.is_public == 1)
@@ -3436,3 +3436,9 @@ def course_syllabus_option user = User.current
end
type
end
+
+# 获取项目动态更新时间
+def get_forge_act_message(act, type)
+ forge_act = ForgeActivity.where(:forge_act_id => act.id, :forge_act_type => type).first
+ format_time(forge_act.nil? ? act.created_on : forge_act.try(:updated_at))
+end
diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb
index 86aab8260..a901e6338 100644
--- a/app/models/homework_common.rb
+++ b/app/models/homework_common.rb
@@ -77,7 +77,7 @@ class HomeworkCommon < ActiveRecord::Base
count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count
if count == 0
ws = WechatService.new
- ws.homework_message_notice(m.user_id, "homework", self.id, "#{m.user.show_name},#{l(:label_new_homework_template)}:", self.course.name, "新作业:"+ self.name.html_safe, "作业内容请点击“详情”查看。")
+ ws.homework_message_notice(m.user_id, "homework", self.id, "#{m.user.show_name},#{l(:label_new_homework_template)}", self.course.name, "新作业:"+ self.name.html_safe, "作业内容请点击“详情”查看。")
end
# end
end
diff --git a/app/models/news.rb b/app/models/news.rb
index 54f6fce08..cd7156cca 100644
--- a/app/models/news.rb
+++ b/app/models/news.rb
@@ -173,7 +173,7 @@ class News < ActiveRecord::Base
count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count
if count == 0
ws = WechatService.new
- content = strip_html self.author.try(:realname) + " 发布了通知:" + self.title.html_safe, 200
+ content = self.title
ws.class_notice m.user_id, "course_notice", self.id, "#{l(:label_new_notice_template)}", self.course.name, self.author.show_name, format_time(self.created_on), content, "点击查看通知详情"
end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 57663f3eb..b863c1f70 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -228,7 +228,7 @@ class User < Principal
# Prevents unauthorized assignments
attr_protected :login, :admin, :password, :password_confirmation, :hashed_password
- LOGIN_LENGTH_LIMIT = 25
+ LOGIN_LENGTH_LIMIT = 30
MAIL_LENGTH_LIMIT = 60
validates_presence_of :login, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
diff --git a/app/models/user_wechat.rb b/app/models/user_wechat.rb
index 49053dbf0..c63411ab3 100644
--- a/app/models/user_wechat.rb
+++ b/app/models/user_wechat.rb
@@ -1,6 +1,27 @@
class UserWechat < ActiveRecord::Base
attr_accessible :subscribe, :openid, :nickname, :sex, :language, :city, :province, :country,
- :headimgurl, :subscribe_time, :unionid, :remark, :groupid, :user, :user_id
+ :headimgurl, :subscribe_time, :unionid, :remark, :groupid, :user, :user_id, :bindtype
belongs_to :user
+
+ def real?
+ bindtype == 0
+ end
+
+ def migrate_user(u)
+ self.bindtype = 0
+ old_user = user.id
+ self.user = u
+ self.save
+
+ ## 主要是将comment 迁移
+ User.delete(old_user)
+
+ JournalsForMessage.where(user_id: old_user).update_all(user_id: u.id)
+ Journal.where(user_id: old_user).update_all(user_id: u.id)
+ Comment.where(author_id: old_user).update_all(author_id: u.id)
+ Message.where(author_id: old_user).update_all(author_id: u.id)
+ BlogComment.where(author_id: old_user).update_all(author_id: u.id)
+ UserActivity.where(user_id: old_user).update_all(user_id: u.id)
+ end
end
diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb
index c6854f3dd..7d574bada 100644
--- a/app/services/courses_service.rb
+++ b/app/services/courses_service.rb
@@ -97,7 +97,7 @@ class CoursesService
end
users = []
@members.each do |m|
- img_url = url_to_avatar(m.user)
+ img_url = "/images/"+url_to_avatar(m.user)
gender = m.user.user_extensions.gender.nil? ? 0 : m.user.user_extensions.gender
work_unit = get_user_work_unit m.user
location = get_user_location m.user
@@ -108,14 +108,14 @@ class CoursesService
end
#双重身份 学生列表中不显示
- unless (params[:role] == '2' && role_ids.length >= 2)
+ # unless (params[:role] == '2' && role_ids.length >= 2)
users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender,
:work_unit => work_unit, :mail => m.user.mail, :location => location,
role_name: m.roles.first.name,
name: m.user.show_name,
roles_id: role_ids.include?(7) ? 7 : (role_ids.include?(9) ? 9 : 10 ),
:brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname}
- end
+ # end
end
users
@@ -223,16 +223,20 @@ class CoursesService
end
if integer_ids.include?(9)
message = "您已同意教师"+apply_user.show_name+",加入班级"
+ send_wechat_join_class_notice apply_user,c,9,0
else
message = "您已同意助教"+apply_user.show_name+",加入班级"
+ send_wechat_join_class_notice apply_user,c,7,0
end
else
CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>2)
messages.update_attributes(:status=>2,:viewed=>1)
if integer_ids.include?(9)
message = "您已拒绝教师"+apply_user.show_name+",加入班级"
+ send_wechat_join_class_notice apply_user,c,9,1
else
message = "您已拒绝助教"+apply_user.show_name+",加入班级"
+ send_wechat_join_class_notice apply_user,c,7,1
end
end
status = 0
@@ -528,6 +532,33 @@ class CoursesService
{:state => @state,:course => course}
end
+ #加入班级结果
+ def send_wechat_join_class_notice user,course,role_id,result
+ count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count
+ if count == 0
+ ws = WechatService.new
+
+ role_name = role_id == 7 ? "助教" : role_id == 9 ? "教师" : "学生"
+ result_name = result == 0 ? "通过" : "被拒绝"
+ content = "您以"+role_name+"身份加入班级的申请已"+result_name+"。"
+
+ if result == 0
+ title = "恭喜您加入班级成功。"
+ remark = "点击查看班级详情。"
+ uid = 0
+ type = "class"
+ else
+ title = "很遗憾您未能成功加入班级。"
+ remark = "点击查看申请详情。"
+ uid = user.id
+ type = "review_class_member"
+ end
+ ws = WechatService.new
+ ws.class_notice user.id, type, course.id, title, course.name, user.show_name, format_time(Time.now), content, remark,uid
+
+ end
+ end
+
#多个角色加入课程
def join_course_roles params,current_user
course = Course.find_by_invite_code(params[:invite_code]) if params[:invite_code]
@@ -587,6 +618,7 @@ class CoursesService
course.members << members
StudentsForCourse.create(:student_id => current_user.id, :course_id => course.id)
@state = 0
+ send_wechat_join_class_notice current_user,course,10,0
else
is_stu = false
if role_ids.include?("10")
@@ -595,6 +627,7 @@ class CoursesService
course.members << members
StudentsForCourse.create(:student_id => current_user.id, :course_id =>course.id)
is_stu = true
+ send_wechat_join_class_notice current_user,course,10,0
end
#如果已经发送过消息了,那么就要给个提示
if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = '#{role_str}' and course_message_id = #{current_user.id} and course_id = #{course.id} and status = 0").count != 0
diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb
index dd42795b1..04680f76f 100644
--- a/app/services/homework_service.rb
+++ b/app/services/homework_service.rb
@@ -256,7 +256,7 @@ class HomeworkService
jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
jours.each do |jour|
user = jour.user
- img_url = url_to_avatar(jour.user)
+ img_url = "/images/"+url_to_avatar(jour.user)
datetime = jour.created_on
content = jour.notes
end
diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb
index 1b342c122..56dfaceff 100644
--- a/app/services/projects_service.rb
+++ b/app/services/projects_service.rb
@@ -117,6 +117,27 @@ class ProjectsService
]
end
+ #加入项目结果
+ def send_wechat_join_project_notice user,project,role_id,result
+ count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count
+ if count == 0
+ result_name = result == 0 ? "已同意" : "已拒绝"
+ if result == 0
+ title = "恭喜您加入项目成功。"
+ remark = "点击查看项目详情。"
+ uid = 0
+ type = "project"
+ else
+ title = "很遗憾您未能成功加入项目。"
+ remark = "点击查看申请详情。"
+ uid = user.id
+ type = "review_project_member"
+ end
+ ws = WechatService.new
+ ws.join_project_notice user.id, "project", project.id,title, project.name,result_name, remark,uid
+ end
+ end
+
def join_project params,current_user
status = -1
project = Project.find_by_invite_code(params[:invite_code]) if params[:invite_code]
@@ -128,6 +149,10 @@ class ProjectsService
if current_user.member_of?(project) #如果已经是成员
member = project.member_principals.includes(:roles, :principal).where("user_id=?",current_user.id).first
status = member.member_roles[0].role_id
+
+ #将之前的申请都改为已拒绝
+ applied_messages = AppliedMessage.where(:project_id => project.id, :status => true, :applied_user_id=>current_user.id,:applied_type => "AppliedProject")
+ applied_messages.update_all(:status=>5)
else
if params[:invite_code].present?
@@ -146,6 +171,11 @@ class ProjectsService
project.project_infos << project_info
status = 0
+ send_wechat_join_project_notice current_user,project,5,0
+
+ #将之前的申请都改为已拒绝
+ applied_messages = AppliedMessage.where(:project_id => project.id, :status => true, :applied_user_id=>current_user.id,:applied_type => "AppliedProject")
+ applied_messages.update_all(:status=>5)
else
if !AppliedProject.where(:project_id => project.id, :user_id => current_user.id).first.nil?
status = 8
@@ -181,7 +211,7 @@ class ProjectsService
user = User.find(m.applied_user_id)
if user
- img_url = url_to_avatar(user)
+ img_url = "/images/"+url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
@@ -210,7 +240,7 @@ class ProjectsService
status = applied_message.status
user = User.find(params[:user_id])
if user
- img_url = url_to_avatar(user)
+ img_url = "/images/"+url_to_avatar(user)
gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
work_unit = get_user_work_unit user
location = get_user_location user
@@ -239,7 +269,12 @@ class ProjectsService
if apply_message
if user.member_of?(project)
message = "已经是该项目的成员了"
- applied_messages.update_all(:status=>7)
+ u_member = project.member_principals.includes(:roles, :principal).where("user_id=?",params[:user_id]).first
+ if u_member.member_roles[0].role_id == 5
+ applied_messages.update_all(:status=>5)
+ else
+ applied_messages.update_all(:status=>7)
+ end
else
applied_project = apply_message.applied
ap_role = applied_project.try(:role)
@@ -266,6 +301,8 @@ class ProjectsService
message = "您已同意"+rolename+user.show_name+",加入项目"
+ send_wechat_join_project_notice user,project,ap_role,0
+
else
#拒绝
AppliedMessage.create(:user_id => user.id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4,
@@ -275,6 +312,8 @@ class ProjectsService
applied_project.delete
message = "您已拒绝"+rolename+user.show_name+",加入项目"
+
+ send_wechat_join_project_notice user,project,ap_role,1
end
status = 0
diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb
index fcb70653b..f12ae67cc 100644
--- a/app/services/syllabuses_service.rb
+++ b/app/services/syllabuses_service.rb
@@ -36,24 +36,21 @@ class SyllabusesService
# courses.each do |c|
# other.courses << c[:course] unless c[:course].syllabus
# end
+ result = []
+ i = 0
courses = user.courses.not_deleted
syllabus_ids = courses.empty? ? '(-1)' : "(" + courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")"
syllabuses = Syllabus.where("id in #{syllabus_ids} or user_id = #{user.id}").order("updated_at desc")
syllabuses.each do |syllabus|
- syllabus.courses = courses.where("syllabus_id = #{syllabus.id}").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("time desc")
+ tmp_courses = courses.where("syllabus_id = #{syllabus.id}").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc")
+ result[i] = {:title=>syllabus.title, :id=>syllabus.id , :user_id=>syllabus.user_id,:courses=>tmp_courses }
+ i = i + 1
end
-
- # syllabuses.to_a << other
-
- syllabuses.to_a
- #管理权限 can_setting
- # syllabuses.each do |s|
- # s = judge_can_setting(s,user)
- # end
-
- syllabuses
+ # syllabuses.to_a
+ # syllabuses
+ result
end
def after_create_course(course, user)
@@ -72,7 +69,7 @@ class SyllabusesService
if count == 0
ws = WechatService.new
title = "恭喜您创建班级成功。"
- ws.create_class_notice user.id, "create_course_notice", course.id,title, course.name, user.show_name, 0, "点击查看班级详情。"
+ ws.create_class_notice user.id, "create_course_notice", course.id,title, course.name, user.show_name, 1, "点击查看班级详情。"
end
end
diff --git a/app/services/users_service.rb b/app/services/users_service.rb
index ab1bb2ec4..5789befe5 100644
--- a/app/services/users_service.rb
+++ b/app/services/users_service.rb
@@ -80,7 +80,7 @@ class UsersService
#id用户id
def show_user(params)
@user = User.find(params[:id])
- img_url = url_to_avatar(@user)
+ img_url = "/images/"+url_to_avatar(@user)
gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender
work_unit = get_user_work_unit @user
location = get_user_location @user
@@ -224,7 +224,7 @@ class UsersService
membership.sort! {|older, newer| newer.created_on <=> older.created_on }
course_list = []
membership.each do |mp|
- course_list << {:course => mp.course,:img_url => url_to_avatar(mp.course),:current_user_is_member => current_user.member_of_course?(mp.course),:current_user_is_teacher => is_course_teacher(current_user,mp.course)}
+ course_list << {:course => mp.course,:img_url => "/images/"+url_to_avatar(mp.course),:current_user_is_member => current_user.member_of_course?(mp.course),:current_user_is_teacher => is_course_teacher(current_user,mp.course)}
end
course_list
end
diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb
index 9a6351391..3b6cfe930 100644
--- a/app/services/wechat_service.rb
+++ b/app/services/wechat_service.rb
@@ -111,11 +111,17 @@ class WechatService
end
end
- def two_keys_template(openid, template_id, type, id, first, key1, key2, remark="")
+ def two_keys_template(openid, template_id, type, id, first, key1, key2, remark="",uid)
+ # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"
+ tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
+ if uid && uid != 0
+ tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s
+ # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
+ end
data = {
touser:openid,
template_id:template_id,
- url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id}
+ url:tmpurl,#/assets/wechat/app.html#/#{type}/#{id}
topcolor:"#FF0000",
data:{
first: {
@@ -140,9 +146,11 @@ class WechatService
end
def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="",uid)
- tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}"
+ # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"
+ tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
if uid && uid != 0
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s
+ # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
end
data = {
@@ -177,9 +185,11 @@ class WechatService
end
def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="",uid)
- tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}"
+ # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"
+ tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
if uid && uid != 0
tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s
+ # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3
end
data = {
@@ -223,7 +233,7 @@ class WechatService
data = {
touser:uw.openid,
template_id:Wechat.config.binding_succ_notice,
- url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities",
+ url:Wechat.config.auto_openid_url_1+Wechat.config.auto_openid_url_2+"activites"+Wechat.config.auto_openid_url_3,
topcolor:"#FF0000",
data:{
first: {
@@ -292,13 +302,26 @@ class WechatService
end
end
+ # def join_class_notice(user_id, type, id, first, key1, key2, key3,remark="")
+ # uw = UserWechat.where(user_id: user_id).first
+ # unless uw.nil?
+ # data = three_keys_template uw.openid,Wechat.config.join_class_notice, type, id, first, key1, key2, key3, remark
+ # begin
+ # req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data)
+ # rescue Exception => e
+ # Rails.logger.error "[join_class__notice] ===> #{e}"
+ # end
+ # Rails.logger.info "send over. #{req}"
+ # end
+ # end
+
def create_class_notice(user_id, type, id, first, key1, key2, key3, remark="")
uw = UserWechat.where(user_id: user_id).first
unless uw.nil?
data = {
touser:uw.openid,
template_id:Wechat.config.create_class_notice,
- url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/class?id="+id.to_s,
+ url:Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+"class"+Wechat.config.auto_openid_url_3,
topcolor:"#FF0000",
data:{
first: {
@@ -339,7 +362,7 @@ class WechatService
data = {
touser:uw.openid,
template_id:Wechat.config.create_project_notice,
- url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/project?id="+id.to_s,
+ url:Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+"project"+Wechat.config.auto_openid_url_3,
topcolor:"#FF0000",
data:{
first: {
@@ -383,4 +406,19 @@ class WechatService
end
end
+ def join_project_notice(user_id, type, id, first, key1, key2,remark="",uid=0)
+ uw = UserWechat.where(user_id: user_id).first
+ unless uw.nil?
+ data = two_keys_template uw.openid,Wechat.config.join_project_notice, type, id, first, key1, key2,remark,uid
+ begin
+ req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data)
+ rescue Exception => e
+ Rails.logger.error "[join_project_notice] ===> #{e}"
+ end
+ Rails.logger.info "send over. #{req}"
+ end
+
+
+ end
+
end
\ No newline at end of file
diff --git a/app/views/at/show.json.erb b/app/views/at/show.json.erb
index 6e2a244e4..3e49496f9 100644
--- a/app/views/at/show.json.erb
+++ b/app/views/at/show.json.erb
@@ -1,11 +1,11 @@
[
- <% @users && @users.each_with_index do |person,index| %>
- <% if index == 0 %>
- {"id":<%=index%>, "userid": "<%=person.id%>", "name": "所有人", "login": "<%=person.name%>", "searchKey": "<%=person.name%>"}
- <%= index != @users.size-1 ? ',' : '' %>
- <% else %>
- {"id":<%=index%>, "userid": <%=person.id%>, "name": "<%=person.show_name%>", "login": "<%=person.login%>", "searchKey": "<%=person.get_at_show_name%>"}
- <%= index != @users.size-1 ? ',' : '' %>
- <% end %>
- <% end %>
+ <% @users && @users.each_with_index do |person,index| %>
+ <% if index == 0 %>
+ {"id":<%=index%>, "userid": "<%=person.id%>", "name": "所有人", "login": "<%=person.name%>", "searchKey": "<%=person.name%>"}
+ <%= index != @users.size-1 ? ',' : '' %>
+ <% else %>
+ {"id":<%=index%>, "userid": "<%=person.id%>", "name": "<%=person.show_name%>", "login": "<%=person.login%>", "searchKey": "<%=person.get_at_show_name%>"}
+ <%= index != @users.size-1 ? ',' : '' %>
+ <% end %>
+ <% end %>
]
diff --git a/app/views/attachments/_activity_attach.html.erb b/app/views/attachments/_activity_attach.html.erb
index 3cc429185..b37c80dad 100644
--- a/app/views/attachments/_activity_attach.html.erb
+++ b/app/views/attachments/_activity_attach.html.erb
@@ -3,7 +3,7 @@
- <%= link_to_short_attachment attachment,:length=> 58, :class => 'hidden link_file_a fl newsBlue mw380', :download => true -%>
+ <%= link_to_short_attachment attachment,:length=> 58, :class => 'hidden link_file_a fl newsBlue mw380', :download => true %>
(
diff --git a/app/views/files/_org_subfield_list.html.erb b/app/views/files/_org_subfield_list.html.erb
index 1bbdc0e93..e567435a5 100644
--- a/app/views/files/_org_subfield_list.html.erb
+++ b/app/views/files/_org_subfield_list.html.erb
@@ -11,9 +11,9 @@
<%# 如果有历史版本则提供历史版本下载 %>
<% if file.attachment_histories.count == 0 %>
- <%= link_to file.is_public? ? truncate(file.filename, length: 45) : truncate(file.filename,length: 35, omission: '...'),
- 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 => "linkGrey3 f_14" %>
+ <%= link_to file.is_public? ? truncate(file.filename, length: 45) : truncate(file.filename,length: 35, omission: '...'),
+ 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 => "linkGrey3 f_14" %>
<% else %>
<%= link_to truncate(file.filename,length: 35, omission: '...'), attachment_history_download_path(file.id),
:title => file.filename+"\n"+file.description.to_s,
diff --git a/app/views/layouts/_footer_show.html.erb b/app/views/layouts/_footer_show.html.erb
new file mode 100644
index 000000000..bb29956d3
--- /dev/null
+++ b/app/views/layouts/_footer_show.html.erb
@@ -0,0 +1,43 @@
+
\ No newline at end of file
diff --git a/app/views/layouts/_logined_header_show.html.erb b/app/views/layouts/_logined_header_show.html.erb
new file mode 100644
index 000000000..a6721501e
--- /dev/null
+++ b/app/views/layouts/_logined_header_show.html.erb
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+ <%#= link_to User.current.count_new_message, user_message_path(User.current), :class => "homepageNewsIcon" %>
+
+
+
diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb
index b3b21547e..d5f877eea 100644
--- a/app/views/layouts/_user_courses.html.erb
+++ b/app/views/layouts/_user_courses.html.erb
@@ -82,7 +82,6 @@
<% end %>
<% if all_count > (page.to_i+1) * 10%>
-
diff --git a/app/views/layouts/_user_projects.html.erb b/app/views/layouts/_user_projects.html.erb
index caaaaf031..21b42decd 100644
--- a/app/views/layouts/_user_projects.html.erb
+++ b/app/views/layouts/_user_projects.html.erb
@@ -59,7 +59,6 @@
<% end %>
<% if all_count > (page.to_i+1) * 10%>
-
diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb
index f98585b77..a107bfe15 100644
--- a/app/views/layouts/new_base_user.html.erb
+++ b/app/views/layouts/new_base_user.html.erb
@@ -102,8 +102,10 @@
- <% if User.current.logged?%>
- <%=link_to image_tag(url_to_avatar(@user),width:"74", height: "74", :id=>'nh_user_tx'), my_clear_user_avatar_temp_path, :class => "user_leftinfo_img", :remote => true%>
+ <% if User.current.logged? && User.current == @user%>
+ <%=link_to image_tag(url_to_avatar(@user),width:"74", height: "74", :id => 'nh_user_tx'), my_clear_user_avatar_temp_path, :class => "user_leftinfo_img", :remote => true%>
+ <% elsif User.current.logged? %>
+
<%=image_tag(url_to_avatar(@user),width:"74", height: "74", :id=>'nh_user_tx') %>
<% else %>
<% end %>
diff --git a/app/views/layouts/new_base_user_show.html.erb b/app/views/layouts/new_base_user_show.html.erb
new file mode 100644
index 000000000..37354d8d8
--- /dev/null
+++ b/app/views/layouts/new_base_user_show.html.erb
@@ -0,0 +1,335 @@
+
+
+
+
+
<%= h html_title %>
+
+
+ <%= csrf_meta_tag %>
+ <%= favicon %>
+ <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','css/common', 'css/structure','css/public', 'prettify','css/project','css/courses','css/popup','syllabus',:media => 'all' %>
+ <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
+ <%= javascript_heads %>
+ <%= javascript_include_tag "bootstrap","avatars","new_user",'attachments','prettify'%>
+ <%= heads_for_theme %>
+ <%= call_hook :view_layouts_base_html_head %>
+ <%= yield :header_tags -%>
+
+
+
+
+
+
+
+
+
+ <% is_current_user = User.current.logged? && User.current == @user%>
+ <% if User.current.logged? %>
+ <%= render :partial => 'layouts/logined_header_show' %>
+ <% else%>
+ <%= render :partial => 'layouts/unlogin_header' %>
+ <% end%>
+
+
+
+
+
+
+
+
+
+
+ <% hidden_courses = Setting.find_by_name("hidden_courses") %>
+ <% unvisiable = hidden_courses && hidden_courses.value == "1"%>
+ <% if !unvisiable %>
+
+
+ 课程
+ <% courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %>
+ <% all_count = @user.courses.visible.where("is_delete =?", 0).count%>
+
+
+ <% if !courses.empty? %>
+
+
+
+ <% end %>
+
+
+ <% if is_current_user %>
+
+ 新建课程
+
+
+ 新建班级
+
+
+ 加入班级
+
+ <% if @user == User.current %>
+
+ 我的作业
+
+ <% end %>
+ <% end %>
+
+ <% end %>
+
+
+
+ 项目
+ <% all_count = @user.projects.visible.count%>
+ <% projects = @user.projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10)%>
+
+
+ <% if !projects.empty? %>
+
+
+
+ <% end %>
+
+
+ <% if is_current_user %>
+
+ 新建项目
+
+
+ 加入项目
+
+
+
+
+ <% end %>
+
+
+
+
+
访问计数 <%= @user.visits.to_i %> (自2016年5月)
+
+
+
+ <%= render :partial => 'layouts/new_feedback' %>
+
+
+<%= render :partial => 'layouts/footer_show' %>
+
+
+
+
+ <%= l(:label_loading) %>
+
+
+
+
+
+
+
头像设置
+
+
+ <%= file_field_tag 'avatar[image]',
+ :id => "upload_user_image",
+ :style => 'display:none;',#added by young
+ :size => "1",
+ :multiple => false,
+ :onchange => 'addInputAvatar(this);',
+ :data => {
+ :max_file_size => Setting.attachment_max_size.to_i.kilobytes,
+ :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
+ :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
+ :file_type => Redmine::Configuration['pic_types'].to_s,
+ :type_support_message => l(:error_pic_type),
+ :upload_path => upload_avatar_path(:format => 'js'),
+ :description_placeholder => nil ,# l(:label_optional_description)
+ :source_type => @user.class.to_s,
+ :source_id => @user.id.to_s
+ } %>
+
+
+
+
+
预览
+ <%= image_tag(url_to_avatar(@user), :style=>"width:96px;height:96px;",:class=>"mb5 mt10",:nhname=>'avatar_image') %>
+
+
96px*96px
+
+ <%= image_tag(url_to_avatar(@user), :style=>"width:48px;height:48px;",:class=>"mb5",:nhname=>'avatar_image') %>
+
+
48px*48px
+
+
+
取 消
+
确 定
+
+
+
+
+
+
+
diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb
index 5c8e13e3f..71694da60 100644
--- a/app/views/my/account.html.erb
+++ b/app/views/my/account.html.erb
@@ -1,4 +1,15 @@
-
+ <% if @force %>
+ <% message = AppliedMessage.where(:status => 3, :user_id => User.current.id, :viewed => 0).first %>
+ <% unless message.nil? %>
+
+ <% end %>
+
+ <% end %>
- <%= f.text_field :login,:no_label=>true, :required => true,:style=>"color:grey", :nh_required=>"1",:disabled=>'disabled', :name => "login",:class=>"w210"%>
- <%= f.text_field :mail,:no_label=>true, :required => true,:nh_required=>"1",:class=>"w210"%>
-
+ <%= f.text_field :login,:no_label=>true, :required => true,:style => "color:grey", :nh_required => "1",:disabled => 'disabled', :name => "login",:class => "w210"%>
+ <% if @force %>
+ <%= f.text_field :mail,:no_label=>true, :required => true,:nh_required => "1",:class=>"w210",:disabled=>'disabled'%>
+ <% else %>
+ <%= f.text_field :mail,:no_label=>true, :required => true,:nh_required=>"1",:class=>"w210"%>
+ <% end %>
@@ -81,7 +95,7 @@
- 平台找到了0 个包含"国防" 的高校
+
<% elsif User.current.user_extensions.identity == 3 || User.current.user_extensions.identity == 2 %>
@@ -89,7 +103,7 @@
- 平台找到了0 个包含"国防" 的高校
+
<% elsif User.current.user_extensions.school.nil? %>
@@ -97,7 +111,7 @@
- 平台找到了0 个包含"国防" 的高校
+
<% else %>
@@ -105,7 +119,7 @@
- 平台找到了0 个包含"国防" 的高校
+
<% end %>
@@ -155,7 +169,7 @@
<%= select_tag( 'user[mail_notification]', options_for_select( user_mail_notification_options(@user), @user.mail_notification) ) %>
- <%= check_box_tag 'no_self_notified', 1, @user.pref[:no_self_notified],:style=>"height:14px;" %>不要发送对我自己提交的修改的通知
+ <%= check_box_tag 'no_self_notified', 1, @user.pref[:no_self_notified],:style => "height:14px;" %>不要发送对我自己提交的修改的通知
@@ -466,7 +480,7 @@
}else{
$("#search_school_result_list").html('');
str = e.target.value.length > 4 ? e.target.value.substr(0, 4)+"..." : e.target.value;
- $("#hint").html('如果找不到自己的单位,您可以添加单位 ');
+ $("#hint").html('如果找不到自己的单位,您可以 添加单位 ');
$("#hint").show();
$("#errortip").show();
}
@@ -477,7 +491,6 @@
if($(e.target).attr("id") != 'search_school_result_list' && $(e.target).attr("id") != 'province')
{
$("#search_school_result_list").hide();
- $("#hint").hide();
$("#errortip").hide();
}
});
@@ -516,7 +529,7 @@
}else{
$("#search_school_result_list").html('');
str = e.target.value.length > 4 ? e.target.value.substr(0, 4)+"..." : e.target.value;
- $("#hint").html('您输入的名称尚不存在,申请添加 ');
+ $("#hint").html('如果找不到自己的单位,您可以 添加单位 ');
$("#hint").show();
$("#errortip").show();
}
diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb
index a2f8a8f29..f1a8da8e4 100644
--- a/app/views/organizations/setting.html.erb
+++ b/app/views/organizations/setting.html.erb
@@ -47,52 +47,52 @@
<%#= form_for( @organization,{:controller => 'organizations',:action => 'update',:id=>@organization,:html=>{:id=>'update_org_form',:method=>'put'}}) do %>
<%= labelled_form_for @organization do |f|%>
- <%= render :partial=>"new_org_avatar_form",:locals=> {source:@organization} %>
-
-
-
+ <%= render :partial=>"new_org_avatar_form",:locals=> {source:@organization} %>
+
+
+
-
-
- 组织URL:
-
http://
-
- .trustie.net
申请
- <% record = OrgMessage.where("organization_id=? and message_type='ApplySubdomain'", @organization.id).order("updated_at desc").first %>
- <% if domain.present? and record.present? and record.content == domain.subname %>
-
(已批准)
- <% elsif record %>
-
(您申请了子域名<%= OrgMessage.where("organization_id=? and message_type='ApplySubdomain'", @organization.id).order("updated_at desc").first.content %>,还未批准)
- <% end %>
-
-
-
-
-
- 显示模式 :
- />
- 简洁模式
- />
- 门户模式
-
- 公开 :
- class="ml3" />
-
- 下载支持 :
- name="organization[allow_guest_download]" <%= @organization.allow_guest_download ? 'checked': ''%> class="ml3" />
- 允许游客下载
- <%= @organization.is_public? ? "" : "(私有组织不允许游客下载资源)" %>
-
-
-
-
-
-
- 保存
+
+
+ 组织URL:
+
http://
+
+ .trustie.net
申请
+ <% record = OrgMessage.where("organization_id=? and message_type='ApplySubdomain'", @organization.id).order("updated_at desc").first %>
+ <% if domain.present? and record.present? and record.content == domain.subname %>
+
(已批准)
+ <% elsif record %>
+
(您申请了子域名<%= OrgMessage.where("organization_id=? and message_type='ApplySubdomain'", @organization.id).order("updated_at desc").first.content %>,还未批准)
+ <% end %>
+
+
+
+
+
+ 显示模式 :
+ />
+ 简洁模式
+ />
+ 门户模式
+
+ 公开 :
+ class="ml3" />
+
+ 下载支持 :
+ name="organization[allow_guest_download]" <%= @organization.allow_guest_download ? 'checked': ''%> class="ml3" />
+ 允许游客下载
+ <%= @organization.is_public? ? "" : "(私有组织不允许游客下载资源)" %>
+
+
+
+
+
+
+ 保存
<% end %>
diff --git a/app/views/projects/_development_group.html.erb b/app/views/projects/_development_group.html.erb
index 273fcf56a..82bcb5501 100644
--- a/app/views/projects/_development_group.html.erb
+++ b/app/views/projects/_development_group.html.erb
@@ -40,12 +40,12 @@
<% end %>
-<% if allow_pull_request(@project) %>
-
- <%= link_to "Pull Requests", project_pull_requests_path(@project), :class => "f14 c_blue02" %>
+
+ <%= link_to "Pull Requests", project_pull_requests_path(@project), :class => "f14 c_blue02" %>
+ <% if allow_pull_request(@project) %>
<%= link_to "+新建请求", new_project_pull_request_path(:project_id => @project.id), :class => "subnav_green" %>
-
-<% end %>
+ <% end %>
+
<%# --版本库被设置成私有、module中设置不显示、没有创建版本库 三种情况不显示-- %>
<% if visible_repository?(@project) %>
diff --git a/app/views/pull_requests/_show.html.erb b/app/views/pull_requests/_show.html.erb
index b750728a4..758f70878 100644
--- a/app/views/pull_requests/_show.html.erb
+++ b/app/views/pull_requests/_show.html.erb
@@ -5,8 +5,10 @@
<%= get_state(@request.state) %> 合并请求 由 <%= link_to @request.author.try(:username), user_path(get_user_by_login_and(@request.author.try(:username))), :class => "link-blue" %> 于 <%= time_tag(@request.created_at) %> 前提交 · 最后编辑时间 <%= time_tag(@request.updated_at) %> 前
- <% unless @request.state == "merged" %>
- <%= link_to "#{@request.state == 'closed' ? '重新打开' : '关闭'}", update_pull_request_project_pull_request_path(@request.id, :project_id => @project.id, :state => @request.state =="closed" ? "reopen" : "close"), :class => "BlueCirBtn fr" %>
+ <% if User.current.login == @request.author.try(:username) || is_project_manager?(User.current.id, @project.id) %>
+ <% unless @request.state == "merged" %>
+ <%= link_to "#{@request.state == 'closed' ? '重新打开' : '关闭'}", update_pull_request_project_pull_request_path(@request.id, :project_id => @project.id, :state => @request.state =="closed" ? "reopen" : "close"), :class => "BlueCirBtn fr" %>
+ <% end %>
<% end %>
diff --git a/app/views/pull_requests/index.html.erb b/app/views/pull_requests/index.html.erb
index 78c4759aa..f4fe0725e 100644
--- a/app/views/pull_requests/index.html.erb
+++ b/app/views/pull_requests/index.html.erb
@@ -3,8 +3,9 @@
<%= link_to "待处理#{@requests_opened_count} ".html_safe, project_pull_requests_path(:type => "1"), :remote => true %>
<%= link_to "已处理#{@requests_merged_count} ".html_safe, project_pull_requests_path(:type => "2"), :remote => true %>
<%= link_to "已关闭#{@requests_closed_count} ".html_safe, project_pull_requests_path(:type => "3"), :remote => true %>
-
- <%= link_to "创建Pull Request", new_project_pull_request_path, :class => "BlueCirBtn fr ml10 mt10", :style => "width:110px;" %>
+ <% if allow_pull_request(@project) %>
+ <%= link_to "创建Pull Request", new_project_pull_request_path, :class => "BlueCirBtn fr ml10 mt10", :style => "width:110px;" %>
+ <% end %>
diff --git a/app/views/student_work/_student_work_list.html.erb b/app/views/student_work/_student_work_list.html.erb
index cc078bf9c..e05df2892 100644
--- a/app/views/student_work/_student_work_list.html.erb
+++ b/app/views/student_work/_student_work_list.html.erb
@@ -2,7 +2,7 @@
作品
- (<%= @student_work_count%>人已交)
+ (<%= @student_work_count%> 人已交)
<%# my_work = @homework.student_works.where("user_id = #{User.current.id}").first %>
<% my_work = cur_user_works_for_homework @homework %>
diff --git a/app/views/student_work/add_score.js.erb b/app/views/student_work/add_score.js.erb
index e4341869f..c961fb077 100644
--- a/app/views/student_work/add_score.js.erb
+++ b/app/views/student_work/add_score.js.erb
@@ -17,3 +17,5 @@ $("#score_list_<%= @work.id%>").removeAttr("style");
$("tr[id='student_work_<%= @work.id%>']").replaceWith("<%= escape_javascript(render :partial => 'evaluation_work',:locals => {:student_work => @work, :index => 1}) %>");
$("#work_num_<%= @work.id%>").html(num);
<% end%>
+
+$("#student_work_count").html("<%=@count %>");
diff --git a/app/views/users/_news_replies.html.erb b/app/views/users/_news_replies.html.erb
index 1da4bc85e..fcbe59ebf 100644
--- a/app/views/users/_news_replies.html.erb
+++ b/app/views/users/_news_replies.html.erb
@@ -72,6 +72,7 @@
l(:button_delete),
{:controller => 'issues',:action => 'delete_journal', :id => activity_id,:journal_id=>comment.id, :user_activity_id => user_activity_id},
:method => 'get',
+ :confirm => l(:text_are_you_sure),
:remote=>true,
:class => 'fr mr20',
:title => l(:button_delete)
diff --git a/app/views/users/_project_message.html.erb b/app/views/users/_project_message.html.erb
index 0a5c18a9b..afc45efde 100644
--- a/app/views/users/_project_message.html.erb
+++ b/app/views/users/_project_message.html.erb
@@ -29,7 +29,7 @@
发帖时间:<%= format_time(activity.created_on) %>
- 更新时间:<%= format_time(ForgeActivity.where("forge_act_type='#{activity.class}' and forge_act_id =#{activity.id}").first.updated_at) %>
+ 更新时间:<%= get_forge_act_message(activity, activity.class.to_s) %>
<% if activity.parent_id.nil? %>
diff --git a/app/views/users/_user_message_applied.html.erb b/app/views/users/_user_message_applied.html.erb
index 414b13cf7..89084d30b 100644
--- a/app/views/users/_user_message_applied.html.erb
+++ b/app/views/users/_user_message_applied.html.erb
@@ -1,11 +1,12 @@
<% if ma.class == AppliedMessage %>
-
+
<% if ma.applied_type == "ApplyAddSchools" %>
<% if ma.status == 0 %>
- <%= link_to image_tag(url_to_avatar(ma.user), :width => "30", :height => "30"), user_path(ma.user), :target => '_blank' %>
+ <% applied_user = User.find(ma.applied_user_id) %>
+ <%= link_to image_tag(url_to_avatar(applied_user), :width => "30", :height => "30"), user_path(applied_user), :target => '_blank' %>
<% else %>
<%= image_tag("/images/trustie_logo1.png", width: "30px", height: "30px", class: "mt3") %>
<% end %>
@@ -19,6 +20,7 @@
<%= time_tag(ma.created_at).html_safe %>
+
<% elsif ma && ma.applied_type == "AppliedProject" %>
<%= render :partial => "users/applied_project_content", :locals =>{:ma => ma} %>
diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb
index 8c31c2106..7175f0a1e 100644
--- a/app/views/wechats/user_activities.html.erb
+++ b/app/views/wechats/user_activities.html.erb
@@ -17,7 +17,8 @@
window.g_debug = false; //调试标志,如果在本地请置为true
window.apiUrl = '/api/v1/';
window.g_redirect_path = '<%= @path %>';
- window.g_localhost = "<%= Setting.protocol%>://"+"<%= Setting.host_name%>";
+ window.g_localhost = "<%= Setting.protocol %>"+ "://"+"<%= Setting.host_name%>";
+ window.g_appid = "<%= @appid %>";
<% if @course_id %>
window.g_courseid = <%= @course_id %>;
<% elsif @project_id %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 1340e7aa6..59aca719b 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -2156,6 +2156,6 @@ zh:
label_blog_comment_template: 您的博客有新回复了。
label_new_blog_template: 有新博客了。
label_new_issue_template: 有新的问题动态了。
- label_new_notice_template: 您的课程有新通知了。
+ label_new_notice_template: 您的班级有新通知了。
#edit yk
label_code_work_tests: 代码测试列表
diff --git a/config/routes.rb b/config/routes.rb
index 861aba437..6cbc0812d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1343,6 +1343,7 @@ RedmineApp::Application.routes.draw do
get :user_activities
post :bind
post :get_bind
+ post :is_bind
end
end
diff --git a/config/wechat.yml.template b/config/wechat.yml.template
index 68e6ed62e..e6b942f09 100644
--- a/config/wechat.yml.template
+++ b/config/wechat.yml.template
@@ -23,6 +23,11 @@ default: &default
create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw"
create_project_notice: "jYu0iimbDpgWYZaTLXioZe2lvqoWTdKnUPyphTJ1mxs"
project_review_notice: "kdb-8UlMjTc3z51Qcf8g2vY4i_nE4OGKZAucdQma_2E"
+ join_project_notice: "TtXvy0XMIQyCgpnXHhoB8t-x0QIfy-78gAJXsGf9afg"
+
+ auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities"
+ auto_openid_url_2: "&response_type=code&scope=snsapi_base&state="
+ auto_openid_url_3: "&connect_redirect=1#wechat_redirect"
production:
<<: *default
diff --git a/config/wechat.yml.test b/config/wechat.yml.test
index 8dbd9850f..c0676cc26 100644
--- a/config/wechat.yml.test
+++ b/config/wechat.yml.test
@@ -23,6 +23,11 @@ default: &default
create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I"
create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig"
project_review_notice: "ip192wVXTav3qchgUn9_7B6lFfTlCZjwL7A1tncTOuc"
+ join_project_notice: "3KnMQEMUCmQWkB5JvzrpmguEwnN8bvUHUdpOTudxv_M"
+
+ auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities"
+ auto_openid_url_2: "&response_type=code&scope=snsapi_base&state="
+ auto_openid_url_3: "&connect_redirect=1#wechat_redirect"
production:
<<: *default
diff --git a/db/migrate/20160811084401_add_bindtype_to_user_wechats.rb b/db/migrate/20160811084401_add_bindtype_to_user_wechats.rb
new file mode 100644
index 000000000..6cba9e675
--- /dev/null
+++ b/db/migrate/20160811084401_add_bindtype_to_user_wechats.rb
@@ -0,0 +1,5 @@
+class AddBindtypeToUserWechats < ActiveRecord::Migration
+ def change
+ add_column :user_wechats, :bindtype, :integer, :default => 0
+ end
+end
diff --git a/lib/wechat/lib/wechat/api.rb b/lib/wechat/lib/wechat/api.rb
index 5cb457b9f..f267f8b69 100644
--- a/lib/wechat/lib/wechat/api.rb
+++ b/lib/wechat/lib/wechat/api.rb
@@ -7,6 +7,7 @@ module Wechat
class Api < ApiBase
API_BASE = 'https://api.weixin.qq.com/cgi-bin/'
OAUTH2_BASE = 'https://api.weixin.qq.com/sns/oauth2/'
+ OAUTH2_USERINFO = 'https://api.weixin.qq.com/sns/'
def initialize(appid, secret, token_file, timeout, skip_verify_ssl, jsapi_ticket_file)
@client = Client.new(API_BASE, timeout, skip_verify_ssl)
@@ -120,5 +121,23 @@ module Wechat
}
get 'access_token', params: params, base: OAUTH2_BASE
end
+
+ def web_auth_access_token(web_access_token, openid)
+ get 'auth', params: { access_token: web_access_token, openid: openid }, base: OAUTH2_BASE
+ end
+
+ def web_refresh_access_token(user_refresh_token)
+ params = {
+ appid: access_token.appid,
+ grant_type: 'refresh_token',
+ refresh_token: user_refresh_token
+ }
+ get 'refresh_token', params: params, base: OAUTH2_BASE
+ end
+
+ def web_userinfo(web_access_token, openid, lang = 'zh_CN')
+ get 'userinfo', params: { access_token: web_access_token, openid: openid, lang: lang }, base: OAUTH2_USERINFO
+ end
+
end
end
diff --git a/lib/wechat/lib/wechat/api_base.rb b/lib/wechat/lib/wechat/api_base.rb
index b873251f7..1fa3c4f7b 100644
--- a/lib/wechat/lib/wechat/api_base.rb
+++ b/lib/wechat/lib/wechat/api_base.rb
@@ -1,6 +1,6 @@
module Wechat
class ApiBase
- attr_reader :access_token, :client, :jsapi_ticket
+ attr_reader :access_token, :client, :jsapi_ticket, :auth_access_token
MP_BASE = 'https://mp.weixin.qq.com/cgi-bin/'
@@ -42,7 +42,7 @@ module Wechat
def with_access_token(params = {}, tries = 2)
params ||= {}
- yield(params.merge(access_token: access_token.token))
+ yield(params.reverse_merge(access_token: access_token.token))
rescue AccessTokenExpiredError
access_token.refresh
retry unless (tries -= 1).zero?
diff --git a/lib/wechat/lib/wechat/token/auth_access_token.rb b/lib/wechat/lib/wechat/token/auth_access_token.rb
new file mode 100644
index 000000000..5b58e261c
--- /dev/null
+++ b/lib/wechat/lib/wechat/token/auth_access_token.rb
@@ -0,0 +1,21 @@
+require 'wechat/token/access_token_base'
+
+module Wechat
+ module Token
+ class AuthAccessToken < AccessTokenBase
+
+ # def refresh
+ # params = {
+ # appid: access_token.appid,
+ # grant_type: 'refresh_token',
+ # refresh_token: user_refresh_token
+ # }
+ # data = client.get 'oauth2/refresh_token', params: params, base: OAUTH2_BASE
+ # write_token_to_file(data)
+ # read_token_from_file
+ # end
+
+ end
+ end
+end
+
diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html
index fbdfb1152..a4aa9a4c7 100644
--- a/public/assets/wechat/activities.html
+++ b/public/assets/wechat/activities.html
@@ -26,8 +26,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -64,8 +63,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -100,8 +98,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -136,7 +133,7 @@
-
{{act.author.realname}} 创建了{{act.course_project_name}} | 班级
+
{{act.author.real_name}} 创建了{{act.course_project_name}} | 班级
{{act.latest_update}}
@@ -153,8 +150,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -192,8 +188,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -226,7 +221,7 @@
-
{{act.author.realname}} 创建了{{act.course_project_name}} | 项目
+
{{act.author.real_name}} 创建了{{act.course_project_name}} | 项目
{{act.latest_update}}
@@ -243,8 +238,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -280,8 +274,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -326,8 +319,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -364,8 +356,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -400,8 +391,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -436,7 +426,7 @@
-
{{act.author.realname}} 创建了{{act.course_project_name}} | 班级
+
{{act.author.real_name}} 创建了{{act.course_project_name}} | 班级
{{act.latest_update}}
@@ -460,8 +450,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -499,8 +488,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -533,7 +521,7 @@
-
{{act.author.realname}} 创建了{{act.course_project_name}} | 项目
+
{{act.author.real_name}} 创建了{{act.course_project_name}} | 项目
{{act.latest_update}}
diff --git a/public/assets/wechat/app.html b/public/assets/wechat/app.html
index 74af26cfe..d49caedd5 100644
--- a/public/assets/wechat/app.html
+++ b/public/assets/wechat/app.html
@@ -37,6 +37,8 @@
+
+
diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html
index ee9e968d2..c1e2fd2fd 100644
--- a/public/assets/wechat/blog_detail.html
+++ b/public/assets/wechat/blog_detail.html
@@ -8,7 +8,7 @@
- {{blog.user.realname}}
+ {{blog.user.real_name}}
@@ -25,20 +25,20 @@
{{blog.praise_count}}
{{blog.praise_count}}
-
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.lasted_comment}}
@@ -48,7 +48,7 @@
↓ ↑ 点击展开更多楼层
- {{reply_bottom.user.realname}}
+ {{reply_bottom.user.real_name}}
{{reply_bottom.lasted_comment}}
@@ -73,7 +73,7 @@
-
+
提交
提交
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index 051adba7e..e720c90c9 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -31,7 +31,7 @@
授课老师
-
{{reviewer.name}}
+
{{reviewer.name}}
待审批 ▶
@@ -47,7 +47,7 @@
我的同学
diff --git a/public/assets/wechat/class_list.html b/public/assets/wechat/class_list.html
index ece31ceeb..9ac70cc0a 100644
--- a/public/assets/wechat/class_list.html
+++ b/public/assets/wechat/class_list.html
@@ -10,7 +10,7 @@
{{course.name}}
- >
+ >
{{course.member_count}}人
@@ -25,7 +25,7 @@
{{course.name}}
- >
+ >
{{course.member_count}}人
diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html
index 9ef7bc429..3d7444c95 100644
--- a/public/assets/wechat/course_discussion.html
+++ b/public/assets/wechat/course_discussion.html
@@ -5,10 +5,11 @@
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.lasted_comment}}
@@ -47,7 +48,7 @@
↓ ↑ 点击展开更多楼层
- {{reply_bottom.user.realname}}
+ {{reply_bottom.user.real_name}}
{{reply_bottom.lasted_comment}}
diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html
index b2771100b..95eeda60b 100644
--- a/public/assets/wechat/course_notice.html
+++ b/public/assets/wechat/course_notice.html
@@ -4,10 +4,11 @@
-
+
- {{comments.author.realname}}
+ {{comments.author.real_name}}
{{comments.created_on}}
diff --git a/public/assets/wechat/edit_class_member.html b/public/assets/wechat/edit_class_member.html
index c20ed5acb..f27ab76cb 100644
--- a/public/assets/wechat/edit_class_member.html
+++ b/public/assets/wechat/edit_class_member.html
@@ -2,7 +2,7 @@
角色变更
-
{{current_edit_member.user.realname == "" ? current_edit_member.user.name : current_edit_member.user.realname}}
+
{{current_edit_member.user.realname == "" ? current_edit_member.user.name : current_edit_member.user.realname}}
角色
教师
diff --git a/public/assets/wechat/edit_project_member.html b/public/assets/wechat/edit_project_member.html
index 8677844b7..51294f43e 100644
--- a/public/assets/wechat/edit_project_member.html
+++ b/public/assets/wechat/edit_project_member.html
@@ -2,7 +2,7 @@
角色变更
-
{{current_edit_member.user.real_name == "" ? current_edit_member.user.name : current_edit_member.user.real_name}}
+
{{current_edit_member.user.real_name == "" ? current_edit_member.user.name : current_edit_member.user.real_name}}
角色
管理人员
diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html
index 599774dfc..77aa0a48d 100644
--- a/public/assets/wechat/homework_detail.html
+++ b/public/assets/wechat/homework_detail.html
@@ -4,10 +4,11 @@
+
私有内容,请谨慎传播
-
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.lasted_comment}}
@@ -51,7 +52,7 @@
↓ ↑ 点击展开更多楼层
- {{reply_bottom.user.realname}}
+ {{reply_bottom.user.real_name}}
{{reply_bottom.lasted_comment}}
@@ -73,7 +74,7 @@
-
+
提交
提交
diff --git a/public/assets/wechat/invite_code.html b/public/assets/wechat/invite_code.html
index a1b225fc9..3aaa00bbe 100644
--- a/public/assets/wechat/invite_code.html
+++ b/public/assets/wechat/invite_code.html
@@ -11,6 +11,8 @@
1.点击右上角"发送给朋友",邀请同学加入班级
2.长按二维码,通过“识别图中二维码”功能加入班级
- 3.通过“加入班级”菜单输入邀请码加入班级(长按邀请码可以复制哦~)
+ 3.通过“加入班级”菜单输入邀请码加入班级(长按邀请码可以复制哦~)
+ 4.扫码默认以学生身份加入班级
+
\ No newline at end of file
diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html
index 852103b81..14df1cfb1 100644
--- a/public/assets/wechat/issue_detail.html
+++ b/public/assets/wechat/issue_detail.html
@@ -4,11 +4,12 @@
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.created_on}}
diff --git a/public/assets/wechat/join_project.html b/public/assets/wechat/join_project.html
index c2c0ec993..61be93cfd 100644
--- a/public/assets/wechat/join_project.html
+++ b/public/assets/wechat/join_project.html
@@ -9,6 +9,13 @@
开发人员
报告人员
+
+
提示
+
+ • 管理人员、开发人员角色需要项目管理员审批
+ • 报告人员角色无需管理员审批
+
+
取消
确定
diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html
index 78760da71..b94bca8b2 100644
--- a/public/assets/wechat/jour_message_detail.html
+++ b/public/assets/wechat/jour_message_detail.html
@@ -3,11 +3,12 @@
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.lasted_comment}}
@@ -46,7 +47,7 @@
↓ ↑ 点击展开更多楼层
- {{reply_bottom.user.realname}}
+ {{reply_bottom.user.real_name}}
{{reply_bottom.lasted_comment}}
diff --git a/public/assets/wechat/login.html b/public/assets/wechat/login.html
index 61c9b9de3..05d844ca8 100644
--- a/public/assets/wechat/login.html
+++ b/public/assets/wechat/login.html
@@ -17,7 +17,7 @@
-
+
diff --git a/public/assets/wechat/login_tip.html b/public/assets/wechat/login_tip.html
new file mode 100644
index 000000000..82bb6d906
--- /dev/null
+++ b/public/assets/wechat/login_tip.html
@@ -0,0 +1,13 @@
+
+
+
+
提示
+
+
+ • 您的回复内容已提交
+ • 想要实时接收动态、加入社区? 长按二维码,关注公众号
+
+
+
+
+
diff --git a/public/assets/wechat/project.html b/public/assets/wechat/project.html
index 0ea8a3117..733f0899d 100644
--- a/public/assets/wechat/project.html
+++ b/public/assets/wechat/project.html
@@ -15,8 +15,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -54,8 +53,7 @@
-
{{act.author.realname}}
-
{{act.author.nickname}}
+
{{act.author.real_name}}
@@ -88,7 +86,7 @@
-
{{act.author.realname}} 创建了{{act.course_project_name}} | 项目
+
{{act.author.real_name}} 创建了{{act.course_project_name}} | 项目
{{act.latest_update}}
@@ -110,30 +108,30 @@
管理人员({{project_master_members.length}})
-
{{user.real_name == "" ? user.name : user.real_name }}
+
{{user.real_name == "" ? user.name : user.real_name }}
待审批 ▶
开发人员({{project_develop_members.length}})
-
{{user.real_name == "" ? user.name : user.real_name}}
+
{{user.real_name == "" ? user.name : user.real_name}}
待审批 ▶
报告人员({{project_report_members.length}})
diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html
index cc3d4b1c8..fef0a2f6e 100644
--- a/public/assets/wechat/project_discussion.html
+++ b/public/assets/wechat/project_discussion.html
@@ -4,10 +4,11 @@
-
+
- {{journal.user.realname}}
+ {{journal.user.real_name}}
{{journal.lasted_comment}}
@@ -47,7 +48,7 @@
↓ ↑ 点击展开更多楼层
- {{reply_bottom.user.realname}}
+ {{reply_bottom.user.real_name}}
{{reply_bottom.lasted_comment}}
diff --git a/public/assets/wechat/project_invite_code.html b/public/assets/wechat/project_invite_code.html
index a17b8fe85..7685d7aef 100644
--- a/public/assets/wechat/project_invite_code.html
+++ b/public/assets/wechat/project_invite_code.html
@@ -11,6 +11,8 @@
1.点击右上角"发送给朋友",邀请朋友加入项目
2.长按二维码,通过“识别图中二维码”功能加入项目
- 3.通过“加入项目”菜单输入邀请码加入项目(长按邀请码可以复制哦~)
+ 3.通过“加入项目”菜单输入邀请码加入项目(长按邀请码可以复制哦~)
+ 4.扫码默认以报告人员身份加入项目
+
\ No newline at end of file
diff --git a/public/assets/wechat/project_list.html b/public/assets/wechat/project_list.html
index 1d385dabf..d9313b6a7 100644
--- a/public/assets/wechat/project_list.html
+++ b/public/assets/wechat/project_list.html
@@ -7,7 +7,7 @@
{{project.name}}
- >
+ >
{{project.member_count}}人
@@ -20,7 +20,7 @@
{{project.name}}
- >
+ >
{{project.member_count}}人
diff --git a/public/assets/wechat/reg.html b/public/assets/wechat/reg.html
index 26a17931f..f42108202 100644
--- a/public/assets/wechat/reg.html
+++ b/public/assets/wechat/reg.html
@@ -27,9 +27,10 @@
diff --git a/public/assets/wechat/review_class_member.html b/public/assets/wechat/review_class_member.html
index 06ce99018..e066c48f0 100644
--- a/public/assets/wechat/review_class_member.html
+++ b/public/assets/wechat/review_class_member.html
@@ -3,7 +3,7 @@
{{current_course.name}}
-
{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}
+
{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}
角色
教师
diff --git a/public/assets/wechat/review_project_member.html b/public/assets/wechat/review_project_member.html
index d50a04fa4..bcbbb50b6 100644
--- a/public/assets/wechat/review_project_member.html
+++ b/public/assets/wechat/review_project_member.html
@@ -3,7 +3,7 @@
{{current_project.name}}
-
{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}
+
{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}
角色
管理人员
diff --git a/public/images/wechat/trustie_QR.jpg b/public/images/wechat/trustie_QR.jpg
new file mode 100644
index 000000000..2b0c38f8b
Binary files /dev/null and b/public/images/wechat/trustie_QR.jpg differ
diff --git a/public/images/wechat/wx_logo.jpg b/public/images/wechat/wx_logo.jpg
new file mode 100644
index 000000000..8faeef27a
Binary files /dev/null and b/public/images/wechat/wx_logo.jpg differ
diff --git a/public/javascripts/new_user.js b/public/javascripts/new_user.js
index 8db3fbc20..1013dd749 100644
--- a/public/javascripts/new_user.js
+++ b/public/javascripts/new_user.js
@@ -38,7 +38,6 @@ function edit_user_introduction(url){
function show_more_course(url){
$.get(
url,
- { page: $("#course_page_num").val() },
function (data) {
}
);
@@ -48,7 +47,6 @@ function show_more_course(url){
function show_more_project(url){
$.get(
url,
- { page: $("#project_page_num").val() },
function (data) {
}
diff --git a/public/javascripts/project.js b/public/javascripts/project.js
index 13ed76aa4..4d2c0c91a 100644
--- a/public/javascripts/project.js
+++ b/public/javascripts/project.js
@@ -607,11 +607,11 @@ function regexTopicDescription()
$("#message_content_span").css('color','#ff0000');
return false;
}
- else if(name.length >=6000){
- $("#message_content_span").text("描述最多3000个汉字(或6000个英文字符)");
- $("#message_content_span").css('color','#ff0000');
- return false;
- }
+// else if(name.length >=6000){
+// $("#message_content_span").text("描述最多3000个汉字(或6000个英文字符)");
+// $("#message_content_span").css('color','#ff0000');
+// return false;
+// }
else
{
$("#message_content_span").text("填写正确");
@@ -621,11 +621,11 @@ function regexTopicDescription()
}
function submit_topic_project()
{
-// if(regexTopicSubject() && regexTopicDescription())
-// {
+ if(regexTopicSubject() && regexTopicDescription())
+ {
message_content_editor.sync();
$("#message-form-project").submit();
-// }
+ }
}
function reset_topic(){
diff --git a/public/javascripts/syllabus.js b/public/javascripts/syllabus.js
index 24b997496..0319bd4d1 100644
--- a/public/javascripts/syllabus.js
+++ b/public/javascripts/syllabus.js
@@ -2,7 +2,6 @@
function show_more_course(url){
$.get(
url,
- { page: $("#course_page_num").val() },
function (data) {
}
);
diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js
index 7066da4d9..e646da5b9 100644
--- a/public/javascripts/wechat/controllers/activity.js
+++ b/public/javascripts/wechat/controllers/activity.js
@@ -2,6 +2,10 @@
app.controller('ActivityController',
['$anchorScroll', '$location','$scope', '$http', '$timeout', 'auth', 'rms', 'common','alertService',
function($anchorScroll, $location,$scope, $http, $timeout, auth, rms, common, alertService){
+
+// common.checkLogin();
+
+
$scope.replaceUrl = function(url){
return url;
};
@@ -142,7 +146,7 @@ app.controller('ActivityController',
rms.save("activities",$scope.activities);
rms.save("course_activities",$scope.course_activities);
rms.save("project_activities",$scope.project_activities);
- $location.path('/'+type+'/'+act_id);
+ $location.path("/"+type).search({id: act_id});
};
$scope.addPraise = function(act){
diff --git a/public/javascripts/wechat/controllers/blog.js b/public/javascripts/wechat/controllers/blog.js
index 5fb61151d..21c1cf345 100644
--- a/public/javascripts/wechat/controllers/blog.js
+++ b/public/javascripts/wechat/controllers/blog.js
@@ -7,6 +7,7 @@ app.controller('BlogController',
scope: $scope,
type: 'blog_comments',
replyType: 'BlogComment',
+ urlName: 'blog_comment',
loadCallback: function(data){
console.log(data.data);
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js
index 04807b2dd..d372f6826 100644
--- a/public/javascripts/wechat/controllers/class.js
+++ b/public/javascripts/wechat/controllers/class.js
@@ -1,181 +1,185 @@
-app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location','$routeParams','alertService','rms', function($scope, config, $http, auth, $location, $routeParams,alertService,rms){
-
- var vm = $scope;
- var courseid = $routeParams.id;
- var tag = $routeParams.tag;
-
-
- var getUsers = function(){
- if(vm.teachers.length<=0){
- $http.get(config.apiUrl + 'courses/teachers?token='+auth.token()+'&course_id='+courseid).then(
- function(response) {
- console.log(response.data);
- vm.teachers = response.data.data;
- }
- )
- }
-
- if(vm.course.is_creator){
- if(vm.reviewers.length<=0){
- $http.get(config.apiUrl + 'courses/reviewers?token='+auth.token()+'&course_id='+courseid).then(
- function(response) {
- console.log(response.data);
- vm.reviewers = response.data.data;
- }
- )
- }
- }
-
- if(vm.students.length<=0){
- $http.get(config.apiUrl + 'courses/students?token='+auth.token()+'&course_id='+courseid).then(
- function(response) {
- console.log(response.data);
- vm.students = response.data.data;
- }
- )
- }
- }
-
- var getResources = function(){
- if(vm.resources.length<=0){
- $http.post(config.apiUrl + "courses/"+courseid+"/attachments",
- {token: auth.token(), name: ''}
- ).then(function(response){
- vm.resources = response.data.data;
- vm.resources_tag = true;
- });
- }
- }
-
- var getHomeworks = function(){
- if(vm.homeworks.length <=0){
- $http.get(config.apiUrl + "courses/homeworks/"+courseid+"?token="+auth.token()).then(function(response){
- vm.homeworks = response.data.data;
- console.log(response.data);
- vm.homeworks_tag = true;
- });
- }
- }
-
- var getExercises = function(){
- if(vm.exercises.length <=0){
- $http.get(config.apiUrl + "courses/"+courseid+"/exercises?token="+auth.token()).then(function(response){
- vm.exercises = response.data.data;
- console.log(response.data);
- vm.exercises_tag = true;
- });
- }
- }
-
-
- vm.isTeacher = false;
- vm.currentTab = 1;
- vm.tab = function(index){
- vm.currentTab = index;
- vm.searchText = '';
-
- vm.showClassMate = false;
- vm.showResources = false;
- vm.showHomework = false;
- vm.showTestcase = false;
- vm.resources_tag = false;
- vm.homeworks_tag = false;
- vm.exercises_tag = false;
-
- if(vm.isTeacher){
- if(index == 1){ //课件
- getResources();
- vm.showResources = true;
- } else if(index==2){ //作业
- getHomeworks();
- vm.showHomework = true;
- } else if(index==3){ //小测验
- getExercises();
- vm.showTestcase = true;
- } else if(index==4){ //学生管理
- getUsers();
- vm.showClassMate = true;
- }
-
- } else {
- if(index == 2){
- getUsers();
- vm.showClassMate = true;
- } else if(index==1){
- getResources();
- vm.showResources = true;
- }
- }
- }
-
- vm.course = {};
- vm.students = [];
- vm.teachers = [];
- vm.reviewers = []; //待审批
- vm.resources = [];
- vm.homeworks = [];
- vm.exercises = [];
-
- //发送类别 1课件 2作业 3测验
- vm.myresource_sendIndex = rms.get('myresource_sendIndex') || 1;
-
- vm.alertService = alertService.create();
-
- vm.invite = function(){
- $location.path("/invite_code").search({id: courseid});
- };
-
- vm.sendFile = function(r,index){
- vm.myresource_sendIndex = index;
- rms.save('myresource_sendIndex',index);
- $location.path("/send_class_list").search({id: r.id});
- }
-
- $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
- function(response) {
- console.log(response.data);
-
- if (response.data.status == 0){
- vm.course = response.data.data;
- resetMenu(vm.course.current_user_is_teacher);
- if(tag){
- vm.tab(4);
- tag = null;
- }
- else{
- vm.tab(1);
- }
- }
- else{
- vm.alertService.showMessage('提示', response.data.message);
- }
-
- }
- );
-
-
- var resetMenu = function(is_teacher){
- vm.isTeacher = is_teacher;
- if(is_teacher){
- vm.menus = ["课件", "作业", "测验", "成员管理"];
- } else {
- vm.menus = ['课件', "我的同学"];
- }
-
- }
-
- vm.onSetting = function(user){
- rms.save('current_edit_member', user);
- $location.path("/edit_class_member").search({id: courseid,user_id: user.id});
- };
-
- vm.review = function(user){
- rms.save('current_review_member', user);
- rms.save('current_course', vm.course);
-
- $location.path("/review_class_member").search({id: courseid,user_id: user.id});
- }
-
-
-
+app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location','$routeParams','alertService','rms','common', function($scope, config, $http, auth, $location, $routeParams,alertService,rms,common){
+// common.checkLogin();
+
+ var vm = $scope;
+ var courseid = $routeParams.id;
+ var tag = $routeParams.tag;
+
+
+ var getUsers = function(){
+ if(vm.teachers.length<=0){
+ $http.get(config.apiUrl + 'courses/teachers?token='+auth.token()+'&course_id='+courseid).then(
+ function(response) {
+ console.log(response.data);
+ vm.teachers = response.data.data;
+ }
+ )
+ }
+
+ if(vm.course.is_creator){
+ if(vm.reviewers.length<=0){
+ $http.get(config.apiUrl + 'courses/reviewers?token='+auth.token()+'&course_id='+courseid).then(
+ function(response) {
+ console.log(response.data);
+ vm.reviewers = response.data.data;
+ }
+ )
+ }
+ }
+
+ if(vm.students.length<=0){
+ $http.get(config.apiUrl + 'courses/students?token='+auth.token()+'&course_id='+courseid).then(
+ function(response) {
+ console.log(response.data);
+ vm.students = response.data.data;
+ }
+ )
+ }
+ }
+
+ var getResources = function(){
+ if(vm.resources.length<=0){
+ $http.post(config.apiUrl + "courses/"+courseid+"/attachments",
+ {token: auth.token(), name: ''}
+ ).then(function(response){
+ vm.resources = response.data.data;
+ vm.resources_tag = true;
+ });
+ }
+ }
+
+ var getHomeworks = function(){
+ if(vm.homeworks.length <=0){
+ $http.get(config.apiUrl + "courses/homeworks/"+courseid+"?token="+auth.token()).then(function(response){
+ vm.homeworks = response.data.data;
+ console.log(response.data);
+ vm.homeworks_tag = true;
+ });
+ }
+ }
+
+ var getExercises = function(){
+ if(vm.exercises.length <=0){
+ $http.get(config.apiUrl + "courses/"+courseid+"/exercises?token="+auth.token()).then(function(response){
+ vm.exercises = response.data.data;
+ console.log(response.data);
+ vm.exercises_tag = true;
+ });
+ }
+ }
+
+
+ vm.isTeacher = false;
+ vm.currentTab = 1;
+ vm.tab = function(index){
+ vm.currentTab = index;
+ vm.searchText = '';
+
+ vm.showClassMate = false;
+ vm.showResources = false;
+ vm.showHomework = false;
+ vm.showTestcase = false;
+ vm.resources_tag = false;
+ vm.homeworks_tag = false;
+ vm.exercises_tag = false;
+
+ if(vm.isTeacher){
+ if(index == 1){ //课件
+ getResources();
+ vm.showResources = true;
+ } else if(index==2){ //作业
+ getHomeworks();
+ vm.showHomework = true;
+ } else if(index==3){ //小测验
+ getExercises();
+ vm.showTestcase = true;
+ } else if(index==4){ //学生管理
+ getUsers();
+ vm.showClassMate = true;
+ }
+
+ } else {
+ if(index == 2){
+ getUsers();
+ vm.showClassMate = true;
+ } else if(index==1){
+ getResources();
+ vm.showResources = true;
+ }
+ }
+ rms.save("tab_num",index);
+ }
+
+ vm.tabRecord = rms.get('tab_num') || 1;
+
+ vm.course = {};
+ vm.students = [];
+ vm.teachers = [];
+ vm.reviewers = []; //待审批
+ vm.resources = [];
+ vm.homeworks = [];
+ vm.exercises = [];
+
+ //发送类别 1课件 2作业 3测验
+ vm.myresource_sendIndex = rms.get('myresource_sendIndex') || 1;
+
+ vm.alertService = alertService.create();
+
+ vm.invite = function(){
+ $location.path("/invite_code").search({id: courseid});
+ };
+
+ vm.sendFile = function(r,index){
+ vm.myresource_sendIndex = index;
+ rms.save('myresource_sendIndex',index);
+ $location.path("/send_class_list").search({id: r.id});
+ }
+
+ $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+
+ if (response.data.status == 0){
+ vm.course = response.data.data;
+ resetMenu(vm.course.current_user_is_teacher,vm.tabRecord);
+ if(tag){
+ vm.tab(4);
+ tag = null;
+ }
+ else{
+ vm.tab(vm.tabRecord);
+ }
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+
+ }
+ );
+
+
+ var resetMenu = function(is_teacher){
+ vm.isTeacher = is_teacher;
+ if(is_teacher){
+ vm.menus = ["课件", "作业", "测验", "成员管理"];
+ } else {
+ vm.menus = ['课件', "我的同学"];
+ }
+
+ }
+
+ vm.onSetting = function(user){
+ rms.save('current_edit_member', user);
+ $location.path("/edit_class_member").search({id: courseid,user_id: user.id});
+ };
+
+ vm.review = function(user){
+ rms.save('current_review_member', user);
+ rms.save('current_course', vm.course);
+
+ $location.path("/review_class_member").search({id: courseid,user_id: user.id});
+ }
+
+
+
}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/class_list.js b/public/javascripts/wechat/controllers/class_list.js
index 48e778f9d..cc5250970 100644
--- a/public/javascripts/wechat/controllers/class_list.js
+++ b/public/javascripts/wechat/controllers/class_list.js
@@ -3,8 +3,10 @@
*/
-app.controller('ClassListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService','rms',
- function ($scope, config, auth, $http, $location, alertService,rms) {
+app.controller('ClassListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService','rms','common',
+ function ($scope, config, auth, $http, $location, alertService,rms,common) {
+// common.checkLogin();
+
var vm = $scope;
vm.syllabuses = rms.get('syllabuses') || [];
diff --git a/public/javascripts/wechat/controllers/course_notice.js b/public/javascripts/wechat/controllers/course_notice.js
index 77d2e6ab0..9f9ba83d6 100644
--- a/public/javascripts/wechat/controllers/course_notice.js
+++ b/public/javascripts/wechat/controllers/course_notice.js
@@ -6,8 +6,10 @@ app.controller('CourseNoticeController', ['$scope', '$http', '$routeParams', 'au
scope: $scope,
type: 'newss',
replyType: 'News',
+ urlName: 'course_notice',
loadCallback: function(data){
$scope.news = data.data;
+ $scope.is_public = data.is_public;
},
replyCallback: function(){
}
diff --git a/public/javascripts/wechat/controllers/discussion.js b/public/javascripts/wechat/controllers/discussion.js
index 60bfb3ee3..21e842d0f 100644
--- a/public/javascripts/wechat/controllers/discussion.js
+++ b/public/javascripts/wechat/controllers/discussion.js
@@ -5,6 +5,7 @@ app.controller('DiscussionController', ['$scope', '$http', '$routeParams', 'auth
scope: $scope,
type: 'messages',
replyType: 'Message',
+ urlName: 'discussion',
loadCallback: function(data){
console.log(data.data);
@@ -16,6 +17,7 @@ app.controller('DiscussionController', ['$scope', '$http', '$routeParams', 'auth
if (page == 0){
$scope.discussion = data.data;
$scope.page = 0;
+ $scope.is_public = data.is_public;
}
else{
$scope.discussion.all_children = $scope.discussion.all_children.concat(data.data.all_children);
diff --git a/public/javascripts/wechat/controllers/edit_class.js b/public/javascripts/wechat/controllers/edit_class.js
index 0a09ce1e3..d61c25353 100644
--- a/public/javascripts/wechat/controllers/edit_class.js
+++ b/public/javascripts/wechat/controllers/edit_class.js
@@ -1,6 +1,8 @@
-app.controller('EditClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+app.controller('EditClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
var vm = $scope;
vm.syllabus = rms.get('current_edit_syllobus');
diff --git a/public/javascripts/wechat/controllers/edit_class_member.js b/public/javascripts/wechat/controllers/edit_class_member.js
index b3c28ea0b..e00e36f20 100644
--- a/public/javascripts/wechat/controllers/edit_class_member.js
+++ b/public/javascripts/wechat/controllers/edit_class_member.js
@@ -1,6 +1,8 @@
-app.controller('EditClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+app.controller('EditClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
diff --git a/public/javascripts/wechat/controllers/edit_project_member.js b/public/javascripts/wechat/controllers/edit_project_member.js
index 3fd24f04e..511db35bb 100644
--- a/public/javascripts/wechat/controllers/edit_project_member.js
+++ b/public/javascripts/wechat/controllers/edit_project_member.js
@@ -1,6 +1,8 @@
-app.controller('EditProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+app.controller('EditProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
diff --git a/public/javascripts/wechat/controllers/homework.js b/public/javascripts/wechat/controllers/homework.js
index 2898fc27f..f61f2be1d 100644
--- a/public/javascripts/wechat/controllers/homework.js
+++ b/public/javascripts/wechat/controllers/homework.js
@@ -5,6 +5,7 @@ app.controller('HomeworkController', ['$scope', '$http', '$routeParams', 'auth',
scope: $scope,
type: 'whomeworks',
replyType: 'HomeworkCommon',
+ urlName: 'homework',
loadCallback: function(data){
console.log(data.data);
@@ -16,6 +17,7 @@ app.controller('HomeworkController', ['$scope', '$http', '$routeParams', 'auth',
if (page == 0){
$scope.homework = data.data;
$scope.page = 0;
+ $scope.is_public = data.is_public;
}
else{
$scope.homework.all_children = $scope.homework.all_children.concat(data.data.all_children);
diff --git a/public/javascripts/wechat/controllers/invite_code.js b/public/javascripts/wechat/controllers/invite_code.js
index db8b99ae7..50c14c0c3 100644
--- a/public/javascripts/wechat/controllers/invite_code.js
+++ b/public/javascripts/wechat/controllers/invite_code.js
@@ -13,9 +13,12 @@ app.controller('InviteCodeController', ['$scope','$http', '$routeParams','config
console.log(response.data);
vm.course = response.data.data;
- var desc = "班级邀请:"+vm.course.name+" 班级";
+ var desc = "您的好友邀请您加入班级:【"+vm.course.name+"】,和小伙伴一起踏上便捷的学习之旅吧!";
+ var link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid+
+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+vm.course.id+
+ "&response_type=code&scope=snsapi_base&state=invite_code&connect_redirect=1#wechat_redirect";
- common.wxConfig("",desc,"");
+ common.wxConfig("",desc,"",link);
// wx.ready(function(){
// wx.onMenuShareTimeline({
diff --git a/public/javascripts/wechat/controllers/issue.js b/public/javascripts/wechat/controllers/issue.js
index ae0cc4450..131fab6f6 100644
--- a/public/javascripts/wechat/controllers/issue.js
+++ b/public/javascripts/wechat/controllers/issue.js
@@ -5,9 +5,11 @@ app.controller('IssueController', ['$scope', '$http', '$routeParams', 'auth', 'c
scope: $scope,
type: 'issues',
replyType: 'Issue',
+ urlName: 'issues',
loadCallback: function(data){
console.log(data);
$scope.issue = data.data;
+ $scope.is_public = data.is_public;
},
replyCallback: function(){
}
diff --git a/public/javascripts/wechat/controllers/join_class.js b/public/javascripts/wechat/controllers/join_class.js
index 3f1a28387..1a9710bc1 100644
--- a/public/javascripts/wechat/controllers/join_class.js
+++ b/public/javascripts/wechat/controllers/join_class.js
@@ -1,6 +1,8 @@
-app.controller('JoinClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx){
+app.controller('JoinClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
diff --git a/public/javascripts/wechat/controllers/join_project.js b/public/javascripts/wechat/controllers/join_project.js
index f27c535c5..d942e8859 100644
--- a/public/javascripts/wechat/controllers/join_project.js
+++ b/public/javascripts/wechat/controllers/join_project.js
@@ -1,6 +1,8 @@
-app.controller('JoinProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx){
+app.controller('JoinProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
diff --git a/public/javascripts/wechat/controllers/journals.js b/public/javascripts/wechat/controllers/journals.js
index 23f3b908b..0570e695f 100644
--- a/public/javascripts/wechat/controllers/journals.js
+++ b/public/javascripts/wechat/controllers/journals.js
@@ -4,6 +4,7 @@ app.controller('JournalsController', ['$scope', '$http', '$routeParams', 'auth',
scope: $scope,
type: 'journal_for_messages',
replyType: 'JournalsForMessage',
+ urlName: 'journal_for_message',
loadCallback: function(data){
console.log(data.data);
@@ -15,6 +16,7 @@ app.controller('JournalsController', ['$scope', '$http', '$routeParams', 'auth',
if (page == 0){
$scope.message = data.data;
$scope.page = 0;
+ $scope.is_public = data.is_public;
}
else{
$scope.message.all_children = $scope.message.all_children.concat(data.data.all_children);
diff --git a/public/javascripts/wechat/controllers/login.js b/public/javascripts/wechat/controllers/login.js
index f8e87a93f..ea86a71a2 100644
--- a/public/javascripts/wechat/controllers/login.js
+++ b/public/javascripts/wechat/controllers/login.js
@@ -1,6 +1,8 @@
app.controller('LoginController', ['$scope', '$http', '$location', '$routeParams', 'alertService', 'config','auth','session','wx',
function ($scope, $http, $location, $routeParams, alertService, config, auth,session, wx) {
+ var tag = $routeParams.tag;
+
// 登录页不用显示菜音
wx.ready(function(){
wx.hideOptionMenu();
@@ -39,7 +41,13 @@ app.controller('LoginController', ['$scope', '$http', '$location', '$routeParams
vm.loginFailed = (response.data.status != 0);
if (!$scope.loginFailed) { //绑定成功
vm.alertService.showMessage('提示', response.data.message, function(){
- wx.closeWindow();
+ if(tag){
+ window.history.back();
+ tag = null;
+ }
+ else{
+ wx.closeWindow();
+ }
});
} else {
vm.alertService.showMessage('出错了', response.data.message);
diff --git a/public/javascripts/wechat/controllers/login_tip..js b/public/javascripts/wechat/controllers/login_tip..js
new file mode 100644
index 000000000..a719abf79
--- /dev/null
+++ b/public/javascripts/wechat/controllers/login_tip..js
@@ -0,0 +1,7 @@
+app.controller('LoginTipController', ['$scope', '$http', '$location', 'alertService','$location',
+ function ($scope, $http, $location, alertService, $location) {
+ $scope.bindWx = function(){
+ $location.path("/login").search({tag:1});
+ };
+
+ }]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/myresource.js b/public/javascripts/wechat/controllers/myresource.js
index b5489c065..089b63dfc 100644
--- a/public/javascripts/wechat/controllers/myresource.js
+++ b/public/javascripts/wechat/controllers/myresource.js
@@ -1,4 +1,6 @@
-app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$location', 'rms', function($scope, $http, auth, config, $location,rms){
+app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$location', 'rms','common', function($scope, $http, auth, config, $location,rms,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.menus = ['课件', '作业', '测验'];
vm.menus = ['课件', '作业'];
diff --git a/public/javascripts/wechat/controllers/new_class.js b/public/javascripts/wechat/controllers/new_class.js
index 5e9f339a1..54bc396b6 100644
--- a/public/javascripts/wechat/controllers/new_class.js
+++ b/public/javascripts/wechat/controllers/new_class.js
@@ -1,6 +1,8 @@
-app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms', function($scope, $http, auth, config, alertService, $location,rms){
+app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms','common', function($scope, $http, auth, config, alertService, $location,rms,common){
+// common.checkLogin();
+
var vm = $scope;
vm.alertService = alertService.create();
diff --git a/public/javascripts/wechat/controllers/new_project.js b/public/javascripts/wechat/controllers/new_project.js
index 6eb6a1caa..03a1b451f 100644
--- a/public/javascripts/wechat/controllers/new_project.js
+++ b/public/javascripts/wechat/controllers/new_project.js
@@ -1,6 +1,8 @@
-app.controller('NewProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms', function($scope, $http, auth, config, alertService, $location,rms){
+app.controller('NewProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms','common', function($scope, $http, auth, config, alertService, $location,rms,common){
+// common.checkLogin();
+
var vm = $scope;
vm.alertService = alertService.create();
diff --git a/public/javascripts/wechat/controllers/project.js b/public/javascripts/wechat/controllers/project.js
index f4a3b5c5c..08987e491 100644
--- a/public/javascripts/wechat/controllers/project.js
+++ b/public/javascripts/wechat/controllers/project.js
@@ -1,4 +1,6 @@
app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'auth','$location','$routeParams','alertService','rms','common', function($scope, config, $http,$timeout, auth, $location, $routeParams,alertService,rms,common){
+// common.checkLogin();
+
$scope.replaceUrl = function(url){
return url;
};
@@ -115,7 +117,8 @@ app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'aut
rms.save("project_activities",vm.project_activities);
rms.save('project_has_more', vm.project_has_more);
rms.save("project",vm.project);
- $location.path('/'+type+'/'+act_id);
+// $location.path('/'+type+'/'+act_id);
+ $location.path("/"+type).search({id: act_id});
};
//切换 按钮
diff --git a/public/javascripts/wechat/controllers/project_invite_code.js b/public/javascripts/wechat/controllers/project_invite_code.js
index dea2e9d64..a68bf430b 100644
--- a/public/javascripts/wechat/controllers/project_invite_code.js
+++ b/public/javascripts/wechat/controllers/project_invite_code.js
@@ -13,9 +13,12 @@ app.controller('ProjectInviteCodeController', ['$scope','$http', '$routeParams',
console.log(response.data);
vm.project = response.data.data;
- var desc = "项目邀请:"+vm.project.name+" 项目";
+ var desc = "您的好友邀请您加入项目:【"+vm.project.name+"】,和小伙伴一起踏上便捷的研发之旅吧!";
+ var link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid+
+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+vm.project.id+
+ "&response_type=code&scope=snsapi_base&state=project_invite_code&connect_redirect=1#wechat_redirect";
- common.wxConfig("",desc,"");
+ common.wxConfig("",desc,"",link);
// wx.ready(function(){
// wx.onMenuShareTimeline({
diff --git a/public/javascripts/wechat/controllers/project_list.js b/public/javascripts/wechat/controllers/project_list.js
index 6ff7495e4..e716de0a9 100644
--- a/public/javascripts/wechat/controllers/project_list.js
+++ b/public/javascripts/wechat/controllers/project_list.js
@@ -3,8 +3,10 @@
*/
-app.controller('ProjectListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService','rms',
- function ($scope, config, auth, $http, $location, alertService,rms) {
+app.controller('ProjectListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService','rms','common',
+ function ($scope, config, auth, $http, $location, alertService,rms,common) {
+// common.checkLogin();
+
var vm = $scope;
// vm.projects = rms.get('projects') || [];
vm.projects = [];
diff --git a/public/javascripts/wechat/controllers/reg.js b/public/javascripts/wechat/controllers/reg.js
index 9600e9dbf..1247cd931 100644
--- a/public/javascripts/wechat/controllers/reg.js
+++ b/public/javascripts/wechat/controllers/reg.js
@@ -1,5 +1,5 @@
-app.controller('RegController', ['$scope', '$http', '$location', 'alertService','$location',
- function ($scope, $http, $location, alertService, $location) {
+app.controller('RegController', ['$scope', '$http', '$location', 'alertService','$location','wx',
+ function ($scope, $http, $location, alertService, $location,wx) {
var vm = $scope;
vm.errDialog = alertService.create();
@@ -35,7 +35,8 @@ app.controller('RegController', ['$scope', '$http', '$location', 'alertService',
} else {
vm.successDialog.showMessage("提示","注册且绑定微信成功", function(){
// $location.path("/activities");
- window.WeixinJSBridge.call('closeWindow');
+// window.WeixinJSBridge.call('closeWindow');
+ wx.closeWindow();
});
}
}, function (response) {
diff --git a/public/javascripts/wechat/controllers/review_class_member.js b/public/javascripts/wechat/controllers/review_class_member.js
index 44704c32d..aee8d683a 100644
--- a/public/javascripts/wechat/controllers/review_class_member.js
+++ b/public/javascripts/wechat/controllers/review_class_member.js
@@ -1,6 +1,8 @@
-app.controller('ReviewClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+app.controller('ReviewClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
@@ -78,6 +80,11 @@ app.controller('ReviewClassMemberController', ['$scope', '$http', 'auth', 'confi
};
vm.goClassMemberList = function(){
- $location.path("/class").search({id: course_id,tag: 1});
+ if(vm.current_course.is_member){
+ $location.path("/class").search({id: course_id,tag: 1});
+ }
+ else{
+ $location.path("/class_list");
+ }
};
}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/review_project_member.js b/public/javascripts/wechat/controllers/review_project_member.js
index 2428c09d0..5c652050f 100644
--- a/public/javascripts/wechat/controllers/review_project_member.js
+++ b/public/javascripts/wechat/controllers/review_project_member.js
@@ -1,6 +1,8 @@
-app.controller('ReviewProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+app.controller('ReviewProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
var vm = $scope;
// vm.current_edit_member = rms.get('current_edit_member');
@@ -90,6 +92,11 @@ app.controller('ReviewProjectMemberController', ['$scope', '$http', 'auth', 'con
rms.save("review_master_members",[]);
rms.save("review_develop_members",[]);
rms.save("tab_num",null);
- $location.path("/project").search({id: project_id,tag: 1});
+ if(vm.current_project.is_member){
+ $location.path("/project").search({id: project_id,tag: 1});
+ }
+ else{
+ $location.path("/project_list")
+ }
};
}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/send_class_list.js b/public/javascripts/wechat/controllers/send_class_list.js
index bc81cfc08..ead0860f5 100644
--- a/public/javascripts/wechat/controllers/send_class_list.js
+++ b/public/javascripts/wechat/controllers/send_class_list.js
@@ -1,4 +1,6 @@
-app.controller('SendClassListController', ['$scope', '$http','$routeParams', 'config','auth','alertService', 'rms', function($scope, $http, $routeParams, config, auth, alertService,rms){
+app.controller('SendClassListController', ['$scope', '$http','$routeParams', 'config','auth','alertService', 'rms','common', function($scope, $http, $routeParams, config, auth, alertService,rms,common){
+// common.checkLogin();
+
var vm = $scope;
var send_id = $routeParams.id;
diff --git a/public/javascripts/wechat/directives/at_delete_link.js b/public/javascripts/wechat/directives/at_delete_link.js
new file mode 100644
index 000000000..15190c327
--- /dev/null
+++ b/public/javascripts/wechat/directives/at_delete_link.js
@@ -0,0 +1,17 @@
+/**
+ * Created by ttang on 2016/8/10.
+ */
+app.directive('atDeleteLink',["$timeout",function(timer){
+ return{
+ restrict: 'A',
+ scope: {},
+ link: function(scope, element){
+ timer(function(){
+ $(".at a").each(function(){
+ var atText = $(this).text();
+ $(this).parent().html(atText);
+ });
+ })
+ }
+ }
+}]);
diff --git a/public/javascripts/wechat/directives/form_validate.js b/public/javascripts/wechat/directives/form_validate.js
index 553560c56..7b5657428 100644
--- a/public/javascripts/wechat/directives/form_validate.js
+++ b/public/javascripts/wechat/directives/form_validate.js
@@ -7,4 +7,18 @@ app.directive('pwdconfirm', function(){
}
}
}
+});
+
+app.directive('unconfirm', function(){
+ return {
+ require: 'ngModel',
+ link: function(scope, elm, attrs, ctrl){
+ ctrl.$validators.unconfirm = function(modelValue, viewValue) {
+ if(viewValue == ""){
+ return true;
+ }
+ return (/^[a-zA-Z\d]\w{0,23}[a-zA-Z\d]{0,1}$/.test(viewValue));
+ }
+ }
+ }
});
\ No newline at end of file
diff --git a/public/javascripts/wechat/directives/input_focus.js b/public/javascripts/wechat/directives/input_focus.js
new file mode 100644
index 000000000..38cc01ec9
--- /dev/null
+++ b/public/javascripts/wechat/directives/input_focus.js
@@ -0,0 +1,14 @@
+/**
+ * Created by ttang on 2016/8/10.
+ */
+app.directive('inputFocus',function(){
+ return{
+ restrict: 'A',
+ scope: {},
+ link: function(scope, element){
+ element.on('click',function(){
+ $("#postInput1").focus();
+ });
+ }
+ }
+});
\ No newline at end of file
diff --git a/public/javascripts/wechat/others/factory.js b/public/javascripts/wechat/others/factory.js
index 7ac0a3bdb..1c40c9c10 100644
--- a/public/javascripts/wechat/others/factory.js
+++ b/public/javascripts/wechat/others/factory.js
@@ -1,394 +1,466 @@
-app.factory('alertService', function(){
- function Alert(){
- this.title = null;
- this.message = null;
- this.visible = null;
- this.cb = null;
- this.invite = "";
- }
-
- Alert.prototype.showMessage = function(title, msg, cb){
- this.message = msg;
- this.title = title;
- this.visible = true;
- this.cb = cb;
- this.invite = "";
- }
-
- Alert.prototype.dismiss = function(){
- this.message = null;
- this.title = null;
- this.visible = false;
- this.invite = "";
- if(this.cb) {this.cb();}
- }
-
- return {
- create: function(){
- return new Alert();
- }
- }
-});
-
-app.factory('wx', ['$window', function($window){
- var wechat = $window.wx;
- return wechat;
-}]);
-
-app.factory('auth', ['$http','$routeParams', '$q', 'session', 'config',function($http,$routeParams, $q, session,config){
- //是否已经绑定
- var isBind = function(){
- var defer = $q.defer();
-
- var token = getToken();
- if(token && token.length>10){
- defer.resolve(token);
- } else {
- var code = window.g_code || $routeParams.code || session.get("code");
- $http.post(
- '/wechat/get_bind',
- {} ///不用传code了,都由服务器来处理
- ).then(function(response){
- if(response.data.status!=0){
- defer.reject(response.data.message);
- }else {
- session.save("token", response.data.token);
- defer.resolve(response.data.token);
- }
- }).catch(function(e){
- defer.reject(e);
- });
- }
-
- return defer.promise;
- }
-
- var getToken = function(){
- return 'token';//session.get("token");
- }
- return {get_bind: isBind, token: getToken};
-}]);
-
-app.factory("session", function(){
- return {
- save: function(key,value){
- sessionStorage.setItem(key,value);
- },
- get: function(key){
- return sessionStorage.getItem(key);
- }
- }
-});
-
-app.factory('rms', function(){
- var _saveStorage = {};
- var save = function(key, value){
- _saveStorage[key] = value;
- };
-
- var get = function(key){
- return _saveStorage[key];
- };
-
- return {save: save, get: get};
-});
-
-app.factory('common', ['$http', 'auth', '$routeParams','rms','config','wx', function($http, auth, $routeParams,rms,config,wx){
- var addCommonReply = function(id, type, data, cb){
-
- if(!data.comment || data.comment.length<=0){
- return;
- }
-
- var temp = data.comment.replace(/\n/g,' ');
-
- var userInfo = {
- type: type,
- content: temp,
- token: auth.token()
- };
- //回复按钮禁用
- data.disabled = true;
-
- $http({
- method: 'POST',
- url: apiUrl+ "new_comment/"+id,
- data: userInfo
- }).then(function successCallback(response) {
- //alert("提交成功");
- //数据提交完成,回复按钮启用
- data.disabled = false;
- if(typeof cb === 'function'){
- cb();
- }
-
- //保证内外回复数一致
- activities = rms.get("activities") || [];
- course_activities = rms.get("course_activities") || [];
- project_activities = rms.get("project_activities") || [];
- for(var i in activities){
- if(activities[i].act_id == id){
- activities[i].reply_count += 1;
- break;
- }
- }
- for(var i in course_activities){
- if(course_activities[i].act_id == id){
- course_activities[i].reply_count += 1;
- break;
- }
- }
- for(var i in project_activities){
- if(project_activities[i].act_id == id){
- project_activities[i].reply_count += 1;
- break;
- }
- }
- rms.save("activities",activities);
- rms.save("course_activities",course_activities);
- rms.save("project_activities",project_activities);
-
- }, function errorCallback(response) {
- });
- };
-
-// var loadCommonData = function(id, type,replytype,page){
-// return $http({
-// method: 'GET',
-// url: apiUrl+ type + "/" + id+"?token="+auth.token(),
-// })
-// };
-
- var loadCommonData = function(id, type,replytype,page){
- return $http({
- method: 'POST',
- url: apiUrl+ type + "/" + id,
- dataType: 'jsonp',
- data:{token:auth.token(),type:replytype,page:page}
- })
- };
-
- var addCommonPraise = function(act){
-// act.praise_count += 1;
-// act.has_praise = true;
-
- $http({
- method: 'POST',
- url: apiUrl + "praise/" + act.act_id,
- data:{token:auth.token(),type:act.act_type}
- }).then(function successCallback(response) {
- console.log(response.data);
- }, function errorCallback(response) {
- });
-
- };
-
- var decreaseCommonPraise = function(act){
-// act.praise_count -= 1;
-// act.has_praise = false;
- $http({
- method: 'POST',
- url: apiUrl + "praise/" + act.act_id,
- data:{token:auth.token(),type:act.act_type}
- }).then(function successCallback(response) {
- console.log(response.data);
- }, function errorCallback(response) {
- });
- };
-
- var init = function(args){
- args.scope.formData = {comment: ''};
- var loadData = function(id,replytype,page){
- loadCommonData(id, args.type,replytype,page).then(function successCallback(response) {
- console.log(response.data);
- //--------------分享内容定制-------------
- var tmptile = "分享动态";
- var imgUrl = "";
-
- if(response.data.data.title){
- tmptile = response.data.data.title;
- }
-
- var tmpname = "匿名用户";
-
- if(response.data.data.user){
- tmpname = response.data.data.user.realname;
- imgUrl = window.g_localhost+response.data.data.user.img_url;
- }
-
- if(response.data.data.author){
- tmpname = response.data.data.author.realname;
- imgUrl = window.g_localhost+response.data.data.author.img_url;
- }
-
- var desc = ""
- if(response.data.data.content){
- desc = response.data.data.content.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,"");
- }
-
- if(response.data.data.description){
- desc = response.data.data.description.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,"");
- }
-
- if(desc.length > 30){
- desc = desc.substring(0,30)+"...";
- }
-
- var title = tmpname+":"+tmptile;
- console.log("desc = "+desc);
- console.log("imgUrl= "+imgUrl);
-
- wxConfig(title,desc,imgUrl);
-
- //--------------分享内容定制-------------
- args.loadCallback(response.data);
- }, function errorCallback(response) {
- });
- };
-
- loadData(args.id,0,0);
- args.scope.addReply = function(data){
- console.log(data.comment);
- addCommonReply(args.id, args.replyType, data, function(){
- args.scope.formData = {comment: ''};
- loadData(args.id,0,0);
- if(typeof args.replyCallback === 'function'){
- args.replyCallback();
- }
- });
- };
-
-// 动态详情界面点赞与动态界面的数据要同步 保证进入详情点赞后出来显示一致
- args.scope.addPraise = function(act){
- activities = rms.get("activities") || [];
- course_activities = rms.get("course_activities") || [];
- project_activities = rms.get("project_activities") || [];
- for(var i in activities){
- if(activities[i].act_id == act.act_id){
- activities[i].praise_count += 1;
- activities[i].has_praise = true;
- break;
- }
- }
- for(var i in course_activities){
- if(course_activities[i].act_id == act.act_id){
- course_activities[i].praise_count += 1;
- course_activities[i].has_praise = true;
- break;
- }
- }
- for(var i in project_activities){
- if(project_activities[i].act_id == act.act_id){
- project_activities[i].praise_count += 1;
- project_activities[i].has_praise = true;
- break;
- }
- }
- rms.save("activities",activities);
- rms.save("course_activities",course_activities);
- rms.save("project_activities",project_activities);
-
- act.praise_count += 1;
- act.has_praise = true;
- addCommonPraise(act);
- };
-
- args.scope.decreasePraise = function(act){
- activities = rms.get("activities") || [];
- course_activities = rms.get("course_activities") || [];
- project_activities = rms.get("project_activities") || [];
- for(var i in activities){
- if(activities[i].act_id == act.act_id){
- activities[i].praise_count -= 1;
- activities[i].has_praise = false;
- break;
- }
- }
- for(var i in course_activities){
- if(course_activities[i].act_id == act.act_id){
- course_activities[i].praise_count -= 1;
- course_activities[i].has_praise = false;
- break;
- }
- }
- for(var i in project_activities){
- if(project_activities[i].act_id == act.act_id){
- project_activities[i].praise_count -= 1;
- project_activities[i].has_praise = false;
- break;
- }
- }
- rms.save("activities",activities);
- rms.save("course_activities",course_activities);
- rms.save("project_activities",project_activities);
-
- act.praise_count -= 1;
- act.has_praise = false;
- decreaseCommonPraise(act);
- };
-
- args.scope.showMoreReply = function(replytype,data){
- if(!data.page){
- data.page = 1;
- }
- else{
- data.page = data.page + 1;
- }
-
- loadCommonData(data.id, args.type,replytype,data.page).then(function successCallback(response) {
- args.loadCallback(response.data);
- }, function errorCallback(response) {
- });
- };
-
- args.scope.commentreply_path = config.rootPath+ 'templates/comment_reply.html';
-
- };
-
- var wxConfig = function(title,desc,imgUrl){
-
- if(title == null || title == ""){
- title = 'Trustie创新实践平台';
- }
-
- if(desc == null || desc == ""){
- desc = 'Trustie创新实践平台';
- }
-
- if(imgUrl == null || imgUrl == ""){
- imgUrl = 'http://www.trustie.net/images/logo2.png';
- }
-
- wx.ready(function(){
- wx.onMenuShareTimeline({
- title: title, // 分享标题
-// link: 'http://www.trustie.net/', // 分享链接
- imgUrl: imgUrl, // 分享图标
- success: function () {
- console.log("share successed.");
- },
- cancel: function () {
- console.log("share canceled.");
- }
- });
-
- wx.onMenuShareAppMessage({
- title: title, // 分享标题
- desc: desc, // 分享描述
-// link: '', // 分享链接
-// imgUrl: '', // 分享图标
- imgUrl: imgUrl, // 分享图标
-// type: '', // 分享类型,music、video或link,不填默认为link
-// dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
- success: function () {
- // 用户确认分享后执行的回调函数
- },
- cancel: function () {
- // 用户取消分享后执行的回调函数
- }
- });
- });
- };
-
- return {init: init, addCommonReply: addCommonReply, loadCommonData: loadCommonData, addCommonPraise: addCommonPraise, decreaseCommonPraise: decreaseCommonPraise, wxConfig: wxConfig};
-}]);
+app.factory('alertService', function(){
+ function Alert(){
+ this.title = null;
+ this.message = null;
+ this.visible = null;
+ this.cb = null;
+ this.invite = "";
+ }
+
+ Alert.prototype.showMessage = function(title, msg, cb){
+ this.message = msg;
+ this.title = title;
+ this.visible = true;
+ this.cb = cb;
+ this.invite = "";
+ }
+
+ Alert.prototype.dismiss = function(){
+ this.message = null;
+ this.title = null;
+ this.visible = false;
+ this.invite = "";
+ if(this.cb) {this.cb();}
+ }
+
+ return {
+ create: function(){
+ return new Alert();
+ }
+ }
+});
+
+app.factory('wx', ['$window', function($window){
+ var wechat = $window.wx;
+ return wechat;
+}]);
+
+app.factory('auth', ['$http','$routeParams', '$q', 'session', 'config',function($http,$routeParams, $q, session,config){
+ //是否已经绑定
+ var isBind = function(){
+ var defer = $q.defer();
+
+ var token = getToken();
+ if(token && token.length>10){
+ defer.resolve(token);
+ } else {
+ var code = window.g_code || $routeParams.code || session.get("code");
+ $http.post(
+ '/wechat/get_bind',
+ {} ///不用传code了,都由服务器来处理
+ ).then(function(response){
+ if(response.data.status!=0){
+ defer.reject(response.data.message);
+ }else {
+ session.save("token", response.data.token);
+ defer.resolve(response.data.token);
+ }
+ }).catch(function(e){
+ defer.reject(e);
+ });
+ }
+
+ return defer.promise;
+ }
+
+ var getToken = function(){
+ return 'token';//session.get("token");
+ }
+ return {get_bind: isBind, token: getToken};
+}]);
+
+app.factory("session", function(){
+ return {
+ save: function(key,value){
+ sessionStorage.setItem(key,value);
+ },
+ get: function(key){
+ return sessionStorage.getItem(key);
+ }
+ }
+});
+
+app.factory('rms', function(){
+ var _saveStorage = {};
+ var save = function(key, value){
+ _saveStorage[key] = value;
+ };
+
+ var get = function(key){
+ return _saveStorage[key];
+ };
+
+ return {save: save, get: get};
+});
+
+app.factory('common', ['$http', 'auth', '$routeParams','rms','config','wx','$location', function($http, auth, $routeParams,rms,config,wx,$location){
+ var addCommonReply = function(id, type, data,args, cb){
+ //先判断有没有绑定
+// $http.post(
+// '/wechat/is_bind',
+// {} ///不用传code了,都由服务器来处理
+// ).then(function(response){
+// console.log(response.data);
+// if(response.data.status != 0){
+// $location.path("/login_tip");
+// }
+// });
+
+ if(!data.comment || data.comment.length<=0){
+ return;
+ }
+
+ var temp = data.comment.replace(/\n/g,' ');
+
+ var userInfo = {
+ type: type,
+ content: temp,
+ token: auth.token()
+ };
+ //回复按钮禁用
+ data.disabled = true;
+
+ $http({
+ method: 'POST',
+ url: apiUrl+ "new_comment/"+id,
+ data: userInfo
+ }).then(function successCallback(response) {
+ //alert("提交成功");
+ //数据提交完成,回复按钮启用
+ console.log(response);
+ if(response.data.status == -1){
+ console.log("回复失败!");
+ data.comment = "";
+ if(response.data.tip == 0){
+ args.scope.replytip = "您不是该私有班级成员,不能回复";
+ }
+ else{
+ args.scope.replytip = "您不是该私有项目成员,不能回复";
+ }
+ return;
+ }
+
+ data.disabled = false;
+ if(typeof cb === 'function'){
+ cb(response.data.subscribe);
+ }
+
+ //保证内外回复数一致
+ activities = rms.get("activities") || [];
+ course_activities = rms.get("course_activities") || [];
+ project_activities = rms.get("project_activities") || [];
+ for(var i in activities){
+ if(activities[i].act_id == id){
+ activities[i].reply_count += 1;
+ break;
+ }
+ }
+ for(var i in course_activities){
+ if(course_activities[i].act_id == id){
+ course_activities[i].reply_count += 1;
+ break;
+ }
+ }
+ for(var i in project_activities){
+ if(project_activities[i].act_id == id){
+ project_activities[i].reply_count += 1;
+ break;
+ }
+ }
+ rms.save("activities",activities);
+ rms.save("course_activities",course_activities);
+ rms.save("project_activities",project_activities);
+
+ }, function errorCallback(response) {
+ });
+ };
+
+// var loadCommonData = function(id, type,replytype,page){
+// return $http({
+// method: 'GET',
+// url: apiUrl+ type + "/" + id+"?token="+auth.token(),
+// })
+// };
+
+ var loadCommonData = function(id, type,replytype,page){
+ return $http({
+ method: 'POST',
+ url: apiUrl+ type + "/" + id,
+ dataType: 'jsonp',
+ data:{token:auth.token(),type:replytype,page:page}
+ })
+ };
+
+ var addCommonPraise = function(act){
+// act.praise_count += 1;
+// act.has_praise = true;
+
+ $http({
+ method: 'POST',
+ url: apiUrl + "praise/" + act.act_id,
+ data:{token:auth.token(),type:act.act_type}
+ }).then(function successCallback(response) {
+ console.log(response.data);
+ }, function errorCallback(response) {
+ });
+
+ };
+
+ var decreaseCommonPraise = function(act){
+// act.praise_count -= 1;
+// act.has_praise = false;
+ $http({
+ method: 'POST',
+ url: apiUrl + "praise/" + act.act_id,
+ data:{token:auth.token(),type:act.act_type}
+ }).then(function successCallback(response) {
+ console.log(response.data);
+ }, function errorCallback(response) {
+ });
+ };
+
+ var init = function(args){
+ args.scope.replytip = "输入回复内容~";
+ args.scope.formData = {comment: ''};
+ var loadData = function(id,replytype,page){
+ loadCommonData(id, args.type,replytype,page).then(function successCallback(response) {
+ console.log(response.data);
+ //--------------分享内容定制-------------
+ var tmptile = "分享动态";
+ var imgUrl = "";
+
+ if(response.data.data.title){
+ tmptile = response.data.data.title;
+ }
+
+ var tmpname = "匿名用户";
+
+ if(response.data.data.user){
+ tmpname = response.data.data.user.realname;
+ imgUrl = window.g_localhost+response.data.data.user.img_url;
+ }
+
+ if(response.data.data.author){
+ tmpname = response.data.data.author.realname;
+ imgUrl = window.g_localhost+response.data.data.author.img_url;
+ }
+
+ var desc = ""
+ if(response.data.data.content){
+ desc = response.data.data.content.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,"");
+ }
+
+ if(response.data.data.description){
+ desc = response.data.data.description.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,"");
+ }
+
+ if(desc.length > 30){
+ desc = desc.substring(0,30)+"...";
+ }
+
+ var title = tmpname+":"+tmptile;
+ console.log("desc = "+desc);
+ console.log("imgUrl= "+imgUrl);
+
+ var link = "";
+
+ if(args.urlName == "discussion"){
+ var urlName = response.data.type_name + "_discussion";
+ link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid +
+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+response.data.data.act_id+
+ "&response_type=code&scope=snsapi_userinfo&state="+urlName+"&connect_redirect=1#wechat_redirect";
+ }
+ else{
+ link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid +
+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+response.data.data.act_id+
+ "&response_type=code&scope=snsapi_userinfo&state="+args.urlName+"&connect_redirect=1#wechat_redirect";
+ }
+
+// if(args.urlName == "discussion"){
+// var urlName = response.data.type_name + "_discussion";
+// link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d" +
+// "&redirect_uri=https://test.forge.trustie.net/wechat/user_activities?id="+response.data.data.act_id+
+// "&response_type=code&scope=snsapi_base&state="+urlName+"&connect_redirect=1#wechat_redirect";
+// }
+// else{
+// link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d" +
+// "&redirect_uri=https://test.forge.trustie.net/wechat/user_activities?id="+response.data.data.act_id+
+// "&response_type=code&scope=snsapi_base&state="+args.urlName+"&connect_redirect=1#wechat_redirect";
+// }
+
+ console.log("link= "+link);
+
+ wxConfig(title,desc,imgUrl,link);
+
+ //--------------分享内容定制-------------
+ args.loadCallback(response.data);
+ }, function errorCallback(response) {
+ });
+ };
+
+ loadData(args.id,0,0);
+ args.scope.addReply = function(data){
+ console.log(data.comment);
+ addCommonReply(args.id, args.replyType, data,args, function(subscribe){
+ args.scope.formData = {comment: ''};
+ if(subscribe == 0){
+ $location.path("/login_tip");
+ return;
+ }
+ else{
+ loadData(args.id,0,0);
+ }
+
+ if(typeof args.replyCallback === 'function'){
+ args.replyCallback();
+ }
+ });
+ };
+
+// 动态详情界面点赞与动态界面的数据要同步 保证进入详情点赞后出来显示一致
+ args.scope.addPraise = function(act){
+ activities = rms.get("activities") || [];
+ course_activities = rms.get("course_activities") || [];
+ project_activities = rms.get("project_activities") || [];
+ for(var i in activities){
+ if(activities[i].act_id == act.act_id){
+ activities[i].praise_count += 1;
+ activities[i].has_praise = true;
+ break;
+ }
+ }
+ for(var i in course_activities){
+ if(course_activities[i].act_id == act.act_id){
+ course_activities[i].praise_count += 1;
+ course_activities[i].has_praise = true;
+ break;
+ }
+ }
+ for(var i in project_activities){
+ if(project_activities[i].act_id == act.act_id){
+ project_activities[i].praise_count += 1;
+ project_activities[i].has_praise = true;
+ break;
+ }
+ }
+ rms.save("activities",activities);
+ rms.save("course_activities",course_activities);
+ rms.save("project_activities",project_activities);
+
+ act.praise_count += 1;
+ act.has_praise = true;
+ addCommonPraise(act);
+ };
+
+ args.scope.decreasePraise = function(act){
+ activities = rms.get("activities") || [];
+ course_activities = rms.get("course_activities") || [];
+ project_activities = rms.get("project_activities") || [];
+ for(var i in activities){
+ if(activities[i].act_id == act.act_id){
+ activities[i].praise_count -= 1;
+ activities[i].has_praise = false;
+ break;
+ }
+ }
+ for(var i in course_activities){
+ if(course_activities[i].act_id == act.act_id){
+ course_activities[i].praise_count -= 1;
+ course_activities[i].has_praise = false;
+ break;
+ }
+ }
+ for(var i in project_activities){
+ if(project_activities[i].act_id == act.act_id){
+ project_activities[i].praise_count -= 1;
+ project_activities[i].has_praise = false;
+ break;
+ }
+ }
+ rms.save("activities",activities);
+ rms.save("course_activities",course_activities);
+ rms.save("project_activities",project_activities);
+
+ act.praise_count -= 1;
+ act.has_praise = false;
+ decreaseCommonPraise(act);
+ };
+
+ args.scope.showMoreReply = function(replytype,data){
+ if(!data.page){
+ data.page = 1;
+ }
+ else{
+ data.page = data.page + 1;
+ }
+
+ loadCommonData(data.id, args.type,replytype,data.page).then(function successCallback(response) {
+ args.loadCallback(response.data);
+ }, function errorCallback(response) {
+ });
+ };
+
+ args.scope.commentreply_path = config.rootPath+ 'templates/comment_reply.html';
+
+ };
+
+ var wxConfig = function(title,desc,imgUrl,link){
+
+ if(title == null || title == ""){
+ title = 'Trustie创新实践平台';
+ }
+
+ if(desc == null || desc == ""){
+ desc = 'Trustie创新实践平台';
+ }
+
+ if(imgUrl == null || imgUrl == ""){
+ imgUrl = window.g_localhost+'/images/wechat/wx_logo.jpg';
+ }
+
+ wx.ready(function(){
+ wx.onMenuShareTimeline({
+ title: title, // 分享标题
+ link: link, // 分享链接
+ imgUrl: imgUrl, // 分享图标
+ success: function () {
+ console.log("share successed.");
+ },
+ cancel: function () {
+ console.log("share canceled.");
+ }
+ });
+
+ wx.onMenuShareAppMessage({
+ title: title, // 分享标题
+ desc: desc, // 分享描述
+ link: link, // 分享链接
+// imgUrl: '', // 分享图标
+ imgUrl: imgUrl, // 分享图标
+// type: '', // 分享类型,music、video或link,不填默认为link
+// dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
+ success: function () {
+ // 用户确认分享后执行的回调函数
+ },
+ cancel: function () {
+ // 用户取消分享后执行的回调函数
+ }
+ });
+ });
+ };
+
+ var checkLogin = function(){
+ $http.post(
+ '/wechat/is_bind',
+ {} ///不用传code了,都由服务器来处理
+ ).then(function(response){
+ console.log(response.data);
+ if(response.data.status != 0){
+ $location.path("/login");
+ return;
+ }
+ });
+ };
+
+ return {init: init, addCommonReply: addCommonReply, loadCommonData: loadCommonData, addCommonPraise: addCommonPraise, decreaseCommonPraise: decreaseCommonPraise, wxConfig: wxConfig, checkLogin: checkLogin};
+}]);
diff --git a/public/javascripts/wechat/others/routes.js b/public/javascripts/wechat/others/routes.js
index 70d1491f4..7311c66c1 100644
--- a/public/javascripts/wechat/others/routes.js
+++ b/public/javascripts/wechat/others/routes.js
@@ -23,13 +23,13 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
controller: 'RegController'
})
.when('/activites', makeRoute('activities.html', 'ActivityController'))
- .when('/issues/:id', makeRoute('issue_detail.html', 'IssueController'))
- .when('/project_discussion/:id', makeRoute('project_discussion.html', 'DiscussionController'))
- .when('/homework/:id', makeRoute('homework_detail.html', 'HomeworkController'))
- .when('/course_notice/:id', makeRoute('course_notice.html', 'CourseNoticeController'))
- .when('/course_discussion/:id', makeRoute('course_discussion.html', 'DiscussionController'))
- .when('/journal_for_message/:id', makeRoute('jour_message_detail.html', 'JournalsController'))
- .when('/blog_comment/:id', makeRoute('blog_detail.html', 'BlogController'))
+ .when('/issues', makeRoute('issue_detail.html', 'IssueController'))
+ .when('/project_discussion', makeRoute('project_discussion.html', 'DiscussionController'))
+ .when('/homework', makeRoute('homework_detail.html', 'HomeworkController'))
+ .when('/course_notice', makeRoute('course_notice.html', 'CourseNoticeController'))
+ .when('/course_discussion', makeRoute('course_discussion.html', 'DiscussionController'))
+ .when('/journal_for_message', makeRoute('jour_message_detail.html', 'JournalsController'))
+ .when('/blog_comment', makeRoute('blog_detail.html', 'BlogController'))
.when('/class', makeRoute('class.html', 'ClassController'))
.when('/new_class', makeRoute('new_class.html', 'NewClassController'))
.when('/edit_class', makeRoute('edit_class.html', 'EditClassController'))
@@ -47,6 +47,7 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
.when('/project_invite_code', {templateUrl: rootPath + 'project_invite_code.html', controller: 'ProjectInviteCodeController'})
.when('/join_project', makeRoute('join_project.html', 'JoinProjectController'))
.when('/review_project_member', makeRoute('review_project_member.html', 'ReviewProjectMemberController'))
+ .when('/login_tip', makeRoute('login_tip.html', 'LoginTipController'))
.otherwise({
redirectTo: '/activites'
});
diff --git a/public/stylesheets/css/common.css b/public/stylesheets/css/common.css
index f704a3f0d..fbce13354 100644
--- a/public/stylesheets/css/common.css
+++ b/public/stylesheets/css/common.css
@@ -4,7 +4,7 @@
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;}
body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;}
div,img,tr,td,table{ border:0;}
-table,tr,td{border:0;cellspacing:0; cellpadding:0;}
+table,tr,td{border:0;}
ol,ul,li{ list-style-type:none}
blockquote {
border:1px solid #d4d4d4;
diff --git a/public/stylesheets/css/project.css b/public/stylesheets/css/project.css
index 95891d365..1c7563a58 100644
--- a/public/stylesheets/css/project.css
+++ b/public/stylesheets/css/project.css
@@ -372,7 +372,7 @@ tr.entry td.filename_no_report { width: 40%; }
tr.entry td.size { text-align: right; font-size: 90%; }
tr.entry td.revision, tr.entry td.author { text-align: center; }
tr.entry td.age { text-align: right; }
-tr.entry.file td.filename a { margin-center: 16px; }
+tr.entry.file td.filename a { }
tr.entry.file td.filename_no_report a { margin-left: 16px; }
tr span.expander {background-image: url(/images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
diff --git a/public/stylesheets/css/structure.css b/public/stylesheets/css/structure.css
index c9a4059e0..1d2c106e2 100644
--- a/public/stylesheets/css/structure.css
+++ b/public/stylesheets/css/structure.css
@@ -1,5 +1,3 @@
-/*将header.css文件和public.css,new_user.css中的内容统一*/
-
@charset "utf-8";
/* CSS Document */
@@ -34,7 +32,7 @@ a:hover.search_btn{ background: #0fa9bb;}
a.parent {background: url(/images/arrowList.png) -30px 3px no-repeat; width:95px; padding-right:50px;}
a.parent:hover {background: url(/images/arrowList.png) -30px -14px no-repeat; width:95px; padding-right:50px; color:#fe7d68;}
a.linkToOrange:hover {color:#fe7d68;}
-#userInfo ul li {positon: relative;}
+#userInfo ul li {position: relative;}
#userInfo ul li ul {display:none;}
#userInfo ul li:hover ul {display:block; position:absolute;}
#userInfo ul li:hover ul li ul {display:none;}
@@ -383,7 +381,7 @@ ul.subNavArrow:hover li ul {display:block;}
.currentDd{color:#0781b4;}
.currentDt{background-color:#fff;}
.navContent{display: none;border-bottom:solid 1px #e5e3da; }
-.navContent li a{display:block;width:240px;heigh:28px;text-align:center;font-size:12px;line-height:28px;color:#333}
+.navContent li a{display:block;width:240px;height:28px;text-align:center;font-size:12px;line-height:28px;color:#333}
.navContent li a:hover{color:#fff;background-color:#b3e0ee}
a.subnav_num{ font-weight:normal; color:#ff7143; font-size:12px;}
a.subnav_green{ background:#28be6c; color:#fff; font-size:12px; font-weight:normal;height:18px; padding:0px 5px; padding-top:2px; display:block; margin-top:2px; margin-bottom:5px; float:right; margin-right:5px;line-height:1.4 !important;}
diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css
index 8eabdd420..7375fc80c 100644
--- a/public/stylesheets/weui/weixin.css
+++ b/public/stylesheets/weui/weixin.css
@@ -87,6 +87,7 @@ a.underline {text-decoration:underline;}
.btn-disabled {background-color:#ccc !important;}
.btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;}
.btn3 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; border-radius:50px; display:block;}
+.btn4 {width:150px; height:40px; line-height:40px; vertical-align:middle; text-align:center; color:#fff; display:inline-block; border-radius:5px;}
.fixed-bottom-btn {position:fixed; bottom:5px; left:50%; transform:translate(-50%,0);}
/*tab*/
@@ -178,7 +179,7 @@ a.underline {text-decoration:underline;}
.invitation-code-wrap {text-align:center; font-size:18px; color:#3b3b3b; padding:16px;}
.share-code-wrap {width:100%; background-color:#efeff4;}
.share-code-btn, .finish-btn {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; background-color:#ff7239; margin:18px auto 20px auto; border-radius:50px; display:block;}
-.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:0 auto;}
+.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:20px auto 30px;}
/*20160613班级详情*/
.class-detail-name, .blue-title {width:100%; height:45px; line-height:45px; vertical-align:middle; background-color:#3b94d6; color:#fff; font-size:18px; text-align:center;}
@@ -216,9 +217,10 @@ a.underline {text-decoration:underline;}
.border-bottom-none {border-bottom:none !important;}
.border-top-none {border-top:none !important;}
.students-amount {height:14px; line-height:14px; vertical-align:middle; padding:2px 5px; background-color:#e6e6e6; border-radius:10px;}
+.amount-arrow {height:14px; line-height:14px; vertical-align:middle; margin-top:12px;}
.new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
.join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
-.new-class-input {width:60%; color:#555; height:16px; line-height:16px; vertical-align:middle; border:none; outline:none; padding:8px 0;}
+.new-class-input {width:60%; color:#555; height:16px; line-height:16px; border:none; outline:none; padding:11px 0;}
.class-list-setting {position:absolute; top:11px; right:10px;}
.class-setting-wrap {width:38px; height:38px; position:absolute; top:0; right:0;}
@@ -230,8 +232,7 @@ a.underline {text-decoration:underline;}
.login-box{display:inline-block; width:14px; height:14px; line-height:14px; text-align:center; vertical-align:middle; border:1px solid #ccc; background:#fff; border-radius:3px; color:#fff; cursor:pointer;}
.login-box.checked{background:#63c360; border:1px solid #63c360;}
.login-box.checked:after{content:url(/images/wechat/checked.png);}
-.forget-psw-wrap {width:60px; margin:0 auto;}
-.forget-psw {position:fixed; bottom:10px;}
+.forget-psw-wrap {width:60px; margin:30px auto;}
/*二级回复*/
.mult-reply-container{ border:solid 1px #f3ddb3; background:#fffef4; padding:4px;color:#999;}
@@ -247,4 +248,13 @@ a.underline {text-decoration:underline;}
/*新建说明*/
.new-tip {line-height:2;}
-.new-tip li {position:relative; padding-left:10px;}
\ No newline at end of file
+.new-tip li {position:relative; padding-left:10px;}
+
+/*20160810绑定说明*/
+.ac-wrap {text-align:center;}
+.ac-content {display:inline-block; line-height:2;}
+.ac-content li {position:relative; text-align:left; padding-left:5px;}
+
+/*发布帖子,通知*/
+.full-width-wrap {padding:5px 15px; background-color:#fff; border-top:1px solid #ddd; border-bottom:1px solid #ddd;}
+.full-width-textarea {width:100%; height:180px; line-height:18px; max-height:180px; border:none; resize:none; font-size:13px; color:#555;}
\ No newline at end of file