pointless_feedback 4.1.2 → 4.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +9 -0
- data/app/controllers/pointless_feedback/messages_controller.rb +2 -1
- data/app/models/pointless_feedback/message.rb +17 -2
- data/app/views/pointless_feedback/feedback_mailer/feedback.html.erb +3 -0
- data/app/views/pointless_feedback/messages/new.html.erb +7 -0
- data/db/migrate/20220518205500_add_url_to_pointless_feedback_messages.rb +5 -0
- data/lib/pointless_feedback/version.rb +1 -1
- data/lib/pointless_feedback.rb +9 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +3 -2
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +37 -0
- data/test/dummy/log/test.log +2463 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-San3EpdqmXucKjWKzj9Y4ohakTwPve802nHvuwO7Jo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-TbbWWLFMt3DZ-5B-vJndj1TPRC1zyxAx9oZII0qDIs.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-pidKv4sRS1AHIdUq8SdhCbK7RBLxqZOj2J2IrQ2MNc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0VTf0cLtjXR4AmORRQFKGgColA8oNkthmlSu3--4vkA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2LTXJO_QqTJ-5H5vls5NuO33l2HnQEPCKyys1rJ9CHU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/38mZ9NIe5KF1MIDDVKe1TEFBcbukU8SM-tJue0yS3wk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6FZ81vWyUKy_DcxXDyZXdmGk9uRdL45m8mIRYeAAki0.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/887XcE3QtqTB1awIHVQ-wZbPREASak6jnAIv5c8YkWs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8UZRZEdnJXQI7pEZv5web_6NYGb4tsqrjexyklH9diw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AZJGtFTJnm8JYaSaOYw5ksyiBB2wnq7xUR03pySV74s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BrYu8MASRWPjOHXf27JbA7JxBQut8DGQqvNrSSbXcRo.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EWWsa5wkShiSKZ2PTmerV3jNjniPCSr6VKY8-AeWlDA.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IOGWMsC0BM_CMkmkUN8bS1rbgafmhkAC8dcxottrV4Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KKSQk2Nb-fK9dAUIu54bCqJmsIl8CfyyMiL2kI6RhZA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LKQqIm9BPozk5o1llvYa7OYd_UP5yTwGvgR42mgrcgg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QrWJdwZgo4HAZ_7Vuhk9kz53541WB0e2f_EZd51klNs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UyxPIgqnOJ95iAcVy9cpZEBquCjaDqLAo-ZLVmMQTtY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZbStkrcw5La9IsJfkcHZtBR6GXZIYYsZEkeoiAejt14.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_F3f3F0jM19jFISuXW_iDifAYddNggPVDu0nZsAQ1qs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cfiN2OwI0tIVEMcsMPNe3Ne9SI-eG5gK9SUCClSF5PU.cache +3 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ixs_LE4mzdmsCUhekBJ0_i4P33LTFSIfqISpj_BRXQM.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lUTpNNW813UzMkR7C2NJ5W6EhyzD2WMmeLp94WjnhLY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rDNrWZd1_Nv7apS-pCv6ymh9c9MxOx_jBYxb0ecEbJM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uFVbUDnZucyvZeWah0qrbvBAmACAym8OCVUhBU80FV8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xmAOdsDeC2k2YPPp5IBPPyzY4uZgOtYDMWM4RzxKGuI.cache +1 -0
- data/test/factories/messages.rb +1 -0
- data/test/functional/pointless_feedback/feedback_mailer_test.rb +12 -0
- data/test/integration/pointless_feedback/feedback_submission_test.rb +23 -0
- data/test/tmp/config/initializers/pointless_feedback.rb +37 -0
- data/test/unit/pointless_feedback/message_test.rb +11 -0
- metadata +66 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7ec9ec8e911135c9097ba31c372f50865a753375
|
4
|
+
data.tar.gz: 2b1bc459727d4a9200b16d10da89a7322f3cb7fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23b8e08fd74c50e8d8a7d2589dbad010ae4ecc5e73e687196454dae4637069cf898ada68c8d05f6c6f11cf611fa3daef697433ad2315249d8518a747cfda2081
|
7
|
+
data.tar.gz: a8f3ee1d7b955529613dabb366e9b4227bb621650ac306561a171b639b1dd046d314361b7f0ca23c627f73794eae508d3e9f81729ccdb330563e6587decdbc96
|
data/README.md
CHANGED
@@ -92,6 +92,15 @@ Specifies what address the feedback email is sent from.
|
|
92
92
|
**table_name:**
|
93
93
|
Defaults to engine's namespace, e.g. `pointless_feedback_messages`. Change to any desired table for `PointlessFeedback::Message` model.
|
94
94
|
|
95
|
+
**invalid_words:**
|
96
|
+
List of words in the feedback description that would prevent an email from sending.
|
97
|
+
|
98
|
+
**show_url_field:**
|
99
|
+
Defaults to `false`. If set to `true`, will show an additional URL field in the form.
|
100
|
+
|
101
|
+
**url_label:**
|
102
|
+
Defaults to `URL`. The label for the URL field that will be shown if `show_url_field` is `true`.
|
103
|
+
|
95
104
|
**google_captcha_site_key & google_captcha_secret_key:**
|
96
105
|
If you'd like to block out the robots, set up a Google Captcha instance:
|
97
106
|
|
@@ -11,7 +11,7 @@ module PointlessFeedback
|
|
11
11
|
validates :email_address, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
|
12
12
|
validate :is_not_spam
|
13
13
|
|
14
|
-
after_save :export_feedback, :unless => :
|
14
|
+
after_save :export_feedback, :unless => :ignore_feedback?
|
15
15
|
|
16
16
|
private
|
17
17
|
|
@@ -35,7 +35,8 @@ module PointlessFeedback
|
|
35
35
|
"Email" => email_address,
|
36
36
|
"Topic" => topic,
|
37
37
|
"Description" => description,
|
38
|
-
"Date" => created_at
|
38
|
+
"Date" => created_at.strftime("%m/%d/%y"),
|
39
|
+
"URL" => url
|
39
40
|
)
|
40
41
|
rescue => e
|
41
42
|
# ignore errors in production, last thing you want is a 500
|
@@ -45,10 +46,24 @@ module PointlessFeedback
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
49
|
+
def ignore_feedback?
|
50
|
+
honeypot_filled_in? || contains_invalid_words?
|
51
|
+
end
|
52
|
+
|
48
53
|
def honeypot_filled_in?
|
49
54
|
contact_info.present?
|
50
55
|
end
|
51
56
|
|
57
|
+
def contains_invalid_words?
|
58
|
+
PointlessFeedback.invalid_words.each do |word|
|
59
|
+
if description.downcase.include? word.downcase
|
60
|
+
return true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
false
|
65
|
+
end
|
66
|
+
|
52
67
|
def is_not_spam
|
53
68
|
if URI.extract(description || "").count >= 3
|
54
69
|
errors.add(:description, "can not contain more than 2 http links (often a sign of spam)")
|
@@ -3,4 +3,7 @@ You've got feedback!
|
|
3
3
|
<p>Name: <%= @message.name %></p>
|
4
4
|
<p>Email Address: <%= @message.email_address %></p>
|
5
5
|
<p>Topic: <%= @message.topic %></p>
|
6
|
+
<% if PointlessFeedback.show_url_field %>
|
7
|
+
<p><%= PointlessFeedback.url_label %>: <%= @message.url %></p>
|
8
|
+
<% end %>
|
6
9
|
<p>Description: <%= @message.description %></p>
|
@@ -45,6 +45,13 @@
|
|
45
45
|
<%= f.select :topic, PointlessFeedback.message_topics, { :prompt => true } %>
|
46
46
|
</div>
|
47
47
|
|
48
|
+
<% if PointlessFeedback.show_url_field %>
|
49
|
+
<div class="field">
|
50
|
+
<%= f.label :url, PointlessFeedback.url_label %>
|
51
|
+
<%= f.text_field :url %>
|
52
|
+
</div>
|
53
|
+
<% end %>
|
54
|
+
|
48
55
|
<div class="field">
|
49
56
|
<%= f.label :description %>
|
50
57
|
<%= f.text_area :description %>
|
data/lib/pointless_feedback.rb
CHANGED
@@ -52,6 +52,15 @@ module PointlessFeedback
|
|
52
52
|
mattr_accessor :airtable_table_name
|
53
53
|
@@airtable_table_name = nil
|
54
54
|
|
55
|
+
mattr_accessor :invalid_words
|
56
|
+
@@invalid_words = []
|
57
|
+
|
58
|
+
mattr_accessor :show_url_field
|
59
|
+
@@show_url_field = false
|
60
|
+
|
61
|
+
mattr_accessor :url_label
|
62
|
+
@@url_label = "URL"
|
63
|
+
|
55
64
|
# Default way to setup PointlessFeedback. Run rails generate
|
56
65
|
# pointless_feedback_install to create a fresh initializer with all
|
57
66
|
# configuration values.
|
Binary file
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,15 +11,16 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20220518205500) do
|
15
15
|
|
16
|
-
create_table "pointless_feedback_messages", force:
|
16
|
+
create_table "pointless_feedback_messages", force: :cascade do |t|
|
17
17
|
t.string "name"
|
18
18
|
t.string "email_address"
|
19
19
|
t.string "topic"
|
20
20
|
t.text "description"
|
21
21
|
t.datetime "created_at"
|
22
22
|
t.datetime "updated_at"
|
23
|
+
t.string "url"
|
23
24
|
end
|
24
25
|
|
25
26
|
end
|
Binary file
|
@@ -0,0 +1,37 @@
|
|
1
|
+
[1m[36m (1.4ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL) [0m
|
2
|
+
[1m[35m (0.1ms)[0m select sqlite_version(*)
|
3
|
+
[1m[36m (1.2ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
4
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
5
|
+
Migrating to CreatePointlessFeedbackMessages (20130501182659)
|
6
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
7
|
+
DEPRECATION WARNING: `#timestamp` was called without specifying an option for `null`. In Rails 5, this behavior will change to `null: false`. You should manually specify `null: true` to prevent the behavior of your existing migrations from changing. (called from block in change at /Users/noahover/projects/pointless-feedback/db/migrate/20130501182659_create_pointless_feedback_messages.rb:9)
|
8
|
+
[1m[35m (0.5ms)[0m CREATE TABLE "pointless_feedback_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email_address" varchar, "topic" varchar, "description" text, "created_at" datetime, "updated_at" datetime)
|
9
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20130501182659"]]
|
10
|
+
[1m[35m (1.1ms)[0m commit transaction
|
11
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
12
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
13
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
14
|
+
[1m[36m (1.5ms)[0m [1mCREATE TABLE "pointless_feedback_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email_address" varchar, "topic" varchar, "description" text, "created_at" datetime, "updated_at" datetime) [0m
|
15
|
+
[1m[35m (1.4ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
16
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
17
|
+
[1m[35m (1.4ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
18
|
+
[1m[36m (0.1ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
19
|
+
[1m[35m (1.1ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20130501182659')
|
20
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
21
|
+
Migrating to AddUrlToPointlessFeedbackMessages (20220518205500)
|
22
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
23
|
+
Migrating to AddUrlToPointlessFeedbackMessages (20220518205500)
|
24
|
+
[1m[35m (0.0ms)[0m begin transaction
|
25
|
+
[1m[36m (0.5ms)[0m [1mALTER TABLE "pointless_feedback_messages" ADD "url" varchar[0m
|
26
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20220518205500"]]
|
27
|
+
[1m[36m (1.1ms)[0m [1mcommit transaction[0m
|
28
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
29
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.8ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
30
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
31
|
+
[1m[36m (1.2ms)[0m [1mCREATE TABLE "pointless_feedback_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email_address" varchar, "topic" varchar, "description" text, "created_at" datetime, "updated_at" datetime, "url" varchar) [0m
|
32
|
+
[1m[35m (1.2ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
33
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
34
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
35
|
+
[1m[36m (0.1ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
36
|
+
[1m[35m (1.0ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20220518205500')
|
37
|
+
[1m[36m (1.0ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20130501182659')[0m
|