parlement 0.14 → 0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +41 -1
- data/MEMORY +66 -5
- data/README +10 -5
- data/Rakefile +15 -23
- data/app/controllers/account_controller.rb +48 -43
- data/app/controllers/{application.rb → application_controller.rb} +15 -12
- data/app/controllers/elt_controller.rb +77 -32
- data/app/controllers/subscriber_controller.rb +11 -10
- data/app/helpers/application_helper.rb +14 -1
- data/app/helpers/elt_helper.rb +9 -7
- data/app/models/elt.rb +25 -24
- data/app/models/mail.rb +44 -47
- data/app/models/person_notify.rb +2 -2
- data/app/models/user.rb +128 -2
- data/app/models/user_notify.rb +15 -15
- data/app/views/account/_login.rhtml +39 -39
- data/app/views/account/_show.rhtml +22 -30
- data/app/views/account/signup.rhtml +2 -2
- data/app/views/elt/_choice.rhtml +6 -6
- data/app/views/elt/_elt.rhtml +27 -32
- data/app/views/elt/choices.rhtml +16 -18
- data/app/views/elt/list/_byDate.rhtml +14 -14
- data/app/views/elt/list/_byVote.rhtml +15 -15
- data/app/views/elt/list/_children.rhtml +48 -40
- data/app/views/elt/list/_subscribers.rhtml +1 -1
- data/app/views/elt/new.rhtml +22 -21
- data/app/views/elt/rss.rxml +4 -11
- data/app/views/elt/show.rhtml +65 -61
- data/app/views/elt/vote_rss.rxml +4 -11
- data/app/views/layouts/top.rhtml +39 -50
- data/app/views/person/_listElts.rhtml +1 -1
- data/app/views/person/show.rhtml +1 -1
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/change_password.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/delete.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/forgot_password.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/pending_delete.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/signup.rhtml +0 -0
- data/config/boot.rb +97 -32
- data/config/environment.rb +37 -35
- data/config/environments/development.rb +2 -3
- data/config/environments/production.rb +3 -0
- data/config/initializers/string_ruby_1.8.rb +10 -0
- data/config/routes.rb +17 -22
- data/db/schema.rb +102 -74
- data/lib/tasks/rspec.rake +167 -0
- data/public/404.html +25 -7
- data/public/500.html +26 -7
- data/public/dispatch.cgi +0 -0
- data/public/dispatch.fcgi +0 -0
- data/public/dispatch.rb +0 -0
- data/public/images/live_tree_branch_collapsed_icon.gif +0 -0
- data/public/images/live_tree_branch_expanded_icon.gif +0 -0
- data/public/images/live_tree_leaf_icon.gif +0 -0
- data/public/javascripts/application.js +258 -0
- data/public/javascripts/controls.js +544 -414
- data/public/javascripts/dragdrop.js +229 -198
- data/public/javascripts/effects.js +499 -459
- data/public/javascripts/prototype.js +2926 -1121
- data/public/javascripts/shadedborder.js +68 -50
- data/public/stylesheets/default.css +34 -34
- data/public/stylesheets/live_tree.css +0 -0
- data/public/stylesheets/scaffold.css +6 -6
- data/script/about +0 -0
- data/script/autospec +6 -0
- data/script/benchmarker +0 -0
- data/script/breakpointer +0 -0
- data/script/console +0 -0
- data/script/dbconsole +3 -0
- data/script/destroy +0 -0
- data/script/generate +0 -0
- data/script/plugin +0 -0
- data/script/profiler +0 -0
- data/script/runner +0 -0
- data/script/server +0 -0
- data/script/spec +10 -0
- data/script/spec_server +9 -0
- data/test/unit/attachment_test.rb +4 -4
- data/test/unit/choice_test.rb +1 -1
- data/test/unit/elt_test.rb +9 -9
- data/test/unit/mail_notify_test.rb +2 -2
- data/test/unit/mail_test.rb +18 -11
- data/test/unit/person_notify_test.rb +1 -1
- data/test/unit/person_test.rb +1 -1
- data/test/unit/subscriber_test.rb +1 -1
- data/test/unit/user_test.rb +81 -0
- data/test/unit/visit_test.rb +6 -6
- data/vendor/plugins/activerecord_foreign_key_extensions/init.rb +2 -0
- data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +182 -0
- data/vendor/plugins/activerecord_text_id_extensions/init.rb +2 -0
- data/vendor/plugins/activerecord_text_id_extensions/lib/active_record_extensions.rb +24 -0
- data/vendor/plugins/acts_as_nested_set/README +15 -0
- data/vendor/plugins/acts_as_nested_set/init.rb +1 -0
- data/vendor/plugins/acts_as_nested_set/lib/active_record/acts/nested_set.rb +210 -0
- data/vendor/plugins/acts_as_nested_set/test/nested_set_test.rb +269 -0
- data/vendor/plugins/acts_as_tree/README +26 -0
- data/vendor/plugins/acts_as_tree/Rakefile +22 -0
- data/vendor/plugins/acts_as_tree/init.rb +1 -0
- data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
- data/vendor/plugins/{output_compression/CHANGELOG → acts_as_tree/test/abstract_unit.rb} +0 -0
- data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
- data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
- data/vendor/plugins/classic_pagination/CHANGELOG +152 -0
- data/vendor/plugins/classic_pagination/README +18 -0
- data/vendor/plugins/{output_compression/rakefile → classic_pagination/Rakefile} +22 -22
- data/vendor/plugins/classic_pagination/init.rb +33 -0
- data/vendor/plugins/classic_pagination/install.rb +1 -0
- data/vendor/plugins/classic_pagination/lib/pagination.rb +405 -0
- data/vendor/plugins/classic_pagination/lib/pagination_helper.rb +135 -0
- data/vendor/plugins/classic_pagination/test/fixtures/companies.yml +24 -0
- data/vendor/plugins/classic_pagination/test/fixtures/company.rb +9 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developer.rb +7 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developers.yml +21 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developers_projects.yml +13 -0
- data/vendor/plugins/classic_pagination/test/fixtures/project.rb +3 -0
- data/vendor/plugins/classic_pagination/test/fixtures/projects.yml +7 -0
- data/vendor/plugins/classic_pagination/test/fixtures/replies.yml +13 -0
- data/vendor/plugins/classic_pagination/test/fixtures/reply.rb +5 -0
- data/vendor/plugins/classic_pagination/test/fixtures/schema.sql +42 -0
- data/vendor/plugins/classic_pagination/test/fixtures/topic.rb +3 -0
- data/vendor/plugins/classic_pagination/test/fixtures/topics.yml +22 -0
- data/vendor/plugins/classic_pagination/test/helper.rb +117 -0
- data/vendor/plugins/classic_pagination/test/pagination_helper_test.rb +38 -0
- data/vendor/plugins/classic_pagination/test/pagination_test.rb +177 -0
- data/vendor/plugins/file_column/lib/file_column.rb +1 -1
- data/vendor/plugins/file_column/test/file_column_test.rb +0 -0
- metadata +151 -197
- data/app/helpers/live_tree.rb +0 -238
- data/app/views/elt/_form.rhtml +0 -31
- data/app/views/elt/show_tree.rhtml +0 -8
- data/config/environments/user_environment.rb +0 -1
- data/db/ROOT/Titemagli.txt +0 -3
- data/db/ROOT/titemagli.txt +0 -9
- data/public/javascripts/behaviour.js +0 -254
- data/public/javascripts/ie7-load.htc +0 -1
- data/public/javascripts/ie7.js +0 -6
- data/public/javascripts/live_tree.js +0 -749
- data/public/javascripts/mybehaviour.js +0 -225
- data/public/javascripts/scriptaculous.js +0 -47
- data/public/javascripts/slider.js +0 -283
- data/public/stylesheets/blue.css +0 -471
- data/vendor/plugins/engines/CHANGELOG +0 -241
- data/vendor/plugins/engines/MIT-LICENSE +0 -21
- data/vendor/plugins/engines/README +0 -64
- data/vendor/plugins/engines/Rakefile +0 -32
- data/vendor/plugins/engines/UPGRADING +0 -93
- data/vendor/plugins/engines/about.yml +0 -7
- data/vendor/plugins/engines/generators/plugin_migration/USAGE +0 -45
- data/vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb +0 -79
- data/vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb +0 -13
- data/vendor/plugins/engines/init.rb +0 -40
- data/vendor/plugins/engines/install.rb +0 -32
- data/vendor/plugins/engines/lib/engines.rb +0 -323
- data/vendor/plugins/engines/lib/engines/deprecated_config_support.rb +0 -135
- data/vendor/plugins/engines/lib/engines/plugin.rb +0 -214
- data/vendor/plugins/engines/lib/engines/plugin_list.rb +0 -31
- data/vendor/plugins/engines/lib/engines/plugin_migrator.rb +0 -60
- data/vendor/plugins/engines/lib/engines/rails_extensions.rb +0 -6
- data/vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb +0 -19
- data/vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb +0 -143
- data/vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb +0 -155
- data/vendor/plugins/engines/lib/engines/rails_extensions/public_asset_helpers.rb +0 -116
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails.rb +0 -20
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails_initializer.rb +0 -86
- data/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb +0 -77
- data/vendor/plugins/engines/lib/engines/rails_extensions/templates.rb +0 -140
- data/vendor/plugins/engines/lib/engines/testing.rb +0 -87
- data/vendor/plugins/engines/tasks/engines.rake +0 -149
- data/vendor/plugins/login_engine/CHANGELOG +0 -22
- data/vendor/plugins/login_engine/README +0 -344
- data/vendor/plugins/login_engine/app/controllers/user_controller.rb +0 -262
- data/vendor/plugins/login_engine/app/helpers/user_helper.rb +0 -88
- data/vendor/plugins/login_engine/app/models/user.rb +0 -7
- data/vendor/plugins/login_engine/app/models/user_notify.rb +0 -75
- data/vendor/plugins/login_engine/app/views/user/_edit.rhtml +0 -11
- data/vendor/plugins/login_engine/app/views/user/_password.rhtml +0 -9
- data/vendor/plugins/login_engine/app/views/user/change_password.rhtml +0 -17
- data/vendor/plugins/login_engine/app/views/user/edit.rhtml +0 -23
- data/vendor/plugins/login_engine/app/views/user/forgot_password.rhtml +0 -18
- data/vendor/plugins/login_engine/app/views/user/home.rhtml +0 -7
- data/vendor/plugins/login_engine/app/views/user/login.rhtml +0 -17
- data/vendor/plugins/login_engine/app/views/user/logout.rhtml +0 -8
- data/vendor/plugins/login_engine/app/views/user/signup.rhtml +0 -17
- data/vendor/plugins/login_engine/db/migrate/001_initial_schema.rb +0 -25
- data/vendor/plugins/login_engine/init_engine.rb +0 -11
- data/vendor/plugins/login_engine/install.rb +0 -4
- data/vendor/plugins/login_engine/lib/login_engine.rb +0 -62
- data/vendor/plugins/login_engine/lib/login_engine/authenticated_system.rb +0 -113
- data/vendor/plugins/login_engine/lib/login_engine/authenticated_user.rb +0 -155
- data/vendor/plugins/login_engine/public/stylesheets/login_engine.css +0 -81
- data/vendor/plugins/login_engine/test/fixtures/users.yml +0 -41
- data/vendor/plugins/login_engine/test/functional/user_controller_test.rb +0 -536
- data/vendor/plugins/login_engine/test/mocks/mail.rb +0 -14
- data/vendor/plugins/login_engine/test/mocks/time.rb +0 -19
- data/vendor/plugins/login_engine/test/test_helper.rb +0 -11
- data/vendor/plugins/login_engine/test/unit/user_test.rb +0 -114
- data/vendor/plugins/output_compression/MIT-LICENSE +0 -20
- data/vendor/plugins/output_compression/README +0 -4
- data/vendor/plugins/output_compression/init.rb +0 -1
- data/vendor/plugins/output_compression/lib/output_compression.rb +0 -84
- data/vendor/plugins/output_compression/test/output_test.rb +0 -11
- data/vendor/plugins/output_compression/test/test_controller.rb +0 -3
- data/vendor/plugins/output_compression/test/test_helper.rb +0 -14
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
ActionMailer::Base.class_eval {
|
|
2
|
-
@@inject_one_error = false
|
|
3
|
-
cattr_accessor :inject_one_error
|
|
4
|
-
|
|
5
|
-
private
|
|
6
|
-
def perform_delivery_test(mail)
|
|
7
|
-
if inject_one_error
|
|
8
|
-
ActionMailer::Base::inject_one_error = false
|
|
9
|
-
raise "Failed to send email" if raise_delivery_errors
|
|
10
|
-
else
|
|
11
|
-
deliveries << mail
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'time'
|
|
2
|
-
|
|
3
|
-
Time.class_eval {
|
|
4
|
-
if !respond_to? :now_old # somehow this is getting defined many times.
|
|
5
|
-
@@advance_by_days = 0
|
|
6
|
-
cattr_accessor :advance_by_days
|
|
7
|
-
|
|
8
|
-
class << Time
|
|
9
|
-
alias now_old now
|
|
10
|
-
def now
|
|
11
|
-
if Time.advance_by_days != 0
|
|
12
|
-
return Time.at(now_old.to_i + Time.advance_by_days * 60 * 60 * 24 + 1)
|
|
13
|
-
else
|
|
14
|
-
now_old
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../../../test/test_helper') # the default rails helper
|
|
2
|
-
|
|
3
|
-
# ensure that the Engines testing enhancements are loaded.
|
|
4
|
-
require File.join(Engines.config(:root), "engines", "lib", "engines", "testing_extensions")
|
|
5
|
-
|
|
6
|
-
require File.dirname(__FILE__) + '/mocks/time'
|
|
7
|
-
require File.dirname(__FILE__) + '/mocks/mail'
|
|
8
|
-
|
|
9
|
-
# set up the fixtures location
|
|
10
|
-
Test::Unit::TestCase.fixture_path = File.dirname(__FILE__) + "/fixtures/"
|
|
11
|
-
$LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path)
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
-
class UserTest < Test::Unit::TestCase
|
|
3
|
-
|
|
4
|
-
# load the fixture into the developer-specified table using the custom
|
|
5
|
-
# 'fixture' method.
|
|
6
|
-
fixture :users, :table_name => LoginEngine.config(:user_table), :class_name => "User"
|
|
7
|
-
|
|
8
|
-
def setup
|
|
9
|
-
LoginEngine::CONFIG[:salt] = "test-salt"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_auth
|
|
13
|
-
assert_equal users(:bob), User.authenticate("bob", "atest")
|
|
14
|
-
assert_nil User.authenticate("nonbob", "atest")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def test_passwordchange
|
|
19
|
-
|
|
20
|
-
users(:longbob).change_password("nonbobpasswd")
|
|
21
|
-
users(:longbob).save
|
|
22
|
-
assert_equal users(:longbob), User.authenticate("longbob", "nonbobpasswd")
|
|
23
|
-
assert_nil User.authenticate("longbob", "alongtest")
|
|
24
|
-
users(:longbob).change_password("alongtest")
|
|
25
|
-
users(:longbob).save
|
|
26
|
-
assert_equal users(:longbob), User.authenticate("longbob", "alongtest")
|
|
27
|
-
assert_nil User.authenticate("longbob", "nonbobpasswd")
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_disallowed_passwords
|
|
32
|
-
|
|
33
|
-
u = User.new
|
|
34
|
-
u.login = "nonbob"
|
|
35
|
-
u.email = "bobs@email.com"
|
|
36
|
-
|
|
37
|
-
u.change_password("tiny")
|
|
38
|
-
assert !u.save
|
|
39
|
-
assert u.errors.invalid?('password')
|
|
40
|
-
|
|
41
|
-
u.change_password("hugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehuge")
|
|
42
|
-
assert !u.save
|
|
43
|
-
assert u.errors.invalid?('password')
|
|
44
|
-
|
|
45
|
-
u.change_password("")
|
|
46
|
-
assert !u.save
|
|
47
|
-
assert u.errors.invalid?('password')
|
|
48
|
-
|
|
49
|
-
u.change_password("bobs_secure_password")
|
|
50
|
-
assert u.save
|
|
51
|
-
assert u.errors.empty?
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def test_bad_logins
|
|
56
|
-
|
|
57
|
-
u = User.new
|
|
58
|
-
u.change_password("bobs_secure_password")
|
|
59
|
-
u.email = "bobs@email.com"
|
|
60
|
-
|
|
61
|
-
u.login = "x"
|
|
62
|
-
assert !u.save
|
|
63
|
-
assert u.errors.invalid?('login')
|
|
64
|
-
|
|
65
|
-
u.login = "hugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhug"
|
|
66
|
-
assert !u.save
|
|
67
|
-
assert u.errors.invalid?('login')
|
|
68
|
-
|
|
69
|
-
u.login = ""
|
|
70
|
-
assert !u.save
|
|
71
|
-
assert u.errors.invalid?('login')
|
|
72
|
-
|
|
73
|
-
u.login = "okbob"
|
|
74
|
-
assert u.save
|
|
75
|
-
assert u.errors.empty?
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
def test_collision
|
|
81
|
-
u = User.new
|
|
82
|
-
u.login = "existingbob"
|
|
83
|
-
u.change_password("bobs_secure_password")
|
|
84
|
-
assert !u.save
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def test_create
|
|
89
|
-
u = User.new
|
|
90
|
-
u.login = "nonexistingbob"
|
|
91
|
-
u.change_password("bobs_secure_password")
|
|
92
|
-
u.email = "bobs@email.com"
|
|
93
|
-
|
|
94
|
-
assert u.save
|
|
95
|
-
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def test_email_should_be_nominally_valid
|
|
99
|
-
u = User.new
|
|
100
|
-
u.login = "email_test"
|
|
101
|
-
u.change_password("email_test_password")
|
|
102
|
-
|
|
103
|
-
assert !u.save
|
|
104
|
-
assert u.errors.invalid?('email')
|
|
105
|
-
|
|
106
|
-
u.email = "invalid_email"
|
|
107
|
-
assert !u.save
|
|
108
|
-
assert u.errors.invalid?('email')
|
|
109
|
-
|
|
110
|
-
u.email = "valid@email.com"
|
|
111
|
-
assert u.save
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2005-2006 Tom Fakes
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
-
a copy of this software and associated documentation files (the
|
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
-
the following conditions:
|
|
10
|
-
|
|
11
|
-
The above copyright notice and this permission notice shall be
|
|
12
|
-
included in all copies or substantial portions of the Software.
|
|
13
|
-
|
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'output_compression'
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Contributors:
|
|
3
|
-
# Tom Fakes - Initial simple implementation, plugin implementation
|
|
4
|
-
# Dan Kubb - Handle multiple encodings, correct response headers
|
|
5
|
-
# Sebastian - Handle component requests
|
|
6
|
-
#
|
|
7
|
-
begin
|
|
8
|
-
require 'stringio'
|
|
9
|
-
require 'zlib'
|
|
10
|
-
COMPRESSION_DISABLED = false
|
|
11
|
-
rescue
|
|
12
|
-
COMPRESSION_DISABLED = true
|
|
13
|
-
RAILS_DEFAULT_LOGGER.info "Output Compression not available: " + $!
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
class OutputCompressionFilter
|
|
17
|
-
|
|
18
|
-
def self.filter(controller)
|
|
19
|
-
return if COMPRESSION_DISABLED ||
|
|
20
|
-
controller.response.headers['Content-Encoding'] ||
|
|
21
|
-
controller.request.env['HTTP_ACCEPT_ENCODING'].nil? ||
|
|
22
|
-
controller.request.is_component_request?
|
|
23
|
-
begin
|
|
24
|
-
controller.request.env['HTTP_ACCEPT_ENCODING'].split(/\s*,\s*/).each do |encoding|
|
|
25
|
-
# TODO: use "q" values to determine user agent encoding preferences
|
|
26
|
-
case encoding
|
|
27
|
-
when /\Agzip\b/
|
|
28
|
-
StringIO.open('', 'w') do |strio|
|
|
29
|
-
begin
|
|
30
|
-
gz = Zlib::GzipWriter.new(strio)
|
|
31
|
-
gz.write(controller.response.body)
|
|
32
|
-
controller.response.body = strio.string
|
|
33
|
-
ensure
|
|
34
|
-
gz.close if gz
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
when /\Adeflate\b/
|
|
38
|
-
controller.response.body = Zlib::Deflate.deflate(controller.response.body, Zlib::BEST_COMPRESSION)
|
|
39
|
-
when /\Aidentity\b/
|
|
40
|
-
# do nothing for identity
|
|
41
|
-
else
|
|
42
|
-
next # the encoding is not supported, try the next one
|
|
43
|
-
end
|
|
44
|
-
controller.logger.info "Response body was encoded with #{encoding}"
|
|
45
|
-
controller.response.headers['Content-Encoding'] = encoding
|
|
46
|
-
break # the encoding is supported, stop
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
controller.response.headers['Content-Length'] = controller.response.body.length
|
|
50
|
-
if controller.response.headers['Vary'] != '*'
|
|
51
|
-
controller.response.headers['Vary'] =
|
|
52
|
-
controller.response.headers['Vary'].to_s.split(',').push('Accept-Encoding').uniq.join(',')
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Handle component requests by not compressing the output from a component
|
|
59
|
-
module ActionController
|
|
60
|
-
# These methods are available in both the production and test Request objects.
|
|
61
|
-
class AbstractRequest
|
|
62
|
-
def is_component_request=(val) #:nodoc:
|
|
63
|
-
@is_component_request = val
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Returns true when the request corresponds to a render_component call
|
|
67
|
-
def is_component_request?
|
|
68
|
-
@is_component_request
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Mark the request as being a Component request
|
|
74
|
-
module ActionController
|
|
75
|
-
module Components
|
|
76
|
-
protected
|
|
77
|
-
def request_for_component(options)
|
|
78
|
-
request_for_component = original_request_for_component(options)
|
|
79
|
-
request_for_component.is_component_request = true
|
|
80
|
-
return request_for_component
|
|
81
|
-
end
|
|
82
|
-
alias :original_request_for_component :request_for_component
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
|
2
|
-
|
|
3
|
-
require 'rubygems'
|
|
4
|
-
require 'test/unit'
|
|
5
|
-
require 'action_controller'
|
|
6
|
-
require "#{File.dirname(__FILE__)}/../init"
|
|
7
|
-
|
|
8
|
-
ActionController::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
|
9
|
-
ActionController::Base.logger.level = Logger::DEBUG
|
|
10
|
-
|
|
11
|
-
require "#{File.dirname(__FILE__)}/test_controller"
|
|
12
|
-
|
|
13
|
-
class Test::Unit::TestCase #:nodoc:
|
|
14
|
-
end
|