Commit bdd5ef3ed49b917e287d8fbf9c6b5b75029641b2

Authored by Evandro Jr
Committed by Evandro Junior
1 parent 5c115a98

Implents most relevant block plugin

plugins/relevant_content/lib/ext/article.rb 0 → 100644
... ... @@ -0,0 +1,194 @@
  1 +require_dependency 'article'
  2 +
  3 +class Article
  4 +
  5 + named_scope :relevant_content, :conditions => ["(articles.type != 'UploadedFile' and articles.type != 'Blog' and articles.type != 'RssFeed') OR articles.type is NULL"]
  6 +
  7 + def self.most_accessed(owner, limit = nil)
  8 + if owner.kind_of?(Environment)
  9 + result = Article.relevant_content.find(
  10 + :all,
  11 + :order => 'hits desc',
  12 + :limit => limit,
  13 + :conditions => ["hits > 0"]
  14 + )
  15 + result.paginate({:page => 1, :per_page => limit})
  16 + else
  17 + #Owner is a profile
  18 + result = Article.relevant_content.find(
  19 + :all,
  20 + :order => 'hits desc',
  21 + :limit => limit,
  22 + :conditions => ["profile_id = ? and hits > 0", owner.id]
  23 + )
  24 + result.paginate({:page => 1, :per_page => limit})
  25 + end
  26 + end
  27 +
  28 + def self.most_commented_relevant_content(owner, limit)
  29 +
  30 + if owner.kind_of?(Environment)
  31 + result = Article.relevant_content.find(
  32 + :all,
  33 + :order => 'comments_count desc',
  34 + :limit => limit,
  35 + :conditions => ["comments_count > 0"]
  36 + )
  37 + result.paginate({:page => 1, :per_page => limit})
  38 + else
  39 + #Owner is a profile
  40 + result = Article.relevant_content.find(
  41 + :all,
  42 + :order => 'comments_count desc',
  43 + :limit => limit,
  44 + :conditions => ["profile_id = ? and comments_count > 0", owner.id]
  45 + )
  46 + result.paginate({:page => 1, :per_page => limit})
  47 + end
  48 + end
  49 +
  50 + def self.articles_columns
  51 + Article.column_names.map {|c| "articles.#{c}"} .join(",")
  52 + end
  53 +
  54 + def self.more_positive_votes(owner, limit = nil)
  55 + if owner.kind_of?(Environment)
  56 + result = Article.find(
  57 + :all,
  58 + :select => articles_columns,
  59 + :order => 'sum(vote) desc',
  60 + :group => 'voteable_id, ' + articles_columns,
  61 + :limit => limit,
  62 + :having => ['sum(vote) > 0'],
  63 + :conditions => {'votes.voteable_type' => 'Article'},
  64 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id'
  65 + )
  66 + result.paginate({:page => 1, :per_page => limit})
  67 + else
  68 + #Owner is a profile
  69 + result = Article.find(
  70 + :all,
  71 + :select => articles_columns,
  72 + :order => 'sum(vote) desc',
  73 + :group => 'voteable_id, ' + articles_columns,
  74 + :limit => limit,
  75 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  76 + :having => ['sum(vote) > 0'],
  77 + :conditions => ["profile_id = ? and votes.voteable_type = ? ", owner.id, 'Article']
  78 + )
  79 + result.paginate({:page => 1, :per_page => limit})
  80 + end
  81 + end
  82 +
  83 + def self.more_negative_votes(owner, limit = nil)
  84 + if owner.kind_of?(Environment)
  85 + result = Article.find(
  86 + :all,
  87 + :select => articles_columns,
  88 + :order => 'sum(vote) asc',
  89 + :group => 'voteable_id, ' + articles_columns,
  90 + :limit => limit,
  91 + :having => ['sum(vote) < 0'],
  92 + :conditions => {'votes.voteable_type' => 'Article'},
  93 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id'
  94 + )
  95 + result.paginate({:page => 1, :per_page => limit})
  96 + else
  97 + #Owner is a profile
  98 + result = Article.find(
  99 + :all,
  100 + :select => articles_columns,
  101 + :order => 'sum(vote) asc',
  102 + :group => 'voteable_id, ' + articles_columns,
  103 + :limit => limit,
  104 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  105 + :having => ['sum(vote) < 0'],
  106 + :conditions => ["profile_id = ? and votes.voteable_type = 'Article' ", owner.id]
  107 + )
  108 + result.paginate({:page => 1, :per_page => limit})
  109 + end
  110 + end
  111 +
  112 + def self.most_liked(owner, limit = nil)
  113 + if owner.kind_of?(Environment)
  114 + result = Article.find(
  115 + :all,
  116 + :select => articles_columns,
  117 + :order => 'count(voteable_id) desc',
  118 + :group => 'voteable_id, ' + articles_columns,
  119 + :limit => limit,
  120 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  121 + :conditions => ["votes.voteable_type = 'Article' and vote > 0"]
  122 + )
  123 + result.paginate({:page => 1, :per_page => limit})
  124 + else
  125 + #Owner is a profile
  126 + result = Article.find(
  127 + :all,
  128 + :select => articles_columns,
  129 + :order => 'count(voteable_id) desc',
  130 + :group => 'voteable_id, ' + articles_columns,
  131 + :limit => limit,
  132 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  133 + :conditions => ["votes.voteable_type = 'Article' and vote > 0 and profile_id = ? ", owner.id]
  134 + )
  135 + result.paginate({:page => 1, :per_page => limit})
  136 + end
  137 + end
  138 +
  139 + def self.most_disliked(owner, limit = nil)
  140 + if owner.kind_of?(Environment)
  141 + result = Article.find(
  142 + :all,
  143 + :order => 'count(voteable_id) desc',
  144 + :group => 'voteable_id, ' + articles_columns,
  145 + :limit => limit,
  146 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  147 + :conditions => ["votes.voteable_type = 'Article' and vote < 0"]
  148 + )
  149 + result.paginate({:page => 1, :per_page => limit})
  150 + else
  151 + #Owner is a profile
  152 + result = Article.find(
  153 + :all,
  154 + :order => 'count(voteable_id) desc',
  155 + :group => 'voteable_id, ' + articles_columns,
  156 + :limit => limit,
  157 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  158 + :conditions => ["votes.voteable_type = 'Article' and vote < 0 and profile_id = ? ", owner.id]
  159 + )
  160 + result.paginate({:page => 1, :per_page => limit})
  161 + end
  162 + end
  163 +
  164 + def self.most_voted(owner, limit = nil)
  165 + if owner.kind_of?(Environment)
  166 + result = Article.find(
  167 + :all,
  168 + :select => articles_columns,
  169 + :order => 'count(voteable_id) desc',
  170 + :group => 'voteable_id, ' + articles_columns,
  171 + :limit => limit,
  172 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  173 + :conditions => ["votes.voteable_type = 'Article'"]
  174 + )
  175 + result.paginate({:page => 1, :per_page => limit})
  176 + else
  177 + #Owner is a profile
  178 + result = Article.find(
  179 + :all,
  180 + :select => articles_columns,
  181 + :order => 'count(voteable_id) desc',
  182 + :group => 'voteable_id, ' + articles_columns,
  183 + :limit => limit,
  184 + :joins => 'INNER JOIN votes ON articles.id = votes.voteable_id',
  185 + :conditions => ["votes.voteable_type = 'Article' and profile_id = ? ", owner.id]
  186 + )
  187 + result.paginate({:page => 1, :per_page => limit})
  188 + end
  189 + end
  190 +
  191 +
  192 +
  193 +
  194 +end
