commontator 5.0.0 → 5.1.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.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -1
  3. data/app/assets/javascripts/commontator/application.js~ +3 -0
  4. data/app/assets/javascripts/commontator/mentions.js~ +31 -0
  5. data/app/assets/stylesheets/commontator/application.css~ +14 -0
  6. data/app/assets/stylesheets/commontator/threads.css~ +71 -0
  7. data/app/controllers/commontator/comments_controller.rb~ +160 -0
  8. data/app/controllers/commontator/threads_controller.rb~ +75 -0
  9. data/app/mailers/commontator/subscriptions_mailer.rb~ +65 -0
  10. data/app/models/commontator/comment.rb~ +124 -0
  11. data/app/models/commontator/subscription.rb~ +23 -0
  12. data/app/views/commontator/shared/_thread.html.erb~ +21 -0
  13. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb~ +10 -0
  14. data/app/views/commontator/threads/_hide_show.js.erb~ +21 -0
  15. data/app/views/commontator/threads/_hide_show_links.js.erb~ +17 -0
  16. data/app/views/commontator/threads/_show.html.erb~ +118 -0
  17. data/app/views/commontator/threads/_show.js.erb~ +18 -0
  18. data/config/initializers/commontator.rb~ +290 -0
  19. data/config/locales/en.yml~ +101 -0
  20. data/config/locales/ru.yml~ +79 -0
  21. data/config/locales/zh.yml~ +79 -0
  22. data/config/routes.rb~ +25 -0
  23. data/db/migrate/0_install_commontator.rb~ +52 -0
  24. data/db/migrate/1_add_parent_comment_id_to_commontator_comments.rb~ +9 -0
  25. data/lib/commontator.rb~ +145 -0
  26. data/lib/commontator/acts_as_commontable.rb +3 -1
  27. data/lib/commontator/shared_helper.rb~ +26 -0
  28. data/lib/commontator/version.rb +1 -1
  29. data/lib/commontator/version.rb~ +3 -0
  30. data/spec/controllers/commontator/comments_controller_spec.rb~ +612 -0
  31. data/spec/controllers/commontator/subscriptions_controller_spec.rb~ +101 -0
  32. data/spec/controllers/commontator/threads_controller_spec.rb~ +218 -0
  33. data/spec/dummy/README.md~ +3 -0
  34. data/spec/dummy/Rakefile~ +6 -0
  35. data/spec/dummy/app/assets/javascripts/application.js~ +16 -0
  36. data/spec/dummy/app/assets/stylesheets/application.css~ +14 -0
  37. data/spec/dummy/app/controllers/application_controller.rb~ +4 -0
  38. data/spec/dummy/app/controllers/dummy_models_controller.rb~ +23 -0
  39. data/spec/dummy/app/helpers/application_helper.rb~ +15 -0
  40. data/spec/dummy/app/models/dummy_dependent_model.rb +4 -0
  41. data/spec/dummy/app/models/dummy_model.rb~ +3 -0
  42. data/spec/dummy/app/models/dummy_user.rb~ +13 -0
  43. data/spec/dummy/app/views/dummy_models/index.html.erb~ +6 -0
  44. data/spec/dummy/app/views/dummy_models/show.html.erb~ +2 -0
  45. data/spec/dummy/app/views/layouts/application.html.erb~ +14 -0
  46. data/spec/dummy/config.ru~ +4 -0
  47. data/spec/dummy/config/application.rb~ +26 -0
  48. data/spec/dummy/config/boot.rb~ +5 -0
  49. data/spec/dummy/config/database.yml~ +25 -0
  50. data/spec/dummy/config/environment.rb~ +8 -0
  51. data/spec/dummy/config/environments/development.rb~ +31 -0
  52. data/spec/dummy/config/environments/production.rb~ +82 -0
  53. data/spec/dummy/config/environments/test.rb~ +40 -0
  54. data/spec/dummy/config/initializers/backtrace_silencers.rb~ +7 -0
  55. data/spec/dummy/config/initializers/commontator.rb~ +21 -0
  56. data/spec/dummy/config/initializers/filter_parameter_logging.rb~ +4 -0
  57. data/spec/dummy/config/initializers/inflections.rb~ +16 -0
  58. data/spec/dummy/config/initializers/mime_types.rb~ +5 -0
  59. data/spec/dummy/config/initializers/secret_token.rb~ +12 -0
  60. data/spec/dummy/config/initializers/session_store.rb~ +3 -0
  61. data/spec/dummy/config/initializers/wrap_parameters.rb~ +14 -0
  62. data/spec/dummy/config/routes.rb~ +10 -0
  63. data/spec/dummy/db/development.sqlite3 +0 -0
  64. data/spec/dummy/db/migrate/1_create_dummy_models.rb~ +7 -0
  65. data/spec/dummy/db/migrate/2_create_dummy_users.rb~ +7 -0
  66. data/spec/dummy/db/migrate/3_acts_as_votable_migration.rb~ +27 -0
  67. data/spec/dummy/db/migrate/4_create_dummy_dependent_models.rb +7 -0
  68. data/spec/dummy/db/schema.rb +6 -1
  69. data/spec/dummy/db/test.sqlite3 +0 -0
  70. data/spec/dummy/lib/controllers.rb~ +10 -0
  71. data/spec/dummy/log/development.log +6471 -191
  72. data/spec/dummy/log/test.log +121221 -31445
  73. data/spec/dummy/public/404.html~ +26 -0
  74. data/spec/dummy/public/422.html~ +26 -0
  75. data/spec/dummy/public/500.html~ +25 -0
  76. data/spec/dummy/script/rails~ +6 -0
  77. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/-RolHYhJdGiLoPkoWZXQdI9AIWUjMMCa2yFJezCE_Bo.cache +2 -0
  78. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/-STzK7UuGeY3gSvnmTELWLvtRMKpmSAQCEw4ao3b1r8.cache +1 -0
  79. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/3NH8nN7uktAXgA3NqaqXTXDVic3BxBvqCxoLpGGbib4.cache +0 -0
  80. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/4_iT7KM6P2IT75Rssrk9p4crTBwM8DQWR41gmsxczL0.cache +0 -0
  81. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/58TLCXvf5bFFYY-mIUXrQNOVWlGsq7qPAoSX2OIIB8Y.cache +0 -0
  82. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/6OQdyrATvNatvWu8Mp1qbuvRx-HLmzCZ5XBGYca-rZU.cache +0 -0
  83. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/6UKCUV-ZLaWCoPMfMB6a2W0RCFPQzPJ6Mz-y67sH7zk.cache +2 -0
  84. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/6wKNjFdNd4OHjIpLC0nq1kBWcbYg1aEYrp7ZhWoJlvY.cache +1 -0
  85. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/7Xxb5iYP5elo40JRlhNQB1gLbv3ueELK2rTinYt5xdc.cache +1 -0
  86. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/7twIKlS6VYCyLlwhsQg2vu4wLSUJsT2REHR4DjZf1oE.cache +2 -0
  87. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/87m-4EcbQnkbo2HYkQp4V9I2U3AYQO1mPeReieduolA.cache +1 -0
  88. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/8B331vt8qC4iXTcVzkx3j-ET8i1oaQskj5LyqGq8mPQ.cache +0 -0
  89. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/8KWvIOgvo7BVJYtdTpFuiSQQFFwZhLWYtwacZv52y48.cache +0 -0
  90. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/9yQa5M2ObK2-qDu231zMoarjVbhKUUg-ND3r2iXqB_Q.cache +0 -0
  91. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/A-ffuUI2juZT6qFpTUwUR1P8OPWcyFFN26WSUZe60Ko.cache +1 -0
  92. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/BbO4diS6uacx69Hn_bCabYlXEbWWdjHShRlfzlWSOMI.cache +0 -0
  93. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/CXhqxaQQAQ8b0Y8y0jTQyiqsZ6Oe4fZn0YiacpJ9IoI.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/E1zaNOh68xzPxdtdOwRtOaMCoKivN2dxVwCP65WEi5I.cache +2 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/EmPkV3H8p2Snv9WyPjWran_kOMQ0MqQ1a9CVdGDd8l4.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Hc12Nxe7cw2e0u2pzNsAe8D3ncQpcqLuI2NVL7aAXgw.cache +1 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/HdWuQr9W2mZvggsAxVjDgLYUNfg3rbI-T8KhaDIsvQk.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/I7lsrHTKpbfLWqIqdDIx2RN_12yFL2PyLRyYsMxg1IU.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/JOCzfBjMjX3D5BUUGh5lJ7fjzMuJrHLxAginRA2_hZQ.cache +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/JusxTSXt06IqBm9jeCMM2nTmM3Wvbl3i3L1IwEvW5YA.cache +2 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/KAY1_IaTONtGr0KK8ihOdoA-RDXybqBMNSZLIDRHx68.cache +1 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/KBHIDNfa4ryw9LAkYqK8GgPWne7HkX6mNYgrJajGm94.cache +1 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/L_lv02y00MmIFiFhg5c9zhl7CDHLSahehzLyi_mRZeY.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MOT2X4iikR8v89A4N1bxDTeS1-xV8c9036TNFXmwXCM.cache +1 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MiX2Z4Vbha1riozZWw1U3_PGttRiZ1iQ_o4wSZJnKCs.cache +3 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MntKfwol0ud4LuvrX3MVPthTlfNlJZRYbQXpQBxhRrs.cache +1 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/MrqmgPGNYJV1capJKIKJOVEQ4NiO-Z_2YhpjNteJ8B8.cache +2 -0
  108. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/NVMnAwylzGp5bjl_o9dwMAQxVAPDzc4ygddNQSD1fiw.cache +0 -0
  109. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/O2sKqGxNuCYhjzuEZVC9hX_FeemOfRn_1-CCuHBQYyg.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Qy3TykLFmAt5jhSluMTaZaefcA5c_vfBRhQ7tin-gsk.cache +0 -0
  111. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/R3DpUgZ_hja1dQTIzumiP9AD_r8mlOaqv0U9QqnGQqo.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/RF07mgb06A30OcDWtCaDlM5tEc1yp0uAsk986Gqs5w8.cache +1 -0
  113. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/S-6Iq5YOEpVnd_vQ0RSSfrmyIwB1dk0op35alFgJ9xA.cache +2 -0
  114. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/TKV8dUTo88gdFY-z2I7Xa5vDC1Z3LY6Paa18385MJsI.cache +1 -0
  115. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/UI4zPmWfZA2d_5ZZIXqK9KmkjOKSDg6JoM7qcOIxm0Q.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/UP29vrIQbCkfghZGSCFxpW5gjlsgCxlVrncjjopvRqM.cache +2 -0
  117. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/UoU16f4V7haEXM5GY5j4QFuNMP7PJZaAMEvVNNtNLBA.cache +1 -0
  118. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/VqPqYNG07yqcjbd7FA05Mu-jr5hzsZPaHFf8X0FFbXk.cache +2 -0
  119. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/WkN1QFvcuzXSsyNmfaK02ojXPk-8zmdEegzNPfdAEL4.cache +0 -0
  120. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/WkQX7Wiz41OKx2aGF7uffOmS04hIVZeGCondBAvwum8.cache +2 -0
  121. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XMeYF1vwAg53eVjXVkw_IKQH2W3-9tWvtuCdqUCbPBM.cache +2 -0
  122. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/XX0Z7OM0xZKfQaAvHARpyeQNZCstNyu9MlsnwThSkg8.cache +1 -0
  123. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Y-pGNFTA6bAKxSvqZvmMVs3b4Els1aByxZVFxtJR71c.cache +1 -0
  124. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Y3p3m5V5NOm7yq56apKmF5KZUUsTfnhT_SG3fqbEJgo.cache +1 -0
  125. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/YLZuRWklL6q-csC-7A7CiOTTTYEQcA9PCdWEOm9MpNU.cache +1 -0
  126. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Yo7V5YXukEBm6z37l-TIRCJx3HZExEUBu3MUMhAzkMU.cache +1 -0
  127. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/bK6QttR8pGmMAMJO0avCBLwH0za8_bAC-yWqkU3Yj24.cache +1 -0
  128. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/cLncjrqpQXzsVBp7K0W7iG1STLrnzfGpbJXxNE7aIUk.cache +2 -0
  129. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/dBcAd64EZFdhHZNXKGXPIR7EtPGf03bzqkci2W12T8g.cache +2 -0
  130. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/d_bbPiareJHKkzFZFCl3pcwfQOFzsB1KHn4A2xxhR20.cache +1 -0
  131. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/eaHZBuJRcawVlkGZVyyRr5_4xYKVOXbCqnTcmaNXzL0.cache +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/gWnmfJty3jBn53qsJfOXKrWv4e8i3Dp80wVel-f1L1E.cache +1 -0
  133. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/gumo32Bd3W_q7MYEt9JIZEiQdHF93tLSsGfmXIm2MqU.cache +1 -0
  134. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/jKTlG9KP0iaCGHwg8kQ1amz9SHJ1OAWeCRRn9wc5w7c.cache +1 -0
  135. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/kPJfTiWbmX-q6i2rjM9MAMdEf2silSihU0_lxlTGVA8.cache +1 -0
  136. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/lrt1SWPj4qWUZUMH9xg3n9KLYUqJZxRn-XI-NTU6oTI.cache +1 -0
  137. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/mcCP5u08nlCL6TgWdzzrem9uE2rbsbG3KyIXxvWvlJE.cache +3 -0
  138. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/pC4exGjkQLXXPE0O9hjX_2AJ4DASTFeB6RGjXagxEac.cache +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/pIRh_Lq-ZhYC_XdRcqIsCtUkTnwVET0Wrrpw1EltHd8.cache +2 -0
  140. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/qfXc71sDbi1cE9f327D6ABPURPU6lLguGiJqH2fqM0w.cache +1 -0
  141. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/rBcrkzXcMaiCjwvWl8tO0eARzKZS69I3i-lfsTAFzcc.cache +1 -0
  142. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/sfl8l1_1AGn-4llkmb91Q0wHJ-A-x5gAGkIUWe1zLqo.cache +1 -0
  143. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/tFQc0MOeWpJ7t7cNP2GOzo7o9Z6YBgLEpdS0tGLvUSw.cache +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/tb9v5OemP-ADEwYnETLLi1r088kZm_TMb9ZVeTV5JxI.cache +1 -0
  145. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/uKmWfbgaNZ8FTsVK1VNuUv15rmtTHzSdJ7TQRGr0Rck.cache +2 -0
  146. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/ul0QEoovfr_12YOpyWx8BJs8fvz5Ay3AZG8-lsLr-a4.cache +1 -0
  147. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/vY6eUgBIXKHqfU2ZroS-GugKPg5_fo2QBs-vS5gBN2o.cache +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/vrRc4DPAbHIJHJqsXfBYdyKUPFv8f8YYKJUrk-1zdVw.cache +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/wTET4PQq7wlxzrgvNivPJad-CACkoQS4BNxAP0FQaR4.cache +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/wcvE87iLx7cDjMDs_Yu1jKYvep-VyLEyj1eXL79KLp4.cache +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/xQeZ92qbm2t9FaRck5xUakvNP-MJ2cs0RroN-fm0Tf8.cache +1 -0
  152. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/xQz9WPf67Mu5uV4rNuOfU-y6_KWSlWcnTWrTvQPonKM.cache +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/xhYTRUOS8cIvyRp2Jn6FKnXlGOSsIM2z3HAGOJoJs7w.cache +1 -0
  154. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/yLxMFI0ARh2OKSOQLF2xEfM7sbst2vUbOBXoOuI6iTE.cache +1 -0
  155. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/ynnYZxuxqerlFUytw54dl_CwP94g0U4HmGjyILWnhfQ.cache +1 -0
  156. data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/zCivVPbSRpKF_X-P5OJeld32YhymG-bkjQwzqe2o6zg.cache +2 -0
  157. data/spec/dummy/tmp/cache/assets/test/sprockets/02d4b791eb831cf2057bf4703a1218d1 +0 -0
  158. data/spec/dummy/tmp/cache/assets/test/sprockets/0f196a1a50363b0a076ec6e1ee5417f6 +0 -0
  159. data/spec/dummy/tmp/cache/assets/test/sprockets/a3fb9025f90ff05a6fd4afc7ded2692c +0 -0
  160. data/spec/dummy/tmp/cache/assets/test/sprockets/a41c8be5379abec3c0d0d98e2f0d5609 +0 -0
  161. data/spec/dummy/tmp/cache/assets/test/sprockets/c69ee3cc5796188d873574179290a6ef +0 -0
  162. data/spec/dummy/tmp/cache/assets/test/sprockets/e1f674c11941d62aac1764ef3a7134e4 +0 -0
  163. data/spec/dummy/tmp/cache/assets/test/sprockets/e85565206c3e5fdf9dfeb367c85557b1 +0 -0
  164. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/-gXoYfEJ-e9QQUbNRpNa-pwMCnTc7Eqvkq6Bosde6W8.cache +0 -0
  165. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/6iNAIrMKxHltOChiHQQf9VNsLQuj2rVKz6oqWnK7aSM.cache +1 -0
  166. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/E1zaNOh68xzPxdtdOwRtOaMCoKivN2dxVwCP65WEi5I.cache +2 -0
  167. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/HsNbq1o4RbrEWNL4zXVqFfUVnXXLK_y0F0BvddDre6g.cache +0 -0
  168. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/JusxTSXt06IqBm9jeCMM2nTmM3Wvbl3i3L1IwEvW5YA.cache +2 -0
  169. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/L5DjABL_iOtoxSOLn3X7_YlxECU5EhnrVIKxJFAysgc.cache +1 -0
  170. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/PNc9TJUmRdGTSwgZvGlxKaIiJIkyoWtTPiGGWBqpHAE.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/QkgTHa6nNs7XP6RPoV3yBbWWV-uo1u2-qxLuvLCFe_0.cache +0 -0
  172. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/S-6Iq5YOEpVnd_vQ0RSSfrmyIwB1dk0op35alFgJ9xA.cache +2 -0
  173. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/Vuc93A9yywiFxc9CAdxrzdsAQw4jxiCa6JRzRjNxOYs.cache +1 -0
  174. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/YAPBll4U0cgs6cz-WyMRKoakK_gVOOcl9n0CvGyxPjY.cache +1 -0
  175. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/bDNeZfPBQaef5z0YajZc4jFE54nNy9gc06mPNKvvPFk.cache +1 -0
  176. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/c5Wa2loowFYFRBaMoTn1IWYXo4BGMbEy7NIi0vbvfRU.cache +1 -0
  177. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/dkn8MYu2ve_AJW6u0jjTlKrj1KBRqorOHQR0Obx2elU.cache +0 -0
  178. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/fZuAzt_-48u9C7ZXmsPgTraGDYtNC9B9zN-9-EnxJG4.cache +1 -0
  179. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/gumo32Bd3W_q7MYEt9JIZEiQdHF93tLSsGfmXIm2MqU.cache +1 -0
  180. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/ige85jXyj8X7XYr7HpA0gSTThqfPUm71HjhSJXtTbUY.cache +1 -0
  181. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kuYeE5bV6FdXmfB_o-xhflhSDWoQhYYaaupAXODZ9dQ.cache +1 -0
  182. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qhZbbNIRUaAOtGano94zLHjeBKUhKr4qbh2tTCi0Bnk.cache +2 -0
  183. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/wJJbzdHJHP6tchng3HhfTwmjc5LursgX8yZkAjpO5UA.cache +0 -0
  184. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/xNL1WW-qU3EvV2iTSW6F4hAFRBsCYmFKJhLjgCZkOV8.cache +2 -0
  185. data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/ytHkF2DwUE6oaiLyrK6tL-0INpeNhjN6ctD7J0LNY6I.cache +2 -0
  186. data/spec/helpers/commontator/application_helper_spec.rb~ +9 -0
  187. data/spec/lib/commontator/acts_as_commontable_spec.rb~ +25 -0
  188. data/spec/lib/commontator/acts_as_commontator_spec.rb~ +52 -0
  189. data/spec/lib/commontator/commontable_config_spec.rb~ +29 -0
  190. data/spec/lib/commontator/commontator_config_spec.rb~ +29 -0
  191. data/spec/lib/commontator/controller_includes_spec.rb~ +18 -0
  192. data/spec/lib/commontator/controllers_spec.rb~ +18 -0
  193. data/spec/lib/commontator/shared_helper_spec.rb~ +22 -0
  194. data/spec/lib/commontator_spec.rb~ +26 -0
  195. data/spec/mailers/commontator/subscriptions_mailer_spec.rb~ +30 -0
  196. data/spec/models/commontator/comment_spec.rb~ +82 -0
  197. data/spec/models/commontator/subscription_spec.rb~ +38 -0
  198. data/spec/models/commontator/thread_spec.rb +37 -0
  199. data/spec/models/commontator/thread_spec.rb~ +122 -0
  200. data/spec/rails_helper.rb~ +74 -0
  201. data/spec/spec_helper.rb~ +93 -0
  202. data/vendor/assets/javascripts/mentionsInput/index.js~ +3 -0
  203. metadata +409 -51
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fcd57c56f76291406b85f24de5a0ad2235c350ca
4
- data.tar.gz: 8af611ffdae4c578f9a784b39f10a1d4a9860503
3
+ metadata.gz: acf6d8175a90bff17e463df97782fd7bf93b8565
4
+ data.tar.gz: 7320feebb54d1995b15e2d5627ff2845eac42756
5
5
  SHA512:
