You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

at_controller.rb 4.7 kB

​
​
​
​
10 years ago
​
10 years ago
10 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
11 years ago
​
​
​
​
​
​
​
​
11 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
11 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. #coding=utf-8
  2. class AtController < ApplicationController
  3. respond_to :json
  4. def show
  5. @logger = Logger.new(Rails.root.join('log', 'at.log').to_s)
  6. users = find_at_users(params[:type], params[:id])
  7. @users = users
  8. @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
  9. #加上all
  10. if User.current.logged? && @users.size > 0
  11. allUser = Struct.new(:id, :name).new
  12. allUser.id = @users.map{|u| u.id}.join(",")
  13. allUser.name = "all"
  14. @users.insert(0, allUser)
  15. end
  16. @users
  17. end
  18. private
  19. def to_pinyin(s)
  20. Pinyin.t(s).downcase
  21. end
  22. def find_at_users(type, id)
  23. @logger.info("#{type}, #{id}")
  24. case type
  25. when "Issue"
  26. find_issue(id)
  27. when 'Project'
  28. find_project(id)
  29. when 'Course'
  30. find_course(id)
  31. when 'Activity', 'CourseActivity', 'ForgeActivity','UserActivity', 'OrgActivity','PrincipalActivity'
  32. find_activity(id, type)
  33. when 'Attachment'
  34. find_attachment(id)
  35. when 'Message'
  36. find_message(id)
  37. when 'HomeworkCommon'
  38. find_homework(id)
  39. when 'Topic'
  40. find_topic(id)
  41. when 'JournalsForMessage'
  42. find_journals_for_message(id)
  43. when 'Principal'
  44. find_principal(id)
  45. when 'BlogComment'
  46. find_blog_comment(id)
  47. when 'All'
  48. nil
  49. else
  50. nil
  51. end
  52. end
  53. def find_topic(id)
  54. end
  55. def find_issue(id)
  56. #1. issues list persons
  57. #2. project persons
  58. issue = Issue.find(id)
  59. journals = issue.journals
  60. at_persons = journals.map(&:user) + issue.project.users
  61. at_persons.uniq { |u| u.id }.delete_if { |u| u.id == User.current.id }
  62. end
  63. def find_project(id)
  64. return [] if id.to_i<0
  65. at_persons = Project.find(id).users
  66. at_persons.delete_if { |u| u.id == User.current.id }
  67. end
  68. def find_course(id)
  69. at_persons = Course.find(id).users
  70. at_persons.delete_if { |u| u.id == User.current.id }
  71. end
  72. def find_activity(id, type)
  73. ## 基本上是本类型中的 加上所属类型的用户
  74. case type
  75. when 'Activity'
  76. activity = Activity.find(id)
  77. (find_at_users(activity.act_type, activity.act_id) ||[]) +
  78. (find_at_users(activity.activity_container_type, activity.activity_container_id) || [])
  79. when 'CourseActivity'
  80. activity = CourseActivity.find(id)
  81. (find_at_users(activity.course_act_type, activity.course_act_id) || []) + (find_course(activity.course.id) || [])
  82. when 'ForgeActivity'
  83. activity = ForgeActivity.find(id)
  84. (find_at_users(activity.forge_act_type, activity.forge_act_id) ||[]) +
  85. (find_project(activity.project_id) || [])
  86. when 'UserActivity'
  87. activity = UserActivity.find(id)
  88. (find_at_users(activity.act_type, activity.act_id) || []) +
  89. (find_at_users(activity.container_type, activity.container_id) || [])
  90. when 'OrgActivity'
  91. activity = OrgActivity.find(id)
  92. (find_at_users(activity.org_act_type, activity.org_act_id) || []) +
  93. (find_at_users(activity.container_type, activity.container_id) || [])
  94. when 'PrincipalActivity'
  95. activity = PrincipalActivity.find(id)
  96. find_at_users(activity.principal_act_type, activity.principal_act_id)
  97. else
  98. nil
  99. end
  100. end
  101. #作业应该是关联课程,取课程的用户列表
  102. def find_homework(id)
  103. homework = HomeworkCommon.find(id)
  104. find_course(homework.course_id)
  105. end
  106. def find_attachment(id)
  107. attachment = Attachment.find(id)
  108. find_at_users(attachment.container_type, attachment.container_id)
  109. end
  110. #Message
  111. def find_message(id)
  112. message = Message.find(id)
  113. at_persons = message.board.messages.map(&:author)
  114. (at_persons || []) + (find_project(message.board.project_id)||[])
  115. end
  116. #News
  117. def find_news(id)
  118. find_project(News.find(id).project_id)
  119. end
  120. #JournalsForMessage
  121. def find_journals_for_message(id)
  122. jounrnal = JournalsForMessage.find(id)
  123. if jounrnal.jour_type == 'Principal'
  124. [jounrnal.user] + (JournalsForMessage.where(m_reply_id: id).map(&:user) || [])
  125. else
  126. find_at_users(jounrnal.jour_type, jounrnal.jour_id)
  127. end
  128. end
  129. #Poll
  130. def find_poll(id)
  131. end
  132. #Journal
  133. def find_journal(id)
  134. end
  135. #Document
  136. def find_document(id)
  137. find_project(Document.find(id).project_id)
  138. end
  139. #ProjectCreateInfo
  140. def find_project_create_info(id)
  141. end
  142. #Principal
  143. def find_principal(id)
  144. end
  145. #BlogComment
  146. def find_blog_comment(id)
  147. blog = BlogComment.find(id)
  148. blog.author.watcher_users
  149. end
  150. end

软件技术创新是当今国家整体创新能力的重要基础和发展引擎。近年来,大众参与的软件创新与创业活动已经成为网络时代软件开发和应用的新形态,正在快速改变着全球软件创新模式和软件产业格局。 ...