0 195 \ No newline at end of file
... ...
plugins/relevant_content/lib/relevant_content_plugin.rb 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +class RelevantContentPlugin < Noosfero::Plugin
  2 +
  3 + def self.plugin_name
  4 + "Relevant Content Plugin"
  5 + end
  6 +
  7 + def self.plugin_description
  8 + _("A plugin that lists the most accessed, most commented, most liked and most disliked contents.")
  9 + end
  10 +
  11 + def self.extra_blocks
  12 + {
  13 + RelevantContentPlugin::RelevantContentBlock => {:position => ['1','2','3'] }
  14 + }
  15 + end
  16 +
  17 + def stylesheet?
  18 + true
  19 + end
  20 +
  21 +end
... ...
plugins/relevant_content/lib/relevant_content_plugin/relevant_content_block.rb 0 → 100644
... ... @@ -0,0 +1,93 @@
  1 +class RelevantContentPlugin::RelevantContentBlock < Block
  2 + def self.description
  3 + _('Relevant content')
  4 + end
  5 +
  6 + def default_title
  7 + _('Relevant content')
  8 + end
  9 +
  10 + def help
  11 + _('This block lists the most popular content.')
  12 + end
  13 +
  14 + settings_items :limit, :type => :integer, :default => 5
  15 + settings_items :show_most_read, :type => :integer, :default => 1
  16 + settings_items :show_most_commented, :type => :integer, :default => 1
  17 + settings_items :show_most_liked, :type => :integer, :default => 1
  18 + settings_items :show_most_disliked, :type => :integer, :default => 0
  19 + settings_items :show_most_voted, :type => :integer, :default => 1
  20 +
  21 + include ActionController::UrlWriter
  22 + def content(args={})
  23 +
  24 + content = block_title(title)
  25 +
  26 + if self.show_most_read != 0
  27 + docs = Article.most_accessed(owner, self.limit)
  28 + if !docs.blank?
  29 + subcontent = ""
  30 + subcontent += content_tag(:span, _("Most read articles"), :class=>"title mread") + "\n"
  31 + subcontent += content_tag(:ul, docs.map {|item| content_tag('li', link_to(h(item.title), item.url))}.join("\n"))
  32 + content += content_tag(:div, subcontent, :class=>"block mread") + "\n"
  33 + end
  34 + end
  35 +
  36 + if self.show_most_commented != 0
  37 + docs = Article.most_commented_relevant_content(owner, self.limit)
  38 + if !docs.blank?
  39 + subcontent = ""
  40 + subcontent += content_tag(:span, _("Most commented articles"), :class=>"title mcommented") + "\n"
  41 + subcontent += content_tag(:ul, docs.map {|item| content_tag('li', link_to(h(item.title), item.url))}.join("\n"))
  42 + content += content_tag(:div, subcontent, :class=>"block mcommented") + "\n"
  43 + end
  44 + end
  45 +
  46 + if owner.kind_of?(Environment)
  47 + env = owner
  48 + else
  49 + env = owner.environment
  50 + end
  51 +
  52 + if env.plugin_enabled?(VotePlugin)
  53 + if self.show_most_liked != 0
  54 + docs = Article.more_positive_votes(owner, self.limit)
  55 + if !docs.blank?
  56 + subcontent = ""
  57 + subcontent += content_tag(:span, _("Most liked articles"), :class=>"title mliked") + "\n"
  58 + subcontent += content_tag(:ul, docs.map {|item| content_tag('li', link_to(h(item.title), item.url))}.join("\n"))
  59 + content += content_tag(:div, subcontent, :class=>"block mliked") + "\n"
  60 + end
  61 + end
  62 + if self.show_most_disliked != 0
  63 + docs = Article.more_negative_votes(owner, self.limit)
  64 + if !docs.blank?
  65 + subcontent = ""
  66 + subcontent += content_tag(:span, _("Most disliked articles"), :class=>"title mdisliked") + "\n"
  67 + subcontent += content_tag(:ul, docs.map {|item| content_tag('li', link_to(h(item.title), item.url))}.join("\n"))
  68 + content += content_tag(:div, subcontent, :class=>"block mdisliked") + "\n"
  69 + end
  70 + end
  71 +
  72 + if self.show_most_voted != 0
  73 + docs = Article.most_voted(owner, self.limit)
  74 + if !docs.blank?
  75 + subcontent = ""
  76 + subcontent += content_tag(:span, _("Most voted articles"), :class=>"title mvoted") + "\n"
  77 + subcontent += content_tag(:ul, docs.map {|item| content_tag('li', link_to(h(item.title), item.url))}.join("\n"))
  78 + content += content_tag(:div, subcontent, :class=>"block mvoted") + "\n"
  79 + end
  80 + end
  81 + end
  82 + return content
  83 + end
  84 +
  85 + def timeout
  86 + 4.hours
  87 + end
  88 +
  89 + def self.expire_on
  90 + { :profile => [:article], :environment => [:article] }
  91 + end
  92 +
  93 +end
