Commit bc0f3eea306176ba0eef4ed7374ea4e0df3a0e57
1 parent
0946557c
Exists in
master
and in
28 other branches
ActionItem198: require the www. in front of the domain
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/branches/0.11.x@2485 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
25 additions
and
1 deletions
Show diff stats
app/models/environment.rb
| @@ -220,6 +220,19 @@ class Environment < ActiveRecord::Base | @@ -220,6 +220,19 @@ class Environment < ActiveRecord::Base | ||
| 220 | end | 220 | end |
| 221 | end | 221 | end |
| 222 | 222 | ||
| 223 | + # Whether this environment should force having 'www.' in its domain name or | ||
| 224 | + # not. Defauls to false. | ||
| 225 | + # | ||
| 226 | + # See also #default_hostname | ||
| 227 | + def force_www | ||
| 228 | + settings[:force_www] || false | ||
| 229 | + end | ||
| 230 | + | ||
| 231 | + # Sets the value of #force_www. <tt>value</tt> must be a boolean. | ||
| 232 | + def force_www=(value) | ||
| 233 | + settings[:force_www] = value | ||
| 234 | + end | ||
| 235 | + | ||
| 223 | # ################################################# | 236 | # ################################################# |
| 224 | # Validations | 237 | # Validations |
| 225 | # ################################################# | 238 | # ################################################# |
| @@ -248,11 +261,16 @@ class Environment < ActiveRecord::Base | @@ -248,11 +261,16 @@ class Environment < ActiveRecord::Base | ||
| 248 | Category.top_level_for(self) | 261 | Category.top_level_for(self) |
| 249 | end | 262 | end |
| 250 | 263 | ||
| 264 | + # Returns the hostname of the first domain associated to this environment. | ||
| 265 | + # | ||
| 266 | + # If #force_www is true, adds 'www.' at the beginning of the hostname. If the | ||
| 267 | + # environment has not associated domains, returns 'localhost'. | ||
| 251 | def default_hostname | 268 | def default_hostname |
| 252 | if self.domains(true).empty? | 269 | if self.domains(true).empty? |
| 253 | 'localhost' | 270 | 'localhost' |
| 254 | else | 271 | else |
| 255 | - self.domains.find(:first, :order => 'id').name | 272 | + domain = self.domains.find(:first, :order => 'id').name |
| 273 | + force_www ? ('www.' + domain) : domain | ||
| 256 | end | 274 | end |
| 257 | end | 275 | end |
| 258 | 276 |
test/unit/environment_test.rb
| @@ -172,6 +172,12 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -172,6 +172,12 @@ class EnvironmentTest < Test::Unit::TestCase | ||
| 172 | assert_equal 'localhost', env.default_hostname | 172 | assert_equal 'localhost', env.default_hostname |
| 173 | end | 173 | end |
| 174 | 174 | ||
| 175 | + should 'add www when told to force www' do | ||
| 176 | + env = Environment.create!(:name => 'test environment', :force_www => true) | ||
| 177 | + env.domains << Domain.create(:name => 'example.com') | ||
| 178 | + assert_equal 'www.example.com', env.default_hostname | ||
| 179 | + end | ||
| 180 | + | ||
| 175 | should 'provide default top URL' do | 181 | should 'provide default top URL' do |
| 176 | env = Environment.new | 182 | env = Environment.new |
| 177 | env.expects(:default_hostname).returns('www.lalala.net') | 183 | env.expects(:default_hostname).returns('www.lalala.net') |