Commit d3c41210fe0444b7bc8ad0f3257d081f432216f9
Exists in
master
and in
29 other branches
Merge branch 'textarticle_links' of https://gitlab.com/danielafeitosa/noosfero
Showing
6 changed files
with
57 additions
and
3 deletions
Show diff stats
app/helpers/application_helper.rb
app/models/profile.rb
| ... | ... | @@ -572,6 +572,14 @@ class Profile < ActiveRecord::Base |
| 572 | 572 | options.merge(Noosfero.url_options) |
| 573 | 573 | end |
| 574 | 574 | |
| 575 | + def top_url(scheme = 'http') | |
| 576 | + url = scheme + '://' | |
| 577 | + url << url_options[:host] | |
| 578 | + url << ':' << url_options[:port].to_s if url_options.key?(:port) | |
| 579 | + url << Noosfero.root('') | |
| 580 | + url | |
| 581 | + end | |
| 582 | + | |
| 575 | 583 | private :generate_url, :url_options |
| 576 | 584 | |
| 577 | 585 | def default_hostname | ... | ... |
app/models/text_article.rb
| ... | ... | @@ -33,11 +33,11 @@ class TextArticle < Article |
| 33 | 33 | end |
| 34 | 34 | |
| 35 | 35 | def change_element_path(el, attribute) |
| 36 | - fullpath = /(https?):\/\/(#{environment.default_hostname})(:\d+)?(\/.*)/.match(el[attribute]) | |
| 36 | + fullpath = /(https?):\/\/(#{profile.default_hostname})(:\d+)?(\/.*)/.match(el[attribute]) | |
| 37 | 37 | if fullpath |
| 38 | 38 | domain = fullpath[2] |
| 39 | 39 | path = fullpath[4] |
| 40 | - el[attribute] = path if domain == environment.default_hostname | |
| 40 | + el[attribute] = path if domain == profile.default_hostname | |
| 41 | 41 | end |
| 42 | 42 | end |
| 43 | 43 | ... | ... |
test/unit/application_helper_test.rb
| ... | ... | @@ -1022,6 +1022,27 @@ class ApplicationHelperTest < ActionView::TestCase |
| 1022 | 1022 | assert_equal "Clone Article", label_for_clone_article(TinyMceArticle.new) |
| 1023 | 1023 | end |
| 1024 | 1024 | |
| 1025 | + should "return top url of environment" do | |
| 1026 | + env = Environment.default | |
| 1027 | + request = mock() | |
| 1028 | + request.expects(:scheme).returns('http') | |
| 1029 | + stubs(:request).returns(request) | |
| 1030 | + stubs(:environment).returns(env) | |
| 1031 | + stubs(:profile).returns(nil) | |
| 1032 | + assert_equal env.top_url('http'), top_url | |
| 1033 | + end | |
| 1034 | + | |
| 1035 | + should "return top url considering profile" do | |
| 1036 | + env = Environment.default | |
| 1037 | + c = fast_create(Community) | |
| 1038 | + request = mock() | |
| 1039 | + request.stubs(:scheme).returns('http') | |
| 1040 | + stubs(:request).returns(request) | |
| 1041 | + stubs(:environment).returns(env) | |
| 1042 | + stubs(:profile).returns(c) | |
| 1043 | + assert_equal c.top_url, top_url | |
| 1044 | + end | |
| 1045 | + | |
| 1025 | 1046 | protected |
| 1026 | 1047 | include NoosferoTestHelper |
| 1027 | 1048 | ... | ... |
test/unit/profile_test.rb
| ... | ... | @@ -256,6 +256,20 @@ class ProfileTest < ActiveSupport::TestCase |
| 256 | 256 | assert_equal({:host => 'micojones.net', :profile => nil, :controller => 'content_viewer', :action => 'view_page', :page => []}, profile.url) |
| 257 | 257 | end |
| 258 | 258 | |
| 259 | + should 'provide environment top URL when profile has not a domain' do | |
| 260 | + env = Environment.default | |
| 261 | + profile = fast_create(Profile, :environment_id => env.id) | |
| 262 | + assert_equal env.top_url, profile.top_url | |
| 263 | + end | |
| 264 | + | |
| 265 | + should 'provide top URL to profile with domain' do | |
| 266 | + env = Environment.default | |
| 267 | + profile = fast_create(Profile, :environment_id => env.id) | |
| 268 | + domain = fast_create(Domain, :name => 'example.net') | |
| 269 | + profile.domains << domain | |
| 270 | + assert_equal 'http://example.net', profile.top_url | |
| 271 | + end | |
| 272 | + | |
| 259 | 273 | should 'help developers by adding a suitable port to url' do |
| 260 | 274 | profile = build(Profile) |
| 261 | 275 | ... | ... |
test/unit/text_article_test.rb
| ... | ... | @@ -85,6 +85,17 @@ class TextArticleTest < ActiveSupport::TestCase |
| 85 | 85 | assert_equal "<img src=\"/test.png\">", article.body |
| 86 | 86 | end |
| 87 | 87 | |
| 88 | + should 'change image path to relative for profile with own domain' do | |
| 89 | + person = create_user('testuser').person | |
| 90 | + person.domains << build(Domain) | |
| 91 | + | |
| 92 | + article = TextArticle.new(:profile => person, :name => 'test') | |
| 93 | + env = Environment.default | |
| 94 | + article.body = "<img src=\"http://#{person.default_hostname}:3000/link-profile.png\">" | |
| 95 | + article.save! | |
| 96 | + assert_equal "<img src=\"/link-profile.png\">", article.body | |
| 97 | + end | |
| 98 | + | |
| 88 | 99 | should 'not be translatable if there is no language available on environment' do |
| 89 | 100 | environment = fast_create(Environment) |
| 90 | 101 | environment.languages = nil | ... | ... |