bcms_feedback_form 1.0.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/README +2 -0
- data/app/controllers/application_controller.rb +10 -0
- data/app/controllers/cms/feedback_forms_controller.rb +2 -0
- data/app/controllers/feedback_forms_controller.rb +26 -0
- data/app/helpers/application_helper.rb +3 -0
- data/app/helpers/feedback_forms_helper.rb +2 -0
- data/app/models/feedback.rb +10 -0
- data/app/models/feedback_form.rb +9 -0
- data/app/views/cms/feedback_forms/_form.html.erb +18 -0
- data/app/views/cms/feedback_forms/render.html.erb +24 -0
- data/app/views/feedback/feedback.text.html.erb +12 -0
- data/app/views/feedback/feedback.text.plain.erb +7 -0
- data/app/views/feedback_forms/submit.html.erb +2 -0
- data/config/initializers/recaptcha.rb +2 -0
- data/db/migrate/20100312161745_create_feedback_forms.rb +22 -0
- data/lib/bcms_feedback_form.rb +1 -0
- data/lib/bcms_feedback_form/routes.rb +8 -0
- data/public/bcms/feedback_form/README +1 -0
- data/rails/init.rb +4 -0
- metadata +73 -0
data/README
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Filters added to this controller apply to all controllers in the application.
|
2
|
+
# Likewise, all the methods added will be available for all controllers.
|
3
|
+
|
4
|
+
class ApplicationController < ActionController::Base
|
5
|
+
helper :all # include all helpers, all the time
|
6
|
+
protect_from_forgery # See ActionController::RequestForgeryProtection for details
|
7
|
+
|
8
|
+
# Scrub sensitive parameters from your log
|
9
|
+
# filter_parameter_logging :password
|
10
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class FeedbackFormsController < ApplicationController
|
2
|
+
def submit
|
3
|
+
feedback_form = FeedbackForm.find(params[:id])
|
4
|
+
if feedback_form.use_recaptcha == true
|
5
|
+
if verify_recaptcha
|
6
|
+
Feedback.deliver_feedback(feedback_form, params)
|
7
|
+
else
|
8
|
+
raise
|
9
|
+
end
|
10
|
+
else
|
11
|
+
Feedback.deliver_feedback(feedback_form, params)
|
12
|
+
end
|
13
|
+
if request.xhr?
|
14
|
+
render :text => ((feedback_form.thank_you.blank?) ? 'Thanks!' : feedback_form.thank_you), :layout => false and return
|
15
|
+
else
|
16
|
+
redirect_to((params[:_redirect_to].blank?) ? '/' : params[:_redirect_to]) and return
|
17
|
+
end
|
18
|
+
rescue
|
19
|
+
if request.xhr?
|
20
|
+
render :text => 'There seems to have been an error. Please try again', :layout => false and return
|
21
|
+
else
|
22
|
+
redirect_to((params[:_redirect_to].blank?) ? '/' : params[:_redirect_to]) and return
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Feedback < ActionMailer::Base
|
2
|
+
|
3
|
+
def feedback(feedback_form,params)
|
4
|
+
recipients feedback_form.send_to.split(',')
|
5
|
+
from (feedback_form.from.blank?) ? params[:from] : feedback_form.from
|
6
|
+
subject (feedback_form.subject.blank?) ? 'Feedback form submission' : feedback_form.subject
|
7
|
+
body :feedback_form => feedback_form, :cgi_params => params, :fields => params[:feedback_form].keys
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class FeedbackForm < ActiveRecord::Base
|
2
|
+
acts_as_content_block
|
3
|
+
validates_length_of :send_to, :maximum => 500
|
4
|
+
validates_length_of :subject, :maximum => 200, :allow_blank => true
|
5
|
+
validates_length_of :from, :maximum => 100, :allow_blank => true
|
6
|
+
validates_length_of :form, :maximum => 10000, :allow_blank => true
|
7
|
+
validates_length_of :description, :thank_you, :maximum => 5000, :allow_blank => true
|
8
|
+
validates_format_of :from, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_blank => true
|
9
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%= f.cms_text_field :name %>
|
2
|
+
<%= f.cms_text_field :send_to, :instructions => 'A single email address or a comma-separated list of email addresses.' %>
|
3
|
+
<%= f.cms_text_field :from, :instructions => 'A single email address that the form is sent "from". We\'ll try to parse the from out of the params if you don\'t specify it here - name the field "from".' %>
|
4
|
+
|
5
|
+
<div class="fields checkbox_group">
|
6
|
+
<label>Use ReCaptcha</label>
|
7
|
+
<div class="checkboxes">
|
8
|
+
<div class="checkbox_fields">
|
9
|
+
<%= f.check_box :use_recaptcha %> <%= f.label :use_recaptcha, 'Use Recaptcha to protect this form from spammers. HIGHLY recommended.' %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<br clear="all" />
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<%= f.cms_text_field :subject, :instructions => 'The subject line of the outgoing email.' %>
|
16
|
+
<%= f.cms_text_editor :description, :label => 'Description: The html / text that appears above the rendered form on the website.' %>
|
17
|
+
<%= f.cms_text_editor :thank_you, :label => 'Thank you: The html / text that appears after a successful form submission' %>
|
18
|
+
<%= f.cms_text_area :form, :label => 'Form: (OPTIONAL). You can define a form here manually and it will be wrapped in the correct form tag. All form elements you want sent through the mailer should live in the "feedback_form[]" parameter namespace, so they\'d have names like "feedback_form[message]"' %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<div class="feedback-form">
|
2
|
+
<%= @content_block.description %>
|
3
|
+
<div id="feedback-form-<%= @content_block.id %>">
|
4
|
+
<% form_remote_tag(:url => url_for(:controller => '/feedback_forms', :action => :submit, :id => @content_block.id), :update => "feedback-form-#{@content_block.id}" ) do -%>
|
5
|
+
<% unless @content_block.form.blank? %>
|
6
|
+
<%= @content_block.form %>
|
7
|
+
<% else %>
|
8
|
+
<p><strong>Name:</strong> <%= text_field_tag 'feedback_form[name]' %></p>
|
9
|
+
<p><strong>Email:</strong> <%= text_field_tag 'feedback_form[from]' %></p>
|
10
|
+
<p><strong>About:</strong> <%= text_field_tag 'feedback_form[about]' %></p>
|
11
|
+
<p>
|
12
|
+
<strong>Message:</strong><br/>
|
13
|
+
<%= text_area_tag 'feedback_form[message]', '', :size => '60x4' %>
|
14
|
+
</p>
|
15
|
+
<% end %>
|
16
|
+
<% if @content_block.use_recaptcha %>
|
17
|
+
<p><strong>Please enter the text below:</strong></p>
|
18
|
+
<%= recaptcha_tags %>
|
19
|
+
<% end %>
|
20
|
+
<%= hidden_field_tag '_redirect_to', url_for() %>
|
21
|
+
<%= submit_tag 'Submit form' %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<h2>Feedback form submission</h2>
|
2
|
+
|
3
|
+
<table border="0" cellpadding="3">
|
4
|
+
<% @fields.each do |field| -%>
|
5
|
+
<tr>
|
6
|
+
<th><strong><%=h field.titleize %></strong></th>
|
7
|
+
<td><%=h @cgi_params[:feedback_form][field] %></td>
|
8
|
+
</tr>
|
9
|
+
<% end -%>
|
10
|
+
</table>
|
11
|
+
|
12
|
+
<p>at: <%= Time.now.to_s %></p>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreateFeedbackForms < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_content_table :feedback_forms do |t|
|
4
|
+
t.string :send_to, :limit => 500
|
5
|
+
t.string :subject, :limit => 200
|
6
|
+
t.string :from, :limit => 100
|
7
|
+
t.string :form, :limit => 10000
|
8
|
+
t.string :description, :limit => 5000
|
9
|
+
t.string :thank_you, :limit => 5000
|
10
|
+
t.boolean :use_recaptcha, :default => true
|
11
|
+
end
|
12
|
+
ContentType.create!(:name => "FeedbackForm", :group_name => "FeedbackForm")
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
ContentType.delete_all(['name = ?', 'FeedbackForm'])
|
17
|
+
CategoryType.all(:conditions => ['name = ?', 'Feedback Form']).each(&:destroy)
|
18
|
+
#If you aren't creating a versioned table, be sure to comment this out.
|
19
|
+
drop_table :feedback_form_versions
|
20
|
+
drop_table :feedback_forms
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'bcms_feedback_form/routes'
|
@@ -0,0 +1 @@
|
|
1
|
+
Use this directory to add public files that should copied from the gem into the project.
|
data/rails/init.rb
ADDED
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bcms_feedback_form
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Collis-Puro
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-03-12 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: djcp+github@cyber.law.harvard.edu
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
files:
|
25
|
+
- app/helpers/application_helper.rb
|
26
|
+
- app/helpers/feedback_forms_helper.rb
|
27
|
+
- app/views/feedback_forms/submit.html.erb
|
28
|
+
- app/views/feedback/feedback.text.plain.erb
|
29
|
+
- app/views/feedback/feedback.text.html.erb
|
30
|
+
- app/views/cms/feedback_forms/render.html.erb
|
31
|
+
- app/views/cms/feedback_forms/_form.html.erb
|
32
|
+
- app/controllers/feedback_forms_controller.rb
|
33
|
+
- app/controllers/application_controller.rb
|
34
|
+
- app/controllers/cms/feedback_forms_controller.rb
|
35
|
+
- app/models/feedback.rb
|
36
|
+
- app/models/feedback_form.rb
|
37
|
+
- db/migrate/20100312161745_create_feedback_forms.rb
|
38
|
+
- lib/bcms_feedback_form.rb
|
39
|
+
- lib/bcms_feedback_form/routes.rb
|
40
|
+
- rails/init.rb
|
41
|
+
- config/initializers/recaptcha.rb
|
42
|
+
- public/bcms/feedback_form/README
|
43
|
+
- README
|
44
|
+
has_rdoc: true
|
45
|
+
homepage: http://github.com/djcp/bcms_feedback_form
|
46
|
+
licenses: []
|
47
|
+
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
version:
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
requirements: []
|
66
|
+
|
67
|
+
rubyforge_project: bcms_feedback_form
|
68
|
+
rubygems_version: 1.3.5
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: A Feedback Form Module for BrowserCMS
|
72
|
+
test_files: []
|
73
|
+
|