threddedDANIEL 0.14.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 (367) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +744 -0
  4. data/app/assets/images/favicons/README.md +3 -0
  5. data/app/assets/images/favicons/amazon.png +0 -0
  6. data/app/assets/images/favicons/github.png +0 -0
  7. data/app/assets/images/favicons/google_branding/logo_calendar_128px.png +0 -0
  8. data/app/assets/images/favicons/google_branding/logo_docs_48px.png +0 -0
  9. data/app/assets/images/favicons/google_branding/logo_drive_48px.png +0 -0
  10. data/app/assets/images/favicons/google_branding/logo_forms_48px.png +0 -0
  11. data/app/assets/images/favicons/google_branding/logo_sheets_48px.png +0 -0
  12. data/app/assets/images/favicons/google_branding/logo_slides_48px.png +0 -0
  13. data/app/assets/images/favicons/stackexchange.png +0 -0
  14. data/app/assets/images/favicons/twitter.png +0 -0
  15. data/app/assets/images/favicons/wikipedia.png +0 -0
  16. data/app/assets/images/thredded/breadcrumb-chevron.svg +1 -0
  17. data/app/assets/images/thredded/follow.svg +1 -0
  18. data/app/assets/images/thredded/lock.svg +1 -0
  19. data/app/assets/images/thredded/moderation.svg +1 -0
  20. data/app/assets/images/thredded/private-messages.svg +1 -0
  21. data/app/assets/images/thredded/settings.svg +1 -0
  22. data/app/assets/images/thredded/three-dot-menu.svg +3 -0
  23. data/app/assets/images/thredded/unfollow.svg +1 -0
  24. data/app/assets/javascripts/thredded.es6 +2 -0
  25. data/app/assets/javascripts/thredded/components/currently_online.es6 +32 -0
  26. data/app/assets/javascripts/thredded/components/flash_messages.es6 +9 -0
  27. data/app/assets/javascripts/thredded/components/mention_autocompletion.es6 +40 -0
  28. data/app/assets/javascripts/thredded/components/post_form.es6 +37 -0
  29. data/app/assets/javascripts/thredded/components/preview_area.es6 +56 -0
  30. data/app/assets/javascripts/thredded/components/quote_post.es6 +49 -0
  31. data/app/assets/javascripts/thredded/components/time_stamps.es6 +25 -0
  32. data/app/assets/javascripts/thredded/components/topic_form.es6 +94 -0
  33. data/app/assets/javascripts/thredded/components/topics.es6 +46 -0
  34. data/app/assets/javascripts/thredded/components/turboforms.es6 +25 -0
  35. data/app/assets/javascripts/thredded/components/user_preferences_form.es6 +66 -0
  36. data/app/assets/javascripts/thredded/components/user_textcomplete.es6 +50 -0
  37. data/app/assets/javascripts/thredded/components/users_select.es6 +122 -0
  38. data/app/assets/javascripts/thredded/core/csrf_tokens.es6 +9 -0
  39. data/app/assets/javascripts/thredded/core/debounce.es6 +32 -0
  40. data/app/assets/javascripts/thredded/core/escape_html.es6 +7 -0
  41. data/app/assets/javascripts/thredded/core/hide_soft_keyboard.es6 +7 -0
  42. data/app/assets/javascripts/thredded/core/on_page_load.es6 +54 -0
  43. data/app/assets/javascripts/thredded/core/serialize_form.es6 +9 -0
  44. data/app/assets/javascripts/thredded/core/thredded.es6 +1 -0
  45. data/app/assets/javascripts/thredded/dependencies.js +8 -0
  46. data/app/assets/javascripts/thredded/dependencies/autosize.js +1 -0
  47. data/app/assets/javascripts/thredded/dependencies/textcomplete.js +1 -0
  48. data/app/assets/javascripts/thredded/dependencies/timeago.js +1 -0
  49. data/app/assets/javascripts/thredded/dependencies/ujs.js +1 -0
  50. data/app/assets/javascripts/thredded/thredded.es6 +2 -0
  51. data/app/assets/stylesheets/thredded.scss +3 -0
  52. data/app/assets/stylesheets/thredded/_base.scss +13 -0
  53. data/app/assets/stylesheets/thredded/_dependencies.scss +0 -0
  54. data/app/assets/stylesheets/thredded/_email.scss +51 -0
  55. data/app/assets/stylesheets/thredded/_thredded.scss +33 -0
  56. data/app/assets/stylesheets/thredded/base/_alerts.scss +44 -0
  57. data/app/assets/stylesheets/thredded/base/_buttons.scss +73 -0
  58. data/app/assets/stylesheets/thredded/base/_dropdown-menu.scss +83 -0
  59. data/app/assets/stylesheets/thredded/base/_forms.scss +84 -0
  60. data/app/assets/stylesheets/thredded/base/_grid.scss +58 -0
  61. data/app/assets/stylesheets/thredded/base/_lists.scss +31 -0
  62. data/app/assets/stylesheets/thredded/base/_nav.scss +67 -0
  63. data/app/assets/stylesheets/thredded/base/_tables.scss +17 -0
  64. data/app/assets/stylesheets/thredded/base/_typography.scss +72 -0
  65. data/app/assets/stylesheets/thredded/base/_variables.scss +141 -0
  66. data/app/assets/stylesheets/thredded/components/_alerts.scss +19 -0
  67. data/app/assets/stylesheets/thredded/components/_base.scss +25 -0
  68. data/app/assets/stylesheets/thredded/components/_currently-online.scss +54 -0
  69. data/app/assets/stylesheets/thredded/components/_empty.scss +11 -0
  70. data/app/assets/stylesheets/thredded/components/_flash-message.scss +19 -0
  71. data/app/assets/stylesheets/thredded/components/_following.scss +14 -0
  72. data/app/assets/stylesheets/thredded/components/_form-list.scss +39 -0
  73. data/app/assets/stylesheets/thredded/components/_icons.scss +3 -0
  74. data/app/assets/stylesheets/thredded/components/_main-section.scss +9 -0
  75. data/app/assets/stylesheets/thredded/components/_mention-autocomplete.scss +57 -0
  76. data/app/assets/stylesheets/thredded/components/_messageboard.scss +155 -0
  77. data/app/assets/stylesheets/thredded/components/_onebox.scss +275 -0
  78. data/app/assets/stylesheets/thredded/components/_pagination.scss +35 -0
  79. data/app/assets/stylesheets/thredded/components/_post-form.scss +27 -0
  80. data/app/assets/stylesheets/thredded/components/_post.scss +138 -0
  81. data/app/assets/stylesheets/thredded/components/_preferences.scss +19 -0
  82. data/app/assets/stylesheets/thredded/components/_preview_area.scss +11 -0
  83. data/app/assets/stylesheets/thredded/components/_topic-delete.scss +8 -0
  84. data/app/assets/stylesheets/thredded/components/_topic-header.scss +111 -0
  85. data/app/assets/stylesheets/thredded/components/_topics.scss +186 -0
  86. data/app/assets/stylesheets/thredded/layout/_main-container.scss +16 -0
  87. data/app/assets/stylesheets/thredded/layout/_main-navigation.scss +79 -0
  88. data/app/assets/stylesheets/thredded/layout/_moderation.scss +97 -0
  89. data/app/assets/stylesheets/thredded/layout/_navigation.scss +87 -0
  90. data/app/assets/stylesheets/thredded/layout/_search-navigation.scss +126 -0
  91. data/app/assets/stylesheets/thredded/layout/_user-navigation.scss +20 -0
  92. data/app/assets/stylesheets/thredded/layout/_user.scss +10 -0
  93. data/app/assets/stylesheets/thredded/utilities/_is-compact.scss +26 -0
  94. data/app/assets/stylesheets/thredded/utilities/_is-expanded.scss +16 -0
  95. data/app/commands/thredded/at_notification_extractor.rb +23 -0
  96. data/app/commands/thredded/autofollow_users.rb +62 -0
  97. data/app/commands/thredded/create_messageboard.rb +42 -0
  98. data/app/commands/thredded/mark_all_read.rb +22 -0
  99. data/app/commands/thredded/moderate_post.rb +48 -0
  100. data/app/commands/thredded/notify_following_users.rb +78 -0
  101. data/app/commands/thredded/notify_private_topic_users.rb +34 -0
  102. data/app/controllers/concerns/thredded/new_post_params.rb +21 -0
  103. data/app/controllers/concerns/thredded/new_private_post_params.rb +21 -0
  104. data/app/controllers/concerns/thredded/new_private_topic_params.rb +25 -0
  105. data/app/controllers/concerns/thredded/new_topic_params.rb +19 -0
  106. data/app/controllers/concerns/thredded/render_preview.rb +16 -0
  107. data/app/controllers/thredded/application_controller.rb +145 -0
  108. data/app/controllers/thredded/autocomplete_users_controller.rb +52 -0
  109. data/app/controllers/thredded/messageboard_groups_controller.rb +31 -0
  110. data/app/controllers/thredded/messageboards_controller.rb +53 -0
  111. data/app/controllers/thredded/moderation_controller.rb +103 -0
  112. data/app/controllers/thredded/post_permalinks_controller.rb +11 -0
  113. data/app/controllers/thredded/post_previews_controller.rb +29 -0
  114. data/app/controllers/thredded/posts_controller.rb +97 -0
  115. data/app/controllers/thredded/preferences_controller.rb +42 -0
  116. data/app/controllers/thredded/private_post_permalinks_controller.rb +12 -0
  117. data/app/controllers/thredded/private_post_previews_controller.rb +29 -0
  118. data/app/controllers/thredded/private_posts_controller.rb +96 -0
  119. data/app/controllers/thredded/private_topic_previews_controller.rb +15 -0
  120. data/app/controllers/thredded/private_topics_controller.rb +102 -0
  121. data/app/controllers/thredded/read_states_controller.rb +13 -0
  122. data/app/controllers/thredded/theme_previews_controller.rb +34 -0
  123. data/app/controllers/thredded/topic_previews_controller.rb +15 -0
  124. data/app/controllers/thredded/topics_controller.rb +205 -0
  125. data/app/forms/thredded/edit_topic_form.rb +51 -0
  126. data/app/forms/thredded/post_form.rb +54 -0
  127. data/app/forms/thredded/private_post_form.rb +50 -0
  128. data/app/forms/thredded/private_topic_form.rb +160 -0
  129. data/app/forms/thredded/topic_form.rb +95 -0
  130. data/app/forms/thredded/user_preferences_form.rb +110 -0
  131. data/app/helpers/thredded/application_helper.rb +129 -0
  132. data/app/helpers/thredded/nav_helper.rb +42 -0
  133. data/app/helpers/thredded/render_helper.rb +15 -0
  134. data/app/helpers/thredded/urls_helper.rb +134 -0
  135. data/app/jobs/thredded/activity_updater_job.rb +21 -0
  136. data/app/jobs/thredded/auto_follow_and_notify_job.rb +14 -0
  137. data/app/jobs/thredded/notify_private_topic_users_job.rb +12 -0
  138. data/app/mailer_previews/thredded/base_mailer_preview.rb +118 -0
  139. data/app/mailer_previews/thredded/post_mailer_preview.rb +13 -0
  140. data/app/mailer_previews/thredded/private_topic_mailer_preview.rb +13 -0
  141. data/app/mailers/thredded/base_mailer.rb +18 -0
  142. data/app/mailers/thredded/post_mailer.rb +21 -0
  143. data/app/mailers/thredded/private_topic_mailer.rb +21 -0
  144. data/app/models/concerns/thredded/content_moderation_state.rb +67 -0
  145. data/app/models/concerns/thredded/friendly_id_reserved_words_and_pagination.rb +17 -0
  146. data/app/models/concerns/thredded/moderation_state.rb +14 -0
  147. data/app/models/concerns/thredded/notifier_preference.rb +19 -0
  148. data/app/models/concerns/thredded/post_common.rb +76 -0
  149. data/app/models/concerns/thredded/search_parser.rb +41 -0
  150. data/app/models/concerns/thredded/topic_common.rb +94 -0
  151. data/app/models/concerns/thredded/topics_search.rb +67 -0
  152. data/app/models/concerns/thredded/user_topic_read_state_common.rb +42 -0
  153. data/app/models/thredded/category.rb +18 -0
  154. data/app/models/thredded/messageboard.rb +120 -0
  155. data/app/models/thredded/messageboard_group.rb +19 -0
  156. data/app/models/thredded/messageboard_notifications_for_followed_topics.rb +30 -0
  157. data/app/models/thredded/messageboard_user.rb +14 -0
  158. data/app/models/thredded/notifications_for_followed_topics.rb +25 -0
  159. data/app/models/thredded/notifications_for_private_topics.rb +22 -0
  160. data/app/models/thredded/null_user.rb +51 -0
  161. data/app/models/thredded/null_user_topic_read_state.rb +17 -0
  162. data/app/models/thredded/post.rb +77 -0
  163. data/app/models/thredded/post_moderation_record.rb +56 -0
  164. data/app/models/thredded/private_post.rb +63 -0
  165. data/app/models/thredded/private_topic.rb +89 -0
  166. data/app/models/thredded/private_user.rb +8 -0
  167. data/app/models/thredded/stats.rb +25 -0
  168. data/app/models/thredded/topic.rb +179 -0
  169. data/app/models/thredded/topic_category.rb +8 -0
  170. data/app/models/thredded/user_detail.rb +27 -0
  171. data/app/models/thredded/user_extender.rb +75 -0
  172. data/app/models/thredded/user_messageboard_preference.rb +45 -0
  173. data/app/models/thredded/user_permissions/admin/if_admin_column_true.rb +14 -0
  174. data/app/models/thredded/user_permissions/admin/none.rb +14 -0
  175. data/app/models/thredded/user_permissions/message/readers_of_writeable_boards.rb +15 -0
  176. data/app/models/thredded/user_permissions/moderate/if_moderator_column_true.rb +16 -0
  177. data/app/models/thredded/user_permissions/moderate/none.rb +16 -0
  178. data/app/models/thredded/user_permissions/read/all.rb +27 -0
  179. data/app/models/thredded/user_permissions/write/all.rb +16 -0
  180. data/app/models/thredded/user_permissions/write/none.rb +16 -0
  181. data/app/models/thredded/user_post_notification.rb +29 -0
  182. data/app/models/thredded/user_preference.rb +26 -0
  183. data/app/models/thredded/user_private_topic_read_state.rb +13 -0
  184. data/app/models/thredded/user_topic_follow.rb +34 -0
  185. data/app/models/thredded/user_topic_read_state.rb +13 -0
  186. data/app/notifiers/thredded/email_notifier.rb +25 -0
  187. data/app/policies/thredded/messageboard_group_policy.rb +16 -0
  188. data/app/policies/thredded/messageboard_policy.rb +49 -0
  189. data/app/policies/thredded/post_policy.rb +64 -0
  190. data/app/policies/thredded/private_post_policy.rb +38 -0
  191. data/app/policies/thredded/private_topic_policy.rb +24 -0
  192. data/app/policies/thredded/topic_policy.rb +49 -0
  193. data/app/view_hooks/thredded/all_view_hooks.rb +125 -0
  194. data/app/view_models/thredded/base_topic_view.rb +43 -0
  195. data/app/view_models/thredded/messageboard_group_view.rb +27 -0
  196. data/app/view_models/thredded/post_view.rb +89 -0
  197. data/app/view_models/thredded/posts_page_view.rb +27 -0
  198. data/app/view_models/thredded/private_topic_view.rb +20 -0
  199. data/app/view_models/thredded/private_topics_page_view.rb +31 -0
  200. data/app/view_models/thredded/topic_email_view.rb +18 -0
  201. data/app/view_models/thredded/topic_posts_page_view.rb +17 -0
  202. data/app/view_models/thredded/topic_view.rb +68 -0
  203. data/app/view_models/thredded/topics_page_view.rb +38 -0
  204. data/app/views/layouts/thredded/application.html.erb +18 -0
  205. data/app/views/thredded/categories/_category.html.erb +1 -0
  206. data/app/views/thredded/error_pages/forbidden.html.erb +6 -0
  207. data/app/views/thredded/error_pages/not_found.html.erb +6 -0
  208. data/app/views/thredded/kaminari/_first_page.html.erb +11 -0
  209. data/app/views/thredded/kaminari/_gap.html.erb +8 -0
  210. data/app/views/thredded/kaminari/_last_page.html.erb +11 -0
  211. data/app/views/thredded/kaminari/_next_page.html.erb +11 -0
  212. data/app/views/thredded/kaminari/_page.html.erb +12 -0
  213. data/app/views/thredded/kaminari/_paginator.html.erb +23 -0
  214. data/app/views/thredded/kaminari/_prev_page.html.erb +11 -0
  215. data/app/views/thredded/messageboard_groups/new.html.erb +28 -0
  216. data/app/views/thredded/messageboards/_form.html.erb +30 -0
  217. data/app/views/thredded/messageboards/_messageboard.html.erb +20 -0
  218. data/app/views/thredded/messageboards/_messageboard_meta.html.erb +13 -0
  219. data/app/views/thredded/messageboards/edit.html.erb +15 -0
  220. data/app/views/thredded/messageboards/index.html.erb +34 -0
  221. data/app/views/thredded/messageboards/new.html.erb +15 -0
  222. data/app/views/thredded/moderation/_nav.html.erb +19 -0
  223. data/app/views/thredded/moderation/_post.html.erb +19 -0
  224. data/app/views/thredded/moderation/_post_moderation_actions.html.erb +12 -0
  225. data/app/views/thredded/moderation/_post_moderation_record.html.erb +46 -0
  226. data/app/views/thredded/moderation/_user_moderation_state.html.erb +3 -0
  227. data/app/views/thredded/moderation/_user_post.html.erb +12 -0
  228. data/app/views/thredded/moderation/_users_search_form.html.erb +13 -0
  229. data/app/views/thredded/moderation/activity.html.erb +20 -0
  230. data/app/views/thredded/moderation/history.html.erb +13 -0
  231. data/app/views/thredded/moderation/pending.html.erb +24 -0
  232. data/app/views/thredded/moderation/user.html.erb +54 -0
  233. data/app/views/thredded/moderation/users.html.erb +41 -0
  234. data/app/views/thredded/post_mailer/post_notification.html.erb +26 -0
  235. data/app/views/thredded/post_mailer/post_notification.text.erb +14 -0
  236. data/app/views/thredded/post_previews/preview.html.erb +1 -0
  237. data/app/views/thredded/post_previews/update.html.erb +1 -0
  238. data/app/views/thredded/posts/_content.html.erb +1 -0
  239. data/app/views/thredded/posts/_form.html.erb +5 -0
  240. data/app/views/thredded/posts/_post.html.erb +13 -0
  241. data/app/views/thredded/posts/_user.html.erb +3 -0
  242. data/app/views/thredded/posts/edit.html.erb +16 -0
  243. data/app/views/thredded/posts/new.html.erb +15 -0
  244. data/app/views/thredded/posts_common/_actions.html.erb +28 -0
  245. data/app/views/thredded/posts_common/_content.html.erb +3 -0
  246. data/app/views/thredded/posts_common/_form.html.erb +22 -0
  247. data/app/views/thredded/posts_common/_header.html.erb +8 -0
  248. data/app/views/thredded/posts_common/_header_with_topic.html.erb +15 -0
  249. data/app/views/thredded/posts_common/_header_with_user_and_topic.html.erb +18 -0
  250. data/app/views/thredded/posts_common/actions/_delete.html.erb +4 -0
  251. data/app/views/thredded/posts_common/actions/_edit.html.erb +3 -0
  252. data/app/views/thredded/posts_common/actions/_mark_as_unread.html.erb +2 -0
  253. data/app/views/thredded/posts_common/actions/_quote.html.erb +4 -0
  254. data/app/views/thredded/posts_common/form/_after_content.html.erb +8 -0
  255. data/app/views/thredded/posts_common/form/_before_content.html.erb +8 -0
  256. data/app/views/thredded/posts_common/form/_content.html.erb +7 -0
  257. data/app/views/thredded/posts_common/form/_content_field.html.erb +8 -0
  258. data/app/views/thredded/posts_common/form/_preview_area.html.erb +16 -0
  259. data/app/views/thredded/preferences/_form.html.erb +95 -0
  260. data/app/views/thredded/preferences/_messageboards_nav.html.erb +8 -0
  261. data/app/views/thredded/preferences/_messageboards_nav_item.html.erb +2 -0
  262. data/app/views/thredded/preferences/edit.html.erb +20 -0
  263. data/app/views/thredded/private_post_previews/preview.html.erb +1 -0
  264. data/app/views/thredded/private_post_previews/update.html.erb +1 -0
  265. data/app/views/thredded/private_posts/_content.html.erb +1 -0
  266. data/app/views/thredded/private_posts/_form.html.erb +6 -0
  267. data/app/views/thredded/private_posts/_private_post.html.erb +6 -0
  268. data/app/views/thredded/private_posts/edit.html.erb +16 -0
  269. data/app/views/thredded/private_posts/new.html.erb +11 -0
  270. data/app/views/thredded/private_topic_mailer/message_notification.html.erb +26 -0
  271. data/app/views/thredded/private_topic_mailer/message_notification.text.erb +15 -0
  272. data/app/views/thredded/private_topic_previews/preview.html.erb +1 -0
  273. data/app/views/thredded/private_topics/_breadcrumbs.html.erb +4 -0
  274. data/app/views/thredded/private_topics/_form.html.erb +39 -0
  275. data/app/views/thredded/private_topics/_header.html.erb +17 -0
  276. data/app/views/thredded/private_topics/_no_private_topics.html.erb +6 -0
  277. data/app/views/thredded/private_topics/_private_topic.html.erb +23 -0
  278. data/app/views/thredded/private_topics/edit.html.erb +35 -0
  279. data/app/views/thredded/private_topics/header/_participant.html.erb +1 -0
  280. data/app/views/thredded/private_topics/index.html.erb +32 -0
  281. data/app/views/thredded/private_topics/new.html.erb +11 -0
  282. data/app/views/thredded/private_topics/private_topic/_participant.html.erb +1 -0
  283. data/app/views/thredded/private_topics/show.html.erb +28 -0
  284. data/app/views/thredded/search/_form.html.erb +13 -0
  285. data/app/views/thredded/shared/_breadcrumbs.html.erb +6 -0
  286. data/app/views/thredded/shared/_content_moderation_blocked_state.html.erb +8 -0
  287. data/app/views/thredded/shared/_currently_online.html.erb +6 -0
  288. data/app/views/thredded/shared/_flash_messages.html.erb +7 -0
  289. data/app/views/thredded/shared/_header.html.erb +3 -0
  290. data/app/views/thredded/shared/_nav.html.erb +19 -0
  291. data/app/views/thredded/shared/_page.html.erb +15 -0
  292. data/app/views/thredded/shared/currently_online/_header.html.erb +5 -0
  293. data/app/views/thredded/shared/currently_online/_user_list.html.erb +3 -0
  294. data/app/views/thredded/shared/currently_online/_user_list_item.html.erb +6 -0
  295. data/app/views/thredded/shared/nav/_moderation.html.erb +14 -0
  296. data/app/views/thredded/shared/nav/_notification_preferences.html.erb +8 -0
  297. data/app/views/thredded/shared/nav/_private_topics.html.erb +12 -0
  298. data/app/views/thredded/shared/nav/_standalone.html.erb +12 -0
  299. data/app/views/thredded/shared/nav/_standalone_profile.html.erb +3 -0
  300. data/app/views/thredded/shared/preview.html.erb +10 -0
  301. data/app/views/thredded/theme_previews/_section_title.html.erb +3 -0
  302. data/app/views/thredded/theme_previews/show.html.erb +99 -0
  303. data/app/views/thredded/topic_previews/preview.html.erb +1 -0
  304. data/app/views/thredded/topics/_followers.html.erb +12 -0
  305. data/app/views/thredded/topics/_form.html.erb +32 -0
  306. data/app/views/thredded/topics/_header.html.erb +32 -0
  307. data/app/views/thredded/topics/_sticky_topics_divider.html.erb +1 -0
  308. data/app/views/thredded/topics/_topic.html.erb +47 -0
  309. data/app/views/thredded/topics/_topic_form_admin_options.html.erb +12 -0
  310. data/app/views/thredded/topics/edit.html.erb +50 -0
  311. data/app/views/thredded/topics/index.html.erb +35 -0
  312. data/app/views/thredded/topics/new.html.erb +12 -0
  313. data/app/views/thredded/topics/search.html.erb +39 -0
  314. data/app/views/thredded/topics/show.html.erb +46 -0
  315. data/app/views/thredded/users/_link.html.erb +14 -0
  316. data/app/views/thredded/users/_post.html.erb +6 -0
  317. data/app/views/thredded/users/_posts.html.erb +7 -0
  318. data/bin/rails +6 -0
  319. data/config/i18n-tasks.yml +16 -0
  320. data/config/locales/de.yml +257 -0
  321. data/config/locales/en.yml +253 -0
  322. data/config/locales/es.yml +257 -0
  323. data/config/locales/fr.yml +255 -0
  324. data/config/locales/it.yml +257 -0
  325. data/config/locales/pl.yml +257 -0
  326. data/config/locales/pt-BR.yml +258 -0
  327. data/config/locales/ru.yml +255 -0
  328. data/config/locales/zh-CN.yml +246 -0
  329. data/config/routes.rb +87 -0
  330. data/db/migrate/20160329231848_create_thredded.rb +257 -0
  331. data/db/seeds.rb +4 -0
  332. data/db/upgrade_migrations/20160611094616_upgrade_v0_5_to_v0_6.rb +28 -0
  333. data/db/upgrade_migrations/20160723012349_upgrade_v0_6_to_v0_7.rb +46 -0
  334. data/db/upgrade_migrations/20161019150201_upgrade_v0_7_to_v0_8.rb +34 -0
  335. data/db/upgrade_migrations/20161113161801_upgrade_v0_8_to_v0_9.rb +60 -0
  336. data/db/upgrade_migrations/20170125033319_upgrade_v0_9_to_v0_10.rb +36 -0
  337. data/db/upgrade_migrations/20170312131417_upgrade_thredded_v0_10_to_v0_11.rb +23 -0
  338. data/db/upgrade_migrations/20170420163138_upgrade_thredded_v0_11_to_v0_12.rb +28 -0
  339. data/db/upgrade_migrations/20170811090735_upgrade_thredded_v0_13_to_v_014.rb +21 -0
  340. data/lib/generators/thredded/install/USAGE +8 -0
  341. data/lib/generators/thredded/install/install_generator.rb +20 -0
  342. data/lib/generators/thredded/install/templates/initializer.rb +160 -0
  343. data/lib/tasks/thredded_tasks.rake +14 -0
  344. data/lib/thredded.rb +190 -0
  345. data/lib/thredded/base_migration.rb +14 -0
  346. data/lib/thredded/base_notifier.rb +28 -0
  347. data/lib/thredded/collection_to_strings_with_cache_renderer.rb +86 -0
  348. data/lib/thredded/content_formatter.rb +129 -0
  349. data/lib/thredded/database_seeder.rb +290 -0
  350. data/lib/thredded/db_tools.rb +103 -0
  351. data/lib/thredded/email_transformer.rb +22 -0
  352. data/lib/thredded/email_transformer/base.rb +47 -0
  353. data/lib/thredded/email_transformer/onebox.rb +21 -0
  354. data/lib/thredded/engine.rb +28 -0
  355. data/lib/thredded/errors.rb +68 -0
  356. data/lib/thredded/formatting_demo_content.rb +30 -0
  357. data/lib/thredded/html_pipeline/at_mention_filter.rb +78 -0
  358. data/lib/thredded/html_pipeline/autolink_filter.rb +15 -0
  359. data/lib/thredded/html_pipeline/kramdown_filter.rb +39 -0
  360. data/lib/thredded/html_pipeline/onebox_filter.rb +143 -0
  361. data/lib/thredded/html_pipeline/wrap_iframes_filter.rb +13 -0
  362. data/lib/thredded/version.rb +5 -0
  363. data/lib/thredded/view_hooks/config.rb +37 -0
  364. data/lib/thredded/view_hooks/renderer.rb +30 -0
  365. data/vendor/assets/javascripts/autosize.min.js +6 -0
  366. data/vendor/assets/javascripts/textcomplete.min.js +2 -0
  367. metadata +1035 -0
