my_forum 0.0.1.beta2 → 0.0.1.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +9 -1
  3. data/app/assets/images/my_forum/smiles/acute.gif +0 -0
  4. data/app/assets/images/my_forum/smiles/aggressive.gif +0 -0
  5. data/app/assets/images/my_forum/smiles/beee.gif +0 -0
  6. data/app/assets/images/my_forum/smiles/blum2.gif +0 -0
  7. data/app/assets/images/my_forum/smiles/blush2.gif +0 -0
  8. data/app/assets/images/my_forum/smiles/cray.gif +0 -0
  9. data/app/assets/images/my_forum/smiles/dirol.gif +0 -0
  10. data/app/assets/images/my_forum/smiles/download.gif +0 -0
  11. data/app/assets/images/my_forum/smiles/i-m_so_happy.gif +0 -0
  12. data/app/assets/images/my_forum/smiles/ireful2.gif +0 -0
  13. data/app/assets/javascripts/my_forum/application.js +3 -0
  14. data/app/assets/javascripts/my_forum/jquery.scrollTo.min.js +7 -0
  15. data/app/assets/javascripts/my_forum/jquery.selection.js +354 -0
  16. data/app/assets/javascripts/my_forum/my_forum.js.coffee +38 -0
  17. data/app/assets/stylesheets/my_forum/application.css.scss +12 -0
  18. data/app/assets/stylesheets/my_forum/posts.css.scss +5 -0
  19. data/app/assets/stylesheets/my_forum/topics.css.scss +4 -0
  20. data/app/assets/stylesheets/my_forum/welcome.css.scss +1 -0
  21. data/app/controllers/my_forum/application_controller.rb +7 -0
  22. data/app/controllers/my_forum/attachments_controller.rb +23 -0
  23. data/app/controllers/my_forum/forums_controller.rb +1 -1
  24. data/app/controllers/my_forum/images_controller.rb +7 -0
  25. data/app/controllers/my_forum/posts_controller.rb +15 -1
  26. data/app/controllers/my_forum/private_messages_controller.rb +1 -1
  27. data/app/controllers/my_forum/topics_controller.rb +3 -0
  28. data/app/helpers/my_forum/posts_helper.rb +15 -6
  29. data/app/helpers/my_forum/users_helper.rb +2 -0
  30. data/app/models/my_forum/attachment.rb +8 -0
  31. data/app/models/my_forum/avatar.rb +4 -0
  32. data/app/models/my_forum/image.rb +5 -0
  33. data/app/models/my_forum/post.rb +2 -0
  34. data/app/models/my_forum/topic.rb +10 -9
  35. data/app/models/my_forum/user.rb +1 -0
  36. data/app/views/layouts/my_forum/_user_navbar.html.haml +1 -0
  37. data/app/views/my_forum/forums/_topic_subject.html.haml +2 -2
  38. data/app/views/my_forum/private_messages/inbox.haml +4 -2
  39. data/app/views/my_forum/topics/_post.haml +6 -2
  40. data/app/views/my_forum/topics/_quick_answer.haml +80 -2
  41. data/app/views/my_forum/topics/show.haml +11 -3
  42. data/config/locales/ru.yml +2 -0
  43. data/config/routes.rb +5 -0
  44. data/db/migrate/20141117122751_create_my_forum_posts.rb +1 -1
  45. data/db/migrate/20141118131215_create_my_forum_users.rb +6 -5
  46. data/db/migrate/20151012095554_create_my_forum_images.rb +12 -0
  47. data/lib/my_forum/engine.rb +1 -1
  48. data/lib/my_forum/version.rb +1 -1
  49. data/lib/tasks/my_forum_tasks.rake +131 -4
  50. data/spec/controllers/my_forum/attachments_controller_spec.rb +7 -0
  51. data/spec/controllers/my_forum/images_controller_controller_spec.rb +7 -0
  52. data/spec/models/my_forum/image_spec.rb +7 -0
  53. metadata +40 -2
@@ -8,6 +8,8 @@ module MyForum
8
8
 
