Commit 78a1f5fc916dec4de25e07270fb0e844bb2652a9
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'I324-display_private_article_to_all_community_members' into stable
Showing
5 changed files
with
55 additions
and
6 deletions
Show diff stats
app/helpers/article_helper.rb
... | ... | @@ -77,12 +77,24 @@ module ArticleHelper |
77 | 77 | content_tag('div', |
78 | 78 | radio_button(:article, :published, false) + |
79 | 79 | content_tag('label', _('Private'), :for => 'article_published_false', :id => "label_private") |
80 | + ) + visibility_mode_options(article, tokenized_children)) | |
81 | + end | |
82 | + | |
83 | + def visibility_mode_options(article, tokenized_children) | |
84 | + content_tag('div', | |
85 | + | |
86 | + content_tag('div', | |
87 | + radio_button(:article, :visibility_mode, 1) + | |
88 | + content_tag('label', _('For all community members'), :for => 'article_visibility_mode_1', :id => "label_private")) + | |
89 | + content_tag('div', | |
90 | + radio_button(:article, :visibility_mode, 0) + | |
91 | + content_tag('label', _('For community admins or specific users'), :for => 'article_visibility_mode_0', :id => "label_private") | |
80 | 92 | ) + |
81 | 93 | (article.profile.community? ? content_tag('div', |
82 | 94 | content_tag('label', _('Fill in the search field to add the exception users to see this content'), :id => "text-input-search-exception-users") + |
83 | 95 | token_input_field_tag(:q, 'search-article-privacy-exceptions', {:action => 'search_article_privacy_exceptions'}, |
84 | 96 | {:focus => false, :hint_text => _('Type in a search term for a user'), :pre_populate => tokenized_children})) : |
85 | - '')) | |
97 | + ''), :style => 'padding-left: 15px;') | |
86 | 98 | end |
87 | 99 | |
88 | 100 | def prepare_to_token_input(array) | ... | ... |
app/models/article.rb
... | ... | @@ -2,7 +2,7 @@ require 'hpricot' |
2 | 2 | |
3 | 3 | class Article < ActiveRecord::Base |
4 | 4 | |
5 | - attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent, :allow_members_to_edit, :translation_of_id, :language, :license_id, :parent_id, :display_posts_in_current_language, :category_ids, :posts_per_page, :moderate_comments, :accept_comments, :feed, :published, :source, :highlighted, :notify_comments, :display_hits, :slug, :external_feed_builder, :display_versions, :external_link, :image_builder, :published_at | |
5 | + attr_accessible :name, :body, :abstract, :profile, :tag_list, :parent, :allow_members_to_edit, :translation_of_id, :language, :license_id, :parent_id, :display_posts_in_current_language, :category_ids, :posts_per_page, :moderate_comments, :accept_comments, :feed, :published, :source, :highlighted, :notify_comments, :display_hits, :slug, :external_feed_builder, :display_versions, :external_link, :image_builder, :published_at, :visibility_mode | |
6 | 6 | |
7 | 7 | acts_as_having_image |
8 | 8 | |
... | ... | @@ -498,7 +498,7 @@ class Article < ActiveRecord::Base |
498 | 498 | def display_unpublished_article_to?(user) |
499 | 499 | user == author || allow_view_private_content?(user) || user == profile || |
500 | 500 | user.is_admin?(profile.environment) || user.is_admin?(profile) || |
501 | - article_privacy_exceptions.include?(user) | |
501 | + article_privacy_exceptions.include?(user) || (visibility_mode == 1 && user.is_member_of?(profile)) | |
502 | 502 | end |
503 | 503 | |
504 | 504 | def display_to?(user = nil) |
... | ... | @@ -656,6 +656,8 @@ class Article < ActiveRecord::Base |
656 | 656 | can_display_versions? && display_versions |
657 | 657 | end |
658 | 658 | |
659 | + settings_items :visibility_mode, :type => :integer, :default => 0 | |
660 | + | |
659 | 661 | def get_version(version_number = nil) |
660 | 662 | version_number ? versions.find(:first, :order => 'version', :offset => version_number - 1) : versions.earliest |
661 | 663 | end | ... | ... |
public/javascripts/article.js
... | ... | @@ -167,18 +167,38 @@ jQuery(function($) { |
167 | 167 | }); |
168 | 168 | |
169 | 169 | function show_hide_token_input() { |
170 | - if($("#article_published_false").attr('checked')) | |
170 | + if($("#article_visibility_mode_0").attr('checked')) | |
171 | 171 | $("#text-input-search-exception-users").parent("div").css('display', 'block'); |
172 | 172 | else |
173 | 173 | $("#text-input-search-exception-users").parent("div").css('display', 'none'); |
174 | 174 | } |
175 | 175 | |
176 | + function show_hide_visibility_modes() { | |
177 | + if ($("#article_published_false").attr('checked')) | |
178 | + $("#article_visibility_mode_1").parent("div").parent("div").css("display", "block"); | |
179 | + else | |
180 | + $("#article_visibility_mode_1").parent("div").parent("div").css("display", "none"); | |
181 | + } | |
182 | + | |
176 | 183 | if( $("#token-input-search-article-privacy-exceptions").length == 1 ) { |
184 | + show_hide_visibility_modes(); | |
177 | 185 | show_hide_token_input(); |
178 | 186 | |
187 | + $("#article_published_true").click(function() { | |
188 | + show_hide_visibility_modes(); | |
189 | + }); | |
190 | + | |
191 | + $("#article_published_false").click(function() { | |
192 | + show_hide_visibility_modes(); | |
193 | + }); | |
194 | + | |
179 | 195 | //Hide / Show the text area |
180 | - $("#article_published_false").click(show_hide_token_input); | |
181 | - $("#article_published_true").click(show_hide_token_input); | |
196 | + $("#article_visibility_mode_0").click(function() { | |
197 | + show_hide_token_input(); | |
198 | + }); | |
199 | + $("#article_visibility_mode_1").click(function() { | |
200 | + show_hide_token_input(); | |
201 | + }); | |
182 | 202 | } |
183 | 203 | |
184 | 204 | }); | ... | ... |
script/updatepo/data/pt.upo
... | ... | @@ -81,3 +81,5 @@ msgid "Select topic"# msgstr "Selecione um tópico" |
81 | 81 | msgid "Hits"# msgstr "Mais Acessos" |
82 | 82 | msgid "Most Recent"# msgstr "Mais Recentes" |
83 | 83 | msgid "Order"# msgstr "Ordenação" |
84 | +msgid "For community admins or specific users"# msgstr "Para administradores da comunidade ou usuários específicos" | |
85 | +msgid "For all community members"# msgstr "Para todos os usuários da comunidade" | ... | ... |
test/unit/article_test.rb
... | ... | @@ -720,6 +720,19 @@ class ArticleTest < ActiveSupport::TestCase |
720 | 720 | assert_equal true, a.can_display_hits? |
721 | 721 | end |
722 | 722 | |
723 | + should 'have visibility_mode setting with default 0' do | |
724 | + a = fast_create(Article, :name => 'Test article', :profile_id => profile.id) | |
725 | + assert_respond_to a, :visibility_mode | |
726 | + assert_equal 0, a.visibility_mode | |
727 | + end | |
728 | + | |
729 | + should 'set visibility_mode setting value to 1' do | |
730 | + a = fast_create(Article, :name => 'Test article', :profile_id => profile.id) | |
731 | + a.visibility_mode = 1 | |
732 | + a.save && a.reload | |
733 | + assert_equal 1, a.visibility_mode | |
734 | + end | |
735 | + | |
723 | 736 | should 'return a view url when image' do |
724 | 737 | image = create(UploadedFile, :profile => profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
725 | 738 | ... | ... |