diff --git a/app/models/article.rb b/app/models/article.rb index 033af35..2292602 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -23,6 +23,8 @@ class Article < ActiveRecord::Base validates_presence_of :profile_id, :name validates_presence_of :slug, :path, :if => lambda { |article| !article.name.blank? } + validates_length_of :name, :maximum => 150 + 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? } belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' diff --git a/app/views/cms/_blog.rhtml b/app/views/cms/_blog.rhtml index 62a4b3b..0119d21 100644 --- a/app/views/cms/_blog.rhtml +++ b/app/views/cms/_blog.rhtml @@ -4,7 +4,7 @@ <%= render :file => 'shared/tiny_mce' %> -<%= required f.text_field(:name, :size => '64', :onchange => "updateUrlField(this, 'article_slug')") %> +<%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %> <%= render :partial => 'general_fields' %> diff --git a/app/views/cms/_event.rhtml b/app/views/cms/_event.rhtml index 4b9bf5b..e32d52a 100644 --- a/app/views/cms/_event.rhtml +++ b/app/views/cms/_event.rhtml @@ -3,7 +3,7 @@ <%# TODO add Textile help here %> <%= render :file => 'shared/tiny_mce' %> -<%= required f.text_field('name', :size => '64') %> +<%= required f.text_field('name', :size => '64', :maxlength => 150) %> <%= render :partial => 'general_fields' %> <%= render :partial => 'translatable' %> diff --git a/app/views/cms/_folder.rhtml b/app/views/cms/_folder.rhtml index b173914..ce95bd1 100644 --- a/app/views/cms/_folder.rhtml +++ b/app/views/cms/_folder.rhtml @@ -1,6 +1,6 @@ <%= required_fields_message %> -<%= required f.text_field('name', :size => '64') %> +<%= required f.text_field('name', :size => '64', :maxlength => 150) %> <%= render :partial => 'general_fields' %> <%= labelled_form_field(_('Description:'), text_area(:article, :body, :rows => 3, :cols => 64)) %> diff --git a/app/views/cms/_forum.rhtml b/app/views/cms/_forum.rhtml index c0c0829..cbd9e75 100644 --- a/app/views/cms/_forum.rhtml +++ b/app/views/cms/_forum.rhtml @@ -4,7 +4,7 @@ <%= render :file => 'shared/tiny_mce' %> -<%= required f.text_field(:name, :size => '64', :onchange => "updateUrlField(this, 'article_slug')") %> +<%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %> <%= render :partial => 'general_fields' %> diff --git a/app/views/cms/_gallery.rhtml b/app/views/cms/_gallery.rhtml index 72689c2..db695ab 100644 --- a/app/views/cms/_gallery.rhtml +++ b/app/views/cms/_gallery.rhtml @@ -1,6 +1,6 @@ <%= required_fields_message %> -<%= required f.text_field('name', :size => '64') %> +<%= required f.text_field('name', :size => '64', :maxlength => 150) %> <%= render :partial => 'general_fields' %> diff --git a/app/views/cms/_published_article.rhtml b/app/views/cms/_published_article.rhtml index e6a2622..5590117 100644 --- a/app/views/cms/_published_article.rhtml +++ b/app/views/cms/_published_article.rhtml @@ -1,4 +1,4 @@ -<%= f.text_field 'name', :size => '64' %> +<%= f.text_field 'name', :size => '64', :maxlength => 150 %> <%= render :partial => 'general_fields' %>

<%= _('This is a republication of "%s", by %s.') % [link_to(h(@article.reference_article.name), @article.reference_article.url), @article.reference_article.profile.name] %>

diff --git a/app/views/cms/_raw_html_article.rhtml b/app/views/cms/_raw_html_article.rhtml index fbdff06..58d51dd 100644 --- a/app/views/cms/_raw_html_article.rhtml +++ b/app/views/cms/_raw_html_article.rhtml @@ -1,6 +1,6 @@ <%= required_fields_message %> -<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64')) %> +<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %> <%= render :partial => 'general_fields' %> <%= render :partial => 'translatable' %> diff --git a/app/views/cms/_textile_article.rhtml b/app/views/cms/_textile_article.rhtml index 2299d27..ca34a1e 100644 --- a/app/views/cms/_textile_article.rhtml +++ b/app/views/cms/_textile_article.rhtml @@ -2,7 +2,7 @@ <%# TODO add Textile help here %> -<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '72')) %> +<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '72', :maxlength => 150)) %> <%= render :partial => 'general_fields' %> <%= render :partial => 'translatable' %> diff --git a/app/views/cms/_tiny_mce_article.rhtml b/app/views/cms/_tiny_mce_article.rhtml index 69dafbf..a520e80 100644 --- a/app/views/cms/_tiny_mce_article.rhtml +++ b/app/views/cms/_tiny_mce_article.rhtml @@ -3,7 +3,7 @@ <%= render :file => 'shared/tiny_mce' %>
- <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64')) %> + <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %> <%= render :partial => 'general_fields' %> <%= render :partial => 'translatable' %> diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index 7480304..ac7f39b 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -30,6 +30,16 @@ class ArticleTest < ActiveSupport::TestCase assert !a.errors.invalid?(:name) end + should 'limit length of names' do + a = Article.new(:name => 'a'*151) + a.valid? + assert a.errors.invalid?(:name) + + a.name = 'a'*150 + a.valid? + assert !a.errors.invalid?(:name) + end + should 'require value for slug and path if name is filled' do a = Article.new(:name => 'test article') a.slug = nil -- libgit2 0.21.2