pointless_feedback 4.1.2 → 4.1.5

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.
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')