0 94 \ No newline at end of file
... ...
plugins/relevant_content/public/style.css 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +#content .relevant-content-plugin_relevant-content-block {
  2 + padding: 10px 0px 10px 10px;
  3 + word-wrap: break-word;
  4 +}
  5 +
  6 +.relevant-content-plugin_relevant-content-block ul {
  7 + margin: 0px;
  8 + padding: 0px 0px 0px 20px;
  9 +}
  10 +.relevant-content-plugin_relevant-content-block li {
  11 + margin: 0px;
  12 + padding: 0px;
  13 + list-style: none
  14 +}
  15 +.relevant-content-plugin_relevant-content-block a {
  16 + text-decoration: none;
  17 +}
  18 +.relevant-content-plugin_relevant-content-block .block-footer-content {
  19 + font-size: 10px;
  20 +}
  21 +.relevant-content-plugin_relevant-content-block .block-footer-content a:hover {
  22 + text-decoration: underline;
  23 +}
  24 +
  25 +.relevant-content-plugin_relevant-content-block p {
  26 + text-align:center;
  27 +}
  28 +
  29 +.relevant-content-plugin_relevant-content-block p.like{
  30 + background-image: url('images/positive-hand.png');
  31 + background-repeat: no-repeat;
  32 + min-width: 50px;
  33 + text-align:center;
  34 +}
  35 +
  36 +.relevant-content-plugin_relevant-content-block p.dislike{
  37 + background-image: url('images/negative-hand.png');
  38 + background-repeat: no-repeat;
  39 + min-width: 50px;
  40 + text-align:center;
  41 +}
  42 +
  43 +
  44 +.relevant-content-plugin_relevant-content-block {
  45 + //overflow: hidden;
  46 + display: block;
  47 + width: 100%;
  48 +}
  49 +
  50 +
  51 +.relevant-content-cover img {
  52 + width: 100%;
  53 +}
  54 +
  55 +.relevant-content-plugin_relevant-content-block span.title {
  56 + display: block;
  57 + margin: 20px 0px 0px;
  58 + padding: 0px 0px 0px 20px;
  59 +}
  60 +
  61 +.relevant-content-plugin_relevant-content-block span.title.mread {
  62 +
  63 +}
  64 +
  65 +.relevant-content-plugin_relevant-content-block span.title.mcommented {
  66 +
  67 +}
  68 +
  69 +.relevant-content-plugin_relevant-content-block span.title.mliked {
  70 +
  71 +}
  72 +
  73 +.relevant-content-plugin_relevant-content-block span.title.mdisliked {
  74 +
  75 +}
  76 +
  77 +.relevant-content-plugin_relevant-content-block span.title.mvoted {
  78 +
  79 +}
