fine_print 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +74 -45
  3. data/Rakefile +9 -9
  4. data/app/assets/javascripts/application.js~ +16 -0
  5. data/app/assets/javascripts/fine_print/application.js +8 -2
  6. data/app/controllers/fine_print/application_controller.rb +9 -7
  7. data/app/controllers/fine_print/application_controller.rb~ +9 -7
  8. data/app/controllers/fine_print/contracts_controller.rb +79 -0
  9. data/app/controllers/fine_print/contracts_controller.rb~ +79 -0
  10. data/app/controllers/fine_print/home_controller.rb +1 -11
  11. data/app/controllers/fine_print/home_controller.rb~ +2 -11
  12. data/app/controllers/fine_print/signatures_controller.rb +14 -0
  13. data/app/controllers/fine_print/signatures_controller.rb~ +14 -0
  14. data/app/helpers/fine_print/application_helper.rb +7 -0
  15. data/app/helpers/fine_print/application_helper.rb~ +7 -0
  16. data/app/helpers/fine_print/contracts_helper.rb~ +7 -0
  17. data/app/models/fine_print/contract.rb +96 -0
  18. data/app/models/fine_print/contract.rb~ +100 -0
  19. data/app/models/fine_print/signature.rb +25 -0
  20. data/app/models/fine_print/signature.rb~ +25 -0
  21. data/app/views/fine_print/contracts/_form.html.erb +35 -0
  22. data/app/views/fine_print/contracts/_form.html.erb~ +35 -0
  23. data/app/views/fine_print/contracts/edit.html.erb +10 -0
  24. data/app/views/fine_print/contracts/index.html.erb +43 -0
  25. data/app/views/fine_print/contracts/index.html.erb~ +43 -0
  26. data/app/views/fine_print/contracts/new.html.erb +9 -0
  27. data/app/views/fine_print/contracts/new_version.html.erb +9 -0
  28. data/app/views/fine_print/contracts/show.html.erb +33 -0
  29. data/app/views/fine_print/contracts/show.html.erb~ +35 -0
  30. data/app/views/fine_print/home/index.html.erb +15 -6
  31. data/app/views/fine_print/home/index.html.erb~ +12 -4
  32. data/app/views/fine_print/signatures/index.html.erb +36 -0
  33. data/app/views/fine_print/signatures/index.html.erb~ +32 -0
  34. data/app/views/layouts/fine_print/application.html.erb +6 -0
  35. data/app/views/layouts/fine_print/application.html.erb~ +20 -0
  36. data/config/initializers/fine_print.rb +27 -44
  37. data/config/initializers/fine_print.rb~ +23 -40
  38. data/config/routes.rb +9 -3
  39. data/config/routes.rb~ +9 -4
  40. data/db/migrate/0_install_fine_print.rb +26 -0
  41. data/db/migrate/0_install_fine_print.rb~ +26 -0
  42. data/lib/fine_print/controller_additions.rb +69 -0
  43. data/lib/fine_print/controller_additions.rb~ +69 -0
  44. data/lib/fine_print/engine.rb +8 -0
  45. data/lib/fine_print/security_transgression.rb +1 -2
  46. data/lib/fine_print/utilities.rb~ +26 -0
  47. data/lib/fine_print/version.rb +1 -1
  48. data/lib/fine_print.rb +89 -42
  49. data/lib/fine_print.rb~ +89 -41
  50. data/lib/tasks/fine_print_tasks.rake +11 -8
  51. data/spec/controllers/contracts_controller_spec.rb +222 -0
  52. data/spec/controllers/contracts_controller_spec.rb~ +224 -0
  53. data/spec/controllers/home_controller_spec.rb +25 -0
  54. data/spec/controllers/home_controller_spec.rb~ +25 -0
  55. data/spec/controllers/signatures_controller_spec.rb +46 -0
  56. data/spec/controllers/signatures_controller_spec.rb~ +46 -0
  57. data/spec/dummy/README.md +1 -1
  58. data/spec/dummy/app/controllers/dummy_models_controller.rb +2 -0
  59. data/spec/dummy/app/controllers/dummy_models_controller.rb~ +29 -0
  60. data/spec/dummy/app/helpers/application_helper.rb +13 -0
  61. data/spec/dummy/app/models/dummy_user.rb +3 -0
  62. data/spec/dummy/app/models/dummy_user.rb~ +4 -0
  63. data/spec/dummy/app/models/user.rb~ +78 -0
  64. data/spec/dummy/config/application.rb +2 -2
  65. data/spec/dummy/config/application.rb~ +60 -0
  66. data/spec/dummy/config/initializers/fine_print.rb +36 -0
  67. data/spec/dummy/config/initializers/fine_print.rb~ +36 -0
  68. data/spec/dummy/config/initializers/session_store.rb +1 -1
  69. data/spec/dummy/config/initializers/session_store.rb~ +8 -0
  70. data/spec/dummy/config/initializers/wrap_parameters.rb +1 -1
  71. data/spec/dummy/config/initializers/wrap_parameters.rb~ +14 -0
  72. data/spec/dummy/config/routes.rb +1 -2
  73. data/spec/dummy/config/routes.rb~ +4 -0
  74. data/spec/dummy/db/development.sqlite3 +0 -0
  75. data/spec/dummy/db/migrate/1_create_dummy_users.rb +9 -0
  76. data/spec/dummy/db/migrate/1_create_dummy_users.rb~ +8 -0
  77. data/spec/dummy/db/schema.rb +20 -12
  78. data/spec/dummy/db/test.sqlite3 +0 -0
  79. data/spec/dummy/log/development.log +1635 -0
  80. data/spec/dummy/log/test.log +46188 -0
  81. data/spec/factories/contract.rb +25 -0
  82. data/spec/factories/contract.rb~ +26 -0
  83. data/spec/factories/dummy_user.rb +4 -0
  84. data/spec/factories/dummy_user.rb~ +6 -0
  85. data/spec/factories/signature.rb +6 -0
  86. data/spec/factories/signature.rb~ +8 -0
  87. data/spec/factories/user.rb~ +6 -0
  88. data/spec/fine_print_spec.rb~ +15 -4
  89. data/spec/lib/fine_print/controller_additions_spec.rb +20 -0
  90. data/spec/lib/fine_print/controller_additions_spec.rb~ +20 -0
  91. data/spec/lib/fine_print_spec.rb +47 -0
  92. data/spec/lib/fine_print_spec.rb~ +47 -0
  93. data/spec/models/contract_spec.rb +79 -0
  94. data/spec/models/contract_spec.rb~ +80 -0
  95. data/spec/models/signature_spec.rb +28 -0
  96. data/spec/models/signature_spec.rb~ +28 -0
  97. data/spec/spec_helper.rb +31 -0
  98. data/spec/spec_helper.rb~ +32 -0
  99. data/spec/test_helper.rb~ +15 -0
  100. metadata +153 -91
  101. data/app/assets/javascripts/fine_print/agreements.js +0 -19
  102. data/app/assets/javascripts/fine_print/agreements.js~ +0 -19
  103. data/app/assets/javascripts/fine_print/application.js~ +0 -5
  104. data/app/assets/javascripts/fine_print/dialog.js +0 -2
  105. data/app/assets/javascripts/fine_print/dialog.js~ +0 -2
  106. data/app/assets/javascripts/fine_print/user_agreements.js +0 -20
  107. data/app/assets/javascripts/fine_print/user_agreements.js~ +0 -20
  108. data/app/assets/stylesheets/fine_print/agreements.css +0 -11
  109. data/app/assets/stylesheets/fine_print/agreements.css~ +0 -11
  110. data/app/assets/stylesheets/fine_print/application.css~ +0 -60
  111. data/app/assets/stylesheets/fine_print/user_agreements.css~ +0 -3
  112. data/app/assets/stylesheets/scaffold.css~ +0 -56
  113. data/app/controllers/fine_print/agreements_controller.rb +0 -114
  114. data/app/controllers/fine_print/agreements_controller.rb~ +0 -113
  115. data/app/controllers/fine_print/user_agreements_controller.rb +0 -63
  116. data/app/controllers/fine_print/user_agreements_controller.rb~ +0 -63
  117. data/app/models/fine_print/agreement.rb +0 -50
  118. data/app/models/fine_print/agreement.rb~ +0 -50
  119. data/app/models/fine_print/user_agreement.rb +0 -19
  120. data/app/models/fine_print/user_agreement.rb~ +0 -21
  121. data/app/views/fine_print/agreements/_agreement.html.erb +0 -77
  122. data/app/views/fine_print/agreements/_agreement.html.erb~ +0 -77
  123. data/app/views/fine_print/agreements/_dialog.html.erb +0 -27
  124. data/app/views/fine_print/agreements/_dialog.html.erb~ +0 -27
  125. data/app/views/fine_print/agreements/_form.html.erb +0 -51
  126. data/app/views/fine_print/agreements/_form.html.erb~ +0 -51
  127. data/app/views/fine_print/agreements/edit.html.erb +0 -8
  128. data/app/views/fine_print/agreements/edit.html.erb~ +0 -8
  129. data/app/views/fine_print/agreements/index.html.erb +0 -32
  130. data/app/views/fine_print/agreements/index.html.erb~ +0 -32
  131. data/app/views/fine_print/agreements/new.html.erb +0 -7
  132. data/app/views/fine_print/agreements/new.html.erb~ +0 -7
  133. data/app/views/fine_print/agreements/new_version.html.erb +0 -7
  134. data/app/views/fine_print/agreements/new_version.html.erb~ +0 -7
  135. data/app/views/fine_print/agreements/show.html.erb +0 -15
  136. data/app/views/fine_print/agreements/show.html.erb~ +0 -14
  137. data/app/views/fine_print/user_agreements/cancel.js.erb +0 -1
  138. data/app/views/fine_print/user_agreements/cancel.js.erb~ +0 -2
  139. data/app/views/fine_print/user_agreements/create.js.erb +0 -2
  140. data/app/views/fine_print/user_agreements/create.js.erb~ +0 -2
  141. data/app/views/fine_print/user_agreements/index.html.erb +0 -25
  142. data/app/views/fine_print/user_agreements/index.html.erb~ +0 -25
  143. data/db/migrate/0_create_fine_print_agreements.rb~ +0 -22
  144. data/db/migrate/0_install.rb +0 -28
  145. data/db/migrate/0_install.rb~ +0 -28
  146. data/lib/fine_print/agreements_helper.rb +0 -13
  147. data/lib/fine_print/agreements_helper.rb~ +0 -11
  148. data/lib/fine_print/fine_print_agreement.rb +0 -26
  149. data/lib/fine_print/fine_print_agreement.rb~ +0 -26
  150. data/lib/fine_print/require_agreement.rb~ +0 -22
  151. data/lib/fine_print/security_transgression.rb~ +0 -3
  152. data/lib/fine_print/version.rb~ +0 -3
  153. data/lib/tasks/fine_print_tasks.rake~ +0 -42
  154. data/spec/dummy/README.md~ +0 -3
  155. data/spec/fine_print_spec.rb +0 -7
  156. data/spec/minitest_helper.rb +0 -12
