| @@ -1,5 +1,5 @@ | |||||
| class OwnersController < ApplicationController | class OwnersController < ApplicationController | ||||
| before_action :require_login | |||||
| before_action :require_login, only: [:index] | |||||
| def index | def index | ||||
| @owners = [] | @owners = [] | ||||
| @@ -9,4 +9,42 @@ class OwnersController < ApplicationController | |||||
| teams: {can_create_org_project: true}) | teams: {can_create_org_project: true}) | ||||
| .distinct | .distinct | ||||
| end | end | ||||
| def show | |||||
| @owner = Owner.find_by(login: params[:id]) || Owner.find_by(id: params[:id]) | |||||
| # 组织 | |||||
| if @owner.is_a?(Organization) | |||||
| @can_create_project = @owner.can_create_project?(current_user.id) | |||||
| @is_admin = current_user.admin? || @owner.is_owner?(current_user.id) | |||||
| @is_member = @owner.is_member?(current_user.id) | |||||
| # 用户 | |||||
| else | |||||
| #待办事项,现在未做 | |||||
| if User.current.admin? || User.current.login == @owner.login | |||||
| @waiting_applied_messages = @owner.applied_messages.waiting | |||||
| @common_applied_transfer_projects = AppliedTransferProject.where(owner_id: @owner.id).common + AppliedTransferProject.where(owner_id: Organization.joins(team_users: :team).where(team_users: {user_id: @owner.id}, teams: {authorize: %w(admin owner)} )).common | |||||
| @common_applied_projects = AppliedProject.where(project_id: @owner.full_admin_projects).common | |||||
| @undo_events = @waiting_applied_messages.size + @common_applied_transfer_projects.size + @common_applied_projects.size | |||||
| else | |||||
| @waiting_applied_messages = AppliedMessage.none | |||||
| @common_applied_transfer_projects = AppliedTransferProject.none | |||||
| @common_applied_projects = AppliedProject.none | |||||
| @undo_events = 0 | |||||
| end | |||||
| #用户的组织数量 | |||||
| # @user_composes_count = @user.composes.size | |||||
| @user_composes_count = 0 | |||||
| user_organizations = User.current.logged? ? @owner.organizations.with_visibility(%w(common limited)) + @owner.organizations.with_visibility("privacy").joins(:team_users).where(team_users: {user_id: current_user.id}) : @owner.organizations.with_visibility("common") | |||||
| @user_org_count = user_organizations.size | |||||
| normal_projects = Project.members_projects(@owner.id).to_sql | |||||
| org_projects = Project.joins(team_projects: [team: :team_users]).where(team_users: {user_id: @owner.id}).to_sql | |||||
| projects = Project.from("( #{ normal_projects} UNION #{ org_projects } ) AS projects").distinct | |||||
| user_projects = User.current.logged? && (User.current.admin? || User.current.login == @owner.login) ? projects : projects.visible | |||||
| @projects_common_count = user_projects.common.size | |||||
| @projects_mirrior_count = user_projects.mirror.size | |||||
| @projects_sync_mirrior_count = user_projects.sync_mirror.size | |||||
| puts @owner.as_json | |||||
| end | |||||
| end | |||||
| end | end | ||||
| @@ -0,0 +1,24 @@ | |||||
| json.type @owner.type | |||||
| if @owner.is_a?(Organization) | |||||
| json.partial! "organizations/detail", organization: @owner | |||||
| json.can_create_project @can_create_project | |||||
| json.is_admin @is_admin | |||||
| json.is_member @is_member | |||||
| else | |||||
| json.partial! 'users/user', locals: { user: @owner } | |||||
| json.undo_messages @waiting_applied_messages.size | |||||
| json.undo_transfer_projects @common_applied_transfer_projects.size | |||||
| json.undo_join_projects @common_applied_projects.size | |||||
| json.undo_events @undo_events | |||||
| json.user_composes_count @user_composes_count | |||||
| json.user_org_count @user_org_count | |||||
| json.common_projects_count @projects_common_count | |||||
| json.mirror_projects_count @projects_mirrior_count | |||||
| json.sync_mirror_projects_count @projects_sync_mirrior_count | |||||
| json.created_time format_time(@owner.created_on) | |||||
| json.email @owner.show_email ? @owner.mail : nil | |||||
| json.province @owner.show_location ? @owner.province : nil | |||||
| json.city @owner.show_location ? @owner.city : nil | |||||
| json.custom_department @owner.show_department ? @owner.custom_department : nil | |||||
| json.description @owner.description | |||||
| end | |||||
| @@ -1,20 +1,20 @@ | |||||
| json.user_id user.id | json.user_id user.id | ||||
| json.name user.full_name | json.name user.full_name | ||||
| json.username @user.full_name | |||||
| json.real_name @user.real_name | |||||
| json.username user.full_name | |||||
| json.real_name user.real_name | |||||
| json.grade user.grade | json.grade user.grade | ||||
| json.gender @user.gender | |||||
| json.login @user.login | |||||
| json.user_id @user.id | |||||
| json.image_url url_to_avatar(@user) | |||||
| json.admin @user.admin? | |||||
| json.user_identity @user.identity | |||||
| json.is_watch current_user&.watched?(@user) | |||||
| json.watched_count @user.fan_count #粉丝 | |||||
| json.watching_count @user.follow_count #关注数 | |||||
| json.created_time format_time(@user.created_on) | |||||
| json.email @user.show_email ? @user.mail : nil | |||||
| json.province @user.show_location ? @user.province : nil | |||||
| json.city @user.show_location ? @user.city : nil | |||||
| json.custom_department @user.show_department ? @user.custom_department : nil | |||||
| json.description @user.description | |||||
| json.gender user.gender | |||||
| json.login user.login | |||||
| json.user_id user.id | |||||
| json.image_url url_to_avatar(user) | |||||
| json.admin user.admin? | |||||
| json.user_identity user.identity | |||||
| json.is_watch current_user&.watched?(user) | |||||
| json.watched_count user.fan_count #粉丝 | |||||
| json.watching_count user.follow_count #关注数 | |||||
| json.created_time format_time(user.created_on) | |||||
| json.email user.show_email ? user.mail : nil | |||||
| json.province user.show_location ? user.province : nil | |||||
| json.city user.show_location ? user.city : nil | |||||
| json.custom_department user.show_department ? user.custom_department : nil | |||||
| json.description user.description | |||||
| @@ -107,7 +107,7 @@ Rails.application.routes.draw do | |||||
| put 'commons/unhidden', to: 'commons#unhidden' | put 'commons/unhidden', to: 'commons#unhidden' | ||||
| delete 'commons/delete', to: 'commons#delete' | delete 'commons/delete', to: 'commons#delete' | ||||
| resources :owners, only: [:index] | |||||
| resources :owners, only: [:index, :show] | |||||
| scope module: :organizations do | scope module: :organizations do | ||||
| resources :organizations, except: [:edit, :new] do | resources :organizations, except: [:edit, :new] do | ||||