... ...
plugins/relevant_content/test/test_helper.rb 0 → 100644
... ... @@ -0,0 +1 @@
  1 +require File.dirname(__FILE__) + '/../../../test/test_helper'
... ...
plugins/relevant_content/test/unit/relevant_content_block_test.rb 0 → 100644
... ... @@ -0,0 +1,217 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +require 'comment_controller'
  4 +# Re-raise errors caught by the controller.
  5 +class CommentController; def rescue_action(e) raise e end; end
  6 +
  7 +class RelevantContentBlockTest < ActiveSupport::TestCase
  8 +
  9 + include AuthenticatedTestHelper
  10 + fixtures :users, :environments
  11 +
  12 + def setup
  13 + @controller = CommentController.new
  14 + @request = ActionController::TestRequest.new
  15 + @response = ActionController::TestResponse.new
  16 +
  17 + @profile = create_user('testinguser').person
  18 + @environment = @profile.environment
  19 + end
  20 + attr_reader :profile, :environment
  21 +
  22 +
  23 +
  24 + should 'have a default title' do
  25 + relevant_content_block = RelevantContentPlugin::RelevantContentBlock.new
  26 + block = Block.new
  27 + assert_not_equal block.default_title, relevant_content_block.default_title
  28 + end
  29 +
  30 + should 'have a help tooltip' do
  31 + relevant_content_block = RelevantContentPlugin::RelevantContentBlock.new
  32 + block = Block.new
  33 + assert_not_equal "", relevant_content_block.help
  34 + end
  35 +
  36 + should 'describe itself' do
  37 + assert_not_equal Block.description, RelevantContentPlugin::RelevantContentBlock.description
  38 + end
  39 +
  40 + should 'is editable' do
  41 + block = RelevantContentPlugin::RelevantContentBlock.new
  42 + assert block.editable?
  43 + end
  44 +
  45 + should 'expire' do
  46 + assert_equal RelevantContentPlugin::RelevantContentBlock.expire_on, {:environment=>[:article], :profile=>[:article]}
  47 + end
  48 +
  49 + should 'not raise an exception when finding the most accessed content' do
  50 + assert_nothing_raised{
  51 + Article.most_accessed(Environment.default, 5)
  52 + }
  53 + end
  54 +
  55 + should 'not raise an exception when finding the most commented content' do
  56 + assert_nothing_raised{
  57 + Article.most_commented_relevant_content(Environment.default, 5)
  58 + }
  59 + end
  60 +
  61 + should 'not raise an exception when finding the most liked content' do
  62 + begin
  63 + Environment.default.enable_plugin(:vote)
  64 + rescue
  65 + puts "Unable to activate vote plugin"
  66 + end
  67 + if Environment.default.plugin_enabled?(:vote)
  68 + assert_nothing_raised{
  69 + Article.most_liked(Environment.default, 5)
  70 + }
  71 + end
  72 + end
  73 +
  74 + should 'not raise an exception when finding the most disliked content' do
  75 + begin
  76 + Environment.default.enable_plugin(:vote)
  77 + rescue
  78 + puts "Unable to activate vote plugin"
  79 + end
  80 + if Environment.default.plugin_enabled?(:vote)
  81 + assert_nothing_raised{
  82 + Article.most_disliked(Environment.default, 5)
  83 + }
  84 + end
  85 + end
  86 +
  87 +
  88 + should 'not raise an exception when finding the more positive votes' do
  89 + begin
  90 + Environment.default.enable_plugin(:vote)
  91 + rescue
  92 + puts "Unable to activate vote plugin"
  93 + end
  94 + if Environment.default.plugin_enabled?(:vote)
  95 + assert_nothing_raised{
  96 + Article.more_positive_votes(Environment.default, 5)
  97 + }
  98 + end
  99 + end
  100 +
  101 + should 'not raise an exception when finding the most voted' do
  102 + begin
  103 + Environment.default.enable_plugin(:vote)
  104 + rescue
  105 + puts "Unable to activate vote plugin"
  106 + end
  107 + if Environment.default.plugin_enabled?(:vote)
  108 + assert_nothing_raised{
  109 + Article.most_voted(Environment.default, 5)
  110 + }
  111 + end
  112 + end
  113 +
  114 + should 'find the most voted' do
  115 +
  116 + article = fast_create(Article, {:name=>'2 votes'})
  117 + for i in 0..2
  118 + person = fast_create(Person)
  119 + person.vote_for(article)
  120 + end
  121 +
  122 + article = fast_create(Article, {:name=>'10 votes'})
  123 + for i in 0..10
  124 + person = fast_create(Person)
  125 + person.vote_for(article)
  126 + end
  127 +
  128 + article = fast_create(Article, {:name=>'5 votes'})
  129 + for i in 0..5
  130 + person = fast_create(Person)
  131 + person.vote_for(article)
  132 + end
  133 +
  134 + articles = Article.most_voted(Environment.default, 5)
  135 + assert_equal '10 votes', articles.first.name
  136 + assert_equal '2 votes', articles.last.name
  137 + end
  138 +
  139 + should 'list the most postive' do
  140 +
  141 + article = fast_create(Article, {:name=>'23 votes for 20 votes against'})
  142 + for i in 0..20
  143 + person = fast_create(Person)
  144 + person.vote_against(article)
  145 + end
  146 + for i in 0..23
  147 + person = fast_create(Person)
  148 + person.vote_for(article)
  149 + end
  150 +
  151 + article = fast_create(Article, {:name=>'10 votes for 5 votes against'})
  152 + for i in 0..10
  153 + person = fast_create(Person)
  154 + person.vote_for(article)
  155 + end
  156 + for i in 0..5
  157 + person = fast_create(Person)
  158 + person.vote_against(article)
  159 + end
  160 +
  161 + article = fast_create(Article, {:name=>'2 votes against'})
  162 + for i in 0..2
  163 + person = fast_create(Person)
  164 + person.vote_against(article)
  165 + end
  166 +
  167 + article = fast_create(Article, {:name=>'7 votes for'})
  168 + for i in 0..7
  169 + person = fast_create(Person)
  170 + person.vote_for(article)
  171 + end
  172 +
  173 + articles = Article.more_positive_votes(Environment.default, 5)
  174 + assert_equal '7 votes for', articles.first.name
  175 + assert_equal '23 votes for 20 votes against', articles.last.name
  176 + end
  177 +
  178 + should 'list the most negative' do
  179 +
  180 + article = fast_create(Article, {:name=>'23 votes for 29 votes against'})
  181 + for i in 0..29
  182 + person = fast_create(Person)
  183 + person.vote_against(article)
  184 + end
  185 + for i in 0..23
  186 + person = fast_create(Person)
  187 + person.vote_for(article)
  188 + end
  189 +
  190 + article = fast_create(Article, {:name=>'10 votes for 15 votes against'})
  191 + for i in 0..10
  192 + person = fast_create(Person)
  193 + person.vote_for(article)
  194 + end
  195 + for i in 0..15
  196 + person = fast_create(Person)
  197 + person.vote_against(article)
  198 + end
  199 +
  200 + article = fast_create(Article, {:name=>'2 votes against'})
  201 + for i in 0..2
  202 + person = fast_create(Person)
  203 + person.vote_against(article)
  204 + end
  205 +
  206 + article = fast_create(Article, {:name=>'7 votes for'})
  207 + for i in 0..7
  208 + person = fast_create(Person)
  209 + person.vote_for(article)
  210 + end
  211 +
  212 + articles = Article.more_negative_votes(Environment.default, 5)
  213 + assert_equal '23 votes for 29 votes against', articles.first.name
  214 + assert_equal '2 votes against', articles.last.name
  215 + end
  216 +
  217 +end