@@ -1,114 +0,0 @@
1
- require_dependency "fine_print/application_controller"
2
-
3
- module FinePrint
4
- class AgreementsController < ApplicationController
5
- # GET /agreements
6
- # GET /agreements.json
7
- def index
8
- raise SecurityTransgression unless Agreement.can_be_listed_by?(@user)
9
- @agreements = Agreement.all
10
-
11
- respond_to do |format|
12
- format.html # index.html.erb
13
- format.json { render json: @agreements }
14
- end
15
- end
16
-
17
- # GET /agreements/1
18
- # GET /agreements/1.json
19
- def show
20
- @agreement = Agreement.find(params[:id])
21
- raise SecurityTransgression unless @agreement.can_be_read_by?(@user)
22
- @user_agreement = UserAgreement.new(:agreement => @agreement) if @agreement.can_be_accepted_by?(@user)
23
- @accept_path = session.delete(:fine_print_accept_path)
24
- @cancel_path = session.delete(:fine_print_cancel_path)
25
- @url = session.delete(:fine_print_request_url)
26
- @ref = session.delete(:fine_print_request_ref)
27
-
28
- respond_to do |format|
29
- format.html # show.html.erb
30
- format.json { render json: @agreement }
31
- end
32
- end
33
-
34
- # GET /agreements/new
35
- # GET /agreements/new.json
36
- def new
37
- @agreement = Agreement.new
38
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
39
-
40
- respond_to do |format|
41
- format.html # new.html.erb
42
- format.json { render json: @agreement }
43
- end
44
- end
45
-
46
- # GET /agreements/1/edit
47
- def edit
48
- @agreement = Agreement.find(params[:id])
49
- raise SecurityTransgression unless @agreement.can_be_edited_by?(@user)
50
- end
51
-
52
- # GET /agreements/1/new_version
53
- def new_version
54
- @agreement = Agreement.find(params[:agreement_id]).dup
55
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
56
-
57
- respond_to do |format|
58
- format.html # new_version.html.erb
59
- format.json { render json: @agreement }
60
- end
61
- end
62
-
63
- # POST /agreements
64
- # POST /agreements.json
65
- def create
66
- @agreement = Agreement.new(params[:agreement])
67
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
68
- @agreement.version = Agreement.next_version(@agreement.name)
69
-
70
- respond_to do |format|
71
- if @agreement.save
72
- format.html { redirect_to @agreement, notice: 'Agreement was successfully created.' }
73
- format.json { render json: @agreement, status: :created, location: @agreement }
74
- else
75
- format.html { render action: "new" }
76
- format.json { render json: @agreement.errors, status: :unprocessable_entity }
77
- end
78
- end
79
- end
80
-
81
- # PUT /agreements/1
82
- # PUT /agreements/1.json
83
- def update
84
- @agreement = Agreement.find(params[:id])
85
- raise SecurityTransgression unless @agreement.can_be_edited_by?(@user)
86
- if params[:agreement][:name].try(:downcase) != @agreement.name.downcase
87
- params[:agreement][:version] = Agreement.next_version(params[:agreement][:name])
88
- end
89
-
90
- respond_to do |format|
91
- if @agreement.update_attributes(params[:agreement])
92
- format.html { redirect_to @agreement, notice: 'Agreement was successfully updated.' }
93
- format.json { head :no_content }
94
- else
95
- format.html { render action: "edit" }
96
- format.json { render json: @agreement.errors, status: :unprocessable_entity }
97
- end
98
- end
99
- end
100
-
101
- # DELETE /agreements/1
102
- # DELETE /agreements/1.json
103
- def destroy
104
- @agreement = Agreement.find(params[:id])
105
- raise SecurityTransgression unless @agreement.can_be_destroyed_by?(@user)
106
- @agreement.destroy
107
-
108
- respond_to do |format|
109
- format.html { redirect_to agreements_url }
110
- format.json { head :no_content }
111
- end
112
- end
113
- end
114
- end
@@ -1,113 +0,0 @@
1
- require_dependency "fine_print/application_controller"
2
-
3
- module FinePrint
4
- class AgreementsController < ApplicationController
5
- # GET /agreements
6
- # GET /agreements.json
7
- def index
8
- raise SecurityTransgression unless Agreement.can_be_listed_by?(@user)
9
- @agreements = Agreement.all
10
-
11
- respond_to do |format|
12
- format.html # index.html.erb
13
- format.json { render json: @agreements }
14
- end
15
- end
16
-
17
- # GET /agreements/1
18
- # GET /agreements/1.json
19
- def show
20
- @agreement = Agreement.find(params[:id])
21
- raise SecurityTransgression unless @agreement.can_be_read_by?(@user)
22
- @user_agreement = UserAgreement.new(:agreement => @agreement) if @agreement.can_be_accepted_by?(@user)
23
- @accept_path = session.delete(:fine_print_accept_path)
24
- @url = session.delete(:fine_print_request_url)
25
- @ref = session.delete(:fine_print_request_ref)
26
-
27
- respond_to do |format|
28
- format.html # show.html.erb
29
- format.json { render json: @agreement }
30
- end
31
- end
32
-
33
- # GET /agreements/new
34
- # GET /agreements/new.json
35
- def new
36
- @agreement = Agreement.new
37
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
38
-
39
- respond_to do |format|
40
- format.html # new.html.erb
41
- format.json { render json: @agreement }
42
- end
43
- end
44
-
45
- # GET /agreements/1/edit
46
- def edit
47
- @agreement = Agreement.find(params[:id])
48
- raise SecurityTransgression unless @agreement.can_be_edited_by?(@user)
49
- end
50
-
51
- # GET /agreements/1/new_version
52
- def new_version
53
- @agreement = Agreement.find(params[:agreement_id]).dup
54
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
55
-
56
- respond_to do |format|
57
- format.html # new_version.html.erb
58
- format.json { render json: @agreement }
59
- end
60
- end
61
-
62
- # POST /agreements
63
- # POST /agreements.json
64
- def create
65
- @agreement = Agreement.new(params[:agreement])
66
- raise SecurityTransgression unless @agreement.can_be_created_by?(@user)
67
- @agreement.version = Agreement.next_version(@agreement.name)
68
-
69
- respond_to do |format|
70
- if @agreement.save
71
- format.html { redirect_to @agreement, notice: 'Agreement was successfully created.' }
72
- format.json { render json: @agreement, status: :created, location: @agreement }
73
- else
74
- format.html { render action: "new" }
75
- format.json { render json: @agreement.errors, status: :unprocessable_entity }
76
- end
77
- end
78
- end
79
-
80
- # PUT /agreements/1
81
- # PUT /agreements/1.json
82
- def update
83
- @agreement = Agreement.find(params[:id])
84
- raise SecurityTransgression unless @agreement.can_be_edited_by?(@user)
85
- if params[:agreement][:name].try(:downcase) != @agreement.name.downcase
86
- params[:agreement][:version] = Agreement.next_version(params[:agreement][:name])
87
- end
88
-
89
- respond_to do |format|
90
- if @agreement.update_attributes(params[:agreement])
91
- format.html { redirect_to @agreement, notice: 'Agreement was successfully updated.' }
92
- format.json { head :no_content }
93
- else
94
- format.html { render action: "edit" }
95
- format.json { render json: @agreement.errors, status: :unprocessable_entity }
96
- end
97
- end
98
- end
99
-
100
- # DELETE /agreements/1
101
- # DELETE /agreements/1.json
102
- def destroy
103
- @agreement = Agreement.find(params[:id])
104
- raise SecurityTransgression unless @agreement.can_be_destroyed_by?(@user)
105
- @agreement.destroy
106
-
107
- respond_to do |format|
108
- format.html { redirect_to agreements_url }
109
- format.json { head :no_content }
110
- end
111
- end
112
- end
113
- end
@@ -1,63 +0,0 @@
1
- require_dependency "fine_print/application_controller"
2
-
3
- module FinePrint
4
- class UserAgreementsController < ApplicationController
5
- # GET /user_agreements
6
- # GET /user_agreements.json
7
- def index
8
- raise SecurityTransgression unless UserAgreement.can_be_listed_by?(@user)
9
- @user_agreements = UserAgreement.all
10
-
11
- respond_to do |format|
12
- format.html # index.html.erb
13
- format.json { render json: @user_agreements }
14
- end
15
- end
16
-
17
- # POST /user_agreements
18
- # POST /user_agreements.json
19
- def create
20
- @agreement = Agreement.find(params[:agreement_id])
21
- raise SecurityTransgression unless @agreement.can_be_accepted_by?(@user)
22
-
23
- if params[:cancel] || (@agreement.display_confirmation && !params[:confirmation_checkbox])
24
- respond_to do |format|
25
- format.html { redirect_to params[:ref] || FinePrint.get_option(params, :cancel_path) }
26
- format.js { render 'cancel' }
27
- end
28
- return
29
- end
30
-
31
- @index = params[:index].to_i
32
- @user_agreement = UserAgreement.new
33
- @user_agreement.agreement = @agreement
34
- @user_agreement.user = @user
35
- redirect_path = params[:url] || FinePrint.get_option(params, :accept_path)
36
-
37
- respond_to do |format|
38
- if @user_agreement.save
39
- format.html { redirect_to redirect_path, notice: "#{@user_agreement.agreement.name} accepted." }
40
- format.json { render json: @user_agreement, status: :created, location: @user_agreement }
41
- format.js
42
- else
43
- format.html { redirect_to redirect_path, notice: "You have already accepted this agreement." }
44
- format.json { render json: @user_agreement.errors, status: :unprocessable_entity }
45
- format.js { redirect_to redirect_path, notice: "You have already accepted this agreement." }
46
- end
47
- end
48
- end
49
-
50
- # DELETE /user_agreements/1
51
- # DELETE /user_agreements/1.json
52
- def destroy
53
- @user_agreement = UserAgreement.find(params[:id])
54
- raise SecurityTransgression unless @user_agreement.can_be_destroyed_by?(@user)
55
- @user_agreement.destroy
56
-
57
- respond_to do |format|
58
- format.html { redirect_to user_agreements_url }
59
- format.json { head :no_content }
60
- end
61
- end
62
- end
63
- end
@@ -1,63 +0,0 @@
1
- require_dependency "fine_print/application_controller"
2
-
3
- module FinePrint
4
- class UserAgreementsController < ApplicationController
5
- # GET /user_agreements
6
- # GET /user_agreements.json
7
- def index
8
- raise SecurityTransgression unless UserAgreement.can_be_listed_by?(@user)
9
- @user_agreements = UserAgreement.all
10
-
11
- respond_to do |format|
12
- format.html # index.html.erb
13
- format.json { render json: @user_agreements }
14
- end
15
- end
16
-
17
- # POST /user_agreements
18
- # POST /user_agreements.json
19
- def create
20
- @agreement = Agreement.find(params[:agreement_id])
21
- raise SecurityTransgression unless @agreement.can_be_accepted_by?(@user)
22
-
23
- if params[:cancel] || (@agreement.display_confirmation && !params[:confirmation_checkbox])
24
- respond_to do |format|
25
- format.html { redirect_to params[:ref] || FinePrint.get_option(params, :cancel_path) }
26
- format.js { render 'cancel' }
27
- end
28
- return
29
- end
30
-
31
- @index = params[:index].to_i
32
- @user_agreement = UserAgreement.new
33
- @user_agreement.agreement = @agreement
34
- @user_agreement.user = @user
35
- redirect_path = params[:url] || FinePrint.get_option(params, :redirect_path)
36
-
37
- respond_to do |format|
38
- if @user_agreement.save
39
- format.html { redirect_to redirect_path, notice: "#{@user_agreement.agreement.name} accepted." }
40
- format.json { render json: @user_agreement, status: :created, location: @user_agreement }
41
- format.js
42
- else
43
- format.html { redirect_to redirect_path, notice: "You have already accepted this agreement." }
44
- format.json { render json: @user_agreement.errors, status: :unprocessable_entity }
45
- format.js { redirect_to redirect_path, notice: "You have already accepted this agreement." }
46
- end
47
- end
48
- end
49
-
50
- # DELETE /user_agreements/1
51
- # DELETE /user_agreements/1.json
52
- def destroy
53
- @user_agreement = UserAgreement.find(params[:id])
54
- raise SecurityTransgression unless @user_agreement.can_be_destroyed_by?(@user)
55
- @user_agreement.destroy
56
-
57
- respond_to do |format|
58
- format.html { redirect_to user_agreements_url }
59
- format.json { head :no_content }
60
- end
61
- end
62
- end
63
- end
@@ -1,50 +0,0 @@
1
- module FinePrint
2
- class Agreement < ActiveRecord::Base
3
- attr_accessible :name, :version, :content, :confirmation_text, :display_name, :display_version, :display_updated, :display_confirmation, :ready
4
-
5
- has_many :user_agreements
6
-
7
- validates_presence_of :name, :content, :version
8
- validates_uniqueness_of :name, :scope => :version, :case_sensitive => false
9
-
10
- default_scope order(:name, :version)
11
-
12
- def self.latest(name)
13
- find(:last, :conditions => ["LOWER(name) = ?", name.try(:downcase)])
14
- end
15
-
16
- def self.next_version(name)
17
- (latest(name).try(:version) || 0) + 1
18
- end
19
-
20
- def self.latest_ready(name)
21
- where(:ready => true).find(:last, :conditions => ["LOWER(name) = ?", name.try(:downcase)])
22
- end
23
-
24
- def accepted_by?(user)
25
- !user.nil? && !user_agreements.where(:user_type => user.class.to_s, :user_id => user.id).empty?
26
- end
27
-
28
- def self.can_be_listed_by?(user)
29
- FinePrint.is_admin?(user)
30
- end
31
-
32
- def can_be_read_by?(user)
33
- ready || FinePrint.is_admin?(user)
34
- end
35
-
36
- def can_be_accepted_by?(user)
37
- ready && !user.nil?
38
- end
39
-
40
- def can_be_created_by?(user)
41
- FinePrint.is_admin?(user)
42
- end
43
-
44
- def can_be_edited_by?(user)
45
- FinePrint.is_admin?(user) && user_agreements.empty?
46
- end
47
-
48
- alias_method :can_be_destroyed_by?, :can_be_edited_by?
49
- end
50
- end
@@ -1,50 +0,0 @@
1
- module FinePrint
2
- class Agreement < ActiveRecord::Base
3
- attr_accessible :name, :version, :content, :display_name, :display_version, :display_updated, :display_confirmation, :ready
4
-
5
- has_many :user_agreements
6
-
7
- validates_presence_of :name, :content, :version
8
- validates_uniqueness_of :name, :scope => :version, :case_sensitive => false
9
-
10
- default_scope order(:name, :version)
11
-
12
- def self.latest(name)
13
- find(:last, :conditions => ["LOWER(name) = ?", name.try(:downcase)])
14
- end
15
-
16
- def self.next_version(name)
17
- (latest(name).try(:version) || 0) + 1
18
- end
19
-
20
- def self.latest_ready(name)
21
- where(:ready => true).find(:last, :conditions => ["LOWER(name) = ?", name.try(:downcase)])
22
- end
23
-
24
- def accepted_by?(user)
25
- !user.nil? && !user_agreements.where(:user_type => user.class.to_s, :user_id => user.id).empty?
26
- end
27
-
28
- def self.can_be_listed_by?(user)
29
- FinePrint.is_admin?(user)
30
- end
31
-
32
- def can_be_read_by?(user)
33
- ready || FinePrint.is_admin?(user)
34
- end
35
-
36
- def can_be_accepted_by?(user)
37
- ready && !user.nil?
38
- end
39
-
40
- def can_be_created_by?(user)
41
- FinePrint.is_admin?(user)
42
- end
43
-
44
- def can_be_edited_by?(user)
45
- FinePrint.is_admin?(user) && user_agreements.empty?
46
- end
47
-
48
- alias_method :can_be_destroyed_by?, :can_be_edited_by?
49
- end
50
- end
@@ -1,19 +0,0 @@
1
- module FinePrint
2
- class UserAgreement < ActiveRecord::Base
3
- belongs_to :agreement
4
- belongs_to :user, :polymorphic => true
5
-
6
- validates_presence_of :agreement, :user
7
- validates_uniqueness_of :user_id, :scope => [:agreement_id, :user_type]
8
-
9
- default_scope order(:agreement_id, :user_type, :user_id)
10
-
11
- def self.can_be_listed_by?(user)
12
- FinePrint.is_admin?(user)
13
- end
14
-
15
- def can_be_destroyed_by?(user)
16
- FinePrint.is_admin?(user)
17
- end
18
- end
19
- end
@@ -1,21 +0,0 @@
1
- module FinePrint
2
- class UserAgreement < ActiveRecord::Base
3
- attr_accessible :agreement
4
-
5
- belongs_to :agreement
6
- belongs_to :user, :polymorphic => true
7
-
8
- validates_presence_of :agreement, :user
9
- validates_uniqueness_of :user_id, :scope => [:agreement_id, :user_type]
10
-
11
- default_scope order(:agreement_id, :user_type, :user_id)
12
-
13
- def self.can_be_listed_by?(user)
14
- FinePrint.is_admin?(user)
15
- end
16
-
17
- def can_be_destroyed_by?(user)
18
- FinePrint.is_admin?(user)
19
- end
20
- end
21
- end
@@ -1,77 +0,0 @@
1
- <% # Clients of this partial must supply the following variable:
2
- # agreement
3
- # user
4
- #
5
- # Additionally, they can override the following variables:
6
- index ||= 0
7
- notice ||= nil
8
- accept_path ||= nil
9
- cancel_path ||= nil
10
- url ||= nil
11
- ref ||= nil
12
- remote ||= false %>
13
-
14
- <% unless notice.nil? %>
15
- <p id="notice" class = "fine_print notice"><%= notice %></p>
16
- <% end %>
17
-
18
- <% if agreement.display_name %>
19
- <h1 class="fine_print agreement name">
20
- <%= agreement.name %>
21
- </h1>
22
- <% end %>
23
-
24
- <% if agreement.display_version %>
25
- <h3 class="fine_print agreement version">
26
- Version: <%= agreement.version %>
27
- </h3>
28
- <% end %>
29
-
30
- <% if agreement.display_updated %>
31
- <h3 class="fine_print agreement updated">
32
- Last updated: <%= agreement.updated_at %>
33
- </h3>
34
- <% end %>
35
-
36
- <pre class="fine_print agreement content">
37
- <%= agreement.content %>
38
- </pre>
39
-
40
- <% if agreement.can_be_accepted_by?(user) %>
41
- <%= form_tag fine_print.user_agreements_path, :remote => remote do %>
42
- <%= hidden_field_tag :agreement_id, agreement.id %>
43
- <%= hidden_field_tag :index, index %>
44
- <% unless accept_path.nil? %>
45
- <%= hidden_field_tag :accept_path, accept_path %>
46
- <% end %>
47
- <% unless cancel_path.nil? %>
48
- <%= hidden_field_tag :cancel_path, cancel_path %>
49
- <% end %>
50
- <% unless url.nil? %>
51
- <%= hidden_field_tag :url, url %>
52
- <% end %>
53
- <% unless ref.nil? %>
54
- <%= hidden_field_tag :ref, ref %>
55
- <% end %>
56
- <% if agreement.display_confirmation %>
57
- <div class="field">
58
- <%= label_tag :confirmation_checkbox, agreement.confirmation_text, :class => "fine_print label" %>
59
- <%= check_box_tag :confirmation_checkbox, 1, false, :id => "fine_print_confirmation_checkbox_#{index}", :class => "fine_print checkbox" %><br/>
60
- </div>
61
- <% end %>
62
- <div class="actions">
63
- <%= submit_tag (agreement.display_confirmation ? 'OK' : agreement.confirmation_text), :id => "fine_print_submit_ok_#{index}", :class => "fine_print submit" %>
64
- <%= submit_tag :Cancel, :name => 'cancel', :class => "fine_print submit" %>
65
- </div>
66
- <% end %>
67
- <% if agreement.display_confirmation %>
68
- <script>
69
- fine_print_agreement_checkbox(<%= index %>);
70
- </script>
71
- <% end %>
72
- <% elsif !agreement.ready %>
73
- This agreement is not yet ready to be used.<br/>
74
- <% else %>
75
- Please <%= FinePrint.sign_in_path.nil? ? 'sign in' : link_to('sign in', FinePrint.sign_in_path) %> to accept this agreement.<br/>
76
- <% end %>
77
-
@@ -1,77 +0,0 @@
1
- <% # Clients of this partial must supply the following variable:
2
- # agreement
3
- # user
4
- #
5
- # Additionally, they can override the following variables:
6
- index ||= 0
7
- notice ||= nil
8
- accept_path ||= nil
9
- cancel_path ||= nil
10
- url ||= nil
11
- ref ||= nil
12
- remote ||= false %>
13
-
14
- <% if notice %>
15
- <p id="notice" class = "fine_print notice"><%= notice %></p>
16
- <% end %>
17
-
18
- <% if agreement.display_name %>
19
- <h1 class="fine_print agreement name">
20
- <%= agreement.name %>
21
- </h1>
22
- <% end %>
23
-
24
- <% if agreement.display_version %>
25
- <h3 class="fine_print agreement version">
26
- Version: <%= agreement.version %>
27
- </h3>
28
- <% end %>
29
-
30
- <% if agreement.display_updated %>
31
- <h3 class="fine_print agreement updated">
32
- Last updated: <%= agreement.updated_at %>
33
- </h3>
34
- <% end %>
35
-
36
- <pre class="fine_print agreement content">
37
- <%= agreement.content %>
38
- </pre>
39
-
40
- <% if agreement.can_be_accepted_by?(user) %>
41
- <%= form_tag fine_print.user_agreements_path, :remote => remote do %>
42
- <%= hidden_field_tag :agreement_id, agreement.id %>
43
- <%= hidden_field_tag :index, index %>
44
- <% unless accept_path.nil? %>
45
- <%= hidden_field_tag :accept_path, accept_path %>
46
- <% end %>
47
- <% unless cancel_path.nil? %>
48
- <%= hidden_field_tag :cancel_path, cancel_path %>
49
- <% end %>
50
- <% unless url.nil? %>
51
- <%= hidden_field_tag :url, url %>
52
- <% end %>
53
- <% unless ref.nil? %>
54
- <%= hidden_field_tag :ref, ref %>
55
- <% end %>
56
- <% if agreement.display_confirmation %>
57
- <div class="field">
58
- <%= label_tag :confirmation_checkbox, agreement.confirmation_text, :class => "fine_print label" %>
59
- <%= check_box_tag :confirmation_checkbox, 1, false, :id => "fine_print_confirmation_checkbox_#{index}", :class => "fine_print checkbox" %><br/>
60
- </div>
61
- <% end %>
62
- <div class="actions">
63
- <%= submit_tag (agreement.display_confirmation ? 'OK' : agreement.confirmation_text), :id => "fine_print_submit_ok_#{index}", :class => "fine_print submit" %>
64
- <%= submit_tag :Cancel, :name => 'cancel', :class => "fine_print submit" %>
65
- </div>
66
- <% end %>
67
- <% if agreement.display_confirmation %>
68
- <script>
69
- fine_print_agreement_checkbox(<%= index %>);
70
- </script>
71
- <% end %>
72
- <% elsif !agreement.ready %>
73
- This agreement is not yet ready to be used.<br/>
74
- <% else %>
75
- Please <%= FinePrint.sign_in_path.nil? ? 'sign in' : link_to('sign in', FinePrint.sign_in_path) %> to accept this agreement.<br/>
76
- <% end %>
77
-
@@ -1,27 +0,0 @@
1
- <% # Clients of this partial must supply the following variables:
2
- # agreements
3
- # user
4
- # notice
5
- #
6
- # Additionally, they can override the following variables:
7
- width ||= 640
8
- height ||= 480 %>
9
-
10
- <%= stylesheet_link_tag 'fine_print/application' %>
11
- <%= javascript_include_tag 'fine_print/dialog' %>
12
-
13
- <% agreements.each_with_index do |agreement, index| %>
14
- <div id="<%= "fine_print_dialog_#{index}" %>" title="<%= agreement.name %>" class="fine_print agreement dialog">
15
- <%= render :partial => 'fine_print/agreements/agreement', :locals => {
16
- :agreement => agreement,
17
- :index => index,
18
- :user => user,
19
- :notice => notice,
20
- :remote => true } %>
21
- </div>
22
-
23
- <script>
24
- fine_print_init_dialog(<%= index %>, <%= width %>, <%= height %>);
25
- </script>
26
- <% end %>
27
-