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.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +9 -0
  3. data/app/controllers/pointless_feedback/messages_controller.rb +2 -1
  4. data/app/models/pointless_feedback/message.rb +17 -2
  5. data/app/views/pointless_feedback/feedback_mailer/feedback.html.erb +3 -0
  6. data/app/views/pointless_feedback/messages/new.html.erb +7 -0
  7. data/db/migrate/20220518205500_add_url_to_pointless_feedback_messages.rb +5 -0
  8. data/lib/pointless_feedback/version.rb +1 -1
  9. data/lib/pointless_feedback.rb +9 -0
  10. data/test/dummy/db/development.sqlite3 +0 -0
  11. data/test/dummy/db/schema.rb +3 -2
  12. data/test/dummy/db/test.sqlite3 +0 -0
  13. data/test/dummy/log/development.log +37 -0
  14. data/test/dummy/log/test.log +2463 -0
  15. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-San3EpdqmXucKjWKzj9Y4ohakTwPve802nHvuwO7Jo.cache +1 -0
  16. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-TbbWWLFMt3DZ-5B-vJndj1TPRC1zyxAx9oZII0qDIs.cache +2 -0
  17. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-pidKv4sRS1AHIdUq8SdhCbK7RBLxqZOj2J2IrQ2MNc.cache +1 -0
  18. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0VTf0cLtjXR4AmORRQFKGgColA8oNkthmlSu3--4vkA.cache +0 -0
  19. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2LTXJO_QqTJ-5H5vls5NuO33l2HnQEPCKyys1rJ9CHU.cache +1 -0
  20. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/38mZ9NIe5KF1MIDDVKe1TEFBcbukU8SM-tJue0yS3wk.cache +0 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6FZ81vWyUKy_DcxXDyZXdmGk9uRdL45m8mIRYeAAki0.cache +2 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/887XcE3QtqTB1awIHVQ-wZbPREASak6jnAIv5c8YkWs.cache +0 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8UZRZEdnJXQI7pEZv5web_6NYGb4tsqrjexyklH9diw.cache +0 -0
  24. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AZJGtFTJnm8JYaSaOYw5ksyiBB2wnq7xUR03pySV74s.cache +1 -0
  25. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BrYu8MASRWPjOHXf27JbA7JxBQut8DGQqvNrSSbXcRo.cache +2 -0
  26. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EWWsa5wkShiSKZ2PTmerV3jNjniPCSr6VKY8-AeWlDA.cache +2 -0
  27. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IOGWMsC0BM_CMkmkUN8bS1rbgafmhkAC8dcxottrV4Y.cache +0 -0
  28. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KKSQk2Nb-fK9dAUIu54bCqJmsIl8CfyyMiL2kI6RhZA.cache +1 -0
  29. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LKQqIm9BPozk5o1llvYa7OYd_UP5yTwGvgR42mgrcgg.cache +1 -0
  30. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QrWJdwZgo4HAZ_7Vuhk9kz53541WB0e2f_EZd51klNs.cache +0 -0
  31. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UyxPIgqnOJ95iAcVy9cpZEBquCjaDqLAo-ZLVmMQTtY.cache +1 -0
  32. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZbStkrcw5La9IsJfkcHZtBR6GXZIYYsZEkeoiAejt14.cache +1 -0
  33. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_F3f3F0jM19jFISuXW_iDifAYddNggPVDu0nZsAQ1qs.cache +0 -0
  34. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cfiN2OwI0tIVEMcsMPNe3Ne9SI-eG5gK9SUCClSF5PU.cache +3 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ixs_LE4mzdmsCUhekBJ0_i4P33LTFSIfqISpj_BRXQM.cache +2 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lUTpNNW813UzMkR7C2NJ5W6EhyzD2WMmeLp94WjnhLY.cache +1 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rDNrWZd1_Nv7apS-pCv6ymh9c9MxOx_jBYxb0ecEbJM.cache +1 -0
  38. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uFVbUDnZucyvZeWah0qrbvBAmACAym8OCVUhBU80FV8.cache +0 -0
  39. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xmAOdsDeC2k2YPPp5IBPPyzY4uZgOtYDMWM4RzxKGuI.cache +1 -0
  40. data/test/factories/messages.rb +1 -0
  41. data/test/functional/pointless_feedback/feedback_mailer_test.rb +12 -0
  42. data/test/integration/pointless_feedback/feedback_submission_test.rb +23 -0
  43. data/test/tmp/config/initializers/pointless_feedback.rb +37 -0
  44. data/test/unit/pointless_feedback/message_test.rb +11 -0
  45. metadata +66 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: d53eed87ef989df133f64d5f4fa0900eb0d6aee928d3dffcfdafbf68eb053d11
