Radio, Web and Free Software

Changeset 380a700a6814a7356b9e61ea1bd9b3a88ababdc5

Show
Ignore:
Timestamp:
07/27/10 22:42:34 (6 weeks ago)
Author:
Alban Peignier <alban@…>
Parents:
96b960ab28342be2b47c677a1e8a569f8e5cf395
Children:
acff4dc3eee6e062cc1a86e06e6fd6fba910ee78
git-committer:
Alban Peignier <alban@tryphon.eu> / 2010-07-27T22:42:34Z+0200
Message:

Create the Episode#slug with supported length. Refs #17

Files:
3 modified

Legend:

Unmodified
Added
Removed
  • app/controllers/episode_controller.rb

    r75ab01a r380a700  
    2020 
    2121  def create_slug 
    22     @slug = Slug.slugify(params[:name]) 
     22    @slug = Slug.slugify(params[:name], Episode.slug_length) 
    2323  end 
    2424 
  • app/models/episode.rb

    r96b960a r380a700  
    1717  validates_presence_of :description, :message => "Pas de description définie" 
    1818 
     19  @@slug_length = 40 
     20  cattr_reader :slug_length 
     21 
    1922  validates_presence_of :slug, :message => "Pas de lien défini" 
    20   validates_length_of :slug, :within => 3..40, :wrong_length => "Le lien doit contenir entre 3 et 30 lettres" 
     23  validates_length_of :slug, :within => 3..slug_length, :wrong_length => "Le lien doit contenir entre 3 et #{slug_length} lettres" 
    2124  validates_format_of :slug, :with => /^[a-z0-9-]*$/, :message => "Le lien ne peut contenir que des minuscules, des chiffres et des tirets" 
    2225  validates_uniqueness_of :slug, :scope => :show_id, :message => "Un épisode utilise déjà ce lien" 
  • lib/slug.rb

    r229ce6b r380a700  
     1# -*- coding: utf-8 -*- 
    12class Slug 
    2   def self.slugify(text) 
     3  def self.slugify(text, length = 30) 
    34    return "" if text.nil? or text.strip.blank? 
    4     reduce_separators(replace_specials(text.downcase).gsub(/[^a-z0-9-]+/, ' ').strip.gsub(' ','-')[0..29]) 
     5    reduce_separators(replace_specials(text.downcase).gsub(/[^a-z0-9-]+/, ' ').strip.gsub(' ','-')[0..length-1]) 
    56  end 
    67