glitch-soc/mastodon

View on GitHub
app/views/admin/custom_emojis/index.html.haml

Summary

Maintainability
Test Coverage
- content_for :page_title do
  = t('admin.custom_emojis.title')

- if can?(:create, :custom_emoji)
  - content_for :heading_actions do
    = link_to t('admin.custom_emojis.upload'), new_admin_custom_emoji_path, class: 'button'

.filters
  .filter-subset
    %strong= t('admin.accounts.location.title')
    %ul
      %li= filter_link_to t('admin.accounts.location.all'), local: nil, remote: nil
      %li
        - if selected? local: '1', remote: nil
          = filter_link_to t('admin.accounts.location.local'), { local: nil, remote: nil }, { local: '1', remote: nil }
        - else
          = filter_link_to t('admin.accounts.location.local'), local: '1', remote: nil
      %li
        - if selected? remote: '1', local: nil
          = filter_link_to t('admin.accounts.location.remote'), { remote: nil, local: nil }, { remote: '1', local: nil }
        - else
          = filter_link_to t('admin.accounts.location.remote'), remote: '1', local: nil

= form_with url: admin_custom_emojis_url, method: :get, class: :simple_form do |form|
  .fields-group
    - CustomEmojiFilter::KEYS.each do |key|
      = form.hidden_field key, value: params[key] if params[key].present?

    - %i(shortcode by_domain).each do |key|
      .input.string.optional
        = form.text_field key,
                          value: params[key],
                          class: 'string optional',
                          placeholder: I18n.t("admin.custom_emojis.#{key}")

    .actions
      %button.button= t('admin.accounts.search')
      = link_to t('admin.accounts.reset'), admin_custom_emojis_path, class: 'button negative'

= form_with model: @form, url: batch_admin_custom_emojis_path do |f|
  = hidden_field_tag :page, params[:page] || 1

  - CustomEmojiFilter::KEYS.each do |key|
    = hidden_field_tag key, params[key] if params[key].present?

  .batch-table
    .batch-table__toolbar
      %label.batch-table__toolbar__select.batch-checkbox-all
        = check_box_tag :batch_checkbox_all, nil, false
      .batch-table__toolbar__actions
        - if params[:local] == '1'
          = f.button safe_join([material_symbol('save'), t('generic.save_changes')]), name: :update, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

          = f.button safe_join([material_symbol('visibility'), t('admin.custom_emojis.list')]), name: :list, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

          = f.button safe_join([material_symbol('visibility_off'), t('admin.custom_emojis.unlist')]), name: :unlist, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

        = f.button safe_join([material_symbol('radio_button_checked'), t('admin.custom_emojis.enable')]), name: :enable, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

        = f.button safe_join([material_symbol('radio_button_unchecked'), t('admin.custom_emojis.disable')]), name: :disable, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

        - if can?(:destroy, :custom_emoji)
          = f.button safe_join([material_symbol('close'), t('admin.custom_emojis.delete')]), name: :delete, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

        - if can?(:copy, :custom_emoji) && params[:local] != '1'
          = f.button safe_join([material_symbol('content_copy'), t('admin.custom_emojis.copy')]), name: :copy, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }

    - if params[:local] == '1'
      .batch-table__form.simple_form
        .fields-row
          .fields-group.fields-row__column.fields-row__column-6
            .input.select.optional
              .label_input
                = f.select :category_id,
                           options_from_collection_for_select(CustomEmojiCategory.all, 'id', 'name'),
                           'aria-label': t('admin.custom_emojis.assign_category'),
                           class: 'select optional',
                           prompt: t('admin.custom_emojis.assign_category')

          .fields-group.fields-row__column.fields-row__column-6
            .input.string.optional
              .label_input
                = f.text_field :category_name,
                               'aria-label': t('admin.custom_emojis.create_new_category'),
                               class: 'string optional',
                               placeholder: t('admin.custom_emojis.create_new_category')

    .batch-table__body
      - if @custom_emojis.empty?
        = nothing_here 'nothing-here--under-tabs'
      - else
        = render partial: 'custom_emoji', collection: @custom_emojis, locals: { f: f }

= paginate @custom_emojis