Commit bbd50ab9af163a7cccb24ee6d16329438221edc7

Authored by Daniela Feitosa
1 parent 9c58ba96

Added limit to names of articles

(ActionItem2522)
app/models/article.rb
@@ -23,6 +23,8 @@ class Article < ActiveRecord::Base @@ -23,6 +23,8 @@ class Article < ActiveRecord::Base
23 validates_presence_of :profile_id, :name 23 validates_presence_of :profile_id, :name
24 validates_presence_of :slug, :path, :if => lambda { |article| !article.name.blank? } 24 validates_presence_of :slug, :path, :if => lambda { |article| !article.name.blank? }
25 25
  26 + validates_length_of :name, :maximum => 150
  27 +
26 validates_uniqueness_of :slug, :scope => ['profile_id', 'parent_id'], :message => N_('The title (article name) is already being used by another article, please use another title.'), :if => lambda { |article| !article.slug.blank? } 28 validates_uniqueness_of :slug, :scope => ['profile_id', 'parent_id'], :message => N_('The title (article name) is already being used by another article, please use another title.'), :if => lambda { |article| !article.slug.blank? }
27 29
28 belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' 30 belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id'
app/views/cms/_blog.rhtml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 4
5 <%= render :file => 'shared/tiny_mce' %> 5 <%= render :file => 'shared/tiny_mce' %>
6 6
7 -<%= required f.text_field(:name, :size => '64', :onchange => "updateUrlField(this, 'article_slug')") %> 7 +<%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %>
8 8
9 <%= render :partial => 'general_fields' %> 9 <%= render :partial => 'general_fields' %>
10 10
app/views/cms/_event.rhtml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <%# TODO add Textile help here %> 3 <%# TODO add Textile help here %>
4 <%= render :file => 'shared/tiny_mce' %> 4 <%= render :file => 'shared/tiny_mce' %>
5 5
6 -<%= required f.text_field('name', :size => '64') %> 6 +<%= required f.text_field('name', :size => '64', :maxlength => 150) %>
7 7
8 <%= render :partial => 'general_fields' %> 8 <%= render :partial => 'general_fields' %>
9 <%= render :partial => 'translatable' %> 9 <%= render :partial => 'translatable' %>
app/views/cms/_folder.rhtml
1 <%= required_fields_message %> 1 <%= required_fields_message %>
2 2
3 -<%= required f.text_field('name', :size => '64') %> 3 +<%= required f.text_field('name', :size => '64', :maxlength => 150) %>
4 <%= render :partial => 'general_fields' %> 4 <%= render :partial => 'general_fields' %>
5 5
6 <%= labelled_form_field(_('Description:'), text_area(:article, :body, :rows => 3, :cols => 64)) %> 6 <%= labelled_form_field(_('Description:'), text_area(:article, :body, :rows => 3, :cols => 64)) %>
app/views/cms/_forum.rhtml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 4
5 <%= render :file => 'shared/tiny_mce' %> 5 <%= render :file => 'shared/tiny_mce' %>
6 6
7 -<%= required f.text_field(:name, :size => '64', :onchange => "updateUrlField(this, 'article_slug')") %> 7 +<%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %>
8 8
9 <%= render :partial => 'general_fields' %> 9 <%= render :partial => 'general_fields' %>
10 10
app/views/cms/_gallery.rhtml
1 <%= required_fields_message %> 1 <%= required_fields_message %>
2 2
3 -<%= required f.text_field('name', :size => '64') %> 3 +<%= required f.text_field('name', :size => '64', :maxlength => 150) %>
4 4
5 <%= render :partial => 'general_fields' %> 5 <%= render :partial => 'general_fields' %>
6 6
app/views/cms/_published_article.rhtml
1 -<%= f.text_field 'name', :size => '64' %> 1 +<%= f.text_field 'name', :size => '64', :maxlength => 150 %>
2 <%= render :partial => 'general_fields' %> 2 <%= render :partial => 'general_fields' %>
3 3
4 <p><%= _('This is a republication of "%s", by %s.') % [link_to(h(@article.reference_article.name), @article.reference_article.url), @article.reference_article.profile.name] %></p> 4 <p><%= _('This is a republication of "%s", by %s.') % [link_to(h(@article.reference_article.name), @article.reference_article.url), @article.reference_article.profile.name] %></p>
app/views/cms/_raw_html_article.rhtml
1 <%= required_fields_message %> 1 <%= required_fields_message %>
2 2
3 -<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64')) %> 3 +<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %>
4 4
5 <%= render :partial => 'general_fields' %> 5 <%= render :partial => 'general_fields' %>
6 <%= render :partial => 'translatable' %> 6 <%= render :partial => 'translatable' %>
app/views/cms/_textile_article.rhtml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 <%# TODO add Textile help here %> 3 <%# TODO add Textile help here %>
4 4
5 -<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '72')) %> 5 +<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '72', :maxlength => 150)) %>
6 6
7 <%= render :partial => 'general_fields' %> 7 <%= render :partial => 'general_fields' %>
8 <%= render :partial => 'translatable' %> 8 <%= render :partial => 'translatable' %>
app/views/cms/_tiny_mce_article.rhtml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <%= render :file => 'shared/tiny_mce' %> 3 <%= render :file => 'shared/tiny_mce' %>
4 4
5 <div> 5 <div>
6 - <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64')) %> 6 + <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %>
7 7
8 <%= render :partial => 'general_fields' %> 8 <%= render :partial => 'general_fields' %>
9 <%= render :partial => 'translatable' %> 9 <%= render :partial => 'translatable' %>
test/unit/article_test.rb
@@ -30,6 +30,16 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -30,6 +30,16 @@ class ArticleTest &lt; ActiveSupport::TestCase
30 assert !a.errors.invalid?(:name) 30 assert !a.errors.invalid?(:name)
31 end 31 end
32 32
  33 + should 'limit length of names' do
  34 + a = Article.new(:name => 'a'*151)
  35 + a.valid?
  36 + assert a.errors.invalid?(:name)
  37 +
  38 + a.name = 'a'*150
  39 + a.valid?
  40 + assert !a.errors.invalid?(:name)
  41 + end
  42 +
33 should 'require value for slug and path if name is filled' do 43 should 'require value for slug and path if name is filled' do
34 a = Article.new(:name => 'test article') 44 a = Article.new(:name => 'test article')
35 a.slug = nil 45 a.slug = nil