diff --git a/app/helpers/article_helper.rb b/app/helpers/article_helper.rb index db3a768..c000da3 100644 --- a/app/helpers/article_helper.rb +++ b/app/helpers/article_helper.rb @@ -77,12 +77,24 @@ module ArticleHelper content_tag('div', radio_button(:article, :published, false) + content_tag('label', _('Private'), :for => 'article_published_false', :id => "label_private") + ) + visibility_mode_options(article, tokenized_children)) + end + + def visibility_mode_options(article, tokenized_children) + content_tag('div', + + content_tag('div', + radio_button(:article, :visibility_mode, 1) + + content_tag('label', _('For all community members'), :for => 'article_visibility_mode_1', :id => "label_private")) + + content_tag('div', + radio_button(:article, :visibility_mode, 0) + + content_tag('label', _('For community admins or specific users'), :for => 'article_visibility_mode_0', :id => "label_private") ) + (article.profile.community? ? content_tag('div', content_tag('label', _('Fill in the search field to add the exception users to see this content'), :id => "text-input-search-exception-users") + token_input_field_tag(:q, 'search-article-privacy-exceptions', {:action => 'search_article_privacy_exceptions'}, {:focus => false, :hint_text => _('Type in a search term for a user'), :pre_populate => tokenized_children})) : - '')) + ''), :style => 'padding-left: 15px;') end def prepare_to_token_input(array) diff --git a/app/models/article.rb b/app/models/article.rb index 4aef67e..d34f8d0 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -2,7 +2,7 @@ require 'hpricot' class Article < ActiveRecord::Base - 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 + 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 acts_as_having_image @@ -498,7 +498,7 @@ class Article < ActiveRecord::Base def display_unpublished_article_to?(user) user == author || allow_view_private_content?(user) || user == profile || user.is_admin?(profile.environment) || user.is_admin?(profile) || - article_privacy_exceptions.include?(user) + article_privacy_exceptions.include?(user) || (visibility_mode == 1 && user.is_member_of?(profile)) end def display_to?(user = nil) @@ -656,6 +656,8 @@ class Article < ActiveRecord::Base can_display_versions? && display_versions end + settings_items :visibility_mode, :type => :integer, :default => 0 + def get_version(version_number = nil) version_number ? versions.find(:first, :order => 'version', :offset => version_number - 1) : versions.earliest end diff --git a/public/javascripts/article.js b/public/javascripts/article.js index 06901ae..281def6 100644 --- a/public/javascripts/article.js +++ b/public/javascripts/article.js @@ -167,18 +167,38 @@ jQuery(function($) { }); function show_hide_token_input() { - if($("#article_published_false").attr('checked')) + if($("#article_visibility_mode_0").attr('checked')) $("#text-input-search-exception-users").parent("div").css('display', 'block'); else $("#text-input-search-exception-users").parent("div").css('display', 'none'); } + function show_hide_visibility_modes() { + if ($("#article_published_false").attr('checked')) + $("#article_visibility_mode_1").parent("div").parent("div").css("display", "block"); + else + $("#article_visibility_mode_1").parent("div").parent("div").css("display", "none"); + } + if( $("#token-input-search-article-privacy-exceptions").length == 1 ) { + show_hide_visibility_modes(); show_hide_token_input(); + $("#article_published_true").click(function() { + show_hide_visibility_modes(); + }); + + $("#article_published_false").click(function() { + show_hide_visibility_modes(); + }); + //Hide / Show the text area - $("#article_published_false").click(show_hide_token_input); - $("#article_published_true").click(show_hide_token_input); + $("#article_visibility_mode_0").click(function() { + show_hide_token_input(); + }); + $("#article_visibility_mode_1").click(function() { + show_hide_token_input(); + }); } }); -- libgit2 0.21.2