4
- data.tar.gz: a02e3a8589e71aaeff63f3c3de7fc43e91517735fb5e56593d63f92a08df8fb2
2
+ SHA1:
3
+ metadata.gz: 7ec9ec8e911135c9097ba31c372f50865a753375
4
+ data.tar.gz: 2b1bc459727d4a9200b16d10da89a7322f3cb7fe
5
5
  SHA512:
6
- metadata.gz: fd9f9db0beb9fc3dc24b43aba150c476aaf9aff9a94994da1df9fe63e6d08ebad7a59cc100b9fbeac15b80f62028e61b2725d631ca9f114ffd33dbb5d753e4bc
7
- data.tar.gz: b055d4ceaebbe4b094629ca0c7451cc8dcaee96b3cc904ba129a76ab1b4941d3390ea656f4f1e5d49903f5d0d3ac8f8a857fb1ca025dd462dbb827a52b824991
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
 
@@ -29,7 +29,8 @@ module PointlessFeedback
29
29
  :email_address,
30
30
  :name,
31
31
  :topic,
32
- :contact_info
32
+ :contact_info,
33
+ :url
33
34
  ])
34
35
  end
35
36
 
@@ -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 => :honeypot_filled_in?
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 %>
@@ -0,0 +1,5 @@
1
+ class AddUrlToPointlessFeedbackMessages < ActiveRecord::Migration
2
+ def change
3
+ add_column :pointless_feedback_messages, :url, :string
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module PointlessFeedback
2
- VERSION = "4.1.2"
2
+ VERSION = "4.1.5"
3
3
  end
@@ -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
@@ -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: 20130501182659) do
14
+ ActiveRecord::Schema.define(version: 20220518205500) do
15
15
 
16
- create_table "pointless_feedback_messages", force: true do |t|
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
+  (1.4ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
2
+  (0.1ms) select sqlite_version(*)
3
+  (1.2ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
4
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
5
+ Migrating to CreatePointlessFeedbackMessages (20130501182659)
6
+  (0.1ms) begin transaction
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
+  (0.5ms) 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
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20130501182659"]]
10
+  (1.1ms) commit transaction
11
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
12
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
13
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
14
+  (1.5ms) 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) 
15
+  (1.4ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
16
+  (0.1ms) select sqlite_version(*)
17
+  (1.4ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
18
+  (0.1ms) SELECT version FROM "schema_migrations"
19
+  (1.1ms) INSERT INTO "schema_migrations" (version) VALUES ('20130501182659')
20
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
21
+ Migrating to AddUrlToPointlessFeedbackMessages (20220518205500)
22
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
23
+ Migrating to AddUrlToPointlessFeedbackMessages (20220518205500)
24
+  (0.0ms) begin transaction
25
+  (0.5ms) ALTER TABLE "pointless_feedback_messages" ADD "url" varchar
26
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20220518205500"]]
27
+  (1.1ms) commit transaction
28
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
29
+ ActiveRecord::SchemaMigration Load (0.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
30
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
31
+  (1.2ms) 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, "url" varchar) 
32
+  (1.2ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
33
+  (0.1ms) select sqlite_version(*)
34
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
35
+  (0.1ms) SELECT version FROM "schema_migrations"
36
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20220518205500')
37
+  (1.0ms) INSERT INTO "schema_migrations" (version) VALUES ('20130501182659')