Class: Admin::UserFieldsController

Inherits:
AdminController
  • Object
show all
Defined in:
app/controllers/admin/user_fields_controller.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.columnsObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/controllers/admin/user_fields_controller.rb', line 4

def self.columns
  columns = %i[
    name
    field_type
    editable
    description
    requirement
    show_on_profile
    show_on_user_card
    position
    searchable
  ]
  DiscoursePluginRegistry.apply_modifier(:admin_user_fields_columns, columns)
end

Instance Method Details

#createObject



19
20
21
22
23
24
25
26
# File 'app/controllers/admin/user_fields_controller.rb', line 19

def create
  field = UserField.new(params.require(:user_field).permit(*Admin::UserFieldsController.columns))

  field.position = (UserField.maximum(:position) || 0) + 1
  update_options(field)

  json_result(field, serializer: UserFieldSerializer) { field.save }
end

#destroyObject



60
61
62
63
64
# File 'app/controllers/admin/user_fields_controller.rb', line 60

def destroy
  field = UserField.where(id: params.require(:id)).first
  field.destroy if field.present?
  render json: success_json
end

#editObject



38
39
# File 'app/controllers/admin/user_fields_controller.rb', line 38

def edit
end

#indexObject



28
29
30
31
# File 'app/controllers/admin/user_fields_controller.rb', line 28

def index
  user_fields = UserField.all.includes(:user_field_options).order(:position)
  render_serialized(user_fields, UserFieldSerializer, root: "user_fields")
end

#showObject



33
34
35
36
# File 'app/controllers/admin/user_fields_controller.rb', line 33

def show
  user_field = UserField.find(params[:id])
  render_serialized(user_field, UserFieldSerializer)
end

#updateObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/controllers/admin/user_fields_controller.rb', line 41

def update
  field_params = params[:user_field]
  field = UserField.where(id: params.require(:id)).first

  Admin::UserFieldsController.columns.each do |col|
    field.public_send("#{col}=", field_params[col]) unless field_params[col].nil?
  end
  update_options(field)

  if field.save
    if !field.show_on_profile && !field.show_on_user_card
      DirectoryColumn.where(user_field_id: field.id).destroy_all
    end
    render_serialized(field, UserFieldSerializer, root: "user_field")
  else
    render_json_error(field)
  end
end