@@ -0,0 +1,255 @@
1
+ ---
2
+ ru:
3
+ thredded:
4
+ content_moderation_states:
5
+ content_blocked_notice: Блокировано
6
+ content_blocked_notice_with_record_html: Блокировано %{moderator} %{time_ago}
7
+ email_notifier:
8
+ by_email: email
9
+ emails:
10
+ message_notification:
11
+ html:
12
+ email_sent_reason_html: >-
13
+ Это письмо было отправлено вам, потому что %{user} добавил вас в приватную тему «<a href="%{post_url}">%{topic_title}</a>».
14
+ post_lead_html: 'Новое сообщение от %{user} в <a href="%{post_url}">«%{topic_title}»</a>:'
15
+ unsubscribe_instructions_html: :thredded.emails.post_notification.html.unsubscribe_instructions_html
16
+ subject: Новое сообщение от %{user} в «%{topic_title}»
17
+ text:
18
+ email_sent_reason: |-
19
+ Это письмо было отправлено вам, потому что %{user} добавил вас в
20
+ приватную тему «%{topic_title}».
21
+
22
+ Перейдите сюда, чтобы просмотреть разговор:
23
+ %{post_url}
24
+ post_lead: 'Новое сообщение от %{user} в «%{topic_title}»:'
25
+ unsubscribe_instructions: :thredded.emails.post_notification.text.unsubscribe_instructions
26
+ post_notification:
27
+ html:
28
+ email_sent_reason_html: 'Это письмо было отправлено вам, потому что вы подписаны на тему: «<a href="%{post_url}">%{topic_title}</a>».'
29
+ post_lead_html: '%{user} в <a href="%{post_url}">«%{topic_title}»</a>:'
30
+ unsubscribe_instructions_html: Чтобы отписаться от этих писем, обновите свои <a href="%{preferences_url}">настройки</a>.
31
+ subject: Новое сообщение в «%{topic_title}»
32
+ text:
33
+ email_sent_reason: |-
34
+ Это письмо было отправлено вам, потому что вы подписаны на тему «%{topic_title}».
35
+
36
+ Перейдите сюда, чтобы просмотреть разговор:
37
+ %{post_url}
38
+ post_lead: "%{user} указан в «%{topic_title}»:"
39
+ unsubscribe_instructions: |-
40
+ Чтобы отписаться от этих писем, обновите свои настройки здесь:
41
+ %{unsubscribe_url}
42
+ errors:
43
+ login_required: Необходимо зайти на форум.
44
+ not_authorized: Вы не авторизованы.
45
+ private_topic_create_denied: Вы не авторизованы для создания личных сообщений.
46
+ private_topic_not_found: Личное сообщение не найдено.
47
+ form:
48
+ create_btn_submitting: Создаю...
49
+ preview: Обзор
50
+ update: Обновить
51
+ update_btn_submitting: Обновляю...
52
+ messageboard:
53
+ create: Создать форум
54
+ form:
55
+ create_btn_submitting: :thredded.form.create_btn_submitting
56
+ description_label: Описание
57
+ locked_label: Заблокировать
58
+ locked_notice: Этот форум заблокирован. Только модераторы могут создавать новые темы здесь.
59
+ messageboard_group_id_label: Выбрать группу
60
+ no_group: Не группировать
61
+ title_label: Название форума
62
+ update_btn_submitting: :thredded.form.update_btn_submitting
63
+ index:
64
+ page_title: Форумы
65
+ last_updated_by_html: Обновлено %{time_ago} <cite>пользователем %{user}</cite>
66
+ topics_and_posts_counts: "%{topics_count} тем / %{posts_count} постов"
67
+ update: :thredded.form.update
68
+ updated_notice: Форум обновлен
69
+ messageboard_first_topic:
70
+ content: |-
71
+ There's not a whole lot here for now.
72
+
73
+ These forums are powered by [Thredded](https://github.com/thredded/thredded) v%{thredded_version}.
74
+ You can contact the Thredded team via the [Thredded chat room](https://gitter.im/thredded/thredded).
75
+ Please let us know that you are using Thredded by tweeting [@thredded](https://twitter.com/thredded)!
76
+ title: Welcome to your messageboard's very first thread
77
+ messageboard_group:
78
+ create: Создать группу форумов
79
+ form:
80
+ create_btn_submitting: :thredded.form.create_btn_submitting
81
+ saved: Группа форумов %{name} создана
82
+ moderation:
83
+ approve_btn: Одобрить
84
+ block_btn: Заблокировать
85
+ moderation_state:
86
+ name: Состояние модерации
87
+ pending:
88
+ empty:
89
+ content: Все посты промодерированы.
90
+ title: Хорошая работа!
91
+ post_approved_html: Пост одобрен %{moderator} %{time_ago}.
92
+ post_blocked_html: Пост заблокирован %{moderator} %{time_ago}.
93
+ post_deleted_notice: Этот пост "удален".
94
+ posts_content_changed_since_moderation_html: <a href="%{post_url}">пост</a> был изменен с даты последней модерации.
95
+ Ниже - контент на момент модерации.
96
+ search_users:
97
+ form_label: Поиск пользователей
98
+ form_placeholder: :thredded.moderation.search_users.form_label
99
+ no_results_message: Не найдено пользователей %{query}
100
+ results_message: Пользователи, начинающиеся с ... %{query}
101
+ user:
102
+ name: Пользователь
103
+ nav:
104
+ all_messageboards: Все форумы
105
+ edit_messageboard: Редактировать форум
106
+ edit_post: Редактировать пост
107
+ edit_private_topic: :thredded.nav.edit_topic
108
+ edit_topic: Редактировать
109
+ mark_all_read: Пометить все как прочитанное
110
+ moderation: Модерация
111
+ moderation_activity: Активность
112
+ moderation_history: История
113
+ moderation_pending: В ожидании
114
+ moderation_users: Пользователи
115
+ private_topics: Личное
116
+ settings: Настройки
117
+ null_user_name: Пользователь удален
118
+ posts:
119
+ delete: Удалить пост
120
+ delete_confirm: Вы уверены что хотите удалить пост?
121
+ deleted_notice: Пост был удален.
122
+ edit: :thredded.nav.edit_post
123
+ form:
124
+ content_label: Контент
125
+ create_btn: Ответить
126
+ create_btn_submitting: Отправляется...
127
+ title_label: Добавить пост
128
+ update_btn: Обновить пост
129
+ update_btn_submitting: :thredded.form.update_btn_submitting
130
+ pending_moderation_notice: Ваш пост будет опубликован, когда будет одобрен модератором.
131
+ quote_btn: Цитировать
132
+ preferences:
133
+ edit:
134
+ page_title: :thredded.nav.settings
135
+ form:
136
+ auto_follow_topics:
137
+ hint: Автоматически следовать всем новым темам. Изменение этого параметра будет изменить его для всех
138
+ messageboards.
139
+ label: Соблюдайте все новые темы
140
+ follow_topics_on_mention:
141
+ hint: 'Когда кто-то упоминает вас на форуме (например: @sam), Вы будете наблюдать за этой темой.'
142
+ label: Наблюдать за темой, в которой Вы упомянуты
143
+ messageboard_auto_follow_topics:
144
+ hint: Автоматически следовать все новые темы в этом ОБЪЯВЛЕНИЯ. Это отменяет соответствующую настройку
145
+ выше.
146
+ label: Соблюдайте все новые темы
147
+ messageboard_follow_topics_on_mention:
148
+ hint: 'Когда кто-то упоминает вас на форуме (например: @sam), Вы будете наблюдать за этой темой.'
149
+ label: :thredded.preferences.form.follow_topics_on_mention.label
150
+ messageboard_notifications_for_followed_topics:
151
+ label: :thredded.preferences.form.notifications_for_followed_topics.label
152
+ notifications_for_followed_topics:
153
+ label: Уведомления для отслеживаемых тем
154
+ notifications_for_private_topics:
155
+ label: Уведомления для личных сообщений
156
+ submit_btn: Сохранить настройки
157
+ update_btn_submitting: :thredded.form.update_btn_submitting
158
+ global_preferences_title: Общие настройки
159
+ messageboard_preferences_nav_title: Настройки форума
160
+ messageboard_preferences_title_html: Настройки уведомлений для <em>%{messageboard}</em>
161
+ updated_notice: Ваши настройки были обновлены.
162
+ private_posts:
163
+ form:
164
+ content_label: Сообщение
165
+ create_btn: Послать сообщение
166
+ create_btn_submitting: Посылаю...
167
+ update_btn_submitting: :thredded.form.update_btn_submitting
168
+ private_topics:
169
+ create: :thredded.private_topics.form.create_btn
170
+ edit: Редактировать
171
+ errors:
172
+ user_ids_length: Выберите хотя-бы одного пользователя.
173
+ form:
174
+ content_label: :thredded.private_posts.form.content_label
175
+ create_btn: :thredded.private_posts.form.create_btn
176
+ create_btn_submitting: :thredded.private_posts.form.create_btn_submitting
177
+ title_label: :thredded.topics.form.title_label
178
+ title_placeholder_new: Необходимо написать предмет переписки
179
+ title_placeholder_start: Начать новую переписку
180
+ update_btn: Обновить
181
+ update_btn_submitting: :thredded.private_posts.form.update_btn_submitting
182
+ users_label: Участники
183
+ users_placeholder: Выберите пользователей для участия в переписке
184
+ no_private_topics:
185
+ create_btn: Начать вашу первую приватную переписку
186
+ title: У вас нет личных сообщений.
187
+ updated_notice: Заголовок обновлен
188
+ recent_activity: Активность
189
+ search:
190
+ form:
191
+ btn_submit: :thredded.search.form.label
192
+ label: Поиск
193
+ placeholder: Поиск тем или записей
194
+ time_ago: "%{time} назад"
195
+ topics:
196
+ create: :thredded.topics.form.create_btn
197
+ delete_confirm: Вы уверены что хотите удалить эту тему? Это безвозвратно.
198
+ delete_topic: Удалить тему
199
+ deleted_notice: Тема "удалена"
200
+ edit: Редактировать тему
201
+ follow: Наблюдать за темой
202
+ followed_by: Наблюдаю
203
+ followed_by_noone: Никто не наблюдает за этой темой
204
+ followed_notice: Вы следите за темой
205
+ following:
206
+ auto: Вы подписаны на эту тему, потому что автоматическое наблюдение включено.
207
+ manual: Вы следите за этой темой.
208
+ mentioned: Вы следите за этой темой, потому что упомянуты в ней.
209
+ posted: Вы следите за темой, потому что Вы писали в ней.
210
+ form:
211
+ categories_placeholder: Категории
212
+ content_label: :thredded.posts.form.content_label
213
+ create_btn: Создать новую тему
214
+ messageboard_label: Форум
215
+ title_label: Заголовок
216
+ title_placeholder: :thredded.topics.form.title_label
217
+ title_placeholder_start: Начать новую тему
218
+ update_btn: Обновление темы
219
+ locked:
220
+ label: Заблокировать тему
221
+ message: Эта тема закрыта модератором.
222
+ mark_as_unread: Пометить как непрочитанное
223
+ not_following: не отслеживаю
224
+ search:
225
+ no_results_in_messageboard_message_html: Не найдо результатов по запросу <q>%{query}</q> в %{messageboard}
226
+ no_results_message_html: Не найдо результатов по запросу <q>%{query}</q>
227
+ page_title: Результаты поиска
228
+ results_in_messageboard_message_html: Результаты поиска для <q>%{query}</q> в %{messageboard}
229
+ results_message_html: Результаты поиска для <q>%{query}</q>
230
+ search_in_all_messageboards_btn: Искать везде
231
+ started_by_html: Начат %{user} %{time_ago}
232
+ sticky:
233
+ label: Закрепить
234
+ unfollow: Не следить за темой
235
+ unfollowed_notice: Вы не следите за темой
236
+ updated_notice: Тема обновлена
237
+ users:
238
+ currently_online: Онлайн
239
+ last_active_html: Последняя активность %{time_ago}
240
+ posted_in_topic_html: Сделан пост в %{topic_link}
241
+ posts_count:
242
+ few: Сделано %{count} поста
243
+ many: Сделано %{count} постов
244
+ one: Сделан %{count} пост
245
+ other: Сделано %{count} постов
246
+ recent_activity: :thredded.recent_activity
247
+ started_topic_html: Начато %{topic_link}
248
+ started_topics_count:
249
+ few: Начато %{count} темы
250
+ many: Начато %{count} тем
251
+ one: Начата %{count} тема
252
+ other: Начато %{count} тем
253
+ user_posted_in_topic_html: "%{user_link} сделал запись в %{topic_link}"
254
+ user_since_html: Пользователь был %{time_ago}
255
+ user_started_topic_html: "%{user_link} начал %{topic_link}"
@@ -0,0 +1,246 @@
1
+ ---
2
+ zh-CN:
3
+ thredded:
4
+ content_moderation_states:
5
+ content_blocked_notice: 被锁定
6
+ content_blocked_notice_with_record_html: "%{moderator} 在%{time_ago}锁定"
7
+ email_notifier:
8
+ by_email: 电子邮箱
9
+ emails:
10
+ message_notification:
11
+ html:
12
+ email_sent_reason_html: 我们给你发送这封邮件是因为 %{user} 在一个私人对话中提到你,“<a href="%{post_url}">%{topic_title}</a>”。
13
+ post_lead_html: '%{user} 在<a href="%{post_url}">“%{topic_title}”</a>中发表了新消息:'
14
+ unsubscribe_instructions_html: :thredded.emails.post_notification.html.unsubscribe_instructions_html
15
+ subject: "%{user} 在“%{topic_title}”中发表了新消息"
16
+ text:
17
+ email_sent_reason: |-
18
+ 我们给你发送这封邮件是因为 %{user} 在一个私人对话中提到你,“%{topic_title}”。
19
+
20
+ 请到以下浏览对话:
21
+ %{post_url}
22
+ post_lead: "%{user} 在“%{topic_title}”中发表了新消息:"
23
+ unsubscribe_instructions: :thredded.emails.post_notification.text.unsubscribe_instructions
24
+ post_notification:
25
+ html:
26
+ email_sent_reason_html: 我们给你发送这封邮件是因为你关注了帖子: “<a href="%{post_url}">%{topic_title}</a>”。
27
+ post_lead_html: '%{user} 在<a href="%{post_url}">“%{topic_title}”</a>中说到:'
28
+ unsubscribe_instructions_html: 退订这些邮件, 请前往<a href="%{preferences_url}">设置</a>。
29
+ subject: "“%{topic_title}”有新回复"
30
+ text:
31
+ email_sent_reason: |-
32
+ 我们给你发送这封邮件是因为你关注了这个帖子“%{topic_title}“。
33
+
34
+ 请到以下浏览帖子:
35
+ %{post_url}
36
+ post_lead: "%{user} 在“%{topic_title}”中说到:"
37
+ unsubscribe_instructions: |-
38
+ 退订这些邮件,请前往设置:
39
+ %{unsubscribe_url}
40
+ errors:
41
+ login_required: 请先登录
42
+ not_authorized: 你没有权限访问该页面
43
+ private_topic_create_denied: 你没有权限创建私人对话
44
+ private_topic_not_found: 该私人对话不存在
45
+ form:
46
+ create_btn_submitting: 创建中...
47
+ preview: 预览
48
+ update: 更新
49
+ update_btn_submitting: 更新中...
50
+ messageboard:
51
+ create: 创建一个新板块
52
+ form:
53
+ create_btn_submitting: :thredded.form.create_btn_submitting
54
+ description_label: 描述
55
+ locked_label: 锁定
56
+ locked_notice: 这个消息板被锁定。只有版主可以在这里创建新的主题。
57
+ messageboard_group_id_label: 板块分组
58
+ no_group: 没有分组
59
+ title_label: 名称
60
+ update_btn_submitting: :thredded.form.update_btn_submitting
61
+ index:
62
+ page_title: 板块
63
+ last_updated_by_html: 最近由 <span>%{user}</span> 在%{time_ago}更新
64
+ topics_and_posts_counts: "%{topics_count} 帖子 / %{posts_count} 回复"
65
+ update: :thredded.form.update
66
+ updated_notice: 板块已更新
67
+ messageboard_first_topic:
68
+ content: |-
69
+ There's not a whole lot here for now.
70
+
71
+ These forums are powered by [Thredded](https://github.com/thredded/thredded) v%{thredded_version}.
72
+ You can contact the Thredded team via the [Thredded chat room](https://gitter.im/thredded/thredded).
73
+ Please let us know that you are using Thredded by tweeting [@thredded](https://twitter.com/thredded)!
74
+ title: Welcome to your messageboard's very first thread
75
+ messageboard_group:
76
+ create: 创建一个新的板块分组
77
+ form:
78
+ create_btn_submitting: :thredded.form.create_btn_submitting
79
+ saved: 板块分组 %{name} 已创建
80
+ moderation:
81
+ approve_btn: 通过
82
+ block_btn: 锁定
83
+ moderation_state:
84
+ name: 审核状态
85
+ pending:
86
+ empty:
87
+ content: 所有回复已审核
88
+ title: 干的漂亮!
89
+ post_approved_html: "%{moderator} %{time_ago}通过了该内容"
90
+ post_blocked_html: "%{moderator} %{time_ago}锁定了该内容"
91
+ post_deleted_notice: 该内容已被删除
92
+ posts_content_changed_since_moderation_html: <a href="%{post_url}">该内容</a>已发生变化,以下是被审核时的内容:
93
+ search_users:
94
+ form_label: 搜索用户
95
+ form_placeholder: :thredded.moderation.search_users.form_label
96
+ no_results_message: 未找到有关 %{query} 的用户
97
+ results_message: 有关 %{query} 的所有用户
98
+ user:
99
+ name: 用户
100
+ nav:
101
+ all_messageboards: 所有板块
102
+ edit_messageboard: 编辑板块
103
+ edit_post: 编辑内容
104
+ edit_private_topic: :thredded.nav.edit_topic
105
+ edit_topic: 编辑
106
+ mark_all_read: 标记所有为已读
107
+ moderation: 审核
108
+ moderation_activity: 状况
109
+ moderation_history: 历史
110
+ moderation_pending: 待定
111
+ moderation_users: 用户
112
+ private_topics: 私人对话
113
+ settings: 通知设置
114
+ null_user_name: 删除用户
115
+ posts:
116
+ delete: 删除回复
117
+ delete_confirm: 你确定删除该回复吗?
118
+ deleted_notice: 你的回复已删除
119
+ edit: :thredded.nav.edit_post
120
+ form:
121
+ content_label: 内容
122
+ create_btn: 提交回复
123
+ create_btn_submitting: 回复中...
124
+ title_label: 回复
125
+ update_btn: 更新
126
+ update_btn_submitting: :thredded.form.update_btn_submitting
127
+ pending_moderation_notice: 你的回复将在审核之后公开发表
128
+ quote_btn: 引用
129
+ preferences:
130
+ edit:
131
+ page_title: :thredded.nav.settings
132
+ form:
133
+ auto_follow_topics:
134
+ hint: 自动关注所有新帖子,更改该设置将会更改所有板块的设置
135
+ label: 关注所有新帖子
136
+ follow_topics_on_mention:
137
+ hint: 当有人在帖子中@你时将自动关注该帖子
138
+ label: 关注那些@你的帖子
139
+ messageboard_auto_follow_topics:
140
+ hint: 自动关注该板块的所有新帖子,这将覆盖以上所有的设置
141
+ label: 关注所有新帖子
142
+ messageboard_follow_topics_on_mention:
143
+ hint: 当有人在该板块中@你时将自动关注该帖子
144
+ label: :thredded.preferences.form.follow_topics_on_mention.label
145
+ messageboard_notifications_for_followed_topics:
146
+ label: :thredded.preferences.form.notifications_for_followed_topics.label
147
+ notifications_for_followed_topics:
148
+ label: 关注帖子的通知
149
+ notifications_for_private_topics:
150
+ label: 私人对话的通知
151
+ submit_btn: 更新设置
152
+ update_btn_submitting: :thredded.form.update_btn_submitting
153
+ global_preferences_title: 全局设置
154
+ messageboard_preferences_nav_title: 板块设置
155
+ messageboard_preferences_title_html: "<em>%{messageboard}</em> 的相关设置"
156
+ updated_notice: 你的设置已经更新
157
+ private_posts:
158
+ form:
159
+ content_label: 对话消息
160
+ create_btn: 发送对话消息
161
+ create_btn_submitting: 发送中...
162
+ update_btn_submitting: :thredded.form.update_btn_submitting
163
+ private_topics:
164
+ create: :thredded.private_topics.form.create_btn
165
+ edit: 编辑
166
+ errors:
167
+ user_ids_length: 请指定至少一个用户
168
+ form:
169
+ content_label: :thredded.private_posts.form.content_label
170
+ create_btn: :thredded.private_posts.form.create_btn
171
+ create_btn_submitting: :thredded.private_posts.form.create_btn_submitting
172
+ title_label: :thredded.topics.form.title_label
173
+ title_placeholder_new: 对话标题
174
+ title_placeholder_start: 发布新对话
175
+ update_btn: 更新
176
+ update_btn_submitting: :thredded.private_posts.form.update_btn_submitting
177
+ users_label: 会话者
178
+ users_placeholder: 选择参与此对话的用户
179
+ no_private_topics:
180
+ create_btn: 创建你的第一个私人对话
181
+ title: 你没有私人对话
182
+ updated_notice: 标题已更新
183
+ recent_activity: 最近状况
184
+ search:
185
+ form:
186
+ btn_submit: :thredded.search.form.label
187
+ label: 搜索
188
+ placeholder: 搜索帖子和回复
189
+ time_ago: "%{time}前"
190
+ topics:
191
+ create: :thredded.topics.form.create_btn
192
+ delete_confirm: 你确定删除该帖子吗?一旦删除将无法恢复
193
+ delete_topic: 删除帖子
194
+ deleted_notice: 帖子已删除
195
+ edit: 编辑帖子
196
+ follow: 关注该帖子
197
+ followed_by: 关注者:
198
+ followed_by_noone: 无人关注该帖子
199
+ followed_notice: 你在关注该帖子
200
+ following:
201
+ auto: 由于自动关注开启你已关注该帖子
202
+ manual: 你正在关注该帖子
203
+ mentioned: 由于你被@到所以你自动关注该帖子
204
+ posted: 由于你参与了回复现已关注该帖子
205
+ form:
206
+ categories_placeholder: 分类
207
+ content_label: :thredded.posts.form.content_label
208
+ create_btn: 创建新帖子
209
+ messageboard_label: 板块
210
+ title_label: 标题
211
+ title_placeholder: :thredded.topics.form.title_label
212
+ title_placeholder_start: 发布新帖子
213
+ update_btn: 更新帖子
214
+ locked:
215
+ label: 锁定
216
+ message: 该帖子被某个审核者锁定
217
+ mark_as_unread: 标记未读
218
+ not_following: 你未关注该帖子
219
+ search:
220
+ no_results_in_messageboard_message_html: 在%{messageboard}板块中未找到 <q>%{query}</q> 相关的搜索结果
221
+ no_results_message_html: 没有关于 <q>%{query}</q> 的搜索结果
222
+ page_title: 搜索结果
223
+ results_in_messageboard_message_html: 在%{messageboard}板块中关于 <q>%{query}</q> 的搜索结果
224
+ results_message_html: 关于 <q>%{query}</q> 的搜索结果
225
+ search_in_all_messageboards_btn: 搜索全站
226
+ started_by_html: "%{user} %{time_ago}发布"
227
+ sticky:
228
+ label: 置顶
229
+ unfollow: 取消关注
230
+ unfollowed_notice: 你不再关注该帖子
231
+ updated_notice: 帖子已更新
232
+ users:
233
+ currently_online: 目前在线
234
+ last_active_html: 最后活跃%{time_ago}
235
+ posted_in_topic_html: 在%{topic_link}中回复到:
236
+ posts_count:
237
+ one: 一个回复
238
+ other: "%{count} 个回复"
239
+ recent_activity: :thredded.recent_activity
240
+ started_topic_html: 发布帖子 %{topic_link}
241
+ started_topics_count:
242
+ one: 发布一个帖子
243
+ other: 发布 %{count} 个帖子
244
+ user_posted_in_topic_html: "%{user_link} 回复在 %{topic_link}"
245
+ user_since_html: 用户自%{time_ago}
246
+ user_started_topic_html: "%{user_link} 发布 %{topic_link}"