Commit bbd50ab9af163a7cccb24ee6d16329438221edc7
1 parent
9c58ba96
Exists in
master
and in
29 other branches
Added limit to names of articles
(ActionItem2522)
Showing
11 changed files
with
21 additions
and
9 deletions
Show diff stats
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
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 < ActiveSupport::TestCase | @@ -30,6 +30,16 @@ class ArticleTest < 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 |