Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 19th, 2012  |  syntax: None  |  size: 1.75 KB  |  hits: 7  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. module AdminHelper
  2.  
  3.   def field_must_be_slug(element, separator = '-')
  4.     render :update do |page|
  5.       page << <<-rawJS
  6.         var element = $('#{element.to_s}');
  7.         new Form.Element.Observer(element, 0.02, function(){
  8.           element.value = element.getValue().toLowerCase().gsub(/[^a-z0-9\\d\\s\\s+\\#{separator}]+/, '').gsub(/\\s+/,'#{separator}');
  9.         });
  10.       rawJS
  11.     end
  12.   end
  13.  
  14.   def auto_url_info(object, *args)
  15.     options = args.shift || {}
  16.     options[:slug_preparsing] ||= true
  17.     options[:url_preview_id] ||= :url_preview
  18.  
  19.     initial_url = object.url.link(:full, "http://localhost:3000")
  20.     slug_source_id = [object.class.name.underscore, "url", "attributes", "slug"].join("_")
  21.  
  22.     result = Array.new
  23.     result << content_tag(:span, nil, :class => 'icon link')
  24.     result << content_tag(:span, initial_url, :id => :url_preview)
  25.     result << field_must_be_slug(slug_source_id) if options[:slug_preparsing]
  26.     result << <<-rawJS
  27. <script type="javascript">
  28.         var makeNewUrl = function(){
  29.           var newUrl = new Template('#{object.url.link(:js_template, @site, :object => object)}');
  30.           var currentSlug = $('#{slug_source_id}').value.toSlug();
  31.           var currentObjectName = '#{object.class.class_name.downcase}';
  32.  
  33.           if(currentSlug.length > 0 && currentObjectName != 'page') currentSlug = '/' + currentSlug;
  34.           var showUrl = {
  35.             slug: currentSlug
  36.           };
  37.           xtu = newUrl.evaluate(showUrl).split('://');
  38.           newUrl = [xtu[0], xtu[1].gsub(/\\/+/, '/')].join('://');
  39.           $('#{options[:url_preview_id].to_s}').update(newUrl);
  40.         }
  41.         new Form.Element.Observer('#{slug_source_id}', 0.02, makeNewUrl);
  42.         makeNewUrl();
  43. </script>
  44.       rawJS
  45.     end
  46.     return result.join
  47.   end
  48. end