... ...
plugins/relevant_content/test/unit/relevant_content_plugin_test.rb 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class RelevantContentPluginTest < ActiveSupport::TestCase
  4 +
  5 + def setup
  6 + @plugin = RelevantContentPlugin.new
  7 + end
  8 +
  9 + should 'be a noosfero plugin' do
  10 + assert_kind_of Noosfero::Plugin, @plugin
  11 + end
  12 +
  13 + should 'have name' do
  14 + assert_equal 'Relevant Content Plugin', RelevantContentPlugin.plugin_name
  15 + end
  16 +
  17 + should 'have description' do
  18 + assert_equal _("A plugin that lists the most accessed, most commented, most liked and most disliked contents."), RelevantContentPlugin.plugin_description
  19 + end
  20 +
  21 + should 'have stylesheet' do
  22 + assert @plugin.stylesheet?
  23 + end
  24 +
  25 + should "return RelevantContentBlock in extra_blocks class method" do
  26 + assert RelevantContentPlugin.extra_blocks.keys.include?(RelevantContentPlugin::RelevantContentBlock)
  27 + end
  28 +
  29 +end
... ...
plugins/relevant_content/views/box_organizer/relevant_content_plugin/_relevant_content_block.rhtml 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +<div id='edit-relevant-content-block'>
  2 + <%= labelled_form_field _('Limit of items per category'), text_field(:block, :limit, :size => 3) %>
  3 + <%= labelled_check_box _('Display most accessed content'), "block[show_most_read]", 1 ,@block.show_most_read != 0 %><BR>
  4 + <%= labelled_check_box _('Display most commented content'), "block[show_most_commented]", 1 ,@block.show_most_commented != 0 %><BR>
  5 + <%= labelled_check_box _('Display most liked content'), "block[show_most_liked]", 1 ,@block.show_most_liked != 0 %><BR>
  6 + <%= labelled_check_box _('Display most voted content'), "block[show_most_voted]", 1 ,@block.show_most_voted != 0 %><BR>
  7 + <%= labelled_check_box _('Display most disliked content'), "block[show_most_disliked]", 1 , @block.show_most_disliked != 0 %><BR>
  8 +</div>
  9 +
  10 +
  11 +
  12 +
... ...
plugins/relevant_content/views/environment_design/relevant_content_plugin 0 → 120000
... ... @@ -0,0 +1 @@
  1 +../box_organizer/relevant_content_plugin
0 2 \ No newline at end of file
... ...
plugins/relevant_content/views/profile_design/relevant_content_plugin 0 → 120000
... ... @@ -0,0 +1 @@
  1 +../box_organizer/relevant_content_plugin
0 2 \ No newline at end of file
... ...