6
- metadata.gz: 328b21764347f350e0bbef130ab82bf5d26bb5866d8e864261e6080fc9a1052368f505d1a5ff2fbd947c5bc9fe123fe95fd7f6d321e9809ad199f21e7d898681
7
- data.tar.gz: 9db4ba13a3576b3629239496012bdf92c096aa0f5f6377919a249026da2097ceb9519ac3a55c25990c0539482fc40c0a903ee6d51e3d3a8f47a8e0bd9e9b4db5
6
+ metadata.gz: 2ce7dec91a95320fa1ee613a8a62021eba0d88501d7a740ee069a0ce886346a734bd1903bd332b84cc71ccbacf8c408fd8adf67d26d9ae7b24bf85b231b36fba
7
+ data.tar.gz: 8829fd206d56d284d9ea23d9fb781602de7f136479c4b2828ae04f4211bf8322954065193fe247b0ea3ee0a64458c12fae9b8c58482c5e073121e70b1aad203f
data/README.md CHANGED
@@ -19,7 +19,7 @@ There are 4 steps you must follow to install commontator:
19
19
  Add this line to your application's Gemfile:
20
20
 
21
21
  ```rb
22
- gem 'commontator', '~> 4.11.1'
22
+ gem 'commontator', '~> 5.1.0'
23
23
  ```
