Commit c1cdaf45ae654275295d99c7e56e9f796fc83680
1 parent
6eb736e0
Exists in
fix_sign_up_form
Not allow a regular person to choose raw html editor
Showing
3 changed files
with
45 additions
and
1 deletions
Show diff stats
app/helpers/profile_editor_helper.rb
| @@ -159,7 +159,7 @@ module ProfileEditorHelper | @@ -159,7 +159,7 @@ module ProfileEditorHelper | ||
| 159 | end | 159 | end |
| 160 | 160 | ||
| 161 | def select_editor(title, object, method, options) | 161 | def select_editor(title, object, method, options) |
| 162 | - labelled_form_field(title, select(object, method,[[_('TinyMCE'), Article::Editor::TINY_MCE], [_('Textile'), Article::Editor::TEXTILE], [_('Raw HTML'), Article::Editor::RAW_HTML]])) | 162 | + labelled_form_field(title, select(object, method, current_person.available_editors.map { |k,v| [v, k] })) |
| 163 | end | 163 | end |
| 164 | 164 | ||
| 165 | end | 165 | end |
app/models/person.rb
| @@ -341,6 +341,8 @@ class Person < Profile | @@ -341,6 +341,8 @@ class Person < Profile | ||
| 341 | 341 | ||
| 342 | validates_associated :user | 342 | validates_associated :user |
| 343 | 343 | ||
| 344 | + validates :editor, inclusion: { in: lambda { |p| p.available_editors } } | ||
| 345 | + | ||
| 344 | def email | 346 | def email |
| 345 | self.user.nil? ? nil : self.user.email | 347 | self.user.nil? ? nil : self.user.email |
| 346 | end | 348 | end |
| @@ -621,4 +623,13 @@ class Person < Profile | @@ -621,4 +623,13 @@ class Person < Profile | ||
| 621 | self.is_a_friend?(person) || super | 623 | self.is_a_friend?(person) || super |
| 622 | end | 624 | end |
| 623 | 625 | ||
| 626 | + def available_editors | ||
| 627 | + available_editors = { | ||
| 628 | + Article::Editor::TINY_MCE => _('TinyMCE'), | ||
| 629 | + Article::Editor::TEXTILE => _('Textile') | ||
| 630 | + } | ||
| 631 | + available_editors.merge!({Article::Editor::RAW_HTML => _('Raw HTML')}) if self.is_admin? | ||
| 632 | + available_editors | ||
| 633 | + end | ||
| 634 | + | ||
| 624 | end | 635 | end |
test/unit/person_test.rb
| @@ -2006,4 +2006,37 @@ class PersonTest < ActiveSupport::TestCase | @@ -2006,4 +2006,37 @@ class PersonTest < ActiveSupport::TestCase | ||
| 2006 | assert_equivalent [circle2], ProfileFollower.with_profile(community).with_follower(person).map(&:circle) | 2006 | assert_equivalent [circle2], ProfileFollower.with_profile(community).with_follower(person).map(&:circle) |
| 2007 | end | 2007 | end |
| 2008 | 2008 | ||
| 2009 | + should 'list available editors for a regular person' do | ||
| 2010 | + person = Person.new | ||
| 2011 | + person.expects(:is_admin?).returns(false) | ||
| 2012 | + assert_equivalent [Article::Editor::TINY_MCE, Article::Editor::TEXTILE], person.available_editors.keys | ||
| 2013 | + end | ||
| 2014 | + | ||
| 2015 | + should 'list available editors for an admin' do | ||
| 2016 | + person = Person.new | ||
| 2017 | + person.expects(:is_admin?).returns(true) | ||
| 2018 | + assert_equivalent [Article::Editor::TINY_MCE, Article::Editor::TEXTILE, Article::Editor::RAW_HTML], person.available_editors.keys | ||
| 2019 | + end | ||
| 2020 | + | ||
| 2021 | + should 'not save a person with an inexistent editor' do | ||
| 2022 | + person = create_user('testuser').person | ||
| 2023 | + person.editor = "bli" | ||
| 2024 | + assert !person.save | ||
| 2025 | + assert person.errors['editor'].present? | ||
| 2026 | + end | ||
| 2027 | + | ||
| 2028 | + should 'not allow a regular person to change to raw_html editor' do | ||
| 2029 | + person = create_user('testuser').person | ||
| 2030 | + person.editor = Article::Editor::RAW_HTML | ||
| 2031 | + assert !person.save | ||
| 2032 | + assert person.errors['editor'].present? | ||
| 2033 | + end | ||
| 2034 | + | ||
| 2035 | + should 'allow admin to change to raw_html editor' do | ||
| 2036 | + person = create_user('testuser').person | ||
| 2037 | + person.environment.add_admin(person) | ||
| 2038 | + person.editor = Article::Editor::RAW_HTML | ||
| 2039 | + assert person.save | ||
| 2040 | + end | ||
| 2041 | + | ||
| 2009 | end | 2042 | end |