my_forum 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +12 -1
  3. data/Rakefile +4 -3
  4. data/{test/dummy/public/favicon.ico → app/assets/javascripts/my_forum/admin/categories.js.coffee} +0 -0
  5. data/app/assets/javascripts/my_forum/admin/dashboard.js.coffee +0 -0
  6. data/app/assets/javascripts/my_forum/admin/forums.js.coffee +0 -0
  7. data/app/assets/javascripts/my_forum/admin/roles.js +2 -0
  8. data/app/assets/javascripts/my_forum/admin/users.js +2 -0
  9. data/app/assets/javascripts/my_forum/application.js +6 -0
  10. data/app/assets/javascripts/my_forum/forums.js.coffee +0 -0
  11. data/app/assets/javascripts/my_forum/jquery.scrollTo.min.js +7 -0
  12. data/app/assets/javascripts/my_forum/jquery.selection.js +354 -0
  13. data/app/assets/javascripts/my_forum/my_forum.js.coffee +118 -0
  14. data/app/assets/javascripts/my_forum/posts.js.coffee +20 -0
  15. data/app/assets/javascripts/my_forum/topics.js.coffee +0 -0
  16. data/app/assets/javascripts/my_forum/users.js.coffee +0 -0
  17. data/app/assets/javascripts/my_forum/welcome.js.coffee +0 -0
  18. data/app/assets/stylesheets/my_forum/admin/categories.css.scss +0 -0
  19. data/app/assets/stylesheets/my_forum/admin/dashboard.css.scss +3 -0
  20. data/app/assets/stylesheets/my_forum/admin/forums.css.scss +7 -0
  21. data/app/assets/stylesheets/my_forum/admin/roles.css +4 -0
  22. data/app/assets/stylesheets/my_forum/admin/users.css +4 -0
  23. data/app/assets/stylesheets/my_forum/application.css.scss +80 -0
  24. data/app/assets/stylesheets/my_forum/forums.css.scss +31 -0
  25. data/app/assets/stylesheets/my_forum/posts.css.scss +138 -0
  26. data/app/assets/stylesheets/my_forum/private_messages.css.scss +11 -0
  27. data/app/assets/stylesheets/my_forum/topics.css.scss +16 -0
  28. data/app/assets/stylesheets/my_forum/users.css.scss +3 -0
  29. data/app/assets/stylesheets/my_forum/welcome.css.scss +73 -0
  30. data/app/controllers/my_forum/admin/categories_controller.rb +36 -0
  31. data/app/controllers/my_forum/admin/dashboard_controller.rb +13 -0
  32. data/app/controllers/my_forum/admin/emoticons_controller.rb +65 -0
  33. data/app/controllers/my_forum/admin/forums_controller.rb +35 -0
  34. data/app/controllers/my_forum/admin/mail_controller.rb +31 -0
  35. data/app/controllers/my_forum/admin/roles_controller.rb +38 -0
  36. data/app/controllers/my_forum/admin/users_controller.rb +14 -0
  37. data/app/controllers/my_forum/application_controller.rb +81 -0
  38. data/app/controllers/my_forum/attachments_controller.rb +30 -0
  39. data/app/controllers/my_forum/forums_controller.rb +39 -0
  40. data/app/controllers/my_forum/images_controller.rb +7 -0
  41. data/app/controllers/my_forum/posts_controller.rb +96 -0
  42. data/app/controllers/my_forum/private_messages_controller.rb +73 -0
  43. data/app/controllers/my_forum/topics_controller.rb +96 -0
  44. data/app/controllers/my_forum/users_controller.rb +145 -0
  45. data/app/controllers/my_forum/welcome_controller.rb +30 -0
  46. data/app/helpers/my_forum/admin/dashboard_helper.rb +4 -0
  47. data/app/helpers/my_forum/admin/forums_helper.rb +4 -0
  48. data/app/helpers/my_forum/admin/roles_helper.rb +4 -0
  49. data/app/helpers/my_forum/admin/users_helper.rb +4 -0
  50. data/app/helpers/my_forum/application_helper.rb +43 -0
  51. data/app/helpers/my_forum/emoticons_helper.rb +7 -0
  52. data/app/helpers/my_forum/forums_helper.rb +44 -0
  53. data/app/helpers/my_forum/posts_helper.rb +76 -0
  54. data/app/helpers/my_forum/private_messages_helper.rb +25 -0
  55. data/app/helpers/my_forum/topics_helper.rb +18 -0
  56. data/app/helpers/my_forum/users_helper.rb +33 -0
  57. data/app/helpers/my_forum/welcome_helper.rb +4 -0
  58. data/app/mailers/application_mailer.rb +4 -0
  59. data/app/mailers/my_forum/user_mailer.rb +31 -0
  60. data/app/models/my_forum/attachment.rb +12 -0
  61. data/app/models/my_forum/avatar.rb +11 -0
  62. data/app/models/my_forum/category.rb +7 -0
  63. data/app/models/my_forum/category_permission.rb +6 -0
  64. data/app/models/my_forum/emoticon.rb +6 -0
  65. data/app/models/my_forum/forum.rb +50 -0
  66. data/app/models/my_forum/image.rb +5 -0
  67. data/app/models/my_forum/log_read_mark.rb +4 -0
  68. data/app/models/my_forum/post.rb +26 -0
  69. data/app/models/my_forum/private_message.rb +8 -0
  70. data/app/models/my_forum/role.rb +6 -0
  71. data/app/models/my_forum/topic.rb +41 -0
  72. data/app/models/my_forum/user.rb +71 -0
  73. data/app/models/my_forum/user_group.rb +13 -0
  74. data/app/models/my_forum/user_group_link.rb +6 -0
  75. data/app/models/my_forum/user_roles.rb +6 -0
  76. data/app/views/layouts/mailer.html.erb +5 -0
  77. data/app/views/layouts/mailer.text.erb +1 -0
  78. data/app/views/layouts/my_forum/_guest_navbar.html.haml +4 -0
  79. data/app/views/layouts/my_forum/_user_navbar.html.haml +19 -0
  80. data/app/views/layouts/my_forum/admin_application.haml +29 -0
  81. data/app/views/layouts/my_forum/application.haml +23 -0
  82. data/app/views/my_forum/admin/categories/edit.haml +9 -0
  83. data/app/views/my_forum/admin/categories/new.haml +5 -0
  84. data/app/views/my_forum/admin/dashboard/index.haml +0 -0
  85. data/app/views/my_forum/admin/emoticons/edit.haml +4 -0
  86. data/app/views/my_forum/admin/emoticons/index.haml +15 -0
  87. data/app/views/my_forum/admin/emoticons/new.haml +5 -0
  88. data/app/views/my_forum/admin/forums/index.haml +47 -0
  89. data/app/views/my_forum/admin/forums/new.haml +6 -0
  90. data/app/views/my_forum/admin/mail/index.haml +9 -0
  91. data/app/views/my_forum/admin/roles/index.haml +12 -0
  92. data/app/views/my_forum/admin/roles/new.haml +22 -0
  93. data/app/views/my_forum/admin/users/index.haml +10 -0
  94. data/app/views/my_forum/forums/_topic_subject.html.haml +16 -0
  95. data/app/views/my_forum/forums/show.haml +29 -0
  96. data/app/views/my_forum/posts/edit.html.haml +31 -0
  97. data/app/views/my_forum/private_messages/_sidebar.haml +10 -0
  98. data/app/views/my_forum/private_messages/inbox.haml +26 -0
  99. data/app/views/my_forum/private_messages/new.haml +21 -0
  100. data/app/views/my_forum/private_messages/show.haml +10 -0
  101. data/app/views/my_forum/shared/_post_preview.haml +15 -0
  102. data/app/views/my_forum/shared/_upload_photo.haml +45 -0
  103. data/app/views/my_forum/shared/post_preview.js.coffee +4 -0
  104. data/app/views/my_forum/topics/_post.haml +29 -0
  105. data/app/views/my_forum/topics/_profile_popover.haml +47 -0
  106. data/app/views/my_forum/topics/_quick_answer.haml +34 -0
  107. data/app/views/my_forum/topics/_topic_header.haml +4 -0
  108. data/app/views/my_forum/topics/_user_info.haml +9 -0
  109. data/app/views/my_forum/topics/new.haml +38 -0
  110. data/app/views/my_forum/topics/show.haml +60 -0
  111. data/app/views/my_forum/user_mailer/custom_email.text.erb +1 -0
  112. data/app/views/my_forum/user_mailer/ping_from_post.haml +8 -0
  113. data/app/views/my_forum/user_mailer/ping_from_post.text.erb +6 -0
  114. data/app/views/my_forum/user_mailer/pm_notification.text.erb +6 -0
  115. data/app/views/my_forum/user_mailer/reset_password_email.haml +1 -0
  116. data/app/views/my_forum/user_mailer/reset_password_email.text.erb +1 -0
  117. data/app/views/my_forum/users/edit.haml +36 -0
  118. data/app/views/my_forum/users/forgot_password.haml +10 -0
  119. data/app/views/my_forum/users/new.haml +14 -0
  120. data/app/views/my_forum/users/signin.haml +14 -0
  121. data/app/views/my_forum/users/signout.haml +0 -0
  122. data/app/views/my_forum/welcome/index.haml +37 -0
  123. data/config/initializers/will_paginate.rb +24 -0
  124. data/config/locales/en.yml +68 -0
  125. data/config/locales/ru.yml +198 -0
  126. data/config/routes.rb +48 -0
  127. data/db/migrate/20141117122725_create_my_forum_forums.rb +12 -0
  128. data/db/migrate/20141117122742_create_my_forum_topics.rb +17 -0
  129. data/db/migrate/20141117122751_create_my_forum_posts.rb +11 -0
  130. data/db/migrate/20141118081021_create_my_forum_categories.rb +8 -0
  131. data/db/migrate/20141118131215_create_my_forum_users.rb +34 -0
  132. data/db/migrate/20141222094522_create_my_forum_roles.rb +10 -0
  133. data/db/migrate/20141222094538_create_my_forum_user_roles.rb +9 -0
  134. data/db/migrate/20150202115250_create_my_forum_log_read_marks.rb +10 -0
  135. data/db/migrate/20150215200453_create_my_forum_user_groups.rb +15 -0
  136. data/db/migrate/20150215204852_create_my_forum_user_group_links.rb +9 -0
  137. data/db/migrate/20150215212443_create_my_forum_category_permissions.rb +9 -0
  138. data/db/migrate/20150227210814_create_my_forum_private_messages.rb +16 -0
  139. data/db/migrate/20151012095554_create_my_forum_images.rb +12 -0
  140. data/db/migrate/20151218135729_add_is_deleted.rb +6 -0
  141. data/db/migrate/20151220121140_create_my_forum_emoticons.rb +10 -0
  142. data/db/migrate/20151221203243_my_forum_rename_user_avatar.rb +5 -0
  143. data/db/migrate/20151221205045_my_forum_change_user_avatar.rb +5 -0
  144. data/db/migrate/20160122202142_add_latest_post_info_for_topic.rb +24 -0
  145. data/db/migrate/20160210130805_add_indexes_for_topics.rb +7 -0
  146. data/db/migrate/20160214085201_add_edited_by_for_post.rb +5 -0
  147. data/lib/my_forum/engine.rb +31 -0
  148. data/lib/my_forum/version.rb +1 -1
  149. data/lib/tasks/my_forum_tasks.rake +155 -4
  150. data/spec/controllers/my_forum/admin/emoticons_controller_spec.rb +7 -0
  151. data/spec/controllers/my_forum/admin/mail_controller_spec.rb +7 -0
  152. data/spec/controllers/my_forum/private_messages_controller_spec.rb +7 -0
  153. data/spec/controllers/my_forum/users_controller_spec.rb +76 -0
  154. data/{test → spec}/dummy/README.rdoc +0 -0
  155. data/{test → spec}/dummy/Rakefile +0 -0
  156. data/{test → spec}/dummy/app/assets/javascripts/application.js +1 -1
  157. data/{app/assets/stylesheets/my_forum → spec/dummy/app/assets/stylesheets}/application.css +1 -1
  158. data/{test → spec}/dummy/app/controllers/application_controller.rb +0 -0
  159. data/{test → spec}/dummy/app/helpers/application_helper.rb +0 -0
  160. data/{test → spec}/dummy/app/views/layouts/application.html.erb +0 -0
  161. data/{test → spec}/dummy/bin/bundle +0 -0
  162. data/{test → spec}/dummy/bin/rails +0 -0
  163. data/{test → spec}/dummy/bin/rake +0 -0
  164. data/{test → spec}/dummy/config/application.rb +0 -0
  165. data/{test → spec}/dummy/config/boot.rb +0 -0
  166. data/{test → spec}/dummy/config/database.yml +0 -0
  167. data/{test → spec}/dummy/config/environment.rb +0 -0
  168. data/{test → spec}/dummy/config/environments/development.rb +0 -0
  169. data/{test → spec}/dummy/config/environments/production.rb +1 -1
  170. data/{test → spec}/dummy/config/environments/test.rb +1 -1
  171. data/{test → spec}/dummy/config/initializers/assets.rb +0 -0
  172. data/{test → spec}/dummy/config/initializers/backtrace_silencers.rb +0 -0
  173. data/{test → spec}/dummy/config/initializers/cookies_serializer.rb +0 -0
  174. data/{test → spec}/dummy/config/initializers/filter_parameter_logging.rb +0 -0
  175. data/{test → spec}/dummy/config/initializers/inflections.rb +0 -0
  176. data/{test → spec}/dummy/config/initializers/mime_types.rb +0 -0
  177. data/{test → spec}/dummy/config/initializers/session_store.rb +0 -0
  178. data/{test → spec}/dummy/config/initializers/wrap_parameters.rb +0 -0
  179. data/{test → spec}/dummy/config/locales/en.yml +0 -0
  180. data/{test → spec}/dummy/config/routes.rb +0 -0
  181. data/{test → spec}/dummy/config/secrets.yml +0 -0
  182. data/{test → spec}/dummy/config.ru +0 -0
  183. data/spec/dummy/db/development.sqlite3 +0 -0
  184. data/spec/dummy/db/schema.rb +159 -0
  185. data/spec/dummy/db/test.sqlite3 +0 -0
  186. data/spec/dummy/log/development.log +12 -0
  187. data/{test → spec}/dummy/public/404.html +0 -0
  188. data/{test → spec}/dummy/public/422.html +0 -0
  189. data/{test → spec}/dummy/public/500.html +0 -0
  190. data/spec/dummy/public/favicon.ico +0 -0
  191. data/spec/helpers/my_forum/posts_helper_spec.rb +24 -0
  192. data/spec/helpers/my_forum/private_messages_helper_spec.rb +17 -0
  193. data/spec/models/my_forum/emoticon_spec.rb +7 -0
  194. data/spec/models/my_forum/private_message_spec.rb +7 -0
  195. data/spec/models/my_forum/user_spec.rb +13 -0
  196. data/spec/rails_helper.rb +52 -0
  197. data/spec/spec_helper.rb +87 -0
  198. metadata +356 -83
  199. data/app/views/layouts/my_forum/application.html.erb +0 -14
  200. data/test/dummy/app/assets/stylesheets/application.css +0 -15
  201. data/test/integration/navigation_test.rb +0 -10
  202. data/test/my_forum_test.rb +0 -7
  203. data/test/test_helper.rb +0 -15