24
24
 
25
25
  And then execute:
@@ -92,6 +92,15 @@ Follow the steps below to add commontator to your models and views:
92
92
  ```rb
93
93
  acts_as_commontable
94
94
  ```
95
+ if you want the thread and all its comments removed when your commontable model is destroyed pass
96
+ :destroy as the :dependent option to`acts_as_commontable`:
97
+
98
+ ```rb
99
+ acts_as_commontable dependent: :destroy
100
+ ```
101
+
102
+ instead of `:destroy` you may use any other supported `:dependent` option from rails `has_one`
103
+ association.
95
104
 
96
105
  2. Views
97
106
 
@@ -0,0 +1,3 @@
1
+ //= require underscore/underscore
2
+ //= require jquery.mentionsInput
3
+ //= require commontator/mentions
@@ -0,0 +1,31 @@
1
+ window.Commontator = {};
2
+ Commontator._ = window._.noConflict();
3
+ Commontator.initMentions = function() {
4
+ $('.comment_form_field textarea:not(.mentions-added)').each(function(_index, textarea){
5
+ $textarea = $(textarea);
6
+ $form = $textarea.parents('form');
7
+ threadId = $textarea.parents('.thread').attr('id').match(/[\d]+/)[0];
8
+ $textarea.addClass('mentions-added');
9
+ currentValue = $textarea.val();
10
+ $textarea.mentionsInput({
11
+ elastic: false,
12
+ showAvatars: false,
13
+ allowRepeat: true,
14
+ onDataRequest:function (mode, query, callback) {
15
+ $.getJSON('commontator/threads/'+threadId+'/mentions.json', {q: query}, function(responseData) {
16
+ callback.call(this, responseData.mentions);
17
+ });
18
+ }
19
+ });
20
+ $textarea.val(currentValue);
21
+ $textarea.on('focusout', function(){
22
+ $textarea.mentionsInput('getMentions', function(mentions){
23
+ $form.find('input[name="mentioned_ids[]"]').remove();
24
+ $(mentions).each(function(_index, mention){
25
+ $input = $('<input>', { type: 'hidden', name: 'mentioned_ids[]', value: mention.id });
26
+ $form.append($input)
27
+ });
28
+ });
29
+ });
30
+ });
31
+ };
@@ -0,0 +1,14 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require_self
12
+ *= require mentionsInput/jquery.mentionsInput
13
+ *= require_tree .
14
+ */
@@ -0,0 +1,71 @@
1
+ .thread {
2
+ display: block !important;
3
+ }
4
+
5
+ .thread .commontator_hidden {
6
+ display: none;
7
+ }
8
+
9
+ .thread_actions {
10
+ float: right;
11
+ }
12
+
13
+ .thread_header {
14
+ font-size: 16px;
15
+ font-weight: bold;
16
+ font-style: normal;
17
+ margin-top: 5px;
18
+ margin-bottom: 5px;
19
+ display: block;
20
+ }
21
+
22
+ /* Modified from:
23
+ http://www.strangerstudios.com/sandbox/pagination/diggstyle.php */
24
+ .thread_page_entries_info {
25
+ margin-top: 10px;
26
+ margin-bottom: 10px;
27
+ }
28
+
29
+ .thread_will_paginate {
30
+ margin-top: 10px;
31
+ margin-bottom: 10px;
32
+ }
33
+
34
+ .thread_pagination a {
35
+ padding: 2px 5px 2px 5px;
36
+ margin-right: 4px;
37
+ border: 1px solid #999;
38
+
39
+ text-decoration: none;
40
+ color: #666;
41
+ }
42
+
43
+ .thread_pagination a:hover,
44
+ .thread_pagination a:active {
45
+ border: 1px solid #555;
46
+
47
+ color: #000;
48
+ }
49
+
50
+ .thread_pagination em {
51
+ padding: 2px 5px 2px 5px;
52
+ margin-right: 4px;
53
+ border: 1px solid #555;
54
+
55
+ font-weight: bold;
56
+ background-color: #555;
57
+ color: #FFF;
58
+ }
59
+
60
+ .thread_pagination span {
61
+ padding: 2px 5px 2px 5px;
62
+ margin-right: 4px;
63
+ border: 1px solid #EEE;
64
+
65
+ color: #DDD;
66
+ }
67
+
68
+ .thread .mentions-input-box .mentions {
69
+ left: -2px !important;
70
+ top: -2px !important;
71
+ }
@@ -0,0 +1,160 @@
1
+ module Commontator
2
+ class CommentsController < Commontator::ApplicationController
3
+ before_filter :set_thread, :only => [:new, :create]
4
+ before_filter :set_comment_and_thread, :except => [:new, :create]
5
+
6
+ # GET /threads/1/comments/new
7
+ def new
8
+ @comment = Comment.new
9
+ @comment.thread = @thread
10
+ @comment.creator = @user
11
+ security_transgression_unless @comment.can_be_created_by?(@user)
12
+
13
+ @per_page = params[:per_page] || @thread.config.comments_per_page
14
+
15
+ respond_to do |format|
16
+ format.html { redirect_to @thread }
17
+ format.js
18
+ end
19
+
20
+ end
21
+
22
+ # POST /threads/1/comments
23
+ def create
24
+ @comment = Comment.new
25
+ @comment.thread = @thread
26
+ @comment.creator = @user
27
+ @comment.body = params[:comment].nil? ? nil : params[:comment][:body]
28
+ security_transgression_unless @comment.can_be_created_by?(@user)
29
+ subscribe_mentioned if Commontator.mentions_enabled
30
+
31
+ respond_to do |format|
32
+ if !params[:cancel].nil?
33
+ format.html { redirect_to @thread }
34
+ format.js { render :cancel }
35
+ elsif @comment.save
36
+ sub = @thread.config.thread_subscription.to_sym
37
+ @thread.subscribe(@user) if sub == :a || sub == :b
38
+ Subscription.comment_created(@comment)
39
+
40
+ @per_page = params[:per_page] || @thread.config.comments_per_page
41
+
42
+ format.html { redirect_to @thread }
43
+ format.js
44
+ else
45
+ format.html { redirect_to @thread }
46
+ format.js { render :new }
47
+ end
48
+ end
49
+ end
50
+
51
+ # GET /comments/1/edit
52
+ def edit
53
+ security_transgression_unless @comment.can_be_edited_by?(@user)
54
+
55
+ respond_to do |format|
56
+ format.html { redirect_to @thread }
57
+ format.js
58
+ end
59
+ end
60
+
61
+ # PUT /comments/1
62
+ def update
63
+ security_transgression_unless @comment.can_be_edited_by?(@user)
64
+ @comment.body = params[:comment].nil? ? nil : params[:comment][:body]
65
+ @comment.editor = @user
66
+ subscribe_mentioned if Commontator.mentions_enabled
67
+
68
+ respond_to do |format|
69
+ if !params[:cancel].nil?
70
+ format.html { redirect_to @thread }
71
+ format.js { render :cancel }
72
+ elsif @comment.save
73
+ format.html { redirect_to @thread }
74
+ format.js
75
+ else
76
+ format.html { redirect_to @thread }
77
+ format.js { render :edit }
78
+ end
79
+ end
80
+ end
81
+
82
+ # PUT /comments/1/delete
83
+ def delete
84
+ security_transgression_unless @comment.can_be_deleted_by?(@user)
85
+
86
+ @comment.errors.add(:base, t('commontator.comment.errors.already_deleted')) \
87
+ unless @comment.delete_by(@user)
88
+
89
+ respond_to do |format|
90
+ format.html { redirect_to @thread }
91
+ format.js { render :delete }
92
+ end
93
+ end
94
+
95
+ # PUT /comments/1/undelete
96
+ def undelete
97
+ security_transgression_unless @comment.can_be_deleted_by?(@user)
98
+
99
+ @comment.errors.add(:base, t('commontator.comment.errors.not_deleted')) \
100
+ unless @comment.undelete_by(@user)
101
+
102
+ respond_to do |format|
103
+ format.html { redirect_to @thread }
104
+ format.js { render :delete }
105
+ end
106
+ end
107
+
108
+ # PUT /comments/1/upvote
109
+ def upvote
110
+ security_transgression_unless @comment.can_be_voted_on_by?(@user)
111
+
112
+ @comment.upvote_from @user
113
+
114
+ respond_to do |format|
115
+ format.html { redirect_to @thread }
116
+ format.js { render :vote }
117
+ end
118
+ end
119
+
120
+ # PUT /comments/1/downvote
121
+ def downvote
122
+ security_transgression_unless @comment.can_be_voted_on_by?(@user) &&\
123
+ @comment.thread.config.comment_voting.to_sym == :ld
124
+
125
+ @comment.downvote_from @user
126
+
127
+ respond_to do |format|
128
+ format.html { redirect_to @thread }
129
+ format.js { render :vote }
130
+ end
131
+ end
132
+
133
+ # PUT /comments/1/unvote
134
+ def unvote
135
+ security_transgression_unless @comment.can_be_voted_on_by?(@user)
136
+
137
+ @comment.unvote :voter => @user
138
+
139
+ respond_to do |format|
140
+ format.html { redirect_to @thread }
141
+ format.js { render :vote }
142
+ end
143
+ end
144
+
145
+ protected
146
+
147
+ def set_comment_and_thread
148
+ @comment = Comment.find(params[:id])
149
+ @thread = @comment.thread
150
+ commontator_set_new_comment(@thread, @user)
151
+ end
152
+
153
+ def subscribe_mentioned
154
+ debugger
155
+ Commontator.commontator_mentions(@user, '').where(id: params[:mentioned_ids]).each do |user|
156
+ @thread.subscribe(user)
157
+ end
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,75 @@
1
+ module Commontator
2
+ class ThreadsController < Commontator::ApplicationController
3
+ skip_before_filter :ensure_user, :only => :show
4
+ before_filter :set_thread
5
+
6
+ # GET /threads/1
7
+ def show
8
+ commontator_thread_show(@thread.commontable)
9
+ @show_all = params[:show_all] && @thread.can_be_edited_by?(@user)
10
+
11
+ respond_to do |format|
12
+ format.html { redirect_to main_app.polymorphic_path(@thread.commontable) }
13
+ format.js
14
+ end
15
+ end
16
+
17
+ # GET /threads/1/hide
18
+ def hide
19
+ respond_to do |format|
20
+ format.js
21
+ end
22
+ end
23
+
24
+ # PUT /threads/1/close
25
+ def close
26
+ security_transgression_unless @thread.can_be_edited_by?(@user)
27
+
28
+ @thread.errors.add(:base, t('commontator.thread.errors.already_closed')) \
29
+ unless @thread.close(@user)
30
+
31
+ @show_all = true
32
+
33
+ respond_to do |format|
34
+ format.html { redirect_to @thread }
35
+ format.js { render :show }
36
+ end
37
+ end
38
+
39
+ # PUT /threads/1/reopen
40
+ def reopen
41
+ security_transgression_unless @thread.can_be_edited_by?(@user)
42
+
43
+ @thread.errors.add(:base, t('commontator.thread.errors.not_closed')) \
44
+ unless @thread.reopen
45
+
46
+ @show_all = true
47
+
48
+ respond_to do |format|
49
+ format.html { redirect_to @thread }
50
+ format.js { render :show }
51
+ end
52
+ end
53
+
54
+ # GET /threads/1/mentions.json
55
+ def mentions
56
+ security_transgression_unless @thread.can_be_read_by?(@user) && Commontator.mentions_enabled
57
+ query = params[:q].to_s
58
+
59
+ if query.size < 3
60
+ render json: { errors: ['Query string is too short (minimum 3 characters)'] },
61
+ status: :unprocessable_entity
62
+ else
63
+ render json: serialized_mentions(query)
64
+ end
65
+ end
66
+
67
+ protected
68
+
69
+ def serialized_mentions(query)
70
+ { mentions: Commontator.commontator_mentions(@user, query).map do |user|
71
+ { id: user.id, name: Commontator.commontator_name(user), type: 'user' }
72
+ end }
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,65 @@
1
+ module Commontator
2
+ class SubscriptionsMailer < ActionMailer::Base
3
+ def comment_created(comment, recipients)
4
+ setup_variables(comment, recipients)
5
+ message = mail :to => @to,
6
+ :bcc => @bcc,
7
+ :from => @from,
8
+ :subject => t('commontator.email.comment_created.subject',
9
+ :creator_name => @creator_name,
10
+ :commontable_name => @commontable_name,
11
+ :comment_url => @comment_url)
12
+
13
+ message.mailgun_recipient_variables = mailgun_recipient_variables(recipients) if uses_mailgun?
14
+ end
15
+
16
+ protected
17
+
18
+ def setup_variables(comment, recipients)
19
+ @comment = comment
20
+ @thread = @comment.thread
21
+ @creator = @comment.creator
22
+
23
+ @creator_name = Commontator.commontator_name(@creator)
24
+
25
+ @commontable_name = Commontator.commontable_name(@thread)
26
+
27
+ <<<<<<< Updated upstream
28
+ @commontable_url = Commontator.commontable_url(@comment, main_app)
29
+ =======
30
+ @comment_url = Commontator.comment_url(@comment, main_app)
31
+ >>>>>>> Stashed changes
32
+
33
+ params = Hash.new
34
+ params[:comment] = @comment
35
+ params[:thread] = @thread
36
+ params[:creator] = @creator
37
+ params[:creator_name] = @creator_name
38
+ params[:commontable_name] = @commontable_name
39
+ params[:comment_url] = @comment_url
40
+
41
+ if uses_mailgun?
42
+ @to = recipient_emails(recipients)
43
+ else
44
+ @to = t('commontator.email.undisclosed_recipients')
45
+ @bcc = recipient_emails(recipients)
46
+ end
47
+
48
+ @from = @thread.config.email_from_proc.call(@thread)
49
+ end
50
+
51
+ def recipient_emails(recipients)
52
+ recipients.collect{ |s| Commontator.commontator_email(s, self) }
53
+ end
54
+
55
+ def mailgun_recipient_variables(recipients)
56
+ recipient_emails(recipients).each_with_object({}) do |user_email, memo|
57
+ memo[user_email] = {}
58
+ end
59
+ end
60
+
61
+ def uses_mailgun?
62
+ Rails.application.config.action_mailer.delivery_method == :mailgun
63
+ end
64
+ end
65
+ end