116 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
module ManageBackHelper
 | 
						|
  extend ActiveSupport::Concern
 | 
						|
 | 
						|
  def sidebar_item_group(url, text, **opts)
 | 
						|
    link_opts = url.start_with?('/') ? {} : { 'data-toggle': 'collapse', 'aria-expanded': false }
 | 
						|
    content =
 | 
						|
      link_to url, link_opts do
 | 
						|
        content_tag(:i, '', class: "fa fa-#{opts[:icon]}", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) +
 | 
						|
          content_tag(:span, text)
 | 
						|
      end
 | 
						|
 | 
						|
    content +=
 | 
						|
      content_tag(:ul, id: url[1..-1], class: 'collapse list-unstyled', "data-parent": '#sidebar') do
 | 
						|
        yield
 | 
						|
      end
 | 
						|
 | 
						|
    raw content
 | 
						|
  end
 | 
						|
 | 
						|
  def sidebar_item(url, text, **opts)
 | 
						|
    content =
 | 
						|
      link_to url, 'data-controller': opts[:controller] do
 | 
						|
        content_tag(:i, '', class: "fa fa-#{opts[:icon]} fa-fw", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) +
 | 
						|
          content_tag(:span, text)
 | 
						|
      end
 | 
						|
 | 
						|
    raw content
 | 
						|
  end
 | 
						|
 | 
						|
  def admin_sidebar_controller
 | 
						|
    key = params[:controller].to_s.gsub(/\//, '-')
 | 
						|
    SidebarUtil.controller_name(key) || key
 | 
						|
  end
 | 
						|
  alias_method :sidebar_controller, :admin_sidebar_controller
 | 
						|
 | 
						|
  def define_admin_breadcrumbs(&block)
 | 
						|
    content_for(:setup_admin_breadcrumb, &block)
 | 
						|
  end
 | 
						|
  alias_method :define_breadcrumbs, :define_admin_breadcrumbs
 | 
						|
 | 
						|
  def add_admin_breadcrumb(text, url = nil)
 | 
						|
    @_breadcrumbs ||= []
 | 
						|
    @_breadcrumbs << OpenStruct.new(text: text, url: url)
 | 
						|
  end
 | 
						|
  alias_method :add_breadcrumb, :add_admin_breadcrumb
 | 
						|
 | 
						|
  def display_text(str, default = '--')
 | 
						|
    str.presence || default
 | 
						|
  end
 | 
						|
 | 
						|
  def overflow_hidden_span(text, width: 300, placement: nil)
 | 
						|
    opts = { class: 'd-inline-block text-truncate', style: "max-width: #{width}px" }
 | 
						|
    opts.merge!('data-toggle': 'tooltip', title: text) if text != '--'
 | 
						|
    opts.merge!('data-placement': placement) if placement
 | 
						|
 | 
						|
    content_tag(:span, text, opts)
 | 
						|
  end
 | 
						|
 | 
						|
  def sort_tag(content = '', **opts)
 | 
						|
    options = {}
 | 
						|
    options[:sort_by] = opts.delete(:name)
 | 
						|
    is_current_sort = params[:sort_by].to_s == options[:sort_by]
 | 
						|
    options[:sort_direction] = is_current_sort && params[:sort_direction].to_s == 'desc' ? 'asc' : 'desc'
 | 
						|
 | 
						|
    path = opts.delete(:path) + "?" + unsafe_params.merge(options).to_query
 | 
						|
    arrow_class = case params[:sort_direction].to_s
 | 
						|
                  when 'desc' then 'fa-sort-amount-desc'
 | 
						|
                  when 'asc' then 'fa-sort-amount-asc'
 | 
						|
                  else ''
 | 
						|
                  end
 | 
						|
    opts[:style] = "#{opts[:style]} ;position: relative;"
 | 
						|
 | 
						|
    content_tag(:span, opts) do
 | 
						|
      link_to path, remote: true do
 | 
						|
        content = content_tag(:span) { yield } if block_given?
 | 
						|
 | 
						|
        content += content_tag(:i, '', class: "fa color-light-green ml-1 #{arrow_class}", style: 'position: absolute;top:0;') if is_current_sort
 | 
						|
        raw content
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def javascript_void_link(name, **opts)
 | 
						|
    raw link_to(name, 'javascript:void(0)', opts)
 | 
						|
  end
 | 
						|
 | 
						|
  def agree_link(name, url, **opts)
 | 
						|
    klass = ['action agree-action', opts.delete(:class)].compact.join(' ')
 | 
						|
 | 
						|
    refresh_url_data = "refresh_url=#{CGI::escape(request.fullpath)}"
 | 
						|
    url = url + (url.index('?') ? '&' : '?') + refresh_url_data
 | 
						|
 | 
						|
    raw link_to(name, url, { method: :post, remote: true, class: klass, 'data-confirm': '确认审核通过?'}.merge(opts))
 | 
						|
  end
 | 
						|
 | 
						|
  def delete_link(name, url, **opts, &block)
 | 
						|
    klass = ['action delete-action', opts.delete(:class)].compact.join(' ')
 | 
						|
 | 
						|
    refresh_url_data = "refresh_url=#{CGI::escape(request.fullpath)}"
 | 
						|
    url = url + (url.index('?') ? '&' : '?') + refresh_url_data
 | 
						|
 | 
						|
    if block_given?
 | 
						|
      raw link_to(url, { method: :delete, remote: true, class: klass, 'data-confirm': '确认删除?'}.merge(opts), &block)
 | 
						|
    else
 | 
						|
      raw link_to(name, url, { method: :delete, remote: true, class: klass, 'data-confirm': '确认删除?'}.merge(opts))
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def unsafe_params
 | 
						|
    params.except(:controller, :action).to_unsafe_h
 | 
						|
  end
 | 
						|
 | 
						|
  def list_index_no(page,index)
 | 
						|
    (page - 1) * 20 + index + 1
 | 
						|
  end
 | 
						|
end |