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 | 220 | end |
| 221 | 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 | 237 | # Validations |
| 225 | 238 | # ################################################# |
| ... | ... | @@ -248,11 +261,16 @@ class Environment < ActiveRecord::Base |
| 248 | 261 | Category.top_level_for(self) |
| 249 | 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 | 268 | def default_hostname |
| 252 | 269 | if self.domains(true).empty? |
| 253 | 270 | 'localhost' |
| 254 | 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 | 274 | end |
| 257 | 275 | end |
| 258 | 276 | ... | ... |
test/unit/environment_test.rb
| ... | ... | @@ -172,6 +172,12 @@ class EnvironmentTest < Test::Unit::TestCase |
| 172 | 172 | assert_equal 'localhost', env.default_hostname |
| 173 | 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 | 181 | should 'provide default top URL' do |
| 176 | 182 | env = Environment.new |
| 177 | 183 | env.expects(:default_hostname).returns('www.lalala.net') | ... | ... |