9
9
  # Display user avatar
10
10
  def user_avatar(user)
11
+ return image_tag(user.avatar, class: 'user-avatar') unless user.avatar.blank?
12
+
11
13
  image_tag('blank_avatar.png', class: 'user-avatar')
12
14
  end
13
15
 
@@ -0,0 +1,8 @@
1
+ module MyForum
2
+ class Attachment < Image
3
+ belongs_to :user, class_name: 'MyForum::User'
4
+ belongs_to :post, class_name: 'MyForum::Post'
5
+
6
+ UPLOAD_PATH = File.join(Rails.public_path, 'uploads', 'attachments')
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ module MyForum
2
+ class Avatar < Image
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module MyForum
2
+ class Image < ActiveRecord::Base
3
+ belongs_to :user
4
+ end
5
+ end
@@ -5,6 +5,8 @@ module MyForum
5
5
 
6
6
  after_create :update_topic_latest_post
7
7
 
8
+ PER_PAGE = 15
9
+
8
10
  private
9
11
 
10
12
  def update_topic_latest_post
@@ -1,7 +1,7 @@
1
1
  module MyForum
2
2
  class Topic < ActiveRecord::Base
3
- has_many :posts, :counter_cache => true, dependent: :destroy
4
- belongs_to :forum, :counter_cache => true
3
+ has_many :posts, counter_cache: true, dependent: :destroy
4
+ belongs_to :forum, counter_cache: true
5
5
  belongs_to :user
6
6
 
7
7
  def info
@@ -16,18 +16,19 @@ module MyForum
16
16
  end
17
17
 
18
18
  def unread?(current_user, last_post)
19
- return true unless current_user
20
-
21
- log = LogReadMark.where(user_id: current_user.id, topic_id: self.id, post_id: last_post.id).count
22
- log >= 1 ? false : true
19
+ return false unless current_user
20
+ !LogReadMark.where(user_id: current_user.id, topic_id: self.id, post_id: last_post.id).present?
23
21
  end
24
22
 
25
- def mark_as_read(current_user, last_topic)
23
+ def mark_as_read(current_user, last_post)
26
24
  return true unless current_user
27
25
 
28
26
  log = LogReadMark.find_or_create_by(user_id: current_user.id, topic_id: self.id)
29
- log.post_id = last_topic.id
30
- log.save
27
+
28
+ if last_post.id.to_i > log.post_id.to_i
29
+ log.post_id = last_post.id
30
+ log.save
31
+ end
31
32
  end
32
33
  end
33
34
  end
@@ -3,6 +3,7 @@ module MyForum
3
3
  require 'digest'
4
4
 
5
5
  has_many :posts, class_name: 'MyForum::Post'
6
+ has_many :attachments
6
7
  has_many :user_roles
7
8
  has_many :roles, through: :user_roles
8
9
  has_many :user_group_links
@@ -1,5 +1,6 @@
1
1
  .col-md-6
2
2
  = "#{t('.welcome_to_forum')}, #{current_user.login}"
3
+ = current_user.id if Rails.env.development?
3
4
 
4
5
  .col-md-6
5
6
  .btn-group.pull-right{ role: 'group' }
@@ -11,5 +11,5 @@
11
11
  = link_to topic.name.html_safe, forum_topic_path(forum, topic)
12
12
  .row
13
13
  .col-md-12.topic_description
14
- =topic.description.html_safe
15
- =# t('.author', author: topic.owner.login)
14
+ =# topic.description.html_safe
15
+ = t('.author', author: topic.owner.login)
@@ -19,6 +19,8 @@
19
19
  - @private_messages.each do |message|
20
20
  %tr
21
21
  - html_class = 'unread' if message.unread?
