|
- 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
|