Class: EditDirectoryColumnsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/edit_directory_columns_controller.rb

Constant Summary

Constants inherited from ApplicationController

ApplicationController::LEGACY_NO_THEMES, ApplicationController::LEGACY_NO_UNOFFICIAL_PLUGINS, ApplicationController::NO_PLUGINS, ApplicationController::NO_THEMES, ApplicationController::NO_UNOFFICIAL_PLUGINS, ApplicationController::SAFE_MODE

Constants included from CanonicalURL::ControllerExtensions

CanonicalURL::ControllerExtensions::ALLOWED_CANONICAL_PARAMS

Instance Attribute Summary

Attributes inherited from ApplicationController

#theme_id

Instance Method Summary collapse

Methods inherited from ApplicationController

#application_layout, #can_cache_content?, #clear_notifications, #conditionally_allow_site_embedding, #current_homepage, #discourse_expires_in, #dont_cache_page, #ember_cli_required?, #fetch_user_from_params, #guardian, #handle_permalink, #handle_theme, #handle_unverified_request, #has_escaped_fragment?, #immutable_for, #no_cookies, #perform_refresh_session, #post_ids_including_replies, #preload_json, #rate_limit_second_factor!, #redirect_with_client_support, #render_json_dump, #render_serialized, requires_plugin, #rescue_discourse_actions, #resolve_safe_mode, #secure_session, #serialize_data, #set_current_user_for_logs, #set_layout, #set_mobile_view, #set_mp_snapshot_fields, #show_browser_update?, #store_preloaded, #use_crawler_layout?, #with_resolved_locale

Methods included from VaryHeader

#ensure_vary_header

Methods included from ReadOnlyMixin

#add_readonly_header, #allowed_in_staff_writes_only_mode?, #block_if_readonly_mode, #check_readonly_mode, included, #staff_writes_only_mode?

Methods included from Hijack

#hijack

Methods included from GlobalPath

#cdn_path, #cdn_relative_path, #full_cdn_url, #path, #upload_cdn_path

Methods included from JsonError

#create_errors_json

Methods included from CanonicalURL::ControllerExtensions

#canonical_url, #default_canonical, included

Methods included from CurrentUser

#clear_current_user, #current_user, has_auth_cookie?, #is_api?, #is_user_api?, #log_off_user, #log_on_user, lookup_from_env, #refresh_session

Instance Method Details

#indexObject



7
8
9
10
11
12
# File 'app/controllers/edit_directory_columns_controller.rb', line 7

def index
  ensure_user_fields_have_columns

  columns = DirectoryColumn.includes(:user_field).all
  render_json_dump(directory_columns: serialize_data(columns, EditDirectoryColumnSerializer))
end

#updateObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'app/controllers/edit_directory_columns_controller.rb', line 14

def update
  params.require(:directory_columns)
  directory_column_params = params.permit(directory_columns: {})
  directory_columns = DirectoryColumn.all

  has_enabled_column =
    directory_column_params[:directory_columns].values.any? do |column_data|
      column_data[:enabled].to_s == "true"
    end
  unless has_enabled_column
    raise Discourse::InvalidParameters, "Must have at least one column enabled"
  end

  new_values = ""
  previous_values = ""
  staff_action_logger = StaffActionLogger.new(current_user)

  directory_column_params[:directory_columns].values.each do |column_data|
    existing_column = directory_columns.detect { |c| c.id == column_data[:id].to_i }
    if (
         existing_column.enabled != ActiveModel::Type::Boolean.new.cast(column_data[:enabled]) ||
           existing_column.position != column_data[:position].to_i
       )
      new_value, previous_value =
        staff_action_logger.edit_directory_columns_details(column_data, existing_column)

      new_values += new_value
      previous_values += previous_value

      existing_column.update(
        enabled: column_data[:enabled],
        position: column_data[:position].to_i,
      )
    end
  end

  details = {}

  staff_action_logger.log_custom(
    "update_directory_columns",
    { previous_value: previous_values, new_value: new_values },
  )
  render json: success_json
end