22
- %td=link_to message.created_at, private_message_url(message), class: html_class
22
+ %td=link_to message.created_at.strftime('%d-%b-%y %H:%M'), private_message_url(message), class: html_class
23
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
24
+ %td=link_to message.subject, private_message_url(message), class: html_class
25
+
26
+ = will_paginate @private_messages
@@ -1,8 +1,12 @@
1
- .row.post-header
2
- .col-md-12.post_from_user_login
1
+ - post_counter += 1
2
+
3
+ .row.post-header{ id: "post_number_#{post_counter}"}
4
+ .col-md-10.post_from_user_login
3
5
  - user_login = post.user.try(:login)
4
6
  = online_user_marker(user_login)
5
7
  = user_login
8
+ .col-md-1.post_number.pull-right
9
+ =link_to t('.number', post_number: post_counter), forum_topic_path(@forum, post.topic, show_post: post_counter)
6
10
  .row
7
11
  .col-md-2
8
12
  = render 'user_info', post: post
@@ -1,8 +1,86 @@
1
1
  .row
2
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-align-left' }
17
+ -# =link_to '#', class: 'btn btn-default btn-sm' do
18
+ -# %i{ class: 'fa fa-align-center' }
19
+ -# =link_to '#', class: 'btn btn-default btn-sm' do
20
+ -# %i{ class: 'fa fa-align-right' }
21
+ -# =link_to '#', class: 'btn btn-default btn-sm' do
22
+ -# %i{ class: 'fa fa-align-justify' }
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
+ =link_to '#', class: 'btn btn-default btn-sm' do
29
+ %i{ class: 'fa fa-video-camera' }
30
+ =link_to '#', class: 'btn btn-default btn-sm' do
31
+ %i{ class: 'fa fa-link' }
32
+
33
+ %div.btn-group.smiles
34
+ - smiles = %w(acute aggressive beee blum2 blush2 cray dirol download i-m_so_happy ireful2)
35
+ - smiles.each do |smile_file|
36
+ =link_to '#', class: 'btn btn-default btn-sm' do
37
+ %img{ src: asset_path("my_forum/smiles/#{smile_file}.gif"), class: 'smile' }
38
+
3
39
  = form_for @new_post, url: forum_topic_posts_path(forum, topic), role: 'form' do |form|
4
- .form-group= form.text_area :text, class: 'form-control'
40
+ .form-group= form.text_area :text, class: 'form-control quick-answer', id: 'quick_answer_textarea'
5
41
 
6
42
  .pull-right
7
43
  = form.submit t('.quick_answer'), class: 'btn btn-primary'
