Commit 1aef97f126c9abc4df05ebef838c80c2f1eccf81
Committed by
Antonio Terceiro
1 parent
074bf280
Exists in
master
and in
21 other branches
Fix Block display options to work with subdirectories
Signed-off-by: Arthur Del Esposte <arthurmde@gmail.com> Signed-off-by: André Bernardes <andrebsguedes@gmail.com> Signed-off-by: Arthur Del Esposte <arthurmde@gmail.com> Signed-off-by: Gabriela Navarro <navarro1703@gmail.com> Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com> Signed-off-by: Pedro de Lyra <pedrodelyra@gmail.com>
Showing
2 changed files
with
25 additions
and
8 deletions
Show diff stats
app/models/block.rb
| ... | ... | @@ -75,7 +75,7 @@ class Block < ActiveRecord::Base |
| 75 | 75 | if context[:article] |
| 76 | 76 | return context[:article] == owner.home_page |
| 77 | 77 | else |
| 78 | - return context[:request_path] == '/' | |
| 78 | + return home_page_path?(context[:request_path]) | |
| 79 | 79 | end |
| 80 | 80 | end |
| 81 | 81 | |
| ... | ... | @@ -83,7 +83,7 @@ class Block < ActiveRecord::Base |
| 83 | 83 | if context[:article] |
| 84 | 84 | return context[:article] != owner.home_page |
| 85 | 85 | else |
| 86 | - return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '') | |
| 86 | + return !home_page_path?(context[:request_path]) | |
| 87 | 87 | end |
| 88 | 88 | end |
| 89 | 89 | |
| ... | ... | @@ -114,7 +114,7 @@ class Block < ActiveRecord::Base |
| 114 | 114 | # blocks to choose one to include in the design. |
| 115 | 115 | # |
| 116 | 116 | # Must be redefined in subclasses to match the description of each block |
| 117 | - # type. | |
| 117 | + # type. | |
| 118 | 118 | def self.description |
| 119 | 119 | '(dummy)' |
| 120 | 120 | end |
| ... | ... | @@ -124,13 +124,13 @@ class Block < ActiveRecord::Base |
| 124 | 124 | # This method can return several types of objects: |
| 125 | 125 | # |
| 126 | 126 | # * <tt>String</tt>: if the string starts with <tt>http://</tt> or <tt>https://</tt>, then it is assumed to be address of an IFRAME. Otherwise it's is used as regular HTML. |
| 127 | - # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME. | |
| 127 | + # * <tt>Hash</tt>: the hash is used to build an URL that is used as the address for a IFRAME. | |
| 128 | 128 | # * <tt>Proc</tt>: the Proc is evaluated in the scope of BoxesHelper. The |
| 129 | 129 | # block can then use <tt>render</tt>, <tt>link_to</tt>, etc. |
| 130 | 130 | # |
| 131 | 131 | # The method can also return <tt>nil</tt>, which means "no content". |
| 132 | 132 | # |
| 133 | - # See BoxesHelper#extract_block_content for implementation details. | |
| 133 | + # See BoxesHelper#extract_block_content for implementation details. | |
| 134 | 134 | def content(args={}) |
| 135 | 135 | "This is block number %d" % self.id |
| 136 | 136 | end |
| ... | ... | @@ -239,4 +239,21 @@ class Block < ActiveRecord::Base |
| 239 | 239 | self.position = block.position |
| 240 | 240 | end |
| 241 | 241 | |
| 242 | + private | |
| 243 | + | |
| 244 | + def home_page_path | |
| 245 | + home_page_url = Noosfero.root('/') | |
| 246 | + | |
| 247 | + if owner.kind_of?(Profile) | |
| 248 | + home_page_url += "profile/" if owner.home_page.nil? | |
| 249 | + home_page_url += owner.identifier | |
| 250 | + end | |
| 251 | + | |
| 252 | + return home_page_url | |
| 253 | + end | |
| 254 | + | |
| 255 | + def home_page_path? path | |
| 256 | + return path == home_page_path || path == (home_page_path + '/') | |
| 257 | + end | |
| 258 | + | |
| 242 | 259 | end | ... | ... |
test/unit/block_test.rb
| ... | ... | @@ -6,7 +6,7 @@ class BlockTest < ActiveSupport::TestCase |
| 6 | 6 | should 'describe itself' do |
| 7 | 7 | assert_kind_of String, Block.description |
| 8 | 8 | end |
| 9 | - | |
| 9 | + | |
| 10 | 10 | should 'access owner through box' do |
| 11 | 11 | user = create_user('testinguser').person |
| 12 | 12 | |
| ... | ... | @@ -82,7 +82,7 @@ class BlockTest < ActiveSupport::TestCase |
| 82 | 82 | should 'be able to be displayed only in the homepage (index) of the environment' do |
| 83 | 83 | block = build(Block, :display => 'home_page_only') |
| 84 | 84 | |
| 85 | - assert_equal true, block.visible?(:article => nil, :request_path => '/') | |
| 85 | + assert_equal true, block.visible?(:article => nil, :request_path => "#{Noosfero.root('/')}") | |
| 86 | 86 | assert_equal false, block.visible?(:article => nil) |
| 87 | 87 | end |
| 88 | 88 | |
| ... | ... | @@ -102,7 +102,7 @@ class BlockTest < ActiveSupport::TestCase |
| 102 | 102 | block = build(Block, :display => 'except_home_page') |
| 103 | 103 | block.stubs(:owner).returns(profile) |
| 104 | 104 | |
| 105 | - assert_equal false, block.visible?(:article => nil, :request_path => '/testinguser') | |
| 105 | + assert_equal false, block.visible?(:article => nil, :request_path => "#{Noosfero.root('/')}profile/testinguser") | |
| 106 | 106 | assert_equal true, block.visible?(:article => nil) |
| 107 | 107 | end |
| 108 | 108 | ... | ... |