content_helper.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:3k
源码类别:

Ajax

开发平台:

Others

  1. module Admin::ContentHelper
  2.   include ArticlesHelper
  3.   def contents
  4.     [@article]
  5.   end
  6.   def params_qsa
  7.     { 'search[category]' => @search[:category],
  8.       'search[user_id]' => @search[:user_id],
  9.       'search[published_at]' => @search[:published_at],
  10.       'searched[published]' => @search[:published] }
  11.   end
  12.   def link_to_destroy_draft(record, controller = @controller.controller_name)
  13.     if record.state.to_s == "Draft"
  14.       link_to(_("Destroy this draft"),
  15.         { :controller => controller, :action => 'destroy', :id => record.id },
  16.           :confirm => _("Are you sure?"), :method => :post )
  17.     end
  18.   end
  19.   def auto_complete_result(entries, field, phrase = nil)
  20.     return unless entries
  21.     items = entries.map { |entry| content_tag("li", phrase ? highlight(entry[field], phrase) : h(entry[field])) }
  22.     content_tag("ul", items.uniq)
  23.   end
  24.   def auto_complete_field(field_id, options = {})
  25.     function =  "var #{field_id}_auto_completer = new Ajax.Autocompleter("
  26.     function << "'#{field_id}', "
  27.     function << "'" + (options[:update] || "#{field_id}_auto_complete") + "', "
  28.     function << "'#{url_for(options[:url])}'"
  29.     js_options = {}
  30.     js_options[:tokens] = array_or_string_for_javascript(options[:tokens]) if options[:tokens]
  31.     js_options[:callback]   = "function(element, value) { return #{options[:with]} }" if options[:with]
  32.     js_options[:indicator]  = "'#{options[:indicator]}'" if options[:indicator]
  33.     js_options[:select]     = "'#{options[:select]}'" if options[:select]
  34.     js_options[:paramName]  = "'#{options[:param_name]}'" if options[:param_name]
  35.     js_options[:frequency]  = "#{options[:frequency]}" if options[:frequency]
  36.     js_options[:method]     = "'#{options[:method].to_s}'" if options[:method]
  37.     { :after_update_element => :afterUpdateElement,
  38.       :on_show => :onShow, :on_hide => :onHide, :min_chars => :minChars }.each do |k,v|
  39.       js_options[v] = options[k] if options[k]
  40.     end
  41.     function << (', ' + options_for_javascript(js_options) + ')')
  42.     javascript_tag(function)
  43.   end
  44.   def text_field_with_auto_complete(object, method, tag_options = {}, completion_options = {})
  45.     (completion_options[:skip_style] ? "" : auto_complete_stylesheet) +
  46.     text_field(object, method, tag_options) +
  47.     content_tag("div", "", :id => "#{object}_#{method}_auto_complete", :class => "auto_complete") +
  48.     auto_complete_field("#{object}_#{method}", { :url => { :action => "auto_complete_for_#{object}_#{method}" } }.update(completion_options))
  49.   end
  50.   def auto_complete_stylesheet
  51.     content_tag('style', <<-EOT, :type => Mime::CSS)
  52.       div.auto_complete {
  53.         width: 350px;
  54.         background: #fff;
  55.       }
  56.       div.auto_complete ul {
  57.         border:1px solid #888;
  58.         margin:0;
  59.         padding:0;
  60.         width:100%;
  61.         list-style-type:none;
  62.       }
  63.       div.auto_complete ul li {
  64.         margin:0;
  65.         padding:3px;
  66.       }
  67.       div.auto_complete ul li.selected {
  68.         background-color: #ffb;
  69.       }
  70.       div.auto_complete ul strong.highlight {
  71.         color: #800;
  72.         margin:0;
  73.         padding:0;
  74.       }
  75.     EOT
  76.   end
  77. end