8
- = link_to t('.advanced_answer'), '#', class: 'btn btn-primary'
44
+ =# link_to t('.advanced_answer'), '#', class: 'btn btn-primary'
45
+
46
+
47
+ #add_photo.modal.fade
48
+ .modal-dialog
49
+ .modal-content
50
+ .modal-header
51
+ %button.close{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
52
+ %span{ aria_hidden: "true" }
53
+ &times;
54
+ %h4.modal-title
55
+ = t('.add_new_photo')
56
+ .modal-body
57
+ = form_for MyForum::Attachment.new, url: attachments_path, multipart: true, remote: true do |f|
58
+ = f.file_field :file
59
+
60
+ #loaded-content
61
+
62
+ :coffee
63
+ $('#attachment_file').change ->
64
+ file_data = $('#attachment_file').prop('files')[0]
65
+ form_data = new FormData()
66
+ form_data.append('file', file_data)
67
+
68
+ $.ajax({
69
+ url: "#{attachments_path}"
70
+ dataType: 'html'
71
+ cache: false
72
+ contentType: false
73
+ processData: false
74
+ data: form_data
75
+ type: 'post',
76
+ success: (data, textStatus, jqXHR) ->
77
+ response = $.parseJSON(data)
78
+ $('#quick_answer_textarea').append('[attachment=' + response.attachment_id + ']')
79
+ })
80
+
81
+
82
+ .modal-footer
83
+ %button.btn.btn-default{ type: 'button', aria_label: 'Close', data: { dismiss: 'modal' } }
84
+ Close
85
+ %button.btn.btn-primary{ type: 'button' }
86
+ Save changes
@@ -11,11 +11,19 @@
11
11
  =t('.messages_in_topic', count: @topic.posts.count)
12
12
  .row.post-list-container
13
13
  .box
14
- - @topic_posts.each do |post|
15
- = render 'post', post: post
14
+ = render partial: 'post', collection: @topic_posts
16
15
 
17
- = will_paginate @topic_posts
16
+ .row
17
+ = will_paginate @topic_posts
18
18
 
19
19
  - if can_quick_answer?(@topic)
20
20
  #quick_answer
21
21
  = render 'quick_answer', forum: @forum, topic: @topic
22
+
23
+ :coffee
24
+ $(document).on 'ready page:load', ->
25
+ container = $('body')
26
+ scroll_to = $('post_number_' + "#{params[:show_post]}")
27
+ scroll_to = 'post_number_' + "#{params[:show_post]}"
28
+
29
+ $('body').scrollTo(scroll_to);
@@ -63,6 +63,7 @@ ru:
63
63
  advanced_answer: 'Расширенный ответ'
64
64
  post:
65
65
  sent: "Отправленно: %{datetime}"
66
+ number: "Сообщение #%{post_number}"
66
67
 
67
68
  users:
68
69
  signin:
@@ -116,6 +117,7 @@ ru:
116
117
  will_paginate:
117
118
  previous_label: 'Назад'
118
119
  next_label: 'Вперед'
120
+ page_gap: ''
119
121
 
120
122
 
121
123
  activerecord:
data/config/routes.rb CHANGED
@@ -8,11 +8,16 @@ MyForum::Engine.routes.draw do
8
8
  match 'unread_topics', to: 'forums#unread_topics', via: [:get], as: :unread_topics
9
9
  match 'mark_all_as_read', to: 'forums#mark_all_as_read', via: [:get], as: :mark_all_as_read
10
10
 
11
+ resources :images
12
+ resources :avatars
13
+ resources :attachments
14
+
11
15
  resources :users do
12
16
  collection do
13
17
  get :autocomplete
14
18
  end
15
19
  end
20
+
16
21
  resources :private_messages
17
22
 
18
23
  resources :forums, only: [:index, :show] do
@@ -4,7 +4,7 @@ class CreateMyForumPosts < ActiveRecord::Migration
4
4
  t.integer :user_id
5
5
  t.integer :topic_id
6
6
  t.integer :forum_id
7
- t.text :text
7
+ t.text :text, :limit => 4294967295
8
8
  t.timestamps null: false
9
9
  end
10
10
  end
@@ -7,17 +7,18 @@ class CreateMyForumUsers < ActiveRecord::Migration
7
7
  t.string :real_name
8
8
  t.integer :gender
9
9
  t.date :birthdate
10
- t.string :signature
10
+ t.text :signature
11
11
  t.string :avatar
12
12
  t.string :location
13
13
  t.string :user_ip
14
14
  t.text :additional_info
15
15
  t.string :email
16
16
  t.integer :posts_count
17
- t.boolean :is_admin, default: false
18
- t.boolean :is_moderator, default: false
19
- t.boolean :is_deleted, default: false
20
- t.boolean :permanently_banned, default: false
17
+ t.boolean :activated, default: false
18
+ t.boolean :is_admin, default: false
19
+ t.boolean :is_moderator, default: false
20
+ t.boolean :is_deleted, default: false
21
+ t.boolean :permanently_banned, default: false
21
22
  t.timestamps null: false
22
23
  t.timestamp :last_logged_in
23
24
  end
@@ -0,0 +1,12 @@
1
+ class CreateMyForumImages < ActiveRecord::Migration
2
+ def change
3
+ create_table :my_forum_images do |t|
4
+ t.integer :user_id
5
+ t.integer :post_id
6
+ t.string :file_name
7
+ t.integer :file_size
8
+ t.string :type
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -2,7 +2,7 @@ module MyForum
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace MyForum
4
4
 
5
- require "jquery-rails"
5
+ require 'jquery-rails'
6
6
  require 'bootstrap-sass'
7
7
 
8
8
  config.generators do |g|
@@ -1,3 +1,3 @@
1
1
  module MyForum
2
- VERSION = "0.0.1.beta2"
2
+ VERSION = "0.0.1.beta3"
3
3
  end
@@ -1,4 +1,131 @@
1
- # desc "Explaining what the task does"
2
- # task :my_forum do
3
- # # Task goes here
4
- # end
1
+ namespace :my_forum do
2
+ namespace :import do
3
+ namespace :smf do
4
+
5
+ $connection = Mysql2::Client.new Rails.configuration.database_configuration['smf_import']
6
+
7
+ desc "Import Boards"
8
+ task boards: :environment do
9
+ MyForum::Category.delete_all
10
+ MyForum::Forum.delete_all
11
+
12
+ sql = <<-SQL
13
+ SELECT
14
+ `smf_categories`.`name` AS category_name,
15
+ `smf_boards`.`name` AS board_name,
16
+ `smf_boards`.`description` AS board_description
17
+ FROM smf_boards
18
+ INNER JOIN `smf_categories` ON `smf_boards`.`id_cat` = `smf_categories`.`id_cat`
19
+ SQL
20
+
21
+ result = $connection.query sql
22
+ result.each do |row|
23
+ category = MyForum::Category.find_or_create_by(name: row['category_name'])
24
+ category.forums.create(name: row['board_name'], description: row['board_description'])
25
+ end
26
+ end
27
+
28
+ desc "Import Users"
29
+ task users: :environment do
30
+ MyForum::User.destroy_all
31
+
32
+ sql = "SELECT member_name, date_registered, real_name, email_address, personal_text, birthdate, website_title, website_url, signature, avatar, is_activated FROM smf_members;"
33
+ result = $connection.query sql
34
+ result.each do |row|
35
+ begin
36
+ date_registered = Time.at(row['date_registered'].to_i) rescue nil
37
+ user = MyForum::User.create!(
38
+ login: row['member_name'],
39
+ email: row['email_address'],
40
+ real_name: row['real_name'],
41
+ birthdate: row['birthdate'],
42
+ signature: row['signature'],
43
+ avatar: row['avatar'],
44
+ created_at: date_registered,
45
+ additional_info: {
46
+ personal_text: row['personal_text'],
47
+ website_title: row['website_title'],
48
+ website_url: row['website_url'],
49
+ is_activated: row['is_activated']
50
+ })
51
+ rescue => e
52
+ print e
53
+ end
54
+ end
55
+ end
56
+
57
+ desc "Import Topics and Posts"
58
+ task topics: :environment do
59
+ MyForum::Topic.delete_all
60
+ MyForum::Post.delete_all
61
+
62
+ sql = <<-SQL
63
+ SELECT
64
+ `smf_boards`.`name` AS board_name, `smf_messages`.`poster_email`, `smf_messages`.`poster_name`, `smf_messages`.`body`,
65
+ `smf_messages`.`subject`, `smf_messages`.`poster_time`, `smf_messages`.`id_topic`
66
+ FROM `smf_messages`
67
+ INNER JOIN `smf_boards` ON `smf_messages`.`id_board` = `smf_boards`.`id_board`
68
+ ORDER BY `id_msg` ASC, `id_topic` ASC;
69
+ SQL
70
+ result = $connection.query sql
71
+ result.each do |row|
72
+ begin
73
+ user = MyForum::User.find_by_email(row['poster_email']) || MyForum::User.find_by_login(row['poster_name'])
74
+ user = MyForum::User.create!(login: row['poster_name'], email: row['poster_email'], is_deleted: true) unless user
75
+
76
+ forum = MyForum::Forum.find_or_create_by(name: row['board_name'])
77
+
78
+ # smf does not uses description field, so i use it temponary while import process
79
+ unless topic = MyForum::Topic.where(description: row['id_topic']).first
80
+ topic = forum.topics.create!(name: row['subject'], description: row['id_topic'])
81
+ end
82
+
83
+ post_time = Time.at(row['poster_time'].to_i)
84
+ topic.posts.create!(user: user, text: row['body'], forum_id: forum.id, created_at: post_time, updated_at: post_time)
85
+ rescue => e
86
+ print e
87
+ end
88
+ end
89
+ MyForum::Topic.update_all(description: nil)
90
+
91
+ end
92
+
93
+ desc "Import Private Messages"
94
+ task pms: :environment do
95
+ MyForum::PrivateMessage.delete_all
96
+
97
+ sql = <<-SQL
98
+ SELECT
99
+ smf_personal_messages.msgtime, smf_personal_messages.subject, smf_personal_messages.body, smf_personal_messages.from_name,
100
+ smf_pm_recipients.id_member as to_member, smf_members.member_name
101
+ FROM smf_personal_messages
102
+ LEFT JOIN smf_pm_recipients ON smf_personal_messages.id_pm = smf_pm_recipients.id_pm
103
+ LEFT JOIN smf_members ON smf_members.id_member = smf_pm_recipients.id_member
104
+ SQL
105
+
106
+ result = $connection.query sql
107
+ result.each do |row|
108
+ sender = MyForum::User.find_by_login(row['from_name'])
109
+ recipient = MyForum::User.find_by_login(row['member_name'])
110
+ next unless sender and recipient
111
+
112
+ pm_time = Time.at(row['msgtime'].to_i)
113
+
114
+ MyForum::PrivateMessage.create!(
115
+ sender_id: sender.id,
116
+ sender_login: sender.login,
117
+ recipient_id: recipient.id,
118
+ recipient_login: recipient.login,
119
+ sender_deleted: false,
120
+ recipient_deleted: false,
121
+ unread: false,
122
+ subject: row['subject'],
123
+ body: row['body'],
124
+ created_at: pm_time,
125
+ updated_at: pm_time)
126
+ end
127
+
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ module MyForum
4
+ RSpec.describe AttachmentsController, type: :controller do
5
+
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ module MyForum
4
+ RSpec.describe ImagesControllerController, type: :controller do
5
+
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'rails_helper'
2
+
3
+ module MyForum
4
+ RSpec.describe Image, type: :model do
5
+ pending "add some examples to (or delete) #{__FILE__}"
6
+ end
7
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_forum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta2
4
+ version: 0.0.1.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaly Omelchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-25 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.0.6
111
+ - !ruby/object:Gem::Dependency
112
+ name: font-awesome-sass
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Simple forum engine.
112
126
  email:
113
127
  - prosto.vint@gmail.com
@@ -118,6 +132,16 @@ files:
118
132
  - MIT-LICENSE
119
133
  - README.rdoc
120
134
  - Rakefile
135
+ - app/assets/images/my_forum/smiles/acute.gif
136
+ - app/assets/images/my_forum/smiles/aggressive.gif
137
+ - app/assets/images/my_forum/smiles/beee.gif
138
+ - app/assets/images/my_forum/smiles/blum2.gif
139
+ - app/assets/images/my_forum/smiles/blush2.gif
140
+ - app/assets/images/my_forum/smiles/cray.gif
141
+ - app/assets/images/my_forum/smiles/dirol.gif
142
+ - app/assets/images/my_forum/smiles/download.gif
143
+ - app/assets/images/my_forum/smiles/i-m_so_happy.gif
144
+ - app/assets/images/my_forum/smiles/ireful2.gif
121
145
  - app/assets/javascripts/my_forum/admin/categories.js.coffee
122
146
  - app/assets/javascripts/my_forum/admin/dashboard.js.coffee
123
147
  - app/assets/javascripts/my_forum/admin/forums.js.coffee
@@ -125,6 +149,8 @@ files:
125
149
  - app/assets/javascripts/my_forum/admin/users.js
126
150
  - app/assets/javascripts/my_forum/application.js
127
151
  - app/assets/javascripts/my_forum/forums.js.coffee
152
+ - app/assets/javascripts/my_forum/jquery.scrollTo.min.js
153
+ - app/assets/javascripts/my_forum/jquery.selection.js
128
154
  - app/assets/javascripts/my_forum/my_forum.js.coffee
129
155
  - app/assets/javascripts/my_forum/posts.js.coffee
130
156
  - app/assets/javascripts/my_forum/topics.js.coffee
@@ -148,7 +174,9 @@ files:
148
174
  - app/controllers/my_forum/admin/roles_controller.rb
149
175
  - app/controllers/my_forum/admin/users_controller.rb
150
176
  - app/controllers/my_forum/application_controller.rb
177
+ - app/controllers/my_forum/attachments_controller.rb
151
178
  - app/controllers/my_forum/forums_controller.rb
179
+ - app/controllers/my_forum/images_controller.rb
152
180
  - app/controllers/my_forum/posts_controller.rb
153
181
  - app/controllers/my_forum/private_messages_controller.rb
154
182
  - app/controllers/my_forum/topics_controller.rb
@@ -167,9 +195,12 @@ files:
167
195
  - app/helpers/my_forum/welcome_helper.rb
168
196
  - app/mailers/application_mailer.rb
169
197
  - app/mailers/my_forum/user_mailer.rb
198
+ - app/models/my_forum/attachment.rb
199
+ - app/models/my_forum/avatar.rb
170
200
  - app/models/my_forum/category.rb
171
201
  - app/models/my_forum/category_permission.rb
172
202
  - app/models/my_forum/forum.rb
203
+ - app/models/my_forum/image.rb
173
204
  - app/models/my_forum/log_read_mark.rb
174
205
  - app/models/my_forum/post.rb
175
206
  - app/models/my_forum/private_message.rb
@@ -229,10 +260,13 @@ files:
229
260
  - db/migrate/20150215204852_create_my_forum_user_group_links.rb
230
261
  - db/migrate/20150215212443_create_my_forum_category_permissions.rb
231
262
  - db/migrate/20150227210814_create_my_forum_private_messages.rb
263
+ - db/migrate/20151012095554_create_my_forum_images.rb
232
264
  - lib/my_forum.rb
233
265
  - lib/my_forum/engine.rb
234
266
  - lib/my_forum/version.rb
235
267
  - lib/tasks/my_forum_tasks.rake
268
+ - spec/controllers/my_forum/attachments_controller_spec.rb
269
+ - spec/controllers/my_forum/images_controller_controller_spec.rb
236
270
  - spec/controllers/my_forum/private_messages_controller_spec.rb
237
271
  - spec/controllers/my_forum/users_controller_spec.rb
238
272
  - spec/dummy/README.rdoc
@@ -274,6 +308,7 @@ files:
274
308
  - spec/dummy/public/500.html
275
309
  - spec/dummy/public/favicon.ico
276
310
  - spec/helpers/my_forum/private_messages_helper_spec.rb
311
+ - spec/models/my_forum/image_spec.rb
277
312
  - spec/models/my_forum/private_message_spec.rb
278
313
  - spec/models/my_forum/user_spec.rb
279
314
  - spec/rails_helper.rb
@@ -303,6 +338,8 @@ signing_key:
303
338
  specification_version: 4
304
339
  summary: Simple Forum
305
340
  test_files:
341
+ - spec/controllers/my_forum/attachments_controller_spec.rb
342
+ - spec/controllers/my_forum/images_controller_controller_spec.rb
306
343
  - spec/controllers/my_forum/private_messages_controller_spec.rb
307
344
  - spec/controllers/my_forum/users_controller_spec.rb
308
345
  - spec/dummy/app/assets/javascripts/application.js
@@ -344,6 +381,7 @@ test_files:
344
381
  - spec/dummy/Rakefile
345
382
  - spec/dummy/README.rdoc
346
383
  - spec/helpers/my_forum/private_messages_helper_spec.rb
384
+ - spec/models/my_forum/image_spec.rb
347
385
  - spec/models/my_forum/private_message_spec.rb
348
386
  - spec/models/my_forum/user_spec.rb
349
387
  - spec/rails_helper.rb