thredded 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- metadata +7 -114
- data/MIT-LICENSE +0 -20
- data/README.mkdn +0 -72
- data/Rakefile +0 -31
- data/app/assets/javascripts/thredded/application.js +0 -15
- data/app/assets/stylesheets/thredded/application.css +0 -13
- data/app/controllers/thredded/application_controller.rb +0 -60
- data/app/controllers/thredded/emails_controller.rb +0 -4
- data/app/controllers/thredded/messageboards_controller.rb +0 -7
- data/app/controllers/thredded/posts_controller.rb +0 -85
- data/app/controllers/thredded/preferences_controller.rb +0 -28
- data/app/controllers/thredded/private_topics_controller.rb +0 -58
- data/app/controllers/thredded/setups_controller.rb +0 -44
- data/app/controllers/thredded/topics_controller.rb +0 -99
- data/app/decorators/thredded/messageboard_decorator.rb +0 -74
- data/app/decorators/thredded/post_decorator.rb +0 -61
- data/app/decorators/thredded/topic_decorator.rb +0 -94
- data/app/decorators/thredded/user_topic_decorator.rb +0 -88
- data/app/helpers/thredded/application_helper.rb +0 -4
- data/app/helpers/thredded/posts_helper.rb +0 -7
- data/app/helpers/thredded/topics_helper.rb +0 -4
- data/app/mailers/thredded/post_mailer.rb +0 -28
- data/app/mailers/thredded/topic_mailer.rb +0 -29
- data/app/models/thredded/ability.rb +0 -66
- data/app/models/thredded/attachment.rb +0 -23
- data/app/models/thredded/category.rb +0 -9
- data/app/models/thredded/image.rb +0 -26
- data/app/models/thredded/messageboard.rb +0 -117
- data/app/models/thredded/messageboard_preference.rb +0 -14
- data/app/models/thredded/null_preference.rb +0 -11
- data/app/models/thredded/null_topic.rb +0 -16
- data/app/models/thredded/null_topic_read.rb +0 -19
- data/app/models/thredded/null_user.rb +0 -35
- data/app/models/thredded/post.rb +0 -120
- data/app/models/thredded/post_notification.rb +0 -5
- data/app/models/thredded/private_topic.rb +0 -42
- data/app/models/thredded/private_user.rb +0 -6
- data/app/models/thredded/role.rb +0 -16
- data/app/models/thredded/topic.rb +0 -154
- data/app/models/thredded/topic_category.rb +0 -6
- data/app/models/thredded/user_detail.rb +0 -6
- data/app/models/thredded/user_extender.rb +0 -21
- data/app/models/thredded/user_preference.rb +0 -6
- data/app/models/thredded/user_topic_read.rb +0 -9
- data/app/uploaders/thredded/attachment_uploader.rb +0 -30
- data/app/uploaders/thredded/image_uploader.rb +0 -16
- data/app/views/thredded/attachments/_attachment.html.erb +0 -7
- data/app/views/thredded/messageboards/_messageboard.html.erb +0 -20
- data/app/views/thredded/messageboards/index.html.erb +0 -18
- data/app/views/thredded/post_mailer/at_notification.html.erb +0 -17
- data/app/views/thredded/post_mailer/at_notification.text.erb +0 -13
- data/app/views/thredded/posts/_form.html.erb +0 -17
- data/app/views/thredded/posts/_null_user.html.erb +0 -0
- data/app/views/thredded/posts/_post.html.erb +0 -29
- data/app/views/thredded/posts/_user.html.erb +0 -7
- data/app/views/thredded/posts/edit.html.erb +0 -31
- data/app/views/thredded/posts/index.html.erb +0 -64
- data/app/views/thredded/preferences/edit.html.erb +0 -22
- data/app/views/thredded/private_topics/_form.html.erb +0 -15
- data/app/views/thredded/private_topics/index.html.erb +0 -34
- data/app/views/thredded/private_topics/new.html.erb +0 -28
- data/app/views/thredded/search/_form.html.erb +0 -9
- data/app/views/thredded/setups/_form.html.erb +0 -35
- data/app/views/thredded/setups/new.html.erb +0 -6
- data/app/views/thredded/shared/_currently_online.html.erb +0 -10
- data/app/views/thredded/shared/_error_msgs.html.erb +0 -7
- data/app/views/thredded/shared/_google_analytics.html.erb +0 -10
- data/app/views/thredded/shared/_topic_nav.html.erb +0 -21
- data/app/views/thredded/topic_mailer/message_notification.html.erb +0 -17
- data/app/views/thredded/topic_mailer/message_notification.text.erb +0 -13
- data/app/views/thredded/topics/_form.html.erb +0 -6
- data/app/views/thredded/topics/_recent_topics_by_user.html.erb +0 -8
- data/app/views/thredded/topics/_topic_condensed.html.erb +0 -24
- data/app/views/thredded/topics/_topic_form.html.erb +0 -27
- data/app/views/thredded/topics/by_category.html.erb +0 -54
- data/app/views/thredded/topics/edit.html.erb +0 -28
- data/app/views/thredded/topics/index.html.erb +0 -34
- data/app/views/thredded/topics/menu/_new_topic.html.erb +0 -3
- data/app/views/thredded/topics/new.html.erb +0 -21
- data/app/views/thredded/topics/search.html.erb +0 -34
- data/config/initializers/griddler.rb +0 -4
- data/config/routes.rb +0 -29
- data/db/migrate/20130425230852_create_thredded_tables.rb +0 -143
- data/db/migrate/20131005032727_prevent_null_sticky_and_locked.rb +0 -15
- data/db/migrate/20131014014258_uniqs_on_user_topic_read.rb +0 -9
- data/db/migrate/20131019014258_index_necessary_columns.rb +0 -24
- data/db/migrate/20131026202621_move_filter_to_messageboards.rb +0 -11
- data/db/migrate/20131029034507_convert_textile_to_markdown.rb +0 -7
- data/lib/html/pipeline/at_mention_filter.rb +0 -19
- data/lib/html/pipeline/attached_image_filter.rb +0 -59
- data/lib/html/pipeline/bbcode_filter.rb +0 -19
- data/lib/tasks/thredded_tasks.rake +0 -4
- data/lib/thredded.rb +0 -58
- data/lib/thredded/at_notification_extractor.rb +0 -15
- data/lib/thredded/at_notifier.rb +0 -67
- data/lib/thredded/at_users.rb +0 -19
- data/lib/thredded/email_processor.rb +0 -76
- data/lib/thredded/engine.rb +0 -17
- data/lib/thredded/errors.rb +0 -40
- data/lib/thredded/messageboard_user_permissions.rb +0 -27
- data/lib/thredded/post_sql_builder.rb +0 -34
- data/lib/thredded/post_user_permissions.rb +0 -41
- data/lib/thredded/private_topic_notifier.rb +0 -56
- data/lib/thredded/private_topic_user_permissions.rb +0 -38
- data/lib/thredded/search_parser.rb +0 -45
- data/lib/thredded/search_sql_builder.rb +0 -25
- data/lib/thredded/setup_thredded.rb +0 -7
- data/lib/thredded/table_sql_builder.rb +0 -105
- data/lib/thredded/topic_sql_builder.rb +0 -32
- data/lib/thredded/topic_user_permissions.rb +0 -55
- data/lib/thredded/version.rb +0 -3
@@ -1,15 +0,0 @@
|
|
1
|
-
class PreventNullStickyAndLocked < ActiveRecord::Migration
|
2
|
-
def up
|
3
|
-
change_column_null :thredded_topics, :sticky, false, false
|
4
|
-
change_column_null :thredded_topics, :locked, false, false
|
5
|
-
change_column_null :thredded_topics, :posts_count, false, 0
|
6
|
-
remove_column :thredded_topics, :attribs
|
7
|
-
end
|
8
|
-
|
9
|
-
def down
|
10
|
-
add_column :thredded_topics, :attribs, :string, default: '[]'
|
11
|
-
change_column_null :thredded_topics, :posts_count, true
|
12
|
-
change_column_null :thredded_topics, :sticky, true
|
13
|
-
change_column_null :thredded_topics, :locked, true
|
14
|
-
end
|
15
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class IndexNecessaryColumns < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
add_index :thredded_attachments, :post_id
|
4
|
-
add_index :thredded_categories, :messageboard_id
|
5
|
-
add_index :thredded_images, :post_id
|
6
|
-
add_index :thredded_post_notifications, :post_id
|
7
|
-
add_index :thredded_messageboards, :slug
|
8
|
-
|
9
|
-
add_index :thredded_posts, :user_id
|
10
|
-
add_index :thredded_posts, :topic_id
|
11
|
-
add_index :thredded_posts, :messageboard_id
|
12
|
-
|
13
|
-
add_index :thredded_private_users, :private_topic_id
|
14
|
-
add_index :thredded_private_users, :user_id
|
15
|
-
|
16
|
-
add_index :thredded_topic_categories, :topic_id
|
17
|
-
add_index :thredded_topic_categories, :category_id
|
18
|
-
|
19
|
-
add_index :thredded_topics, :user_id
|
20
|
-
add_index :thredded_topics, :last_user_id
|
21
|
-
add_index :thredded_topics, :messageboard_id
|
22
|
-
add_index :thredded_topics, :hash_id
|
23
|
-
end
|
24
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
class MoveFilterToMessageboards < ActiveRecord::Migration
|
2
|
-
def up
|
3
|
-
add_column :thredded_messageboards, :filter, :string, null: false, default: 'markdown'
|
4
|
-
remove_column :thredded_messageboard_preferences, :filter
|
5
|
-
end
|
6
|
-
|
7
|
-
def down
|
8
|
-
add_column :thredded_messageboard_preferences, :filter, :string, null: false, default: 'markdown'
|
9
|
-
remove_column :thredded_messageboards, :filter
|
10
|
-
end
|
11
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'thredded/at_users'
|
2
|
-
|
3
|
-
module HTML
|
4
|
-
class Pipeline
|
5
|
-
class AtMentionFilter < Filter
|
6
|
-
def initialize(text, context = nil, result = nil)
|
7
|
-
super text, context, result
|
8
|
-
@text = text.to_s.gsub "\r", ''
|
9
|
-
@post = context[:post]
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
html = Thredded::AtUsers.render(@text, @post.messageboard)
|
14
|
-
html.rstrip!
|
15
|
-
html
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
|
2
|
-
module HTML
|
3
|
-
class Pipeline
|
4
|
-
class AttachedImageFilter < Filter
|
5
|
-
def initialize(text, context = nil, result = nil)
|
6
|
-
super text, context, result
|
7
|
-
@text = text.gsub "\r", ''
|
8
|
-
@post = context[:post]
|
9
|
-
end
|
10
|
-
|
11
|
-
def call
|
12
|
-
html = @text
|
13
|
-
matches = @text.scan(/(?<full>\[t:(?<tag>\w+)=?(?<img_nmb>\d+)? ?(?<attribs>[^\]]+)?\])/)
|
14
|
-
|
15
|
-
matches.each do |match|
|
16
|
-
str_buff = ''
|
17
|
-
full = match[0]
|
18
|
-
tag = match[1]
|
19
|
-
img_number = match[2] ? match[2].to_i - 1 : 0 # default to first attachment
|
20
|
-
attribs = match[3]
|
21
|
-
|
22
|
-
if(tag != 'img' || !@post.attachments[img_number])
|
23
|
-
next
|
24
|
-
end
|
25
|
-
|
26
|
-
# start with img tag
|
27
|
-
str_buff += '<img '
|
28
|
-
|
29
|
-
# get attachment object at spot img_number - 1
|
30
|
-
attachment = @post.attachments[img_number]
|
31
|
-
str_buff += 'src="' + attachment.attachment.to_s + '" '
|
32
|
-
|
33
|
-
# do attribute stuff, left right first
|
34
|
-
if !attribs.nil?
|
35
|
-
if align = attribs.match(/(left|right)/)
|
36
|
-
str_buff += 'class="align_' + align[0] + '" '
|
37
|
-
end
|
38
|
-
|
39
|
-
# attributes, width x height
|
40
|
-
if wxh = attribs.match(/(\d+)x?(\d+)?/)
|
41
|
-
str_buff += 'width="' + wxh[1] + '" '
|
42
|
-
height = wxh[2].nil? ? wxh[1] : wxh[2]
|
43
|
-
str_buff += 'height="' + height + '" '
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# end img tag
|
48
|
-
str_buff += '/>'
|
49
|
-
|
50
|
-
# replace in post content
|
51
|
-
html = html.sub(full, str_buff)
|
52
|
-
end
|
53
|
-
|
54
|
-
html
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'bbcoder'
|
2
|
-
|
3
|
-
module HTML
|
4
|
-
class Pipeline
|
5
|
-
class BbcodeFilter < TextFilter
|
6
|
-
def initialize(text, context = {}, result = nil)
|
7
|
-
super text, context, result
|
8
|
-
@context = context
|
9
|
-
@text = @text.gsub "\r", ''
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
html = BBCoder.new(@text).to_html.gsub(/\n|\r\n/, '<br />')
|
14
|
-
html.rstrip!
|
15
|
-
"<p>#{html}</p>"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/thredded.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'thredded/engine'
|
2
|
-
require 'cancan'
|
3
|
-
require 'carrierwave'
|
4
|
-
require 'griddler'
|
5
|
-
require 'kaminari'
|
6
|
-
require 'friendly_id'
|
7
|
-
require 'nested_form'
|
8
|
-
require 'thredded/email_processor'
|
9
|
-
require 'thredded/errors'
|
10
|
-
require 'thredded/at_notifier'
|
11
|
-
require 'html/pipeline'
|
12
|
-
require 'html/pipeline/bbcode_filter'
|
13
|
-
require 'html/pipeline/attached_image_filter'
|
14
|
-
require 'html/pipeline/at_mention_filter'
|
15
|
-
require 'thredded/messageboard_user_permissions'
|
16
|
-
require 'thredded/post_user_permissions'
|
17
|
-
require 'thredded/private_topic_user_permissions'
|
18
|
-
require 'thredded/topic_user_permissions'
|
19
|
-
require 'thredded/search_sql_builder'
|
20
|
-
|
21
|
-
module Thredded
|
22
|
-
mattr_accessor :user_class,
|
23
|
-
:email_incoming_host,
|
24
|
-
:email_from,
|
25
|
-
:email_outgoing_prefix,
|
26
|
-
:user_path,
|
27
|
-
:file_storage,
|
28
|
-
:asset_root,
|
29
|
-
:layout,
|
30
|
-
:avatar_default
|
31
|
-
|
32
|
-
self.file_storage = :file # or :fog
|
33
|
-
self.asset_root = '' # or fully qualified URI to assets
|
34
|
-
self.layout = 'thredded'
|
35
|
-
self.avatar_default = 'mm'
|
36
|
-
|
37
|
-
def self.user_class
|
38
|
-
if @@user_class.is_a?(Class)
|
39
|
-
raise 'Please use a string instead of a class'
|
40
|
-
end
|
41
|
-
|
42
|
-
if @@user_class.is_a?(String)
|
43
|
-
begin
|
44
|
-
Object.const_get(@@user_class)
|
45
|
-
rescue NameError
|
46
|
-
@@user_class.constantize
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.user_path(user)
|
52
|
-
if @@user_path.respond_to? :call
|
53
|
-
@@user_path.call(user)
|
54
|
-
else
|
55
|
-
'/'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Thredded
|
2
|
-
class AtNotificationExtractor
|
3
|
-
def initialize(content)
|
4
|
-
@content = content
|
5
|
-
end
|
6
|
-
|
7
|
-
def extract
|
8
|
-
scanned_names = @content.scan(/@([\w]+)(\W)?/)
|
9
|
-
scanned_names += @content.scan(/@"([\w\ ]+)"(\W)?/)
|
10
|
-
scanned_names
|
11
|
-
.map(&:first)
|
12
|
-
.uniq
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/thredded/at_notifier.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'thredded/at_notification_extractor'
|
2
|
-
|
3
|
-
module Thredded
|
4
|
-
class AtNotifier
|
5
|
-
def initialize(post)
|
6
|
-
@post = post
|
7
|
-
end
|
8
|
-
|
9
|
-
def notifications_for_at_users
|
10
|
-
members = at_notifiable_members
|
11
|
-
|
12
|
-
if members.present?
|
13
|
-
user_emails = members.map(&:email)
|
14
|
-
Thredded::PostMailer.at_notification(post.id, user_emails).deliver
|
15
|
-
mark_notified(members)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def at_notifiable_members
|
20
|
-
at_names = Thredded::AtNotificationExtractor.new(post.content).extract
|
21
|
-
members = post.messageboard.members_from_list(at_names).to_a
|
22
|
-
|
23
|
-
members.delete post.user
|
24
|
-
members = exclude_previously_notified(members)
|
25
|
-
members = exclude_those_that_are_not_private(members)
|
26
|
-
members = exclude_those_opting_out_of_at_notifications(members)
|
27
|
-
|
28
|
-
members
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
attr_reader :post
|
34
|
-
|
35
|
-
def exclude_those_opting_out_of_at_notifications(members)
|
36
|
-
members.reject do |member|
|
37
|
-
!Thredded::MessageboardPreference
|
38
|
-
.for(member)
|
39
|
-
.in(post.messageboard)
|
40
|
-
.first
|
41
|
-
.try(:notify_on_mention?)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def exclude_those_that_are_not_private(members)
|
46
|
-
members.reject do |member|
|
47
|
-
post.topic.private? && post.topic.users.exclude?(member)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def exclude_previously_notified(members)
|
52
|
-
emails_notified = Thredded::PostNotification
|
53
|
-
.where(post_id: post.id)
|
54
|
-
.map(&:email)
|
55
|
-
|
56
|
-
members.reject do |member|
|
57
|
-
emails_notified.include? member.email
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def mark_notified(members)
|
62
|
-
members.each do |member|
|
63
|
-
post.post_notifications.create(email: member.email)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
data/lib/thredded/at_users.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'thredded/at_notification_extractor'
|
2
|
-
|
3
|
-
module Thredded
|
4
|
-
class AtUsers
|
5
|
-
def self.render(content, messageboard)
|
6
|
-
at_names = AtNotificationExtractor.new(content).extract
|
7
|
-
members = messageboard.members_from_list(at_names)
|
8
|
-
|
9
|
-
members.each do |member|
|
10
|
-
member_path = Thredded.user_path(member)
|
11
|
-
|
12
|
-
content.gsub!(/@#{member.to_s}/i,
|
13
|
-
%Q{<a href="#{member_path}">@#{member}</a>})
|
14
|
-
end
|
15
|
-
|
16
|
-
content
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
module Thredded
|
2
|
-
class EmailProcessor
|
3
|
-
attr_accessor :email, :messageboard, :user
|
4
|
-
|
5
|
-
def initialize(email)
|
6
|
-
@email = email
|
7
|
-
@user = find_user
|
8
|
-
@messageboard = find_messageboard
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.process(email)
|
12
|
-
processor = self.new(email)
|
13
|
-
processor.create_or_update_topic
|
14
|
-
end
|
15
|
-
|
16
|
-
def create_or_update_topic
|
17
|
-
if can_post_to_topic?
|
18
|
-
topic = find_or_build_topic
|
19
|
-
post = topic.posts.build(
|
20
|
-
user: user,
|
21
|
-
content: email.body,
|
22
|
-
source: 'email',
|
23
|
-
messageboard: messageboard,
|
24
|
-
attachments_attributes: attachment_params,
|
25
|
-
)
|
26
|
-
post.user_email = user.email
|
27
|
-
|
28
|
-
topic.save
|
29
|
-
else
|
30
|
-
return false
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def attachment_params
|
37
|
-
@attachment_params = {}
|
38
|
-
|
39
|
-
email.attachments.each_with_index do |attachment, i|
|
40
|
-
@attachment_params[i.to_s] = { 'attachment' => attachment }
|
41
|
-
end
|
42
|
-
|
43
|
-
@attachment_params
|
44
|
-
end
|
45
|
-
|
46
|
-
def can_post_to_topic?
|
47
|
-
user && messageboard &&
|
48
|
-
Thredded::Ability.new(user).can?(:create, messageboard.topics.new)
|
49
|
-
end
|
50
|
-
|
51
|
-
def find_or_build_topic
|
52
|
-
topic = find_topic
|
53
|
-
|
54
|
-
if topic.nil?
|
55
|
-
topic = messageboard.topics.build(title: email.subject)
|
56
|
-
topic.user = user
|
57
|
-
topic.state = 'pending'
|
58
|
-
end
|
59
|
-
|
60
|
-
topic.last_user = user
|
61
|
-
topic
|
62
|
-
end
|
63
|
-
|
64
|
-
def find_topic
|
65
|
-
Thredded::Topic.where(hash_id: email.to).first
|
66
|
-
end
|
67
|
-
|
68
|
-
def find_messageboard
|
69
|
-
Thredded::Messageboard.where(name: email.to).first || find_topic.try(:messageboard)
|
70
|
-
end
|
71
|
-
|
72
|
-
def find_user
|
73
|
-
User.where(email: email.from).first
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
data/lib/thredded/engine.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module Thredded
|
2
|
-
class Engine < ::Rails::Engine
|
3
|
-
isolate_namespace Thredded
|
4
|
-
|
5
|
-
config.autoload_paths << File.expand_path('../../../app/decorators', __FILE__)
|
6
|
-
|
7
|
-
config.generators do |g|
|
8
|
-
g.test_framework :rspec, fixture: true
|
9
|
-
g.fixture_replacement :factory_girl, dir: 'spec/factories'
|
10
|
-
g.helper false
|
11
|
-
end
|
12
|
-
|
13
|
-
config.to_prepare do
|
14
|
-
Thredded.user_class.send(:include, Thredded::UserExtender)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/thredded/errors.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
module Thredded
|
2
|
-
class Error < StandardError
|
3
|
-
end
|
4
|
-
|
5
|
-
module Errors
|
6
|
-
class TopicNotFound < Thredded::Error
|
7
|
-
def message
|
8
|
-
'This topic does not exist.'
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class MessageboardNotFound < Thredded::Error
|
13
|
-
def message
|
14
|
-
'This messageboard does not exist.'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class MessageboardReadDenied < Thredded::Error
|
19
|
-
def message
|
20
|
-
'You are not authorized access to this messageboard.'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class TopicCreateDenied < Thredded::Error
|
25
|
-
def message
|
26
|
-
'You are not authorized to post in this messageboard.'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class EmptySearchResults < Thredded::Error
|
31
|
-
def initialize(query)
|
32
|
-
@query = query
|
33
|
-
end
|
34
|
-
|
35
|
-
def message
|
36
|
-
"There are no results for your search - '#{@query}'"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|