Browse Source

[ADD]search is_member is_admin

tags/v3.0.1
viletyy 5 years ago
parent
commit
152e301bf3
12 changed files with 51 additions and 3 deletions
  1. +2
    -0
      app/controllers/organizations/organization_users_controller.rb
  2. +2
    -0
      app/controllers/organizations/organizations_controller.rb
  3. +13
    -0
      app/controllers/organizations/projects_controller.rb
  4. +3
    -0
      app/controllers/organizations/team_users_controller.rb
  5. +2
    -0
      app/controllers/organizations/teams_controller.rb
  6. +4
    -0
      app/models/organization.rb
  7. +4
    -0
      app/models/team.rb
  8. +3
    -1
      app/views/organizations/organizations/show.json.jbuilder
  9. +9
    -0
      app/views/organizations/projects/search.json.jbuilder
  10. +1
    -0
      app/views/organizations/team_projects/_detail.json.jbuilder
  11. +3
    -1
      app/views/organizations/teams/show.json.jbuilder
  12. +5
    -1
      config/routes.rb

+ 2
- 0
app/controllers/organizations/organization_users_controller.rb View File

@@ -4,6 +4,8 @@ class Organizations::OrganizationUsersController < Organizations::BaseController

def index
@organization_users = @organization.organization_users.includes(:user)
search = params[:search].to_s.downcase
@organization_users = @organization_users.joins(:user).where("LOWER(concat(users.lastname, users.firstname, users.login, users.mail, users.nickname)) LIKE ?", "%#{search.split(" ").join('|')}%") if search.present?

@organization_users = kaminari_paginate(@organization_users)
end


+ 2
- 0
app/controllers/organizations/organizations_controller.rb View File

@@ -18,6 +18,8 @@ class Organizations::OrganizationsController < Organizations::BaseController
end

def show
@is_admin = can_edit_org?
@is_member = @organization.is_member?(current_user.id)
end

def create


+ 13
- 0
app/controllers/organizations/projects_controller.rb View File

@@ -14,6 +14,19 @@ class Organizations::ProjectsController < Organizations::BaseController
@projects = paginate(@projects)
end

def search
tip_exception("请输入搜索关键词") if params[:search].nil?
public_projects_sql = @organization.projects.where(is_public: true).to_sql
private_projects_sql = @organization.projects
.where(is_public: false)
.joins(team_projects: {team: :team_users})
.where(team_users: {user_id: current_user.id}).to_sql
@projects = Project.from("( #{ public_projects_sql} UNION #{ private_projects_sql } ) AS projects")

@projects = @projects.ransack(name_or_identifier_cont: params[:search]).result
@projects = @projects.includes(:owner).order("projects.#{sort} #{sort_direction}")
end

private

def load_organization


+ 3
- 0
app/controllers/organizations/team_users_controller.rb View File

@@ -7,6 +7,9 @@ class Organizations::TeamUsersController < Organizations::BaseController
def index
@team_users = @team.team_users

search = params[:search].to_s.downcase
@team_users = @team_users.joins(:user).where("LOWER(concat(users.lastname, users.firstname, users.login, users.mail, users.nickname)) LIKE ?", "%#{search.split(" ").join('|')}%") if search.present?

@team_users = kaminari_paginate(@team_users)
end



+ 2
- 0
app/controllers/organizations/teams_controller.rb View File

@@ -14,6 +14,8 @@ class Organizations::TeamsController < Organizations::BaseController
end

def show
@is_admin = can_edit_org?
@is_member = @team.is_member?(current_user.id)
end

def create


+ 4
- 0
app/models/organization.rb View File

@@ -78,6 +78,10 @@ class Organization < Owner
self.create!(login: name, gitea_token: gitea_token)
end

def is_member?(user_id)
organization_users.where(user_id: user_id).present?
end

def is_owner?(user_id)
team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(owner)}).present?
end


+ 4
- 0
app/models/team.rb View File

@@ -47,4 +47,8 @@ class Team < ApplicationRecord
end
end

def is_member?(user_id)
team_users.where(user_id: user_id).present?
end

end

+ 3
- 1
app/views/organizations/organizations/show.json.jbuilder View File

@@ -1 +1,3 @@
json.partial! "detail", organization: @organization
json.partial! "detail", organization: @organization
json.is_admin @is_admin
json.is_member @is_member

+ 9
- 0
app/views/organizations/projects/search.json.jbuilder View File

@@ -0,0 +1,9 @@
json.total_count @projects.size
json.projects @projects.each do |project|
json.(project, :id, :name, :identifier, :description, :forked_count, :praises_count, :forked_from_project_id)
json.mirror_url project.repository&.mirror_url
json.type project.numerical_for_project_type
json.praised project.praised_by?(current_user)
json.last_update_time render_unix_time(project.updated_on)
json.time_ago time_from_now(project.updated_on)
end

+ 1
- 0
app/views/organizations/team_projects/_detail.json.jbuilder View File

@@ -1,6 +1,7 @@
json.id team_project.id
json.project do
json.owner_name team_project&.project&.owner&.login
json.owner_image_url url_to_avatar(team_project&.project&.owner)
json.name team_project&.project&.name
json.identifier team_project&.project&.identifier
end

+ 3
- 1
app/views/organizations/teams/show.json.jbuilder View File

@@ -1 +1,3 @@
json.partial! "detail", team: @team, organization: @organization
json.partial! "detail", team: @team, organization: @organization
json.is_admin @is_admin
json.is_member @is_member

+ 5
- 1
config/routes.rb View File

@@ -120,7 +120,11 @@ Rails.application.routes.draw do
end
resources :team_projects, only: [:index, :create, :destroy] do ;end
end
resources :projects, only: [:index]
resources :projects, only: [:index] do
collection do
get :search
end
end
end
end


Loading…
Cancel
Save