@@ -0,0 +1,22 @@
1
+ .page-header
2
+ %h2= t('.new-role')
3
+
4
+ = form_for @role, url: admin_roles_path do |f|
5
+ .row
6
+ = f.text_field :name, placeholder: t('.role_name')
7
+ .row
8
+ = f.text_field :color
9
+
10
+ -# .row
11
+ -# admin access
12
+ -# .btn-group{ 'data-toggle' => "buttons" }
13
+ -# =f.label :admin_access, class: 'btn btn-success btn-sm active' do
14
+ -# = f.radio_button :admin_access, true
15
+ -# yes
16
+ -# =f.label :admin_access, class: 'btn btn-danger btn-sm' do
17
+ -# = f.radio_button :admin_access, false
18
+ -#  no 
19
+
20
+
21
+
22
+ = f.submit
@@ -0,0 +1,10 @@
1
+ .page-header
2
+ %h2= t('.users')
3
+
4
+ .container-fluid
5
+ .users_count= @users_count
6
+
7
+ .user_groups
8
+ %ul
9
+ - @user_groups.each do |user_group|
10
+ %li= "#{user_group.name} (#{user_group.users.count})"
@@ -0,0 +1,16 @@
1
+ - forum ||= topic.forum
2
+
3
+ .row
4
+ .col-md-12
5
+ - if topic.pinned?
6
+ %i.fa.fa-thumb-tack
7
+ - if topic.unread?(current_user, topic.posts.last)
8
+ .new_topic.label.label-warning= t('.new')
9
+ - if topic.closed?
10
+ %i.fa.fa-lock
11
+
12
+ = link_to topic.name.html_safe, forum_topic_path(forum, topic)
13
+ .row
14
+ .col-md-12.topic_description
15
+ =# topic.description.html_safe
16
+ = t('.author', author: topic.owner.login)
@@ -0,0 +1,29 @@
1
+ = new_topic_button
2
+
3
+ - if current_user
4
+ = link_to t('.mark_all_as_read'), mark_all_as_read_path
5
+
6
+ .container-fluid
7
+ .row.forum-header
8
+ .col-md-1
9
+ .col-md-6=t('.subject')
10
+ .col-md-1=t('.author')
11
+ .col-md-1=t('.answers')
12
+ .col-md-1=t('.views')
13
+ .col-md-2=t('.last_message')
14
+
15
+ .row.topic-list-container
16
+ .box.topic-list
17
+ - if @forum_topics.blank?
18
+ .row.topic-row
19
+ .col-md-12.col-sm-12.text-center= t('.no-topics')
20
+ - else
21
+ - @forum_topics.each do |topic|
22
+ .row.topic-row
23
+ .col-md-7.col-sm-7= render 'topic_subject', topic: topic, forum: @forum
24
+ .col-md-1.col-sm-1= topic.posts.first.user.login rescue '-'
25
+ .col-md-1.col-sm-1= topic.posts_count
26
+ .col-md-1.col-sm-1= topic.views.to_i
27
+ .col-md-2.col-sm-2.info= topic_last_post_info(topic)
28
+
29
+ = will_paginate @forum_topics
@@ -0,0 +1,31 @@
1
+ %h2= t('.edit_post_in', topic_name: @topic.name)
2
+
3
+ #edit-post
4
+ = form_for @post, url: forum_topic_post_path(@forum, @topic, @post, page: params[:page]), role: 'form' do |form|
5
+ .row
6
+ .col-md-12
7
+ .text-editor-buttons{ data: { apply_to: 'post_text' } }
8
+ %div.btn-group
9
+ =link_to '#', class: 'btn btn-default btn-sm' do
10
+ %i{ class: 'fa fa-bold' }
11
+ =link_to '#', class: 'btn btn-default btn-sm' do
12
+ %i{ class: 'fa fa-italic' }
13
+ =link_to '#', class: 'btn btn-default btn-sm' do
14
+ %i{ class: 'fa fa-strikethrough' }
15
+ =link_to '#', class: 'btn btn-default btn-sm' do
16
+ %i{ class: 'fa fa-underline' }
17
+
18
+ %div.btn-group
19
+ =link_to '#', class: 'btn btn-default btn-sm', data: { toggle: 'modal' } do
20
+ %i{ class: 'fa fa-camera-retro' }
21
+
22
+ %div.btn-group.smiles
23
+ - emoticons_list.each do |code, path|
24
+ =link_to '#', class: 'btn btn-default btn-sm smile-past' do
25
+ %img{ src: path, class: 'smile', data: { code: code } }
26
+
27
+ .form-group= form.text_area :text, placeholder: t('.post_text'), class: 'form-control', rows: 10
28
+
29
+ = form.submit class: 'btn '
30
+
31
+ = render partial: 'my_forum/shared/upload_photo', locals: { textarea: 'post_text' }
@@ -0,0 +1,10 @@
1
+ %ul.list-group
2
+ %li.list-group-item
3
+ .badge 0
4
+ = link_to t('.inbox'), private_messages_path
5
+ %li.list-group-item
6
+ .badge 0
7
+ = link_to t('.outbox'), private_messages_path
8
+ %li.list-group-item
9
+ .badge 0
10
+ = link_to t('.deleted'), private_messages_path
@@ -0,0 +1,26 @@
1
+ .container-fluid
2
+ .row
3
+ .col-md-2
4
+ = render partial: 'sidebar'
5
+
6
+ .col-md-10
7
+
8
+ = new_pm_button
9
+
10
+ .panel.panel-default
11
+ .panel-heading= t('.private_messages')
12
+ %table.table
13
+ %thead
14
+ %tr
15
+ %td=t('.date')
16
+ %td=t('.from')
17
+ %td=t('.subject')
18
+ %tbody
19
+ - @private_messages.each do |message|
20
+ %tr
21
+ - html_class = 'unread' if message.unread?
22
+ %td=link_to message.created_at.strftime('%d-%b-%y %H:%M'), private_message_url(message), class: html_class
23
+ %td=link_to message.sender_login, private_message_url(message), class: html_class
24
+ %td=link_to message.subject, private_message_url(message), class: html_class
25
+
26
+ = will_paginate @private_messages
@@ -0,0 +1,21 @@
1
+ .container-fluid
2
+ .row
3
+ .col-md-2
4
+ = render partial: 'sidebar'
5
+
6
+ .col-md-10
7
+ %h2= t('.new_private_message')
8
+
9
+ = errors_for @pm
10
+
11
+ = form_for @pm, url: private_messages_path, role: 'form', autocomplete: 'off' do |form|
12
+ - if params[:reply]
13
+ .form-group= form.text_field :recipient, value: @reply_pm.sender_login, autocomplete: 'off', class: 'subject form-control'
14
+ .form-group= form.text_field :subject, value: @reply_pm.subject ,class: 'subject form-control', placeholder: t('.subject')
15
+ - else
16
+ .form-group= form.text_field :recipient, value: params[:to], class: 'subject form-control autocomplete', placeholder: t('.recipient'), data: { autocomplete_path: autocomplete_users_path }
17
+ .form-group= form.text_field :subject, class: 'subject form-control', placeholder: t('.subject')
18
+
19
+ .form-group= form.text_area :body, class: 'body form-control', placeholder: t('.body')
20
+
21
+ = form.submit t('.send'), class: 'btn btn-primary btn-sm'
@@ -0,0 +1,10 @@
1
+ .container-fluid
2
+ .row
3
+ .col-md-2
4
+ = render partial: 'sidebar'
5
+
6
+ .col-md-10
7
+ = reply_pm_button(@pm)
8
+
9
+ %h3= @pm.subject
10
+ = sanitize format_bbcode @pm.body
@@ -0,0 +1,15 @@
1
+ #modal_post_preview.modal.fade
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ %button.close{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
6
+ %span{ aria_hidden: "true" }
7
+ ×
8
+ %h4.modal-title
9
+ = t('.preview')
10
+ .modal-body
11
+
12
+
13
+ .modal-footer
14
+ %button.btn.btn-default{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
15
+ Close
@@ -0,0 +1,45 @@
1
+ #add_photo.modal.fade
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ %button.close{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
6
+ %span{ aria_hidden: "true" }
7
+ ×
8
+ %h4.modal-title
9
+ = t('.add_new_photo')
10
+ .modal-body
11
+ %p= t('my_forum.attachments.allowed_extensions', ext: upload_allowed_extensions.join(', '))
12
+ = form_for MyForum::Attachment.new, url: attachments_path, multipart: true, remote: true do |f|
13
+ = f.file_field 'file[]', multiple: true, id: 'attachment_files'
14
+
15
+ #loaded-content
16
+
17
+ .modal-footer
18
+ %button.btn.btn-default{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
19
+ Close
20
+
21
+ :coffee
22
+ $('#attachment_files').change ->
23
+ form_data = new FormData()
24
+
25
+ files_count = $('#attachment_files').prop('files').length
26
+ form_data.append('files[]', $('#attachment_files').prop('files')[c]) for c in [0...files_count]
27
+
28
+ $.ajax({
29
+ url: "#{attachments_path}"
30
+ dataType: 'html'
31
+ cache: false
32
+ contentType: false
33
+ processData: false
34
+ data: form_data
35
+ type: 'post',
36
+ success: (data, textStatus, jqXHR) ->
37
+ response = $.parseJSON(data)
38
+ bbcode_attachments = ''
39
+ bbcode_attachments += ('[attachment=' + id + '] \n') for id in response.attachments
40
+ text = $('##{textarea}').val()
41
+ $('##{textarea}').val(text + '\n' + bbcode_attachments + '\n')
42
+ $('#loaded-content').html('#{t('my_forum.successfull_aploaded')}')
43
+ $('#add_photo').modal('hide')
44
+ $('#attachment_files').val('')
45
+ })
@@ -0,0 +1,4 @@
1
+ coffee:
2
+ $(document).ready ->
3
+ $('#modal_post_preview').find('.modal-body').html("<%= j render(html: preview_html.html_safe) %>")
4
+ $('#modal_post_preview').modal()
@@ -0,0 +1,29 @@
1
+ - post_counter += 1
2
+
3
+ .row.post-header{ id: "post_number_#{post_counter}"}
4
+ .col-md-9
5
+ %span.post_from_user_login
6
+ - user_login = post.user.try(:login)
7
+ %span.user_profile_popover{ title: user_login, data: { toggle: 'popover', content: (render partial: 'profile_popover', locals: { user: post.user })}}
8
+ = online_user_marker(user_login)
9
+ %span.login= user_login
10
+ .col-md-3.post_number.text-right
11
+ - # TODO optimize condition!
12
+ - if current_user and current_user.is_admin?
13
+ =link_to t('.edit'), edit_forum_topic_post_path(@forum, post.topic, post, page: params[:page]), class: 'btn btn-xs btn-info', data: { confirm: "Are you sure?" }
14
+ - if post.topic.posts.first != post
15
+ =link_to t('.delete'), forum_topic_post_path(@forum, post.topic, post), class: 'btn btn-xs btn-danger', method: :delete, data: { confirm: "Are you sure?" }
16
+ %button.btn.btn-xs.btn-warning.quote-post{ data: { post_id: post.id } }
17
+ =t('.quote')
18
+ =link_to t('.number', post_number: post_counter), forum_topic_path(@forum, post.topic, show_post: post_counter)
19
+ .row
20
+ .col-md-2
21
+ = render 'user_info', post: post
22
+ .col-md-10
23
+ .created_at= t('.sent', datetime: time(post.created_at))
24
+ #post_container{ id: post.id }
25
+ = sanitize format_post_text(post)
26
+
27
+ -if post.edited_by
28
+ .row
29
+ .edited_by.text-right= t('.edited_by', login: post.edited_by, date: time(post.updated_at))
@@ -0,0 +1,47 @@
1
+ .profile-popover
2
+ .row.col-md-12
3
+ - unless current_user
4
+ %p.text-center=t('my_forum.profile_popover.only_for_registereg_users')
5
+ - else
6
+ .row.col-md-6
7
+ .row
8
+ .col-sm-6
9
+ %strong= t('my_forum.profile_popover.posts_count')
10
+ .col-sm-6
11
+ = user.posts_count
12
+ .row
13
+ .col-sm-6
14
+ %strong= t('my_forum.profile_popover.registered_at')
15
+ .col-sm-6
16
+ = time(user.created_at)
17
+ .row
18
+ .col-sm-6
19
+ %strong= t('my_forum.profile_popover.status')
20
+ .col-sm-6
21
+ - is_online = is_online_user?(user.login)
22
+ = is_online ? t('my_forum.profile_popover.online') : t('my_forum.profile_popover.offline')
23
+ - unless is_online
24
+ .row
25
+ .col-sm-6
26
+ %strong= t('my_forum.profile_popover.last_online')
27
+ .col-sm-6
28
+ = time(user.updated_at)
29
+ .row.pm
30
+ .col-sm-12= link_to t('my_forum.profile_popover.write_pm'), new_private_message_path(to: user.login), class: 'btn btn-xs btn-warning'
31
+
32
+ .row.col-md-6.second_row
33
+ .row
34
+ .col-sm-5
35
+ %strong= t('my_forum.profile_popover.user_name')
36
+ .col-sm-7
37
+ = user.real_name || '-'
38
+ .row
39
+ .col-sm-5
40
+ %strong= t('my_forum.profile_popover.phone')
41
+ .col-sm-7
42
+ = user.phone || '-'
43
+ .row
44
+ .col-sm-5
45
+ %strong= t('my_forum.profile_popover.car_info')
46
+ .col-sm-7
47
+ = user.car_info || '-'
@@ -0,0 +1,34 @@
1
+ .row
2
+ .col-md-10.col-md-offset-1
3
+ .text-editor-buttons{ data: { apply_to: 'quick_answer_textarea' } }
4
+ %div.btn-group
5
+ =link_to '#', class: 'btn btn-default btn-sm' do
6
+ %i{ class: 'fa fa-bold' }
7
+ =link_to '#', class: 'btn btn-default btn-sm' do
8
+ %i{ class: 'fa fa-italic' }
9
+ =link_to '#', class: 'btn btn-default btn-sm' do
10
+ %i{ class: 'fa fa-strikethrough' }
11
+ =link_to '#', class: 'btn btn-default btn-sm' do
12
+ %i{ class: 'fa fa-underline' }
13
+
14
+ %div.btn-group
15
+ =link_to '#', class: 'btn btn-default btn-sm' do
16
+ %i{ class: 'fa fa-camera-retro' }
17
+
18
+ %div.btn-group.smiles
19
+ - emoticons_list.each do |code, path|
20
+ =link_to '#', class: 'btn btn-default btn-sm smile-past' do
21
+ %img{ src: path, class: 'smile', data: { code: code } }
22
+
23
+
24
+
25
+
26
+ = form_for @new_post, url: forum_topic_posts_path(forum, topic), role: 'form' do |form|
27
+ .form-group= form.text_area :text, class: 'form-control quick-answer user_autocomplete', id: 'quick_answer_textarea'
28
+
29
+ .pull-right
30
+ %button#post_preview{ class: 'btn btn-primary', data: { elm_preview: 'quick_answer_textarea ' }}= t('.quick_answer_preview')
31
+ = form.submit t('.quick_answer'), class: 'btn btn-primary'
32
+
33
+ = render partial: 'my_forum/shared/upload_photo', locals: { textarea: 'quick_answer_textarea' }
34
+ = render partial: 'my_forum/shared/post_preview'
@@ -0,0 +1,4 @@
1
+ .row.topic-header
2
+ .col-md-12
3
+ %h2= topic.name.html_safe
4
+ .info= "#{topic.info[:author]}, #{time(topic.info[:created])}"
@@ -0,0 +1,9 @@
1
+ - user = post.user
2
+ .row
3
+ .col-md-12.user-title= user_title(user)
4
+ .row
5
+ .col-md-12.user-avatar= user_avatar(user)
6
+ .row
7
+ .col-md-12.user-posts-count= t('.user_posts_count', count: user_posts_count(user))
8
+ .row
9
+ .col-md-12.user-reg-date= time(user.created_at)
@@ -0,0 +1,38 @@
1
+ %h2= t('.create_new_topic_in', topic_name: @forum.name)
2
+
3
+
4
+
5
+ = form_for @topic, url: forum_topics_path, role: 'form' do |form|
6
+ .form-group= form.text_field :name, class: 'name form-control', placeholder: t('.name')
7
+ .form-group= form.text_field :description, class: 'description form-control', placeholder: t('.description')
8
+
9
+ %br
10
+
11
+ .row
12
+ .col-md-12
13
+ .text-editor-buttons{ data: { apply_to: 'post_text' } }
14
+ %div.btn-group
15
+ =link_to '#', class: 'btn btn-default btn-sm' do
16
+ %i{ class: 'fa fa-bold' }
17
+ =link_to '#', class: 'btn btn-default btn-sm' do
18
+ %i{ class: 'fa fa-italic' }
19
+ =link_to '#', class: 'btn btn-default btn-sm' do
20
+ %i{ class: 'fa fa-strikethrough' }
21
+ =link_to '#', class: 'btn btn-default btn-sm' do
22
+ %i{ class: 'fa fa-underline' }
23
+
24
+ %div.btn-group
25
+ =link_to '#', class: 'btn btn-default btn-sm', data: { toggle: 'modal' } do
26
+ %i{ class: 'fa fa-camera-retro' }
27
+
28
+ %div.btn-group.smiles
29
+ - emoticons_list.each do |code, path|
30
+ =link_to '#', class: 'btn btn-default btn-sm smile-past' do
31
+ %img{ src: path, class: 'smile', data: { code: code } }
32
+
33
+ = fields_for :post do |post_form|
34
+ .form-group= post_form.text_area :text, placeholder: t('.post_text'), class: 'form-control user_autocomplete', rows: 10
35
+
36
+ = form.submit t('.create'), class: 'btn btn-primary btn-sm'
37
+
38
+ = render partial: 'my_forum/shared/upload_photo', locals: { textarea: 'post_text' }
@@ -0,0 +1,60 @@
1
+ .container-fluid
2
+ .row
3
+ #topic_header.col-md-8
4
+ = render 'topic_header', topic: @topic
5
+ .col-md-4.text-right
6
+ = will_paginate @topic_posts, inner_window: 1, outer_window: 1
7
+ .row
8
+ .col-md-12
9
+ #posts
10
+ .row
11
+ .col-md-12.topic_posts_info
12
+ =t('.messages_in_topic', count: @topic.posts.count)
13
+ .row.post-list-container
14
+ .box
15
+ = render partial: 'post', collection: @topic_posts
16
+
17
+ .row{ id: 'pagination' }
18
+ = will_paginate @topic_posts
19
+
20
+ - if is_admin?
21
+ .row
22
+ - options = { method: :patch, data: { confirm: t('.are_you_sure?') } }
23
+
24
+ - @topic.pinned? ? options.merge!(class: 'btn btn-sm btn-info') : options.merge!(class: 'btn btn-sm btn-warning')
25
+ = link_to (@topic.pinned? ? t('.unpin_topic') : t('.pin_topic')), forum_topic_pin_path(@topic.forum, @topic), options
26
+
27
+ - @topic.closed? ? options.merge!(class: 'btn btn-sm btn-info') : options.merge!(class: 'btn btn-sm btn-danger')
28
+ = link_to (@topic.closed? ? t('.unlock_topic') : t('.lock_topic')), forum_topic_close_path(@topic.forum, @topic), options
29
+
30
+ - options.merge!(class: 'btn btn-sm btn-danger')
31
+ = link_to t('.delete_topic'), forum_topic_delete_path(@topic.forum, @topic), options
32
+
33
+ - if can_quick_answer?(@topic)
34
+ #quick_answer
35
+ - if @topic.closed?
36
+ .alert.alert-danger=t('.warning_closed_topic')
37
+ = render 'quick_answer', forum: @forum, topic: @topic
38
+
39
+ :coffee
40
+ $(document).on 'ready page:load', ->
41
+
42
+ $('.user_profile_popover').popover(
43
+ trigger: 'click'
44
+ html: true
45
+ delay:
46
+ 'show': 100
47
+ 'hide': 200
48
+ ).on('mouseenter', ->
49
+ _this = this
50
+ $(this).popover("show")
51
+ $(this).siblings(".popover").on('mouseleave', ->
52
+ $(_this).popover('hide')
53
+ )
54
+ )
55
+ .on('mouseleave', ->
56
+ _this = this
57
+ setTimeout (-> $(_this).popover("hide") if !$(".popover:hover").length ), 300
58
+ )
59
+
60
+ $('body').scrollTo('#pagination')
@@ -0,0 +1 @@
1
+ <%= @message %>
@@ -0,0 +1,8 @@
1
+ Привет!
2
+
3
+ Тебя упоминули в теме
4
+ = link_to @topic_name, forum_topic_url(@topic.forum_id, @topic), page: @page
5
+
6
+ %br
7
+ %br
8
+ http://vaz.od.ua
@@ -0,0 +1,6 @@
1
+ Привет!
2
+
3
+ Тебя упоминули в теме '<%= @topic_name %>'!
4
+
5
+ ----
6
+ http://vaz.od.ua
@@ -0,0 +1,6 @@
1
+ Привет!
2
+
3
+ Пользователь <%= @sender.login %> отправил тебе личное сообщение!
4
+
5
+ ----
6
+ http://vaz.od.ua
@@ -0,0 +1 @@
1
+ ="Your new password is: #{@new_password}"
@@ -0,0 +1 @@
1
+ Your new password is: <%= @new_password %>
@@ -0,0 +1,36 @@
1
+ %h2= t('.edit_profile')
2
+
3
+ .row
4
+ .col-md-4
5
+
6
+ = errors_for(current_user)
7
+
8
+ = form_for current_user, url: user_path(current_user), role: 'form' do |form|
9
+ .form-group= form.text_field :email, class: 'name form-control', placeholder: t('.email')
10
+ .form-group= form.password_field :password, value: '', class: 'description form-control', placeholder: t('.current_password')
11
+ .form-group= form.text_field :new_password, value: '', class: 'description form-control', placeholder: t('.new_password')
12
+
13
+ = form.submit t('.update'), class: 'btn btn-primary btn-sm'
14
+
15
+ .col-md-5.col-md-offset-1
16
+ .row.col-sm-4
17
+ .thumbnail
18
+ = user_avatar(current_user)
19
+ .row.col-sm-7.col-sm-offset-1
20
+ .row
21
+ %strong=t('.avatar')
22
+ = form_for current_user, url: user_avatar_update_path(current_user), role: 'form', multipart: true do |form|
23
+ .row
24
+ %p= t('.avatar_upload_description')
25
+ .row= form.file_field :avatar
26
+ .row= form.text_field :avatar_url, placeholder: 'http://...'
27
+ .row= form.submit t('.update_avatar'), class: 'btn btn-primary btn-sm submit_update_avatar'
28
+ %br
29
+ %h2= t('.edit_additional_info')
30
+ .row
31
+ .col-md-4
32
+ = form_for current_user, url: user_path(current_user), role: 'form' do |form|
33
+ - additional_info_attrs.each do |attr|
34
+ .form-group= form.text_field attr, value: current_user.send(attr), class: 'name form-control', placeholder: t("my_forum.additional_info.#{attr.to_s}")
35
+
36
+ = form.submit t('.update'), class: 'btn btn-primary btn-sm'
@@ -0,0 +1,10 @@
1
+ #sign_in.container-fluid
2
+ .col-md-6.col-md-offset-3.text-center
3
+ %h2= t('.forgot_password_head')
4
+
5
+ =form_for :user, :url => forgot_password_path do |f|
6
+ =f.label :email, t('.email')
7
+ =f.text_field :email
8
+
9
+ .center
10
+ =f.submit t('.reset_password'), class: 'btn btn-sm btn-primary'
@@ -0,0 +1,14 @@
1
+ .container-fluid
2
+ .col-md-6.col-md-offset-3.text-center
3
+
4
+ %h2= t('.register_new_user')
5
+
6
+ = errors_for @user
7
+
8
+ = form_for @user, url: users_path, role: 'form' do |form|
9
+ .form-group= form.text_field :login, class: 'name form-control', placeholder: t('.login')
10
+ .form-group= form.text_field :email, class: 'description form-control', placeholder: t('.email')
11
+ .form-group= form.text_field :password, class: 'description form-control', placeholder: t('.password')
12
+
13
+
14
+ = form.submit t('.register'), class: 'btn btn-primary btn-sm'
@@ -0,0 +1,14 @@
1
+ #sign_in.container-fluid
2
+ .col-md-6.col-md-offset-3.text-center
3
+ %h2= t('.sign_in_head')
4
+ =form_for :user, :url => signin_path do |f|
5
+ =f.label :login, t('.login')
6
+ =f.text_field :login
7
+
8
+ =f.label :password, t('.password')
9
+ =f.password_field :password
10
+
11
+ .center
12
+ =f.submit t('.enter'), class: 'btn btn-sm btn-primary'
13
+ .center
14
+ =link_to t('.forgot_password'), forgot_password_path
File without changes
@@ -0,0 +1,37 @@
1
+ .container-fluid
2
+ - @forum_categories.each do |category|
3
+ .row.category-header
4
+ .col-md-12= category.name
5
+
6
+ .row.category-forums
7
+ .col-md-12.category-forums-container
8
+ .box
9
+ - category.forums.each do |forum|
10
+ .row.forum-row
11
+ .col-md-1.col-sm-1= forum_status_img(forum)
12
+ .col-md-6.col-sm-6= forum_name(forum)
13
+ .col-md-2.col-sm-2.forum-info= forum_stat(forum)
14
+ .col-md-3.col-sm-3.forum-last-message-info= forum_last_message_info(forum)
15
+
16
+ - if @recent_posts
17
+ #recent_topics
18
+ %table.table
19
+ %caption= t('.recent_topics')
20
+ %thead
21
+ %tr
22
+ %th= t('.topic_name')
23
+ %th= t('.last_message_from')
24
+ %th= t('.date')
25
+ %tbody
26
+ -@recent_posts.each do |post|
27
+ %tr
28
+ %td= link_to post.topic_name, forum_topic_path(post.forum, post.topic_id)
29
+ %td= post.user.login
30
+ %td= forum_time(post.updated_at)
31
+
32
+ #online_users.well
33
+ = t('.users_online')
34
+ = online_users
35
+ %br
36
+ = t('.today_online')
37
+ = today_was_users