uservoice 0.1.0 → 0.2.0

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/.gitignore CHANGED
@@ -1,4 +1,4 @@
1
1
  .DS_Store
2
2
  rdoc/
3
3
  coverage/
4
- pkg/uservoice-0.1.0.gem
4
+ pkg/
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,14 @@
1
+ == v0.2.0 (2010-05-25)
2
+
3
+ * Enhancements
4
+
5
+ * added single sign-on support
6
+
7
+ * Changes
8
+
9
+ * enable_uservoice depricated as config will be loaded by default
10
+ * new config parameter uservoice_api[:api_key] in uservoice.yml
11
+
12
+ == v0.1.0 (2010-01-01)
13
+
14
+ * initial release including support for feedback button
data/README.rdoc CHANGED
@@ -1,9 +1,7 @@
1
1
  = Uservoice feedback for Ruby on Rails
2
2
 
3
- This adds {Uservoice}[http://www.uservoice.com] feedback to your
4
- Rails application. You can set Uservoice properties in a central configuration
5
- file and override settings like forum id (for payed accounts) in your layout or
6
- view.
3
+ This adds {Uservoice}[http://www.uservoice.com] support to your
4
+ Rails application including single sign-on.
7
5
 
8
6
  == Installation
9
7
 
@@ -20,30 +18,44 @@ view.
20
18
  == Configuration
21
19
 
22
20
  Generate files for your app:
23
- ./script/generate uservoice <key> <forum>
21
+ ./script/generate uservoice <key> <forum> [<api_key>]
24
22
  Where <key> is the Uservoice account name and <forum> the id of your main forum.
25
23
  Find both settings in widgets section of the admin interface of Uservoice.
24
+ Your API key <api_key> can be found in the API section of the admin documentation.
26
25
 
27
- Default properties are stored in a file named uservoice.yml in the config directory
28
- of your Rails application. Make it fit to your needs.
26
+ Default properties are stored in a file named uservoice.yml in the config
27
+ directory of your Rails application. Make it fitting to your needs.
29
28
 
30
- Enable Uservoice in controllers of your choice. Add to ApplicationController
31
- directly to enable uservoice for every controller.
32
-
33
- class MyController < ApplicationController
34
- enable_uservoice
35
- ...
36
- end
37
-
38
- Link Uservoice javascript file and add configuration to HTML HEAD section of
39
- your template file:
29
+ Link Uservoice javascript file and add configuration to HTML HEAD
30
+ section of your template file:
40
31
  <%= javascript_include_tag 'uservoice' %>
41
32
  <%= uservoice_config_javascript %>
42
33
 
43
- You can even override default uservoice settings in your view:
34
+ You can override default uservoice settings in your view:
44
35
  <%= uservoice_config_javascript(:alignment => 'right', :forum => 12983) %>
45
36
 
46
37
 
38
+ == Single Sign-on
39
+
40
+ Uservoice is allowing single sign-on starting from the Bronze plan.
41
+ http://uservoice.com/signup?ref=nav
42
+
43
+ To use single sign-on with on uservoice you have to set your api_key in
44
+ config/uservoice.yml. Find it on
45
+ https://ACCOUNT.uservoice.com/admin2/docs#/legacy_api
46
+
47
+ Set user data in your controller action.
48
+ def index
49
+ set_uservoice_sso(:guid => @current_user.id, :email => @current_user.email)
50
+ end
51
+
52
+ Parameter <em>:guid</em> should be unique identifier for example the user id in your
53
+ system. Uservoice recommends setting <em>:email</em> parameter to enable users to get
54
+ updates and notifications via email.
55
+ See https://ACCOUNT.uservoice.com/admin2/docs#/sso for a list of parameters
56
+ available.
57
+
58
+
47
59
  == Note on Patches/Pull Requests
48
60
 
49
61
  * Fork the project.
data/Rakefile CHANGED
@@ -6,13 +6,12 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "uservoice"
8
8
  gem.summary = %Q{Uservoice for your Rails application}
9
- gem.description = %Q{This adds Uservoice user feedback to your Rails application.
10
- You can set Uservoice properties in a central configuration file and override
11
- settings like forum id (for payed accounts) in your layout or view.}
9
+ gem.description = %Q{This adds Uservoice support to your Rails application
10
+ including single sign-on.}
12
11
  gem.email = 'alexxx@iltempo.de'
13
12
  gem.homepage = 'http://github.com/iltempo/uservoice'
14
13
  gem.authors = ['Alexander Greim']
15
- gem.version = '0.1.0'
14
+ gem.version = '0.2.0'
16
15
  end
17
16
  Jeweler::GemcutterTasks.new
18
17
  rescue LoadError
@@ -4,11 +4,11 @@ Name
4
4
  Description:
5
5
  This generator creates all files needed for uservoice integration.
6
6
 
7
- ./script/generate uservoice <uservoice_key> <main_forum_id>
7
+ ./script/generate uservoice <uservoice_key> <main_forum_id> [<api_key>]
8
8
 
9
9
  Please add to head section of your layout file:
10
10
  <%= javascript_include_tag 'uservoice' %>
11
11
  <%= uservoice_config_javascript %>
12
12
 
13
13
  Example:
14
- ./script/generate uservoice mypage 12345
14
+ ./script/generate uservoice mypage 12345 myapikey
@@ -3,10 +3,13 @@ uservoice_options:
3
3
  key: <%= args.first %>
4
4
  host: <%= args.first %>.uservoice.com
5
5
  forum: <%= args.second %>
6
- showTab: true
7
6
  # optional
7
+ showTab: true
8
8
  alignment: left
9
9
  background_color: "#f00"
10
10
  text_color: white
11
11
  hover_color: "#06C"
12
- lang: en
12
+ lang: en
13
+
14
+ uservoice_api:
15
+ api_key: <%= args.third %>
@@ -1,6 +1,6 @@
1
1
  class UservoiceGenerator < Rails::Generator::Base
2
2
  def manifest
3
- unless args.length == 2
3
+ unless [2, 3].include?(args.length)
4
4
  puts usage_message
5
5
  exit 1
6
6
  end
@@ -9,11 +9,33 @@
9
9
  module Uservoice
10
10
  module InstanceMethods
11
11
 
12
- # Enables uservoice configuration as controller
12
+ # Loads uservoice configuration into a controller
13
13
  # instance variable
14
14
  #
15
- def uservoice_init
16
- @uservoice_configuration ||= self.class.uservoice_configuration
15
+ def load_uservoice_config
16
+ @uservoice_configuration = begin
17
+ configuration = YAML::load(IO.read(uservoice_configuration_file))
18
+ HashWithIndifferentAccess.new(configuration)
19
+ end
20
+ end
21
+
22
+ # Set uservoice configuration file path.
23
+ # Can be overridden.
24
+ #
25
+ def uservoice_configuration_file #:nodoc:
26
+ "#{RAILS_ROOT}/config/uservoice.yml"
27
+ end
28
+
29
+ # Generates token for uservoice single sign-on
30
+ # that will be delivered by uservoice helper.
31
+ # See https://ACCOUNT.uservoice.com/admin2/docs#/sso for
32
+ # properties available.
33
+ #
34
+ def set_uservoice_sso(user_data)
35
+ @uservoice_sso_token = Uservoice::Token.new(
36
+ @uservoice_configuration['uservoice_options']['key'],
37
+ @uservoice_configuration['uservoice_api']['api_key'],
38
+ user_data)
17
39
  end
18
40
 
19
41
  end
@@ -7,14 +7,25 @@
7
7
 
8
8
  module UservoiceHelper
9
9
 
10
- # Renders javascript configuration to be integrated
11
- # into layout file.
12
- # Takes a forum id if different from default one.
10
+ # Renders javascript to configure uservoice feedback widget. Options
11
+ # can be used to override default settings like forum id.
12
+ # e.g. uservoice_config_javascript(forum_id => 12345)
13
+ # See https://ACCOUNT.uservoice.com/admin2/docs#/widget for options
14
+ # available.
13
15
  #
14
16
  def uservoice_config_javascript(options={})
15
- config = @uservoice_configuration.dup
17
+ config = @uservoice_configuration['uservoice_options'].dup
16
18
  config.merge!(options)
17
- "<script type=\"text/javascript\"> var uservoiceOptions = #{config.to_json}; </script>"
19
+
20
+ if @uservoice_sso_token
21
+ config.merge!({:params => {:sso => @uservoice_sso_token.data}})
22
+ end
23
+
24
+ <<-EOS
25
+ <script type=\"text/javascript\">
26
+ var uservoiceOptions = #{config.to_json};
27
+ </script>
28
+ EOS
18
29
  end
19
30
 
20
31
  end
@@ -0,0 +1,32 @@
1
+ # This module represents an encrypted token
2
+ # to authenticate a user against the uservoice
3
+ # service.
4
+ #
5
+ # Author:: Alexander Greim (mailto:alexxx@iltempo.de)
6
+ # Copyright:: Copyright (c) 2010 il tempo
7
+ # License:: Distributes under the same terms as Ruby
8
+
9
+ module Uservoice
10
+ class Token
11
+ attr_reader :data
12
+
13
+ # Creates a sign-in token to authenticate user against
14
+ # the uservoice service.
15
+ # See https://ACCOUNT.uservoice.com/admin2/docs#/sso for
16
+ # data properties available.
17
+ #
18
+ def initialize(key, api_key, data)
19
+ data.merge!({:expires => (Time.now + 5 * 60).to_s})
20
+
21
+ crypt_key = EzCrypto::Key.with_password(key, api_key)
22
+ encrypted_data = crypt_key.encrypt(data.to_json)
23
+
24
+ @data = CGI.escape(Base64.encode64(encrypted_data).gsub(/\n/, ''))
25
+ end
26
+
27
+ def to_s #:nodoc:
28
+ @data
29
+ end
30
+
31
+ end
32
+ end
data/lib/uservoice.rb CHANGED
@@ -6,16 +6,21 @@ ActiveSupport::Dependencies.load_once_paths.delete(path)
6
6
  module Uservoice
7
7
  end
8
8
 
9
- require 'class_methods'
9
+ require 'cgi'
10
+ require 'rubygems'
11
+ require 'ezcrypto'
12
+ require 'uservoice_token'
10
13
  require 'instance_methods'
11
14
 
12
15
  module ActionController #:nodoc:
13
16
  class Base #:nodoc:
14
- cattr_accessor :uservoice_configuration
15
- before_filter :uservoice_init
16
17
  helper :uservoice
18
+ before_filter :load_uservoice_config
17
19
 
18
20
  include Uservoice::InstanceMethods
19
- extend Uservoice::ClassMethods
21
+
22
+ def self.enable_uservoice
23
+ warn "[DEPRECATION] 'enable_uservoice' is deprecated. Uservoice is loaded by default in every controller now."
24
+ end
20
25
  end
21
- end
26
+ end
@@ -1,13 +1,13 @@
1
1
  require 'helper'
2
2
 
3
3
  class MyUservoiceController < ActionController::Base
4
- def self.uservoice_configuration_file
4
+
5
+ def uservoice_configuration_file
5
6
  File.dirname(__FILE__) + '/uservoice_test.yml'
6
7
  end
7
- enable_uservoice
8
8
 
9
9
  def assignment
10
- render :text => nil
10
+ render :nothing => true
11
11
  end
12
12
 
13
13
  def config_js_default
@@ -23,26 +23,8 @@ class MyUservoiceController < ActionController::Base
23
23
  end
24
24
  end
25
25
 
26
- class UservoiceTest < ActiveSupport::TestCase
27
-
28
- def setup
29
- @my_controller = MyUservoiceController.new
30
- end
31
-
32
- ['uservoice_configuration_file'].each do |method|
33
- test "should add class method '#{method}' to controller classes" do
34
- assert MyUservoiceController.methods.include?(method)
35
- end
36
- end
37
-
38
- ['uservoice_init'].each do |method|
39
- test "should add instance method '#{method}' to controller classes" do
40
- assert @my_controller.methods.include?(method)
41
- end
42
- end
43
- end
44
26
 
45
- class MyUservoiceControllerTest < ActionController::TestCase
27
+ class UservoiceControllerTest < ActionController::TestCase
46
28
  tests MyUservoiceController
47
29
 
48
30
  def setup
@@ -58,30 +40,23 @@ class MyUservoiceControllerTest < ActionController::TestCase
58
40
  end
59
41
  end
60
42
 
61
- def test_controller
62
- get :assignment
63
- config = assigns('uservoice_configuration')
64
- assert config.is_a?(Hash)
65
- assert_equal 'test', config['key']
66
- end
67
-
68
43
  def test_config_javascript_default
69
44
  get :config_js_default
70
- assert_match Regexp.new('<script type="text/javascript"> var uservoiceOptions = .*</script>'), @response.body
45
+ assert_match Regexp.new('<script type="text/javascript">\s*var uservoiceOptions = .*\s*</script>'), @response.body
71
46
  assert_match Regexp.new('"host":"test.uservoice.com"'), @response.body
72
47
  assert_match Regexp.new('"forum":12345'), @response.body
73
48
  end
74
49
 
75
50
  def test_config_custom_forum
76
51
  get :config_js_custom_forum
77
- assert_match Regexp.new('<script type="text/javascript"> var uservoiceOptions = .*</script>'), @response.body
52
+ assert_match Regexp.new('<script type="text/javascript">\s*var uservoiceOptions = .*\s*</script>'), @response.body
78
53
  assert_match Regexp.new('"forum":815'), @response.body
79
54
  assert_no_match Regexp.new('"forum":12345'), @response.body
80
55
  end
81
56
 
82
57
  def test_config_custom_alignment
83
58
  get :config_js_custom_alignment
84
- assert_match Regexp.new('<script type="text/javascript"> var uservoiceOptions = .*</script>'), @response.body
59
+ assert_match Regexp.new('<script type="text/javascript">\s*var uservoiceOptions = .*\s*</script>'), @response.body
85
60
  assert_match Regexp.new('"forum":12345'), @response.body
86
61
  assert_match Regexp.new('"alignment":"right"'), @response.body
87
62
  end
@@ -26,9 +26,15 @@ class UservoiceGeneratorTest < Test::Unit::TestCase
26
26
  def test_config_file_contains_settings
27
27
  run_generator('uservoice', 'my_name', '98765')
28
28
  config = read_config_file
29
- assert_equal 'my_name', config['key']
30
- assert_equal 'my_name.uservoice.com', config['host']
31
- assert_equal 98765, config['forum']
29
+ assert_equal 'my_name', config['uservoice_options']['key']
30
+ assert_equal 'my_name.uservoice.com', config['uservoice_options']['host']
31
+ assert_equal 98765, config['uservoice_options']['forum']
32
+ end
33
+
34
+ def test_config_file_contains_api_key_if_given
35
+ run_generator('uservoice', 'my_name', '98765', 'testapikey')
36
+ config = read_config_file
37
+ assert_equal 'testapikey', config['uservoice_api']['api_key']
32
38
  end
33
39
 
34
40
  private
@@ -44,11 +50,11 @@ class UservoiceGeneratorTest < Test::Unit::TestCase
44
50
  end
45
51
 
46
52
  def read_config_file
47
- YAML::load(IO.read(File.join(fake_rails_root, 'config/uservoice.yml')))['uservoice_options']
53
+ YAML::load(IO.read(File.join(fake_rails_root, 'config/uservoice.yml')))
48
54
  end
49
55
 
50
56
  def run_generator(*options)
51
57
  Rails::Generator::Scripts::Generate.new.run(options, :destination => fake_rails_root, :quiet => true)
52
58
  end
53
59
 
54
- end
60
+ end
@@ -0,0 +1,39 @@
1
+ require 'helper'
2
+
3
+ class MyUservoiceSsoController < ActionController::Base
4
+
5
+ def uservoice_configuration_file
6
+ File.dirname(__FILE__) + '/uservoice_sso_test.yml'
7
+ end
8
+
9
+ def action_with_sso
10
+ set_uservoice_sso(:guid => 123, :display_name => 'Bancheff', :email => 'chef@bahn.de')
11
+ render :inline => '<%= uservoice_config_javascript %>'
12
+ end
13
+
14
+ end
15
+
16
+ class UservoiceSsoTest < ActionController::TestCase
17
+ tests MyUservoiceSsoController
18
+
19
+ def setup
20
+ @my_controller = MyUservoiceSsoController.new
21
+ @request = ActionController::TestRequest.new
22
+ @response = ActionController::TestResponse.new
23
+
24
+ ActionController::Routing::Routes.draw do |map|
25
+ map.connect 'action_with_sso', :controller => 'my_uservoice_sso', :action => :action_with_sso
26
+ end
27
+ end
28
+
29
+ def test_sso_token_set
30
+ get :action_with_sso
31
+ assert_match Regexp.new('<script type="text/javascript">\s*var uservoiceOptions = .*\s*</script>'), @response.body
32
+ assert_match Regexp.new('"params":\{"sso":".*"\}'), @response.body
33
+ end
34
+
35
+ def test_api_key_not_to_appear
36
+ get :action_with_sso
37
+ assert_no_match /api_key/, @response.body
38
+ end
39
+ end
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+
3
+ class UservoiceTokenTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @key = 'test'
7
+ @api_key = 'testapikey'
8
+ @user_data = {:guid => 123}
9
+ @token = Uservoice::Token.new(@key, @api_key, @user_data)
10
+ end
11
+
12
+ def test_token_does_not_contain_line_breaks
13
+ assert_no_match /\n/, @token.to_s
14
+ end
15
+
16
+ def test_can_be_decrypted
17
+ crypt_key = EzCrypto::Key.with_password(@key, @api_key)
18
+ encrypted_data = Base64::decode64(CGI.unescape(@token.data))
19
+ data = JSON.parse(crypt_key.decrypt(encrypted_data)).symbolize_keys
20
+
21
+ assert_equal @user_data, data
22
+ end
23
+
24
+ end
@@ -0,0 +1,13 @@
1
+ uservoice_options:
2
+ key: test
3
+ host: test.uservoice.com
4
+ forum: 12345
5
+ showTab: true
6
+ alignment: left
7
+ background_color: "#f00"
8
+ text_color: white
9
+ hover_color: "#06C"
10
+ lang: en
11
+
12
+ uservoice_api:
13
+ api_key: testapikey
@@ -1,12 +1,10 @@
1
1
  uservoice_options:
2
- # required
3
2
  key: test
4
3
  host: test.uservoice.com
5
4
  forum: 12345
6
5
  showTab: true
7
- # optional
8
6
  alignment: left
9
7
  background_color: "#f00"
10
8
  text_color: white
11
9
  hover_color: "#06C"
12
- lang: en
10
+ lang: en
data/uservoice.gemspec CHANGED
@@ -5,14 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{uservoice}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alexander Greim"]
12
- s.date = %q{2010-01-01}
13
- s.description = %q{This adds Uservoice user feedback to your Rails application.
14
- You can set Uservoice properties in a central configuration file and override
15
- settings like forum id (for payed accounts) in your layout or view.}
12
+ s.date = %q{2010-05-25}
13
+ s.description = %q{This adds Uservoice support to your Rails application
14
+ including single sign-on.}
16
15
  s.email = %q{alexxx@iltempo.de}
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE",
@@ -20,6 +19,7 @@ Gem::Specification.new do |s|
20
19
  ]
21
20
  s.files = [
22
21
  ".gitignore",
22
+ "CHANGELOG.rdoc",
23
23
  "LICENSE",
24
24
  "README.rdoc",
25
25
  "Rakefile",
@@ -29,31 +29,36 @@ Gem::Specification.new do |s|
29
29
  "generators/uservoice/uservoice_generator.rb",
30
30
  "init.rb",
31
31
  "lib/uservoice.rb",
32
- "lib/uservoice/class_methods.rb",
33
32
  "lib/uservoice/instance_methods.rb",
34
33
  "lib/uservoice/uservoice_helper.rb",
34
+ "lib/uservoice/uservoice_token.rb",
35
35
  "test/helper.rb",
36
36
  "test/test_uservoice.rb",
37
37
  "test/test_uservoice_generator.rb",
38
+ "test/test_uservoice_sso.rb",
39
+ "test/test_uservoice_token.rb",
40
+ "test/uservoice_sso_test.yml",
38
41
  "test/uservoice_test.yml",
39
42
  "uservoice.gemspec"
40
43
  ]
41
44
  s.homepage = %q{http://github.com/iltempo/uservoice}
42
45
  s.rdoc_options = ["--charset=UTF-8"]
43
46
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.5}
47
+ s.rubygems_version = %q{1.3.7}
45
48
  s.summary = %q{Uservoice for your Rails application}
46
49
  s.test_files = [
47
50
  "test/helper.rb",
48
51
  "test/test_uservoice.rb",
49
- "test/test_uservoice_generator.rb"
52
+ "test/test_uservoice_generator.rb",
53
+ "test/test_uservoice_sso.rb",
54
+ "test/test_uservoice_token.rb"
50
55
  ]
51
56
 
52
57
  if s.respond_to? :specification_version then
53
58
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
54
59
  s.specification_version = 3
55
60
 
56
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
61
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
62
  else
58
63
  end
59
64
  else
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uservoice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Alexander Greim
@@ -9,14 +15,13 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-01-01 00:00:00 +01:00
18
+ date: 2010-05-25 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies: []
15
21
 
16
22
  description: |-
17
- This adds Uservoice user feedback to your Rails application.
18
- You can set Uservoice properties in a central configuration file and override
19
- settings like forum id (for payed accounts) in your layout or view.
23
+ This adds Uservoice support to your Rails application
24
+ including single sign-on.
20
25
  email: alexxx@iltempo.de
21
26
  executables: []
22
27
 
@@ -27,6 +32,7 @@ extra_rdoc_files:
27
32
  - README.rdoc
28
33
  files:
29
34
  - .gitignore
35
+ - CHANGELOG.rdoc
30
36
  - LICENSE
31
37
  - README.rdoc
32
38
  - Rakefile
@@ -36,12 +42,15 @@ files:
36
42
  - generators/uservoice/uservoice_generator.rb
37
43
  - init.rb
38
44
  - lib/uservoice.rb
39
- - lib/uservoice/class_methods.rb
40
45
  - lib/uservoice/instance_methods.rb
41
46
  - lib/uservoice/uservoice_helper.rb
47
+ - lib/uservoice/uservoice_token.rb
42
48
  - test/helper.rb
43
49
  - test/test_uservoice.rb
44
50
  - test/test_uservoice_generator.rb
51
+ - test/test_uservoice_sso.rb
52
+ - test/test_uservoice_token.rb
53
+ - test/uservoice_sso_test.yml
45
54
  - test/uservoice_test.yml
46
55
  - uservoice.gemspec
47
56
  has_rdoc: true
@@ -54,21 +63,27 @@ rdoc_options:
54
63
  require_paths:
55
64
  - lib
56
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
57
67
  requirements:
58
68
  - - ">="
59
69
  - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
60
73
  version: "0"
61
- version:
62
74
  required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
63
76
  requirements:
64
77
  - - ">="
65
78
  - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
66
82
  version: "0"
67
- version:
68
83
  requirements: []
69
84
 
70
85
  rubyforge_project:
71
- rubygems_version: 1.3.5
86
+ rubygems_version: 1.3.7
72
87
  signing_key:
73
88
  specification_version: 3
74
89
  summary: Uservoice for your Rails application
@@ -76,3 +91,5 @@ test_files:
76
91
  - test/helper.rb
77
92
  - test/test_uservoice.rb
78
93
  - test/test_uservoice_generator.rb
94
+ - test/test_uservoice_sso.rb
95
+ - test/test_uservoice_token.rb
@@ -1,26 +0,0 @@
1
- # This module holds all class methods to be
2
- # included into ActionController::Base class
3
- # for enabling uservoice in a Rails app.
4
- #
5
- # Author:: Alexander Greim (mailto:alexxx@iltempo.de)
6
- # Copyright:: Copyright (c) 2010 il tempo
7
- # License:: Distributes under the same terms as Ruby
8
-
9
- module Uservoice
10
- module ClassMethods
11
-
12
- # Loads uservoice configuration from yaml file.
13
- #
14
- def enable_uservoice
15
- self.uservoice_configuration ||= begin
16
- configuration = YAML::load(IO.read(self.uservoice_configuration_file))
17
- HashWithIndifferentAccess.new(configuration['uservoice_options'])
18
- end
19
- end
20
-
21
- def uservoice_configuration_file #:nodoc:
22
- "#{RAILS_ROOT}/config/uservoice.yml"
23
- end
24
-
25
- end
26
- end