Skip to content

Commit d7c5851

Browse files
authored
Merge pull request #385 from linuxfrorg/add_validations
Add extra validations for links, trackers; and news
2 parents ffa9627 + 14b882c commit d7c5851

40 files changed

Lines changed: 121 additions & 42 deletions

app/controllers/bookmarks_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ def create
3535
redirect_to [@bookmark.owner, @bookmark], notice: "Votre lien a bien été partagé"
3636
else
3737
@bookmark.node = Node.new(user_id: current_user.id, cc_licensed: false)
38-
@bookmark.node.preview_tags = params[:tags]
38+
if params.include?(:tags)
39+
@bookmark.node.preview_tags = params[:tags]
40+
end
3941
@bookmark.valid?
4042
flash.now[:alert] = "Votre lien semble invalide. Le confimez‑vous ?" unless @bookmark.link =~ /\A#{URI::regexp(['http', 'https'])}\z/
4143
render :new

app/controllers/diaries_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ def create
3333
redirect_to [@diary.owner, @diary], notice: "Votre journal a bien été créé"
3434
else
3535
@diary.node = Node.new(user_id: current_user.id, cc_licensed: @diary.cc_licensed)
36-
@diary.node.preview_tags = params[:tags]
36+
if params.include?(:tags)
37+
@diary.node.preview_tags = params[:tags]
38+
end
3739
@diary.valid?
3840
flash.now[:alert] = "Votre journal ne contient pas de liens. Confirmez‑vous que cela est normal ?" unless @diary.body =~ /<a /
3941
render :new

app/controllers/news_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ def create
4646
redirect_to news_index_url, notice: "Votre proposition de dépêche a bien été soumise, et sera modérée dans les heures ou les jours à venir"
4747
else
4848
@news.node = Node.new(cc_licensed: @news.cc_licensed)
49-
@news.node.preview_tags = params[:tags]
49+
if params.include?(:tags)
50+
@news.node.preview_tags = params[:tags]
51+
end
5052
@news.valid?
5153
render :new
5254
end

app/controllers/posts_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ def create
2424
redirect_to forum_posts_url(forum_id: @post.forum), notice: "Votre message a bien été créé"
2525
else
2626
@post.node = Node.new
27-
@post.node.preview_tags = params[:tags]
27+
if params.include?(:tags)
28+
@post.node.preview_tags = params[:tags]
29+
end
2830
@post.valid?
2931
render :new
3032
end

app/controllers/wiki_pages_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ def show
3333

3434
def new
3535
@wiki_page = WikiPage.new
36-
@wiki_page.title = params[:title]
36+
if params.include?(:title)
37+
@wiki_page.title = params[:title]
38+
end
3739
return not_enough_karma('pages de wiki') unless @wiki_page.creatable_by?(current_account)
3840
enforce_create_permission(@wiki_page)
3941
end

app/models/bookmark.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@ class Bookmark < Content
2424
belongs_to :owner, class_name: 'User'
2525

2626
validates :title, presence: { message: "Le titre est obligatoire" },
27-
length: { maximum: 100, message: "Le titre est trop long" }
27+
length: { maximum: 160, message: "Le titre est trop long" },
28+
uniqueness: { message: "Un lien avec le même titre a déjà été proposé" }
2829
validates :link, presence: { message: "Vous ne pouvez pas poster un lien vide" },
2930
http_url: { message: "Le lien n'est pas valide" },
30-
length: { maximum: 255, message: "Le lien est trop long" }
31+
length: { maximum: 255, message: "Le lien est trop long" },
32+
uniqueness: { message: "Cette adresse de lien a déjà été proposée" }
33+
validates :lang, inclusion: { in: Lang.valid_codes, allow_nil: false, message: "La langue du lien doit être définie" }
3134

3235
def link=(raw)
3336
raw.strip!
34-
return write_attribute :url, nil if raw.blank?
37+
return write_attribute :link, nil if raw.blank?
3538
uri = URI.parse(raw)
3639
# Default to HTTP link if neither scheme nor host is found
3740
if uri.scheme.blank? && uri.host.blank?
@@ -44,6 +47,11 @@ def link=(raw)
4447
write_attribute :link, raw
4548
end
4649

50+
def title=(raw)
51+
raw.strip!
52+
write_attribute :title, raw
53+
end
54+
4755
def create_node(attrs={})
4856
attrs[:cc_licensed] = false
4957
super

app/models/comment.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ def wikify_body
5050
self.body = wikify(wiki_body, nofollow: nofollow)
5151
end
5252

53+
def title=(raw)
54+
raw.strip!
55+
write_attribute :title, raw
56+
end
57+
5358
### Reading status ###
5459

5560
# Returns true if this comment has been read by the given user,

app/models/diary.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Diary < Content
2727
belongs_to :converted_news, class_name: 'News'
2828

2929
validates :title, presence: { message: "Le titre est obligatoire" },
30-
length: { maximum: 100, message: "Le titre est trop long" }
30+
length: { maximum: 160, message: "Le titre est trop long" }
3131
validates :wiki_body, presence: { message: "Vous ne pouvez pas poster un journal vide" }
3232

3333
validate :convert_only_cc_licensed_diary, on: :convert

app/models/forum.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ class Forum < ActiveRecord::Base
3131
extend FriendlyId
3232
friendly_id
3333

34+
def title=(raw)
35+
raw.strip!
36+
write_attribute :title, raw
37+
end
38+
3439
### Workflow ###
3540

3641
state_machine :state, initial: :active do

app/models/lang.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ def self.all
88
vals.zip(keys)
99
end
1010

11+
def self.valid_codes
12+
$redis.lrange("lang", 0, -1) - ["xx"]
13+
end
14+
1115
def self.[]=(key, value)
1216
$redis.set("lang/#{key}", value)
1317
$redis.rpush("lang", key)

0 commit comments

Comments
 (0)