thredded 0.11.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -5
- data/app/assets/javascripts/thredded/components/post_form.es6 +4 -4
- data/app/assets/javascripts/thredded/components/quote_post.es6 +45 -0
- data/app/assets/javascripts/thredded/components/topic_form.es6 +4 -4
- data/app/assets/javascripts/thredded/core/on_page_load.es6 +8 -0
- data/app/assets/javascripts/thredded/dependencies.js +1 -1
- data/app/assets/stylesheets/thredded/_email.scss +2 -3
- data/app/assets/stylesheets/thredded/components/_preferences.scss +17 -4
- data/app/controllers/concerns/thredded/new_post_params.rb +20 -0
- data/app/controllers/concerns/thredded/new_private_post_params.rb +20 -0
- data/app/controllers/thredded/posts_controller.rb +22 -13
- data/app/controllers/thredded/preferences_controller.rb +1 -0
- data/app/controllers/thredded/private_posts_controller.rb +24 -12
- data/app/controllers/thredded/private_topics_controller.rb +4 -1
- data/app/controllers/thredded/theme_previews_controller.rb +4 -2
- data/app/controllers/thredded/topics_controller.rb +13 -2
- data/app/forms/thredded/post_form.rb +52 -0
- data/app/forms/thredded/private_post_form.rb +48 -0
- data/app/forms/thredded/private_topic_form.rb +8 -0
- data/app/forms/thredded/topic_form.rb +8 -0
- data/app/forms/thredded/user_preferences_form.rb +7 -1
- data/app/helpers/thredded/urls_helper.rb +18 -0
- data/app/models/thredded/topic.rb +3 -3
- data/app/policies/thredded/private_topic_policy.rb +1 -1
- data/app/view_models/thredded/messageboard_group_view.rb +1 -1
- data/app/view_models/thredded/post_view.rb +19 -3
- data/app/view_models/thredded/private_topic_view.rb +0 -4
- data/app/view_models/thredded/topic_view.rb +0 -4
- data/app/views/thredded/posts/_form.html.erb +0 -2
- data/app/views/thredded/posts/edit.html.erb +2 -5
- data/app/views/thredded/posts/new.html.erb +15 -0
- data/app/views/thredded/posts_common/_actions.html.erb +3 -0
- data/app/views/thredded/posts_common/_form.html.erb +5 -3
- data/app/views/thredded/posts_common/_header.html.erb +3 -1
- data/app/views/thredded/posts_common/actions/_quote.html.erb +4 -0
- data/app/views/thredded/preferences/_form.html.erb +3 -5
- data/app/views/thredded/preferences/_messageboards_nav.html.erb +8 -0
- data/app/views/thredded/preferences/_messageboards_nav_item.html.erb +2 -0
- data/app/views/thredded/preferences/edit.html.erb +13 -3
- data/app/views/thredded/private_posts/_form.html.erb +0 -2
- data/app/views/thredded/private_posts/edit.html.erb +2 -4
- data/app/views/thredded/private_posts/new.html.erb +11 -0
- data/app/views/thredded/private_topics/_form.html.erb +2 -2
- data/app/views/thredded/private_topics/index.html.erb +1 -2
- data/app/views/thredded/private_topics/new.html.erb +0 -1
- data/app/views/thredded/private_topics/show.html.erb +5 -3
- data/app/views/thredded/shared/_nav.html.erb +1 -7
- data/app/views/thredded/shared/nav/_standalone.html.erb +3 -3
- data/app/views/thredded/shared/nav/_standalone_profile.html.erb +3 -0
- data/app/views/thredded/theme_previews/show.html.erb +3 -17
- data/app/views/thredded/topics/_form.html.erb +3 -2
- data/app/views/thredded/topics/index.html.erb +0 -2
- data/app/views/thredded/topics/new.html.erb +0 -2
- data/app/views/thredded/topics/show.html.erb +1 -3
- data/config/locales/en.yml +4 -3
- data/config/locales/es.yml +4 -3
- data/config/locales/pl.yml +4 -3
- data/config/locales/pt-BR.yml +4 -3
- data/config/locales/ru.yml +12 -7
- data/config/routes.rb +2 -0
- data/db/migrate/20160329231848_create_thredded.rb +1 -1
- data/db/upgrade_migrations/20170420163138_upgrade_thredded_v0_11_to_v0_12.rb +25 -0
- data/lib/thredded.rb +0 -1
- data/lib/thredded/content_formatter.rb +11 -0
- data/lib/thredded/version.rb +1 -1
- data/vendor/assets/javascripts/autosize.js +290 -0
- metadata +15 -17
- data/app/views/thredded/preferences/_header.html.erb +0 -1
data/config/routes.rb
CHANGED
@@ -17,6 +17,7 @@ Thredded::Engine.routes.draw do # rubocop:disable Metrics/BlockLength
|
|
17
17
|
post :preview, on: :new, controller: 'private_post_previews'
|
18
18
|
resource :preview, only: [:update], controller: 'private_post_previews'
|
19
19
|
member do
|
20
|
+
get 'quote'
|
20
21
|
post 'mark_as_unread'
|
21
22
|
end
|
22
23
|
end
|
@@ -74,6 +75,7 @@ Thredded::Engine.routes.draw do # rubocop:disable Metrics/BlockLength
|
|
74
75
|
post :preview, on: :new, controller: 'post_previews'
|
75
76
|
resource :preview, only: [:update], controller: 'post_previews'
|
76
77
|
member do
|
78
|
+
get 'quote'
|
77
79
|
post 'mark_as_unread'
|
78
80
|
end
|
79
81
|
end
|
@@ -118,7 +118,7 @@ class CreateThredded < ActiveRecord::Migration
|
|
118
118
|
order: { sticky: :desc, updated_at: :desc },
|
119
119
|
name: :index_thredded_topics_for_display
|
120
120
|
t.index [:hash_id], name: :index_thredded_topics_on_hash_id
|
121
|
-
t.index [:
|
121
|
+
t.index [:slug], name: :index_thredded_topics_on_slug, unique: true
|
122
122
|
t.index [:messageboard_id], name: :index_thredded_topics_on_messageboard_id
|
123
123
|
t.index [:user_id], name: :index_thredded_topics_on_user_id
|
124
124
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class UpgradeThreddedV011ToV012 < ActiveRecord::Migration
|
3
|
+
def up
|
4
|
+
FriendlyId::Slug.transaction do
|
5
|
+
FriendlyId::Slug.where(sluggable_type: 'Thredded::Topic').where(
|
6
|
+
slug: FriendlyId::Slug.group(:slug).having('count(id) > 1').select(:slug)
|
7
|
+
).group_by(&:slug).each_value do |slugs|
|
8
|
+
slugs.from(1).each(&:delete)
|
9
|
+
end
|
10
|
+
FriendlyId::Slug.where(sluggable_type: 'Thredded::Topic')
|
11
|
+
.update_all(scope: nil)
|
12
|
+
end
|
13
|
+
Thredded::Topic.all.find_each do |topic|
|
14
|
+
# re-generate the slug
|
15
|
+
topic.title_will_change!
|
16
|
+
topic.save!
|
17
|
+
end
|
18
|
+
remove_index :thredded_topics, name: :index_thredded_topics_on_messageboard_id_and_slug
|
19
|
+
add_index :thredded_topics, [:slug], name: :index_thredded_topics_on_slug, unique: true
|
20
|
+
end
|
21
|
+
|
22
|
+
def down
|
23
|
+
fail ActiveRecord::MigrationError::IrreversibleMigration
|
24
|
+
end
|
25
|
+
end
|
data/lib/thredded.rb
CHANGED
@@ -99,6 +99,17 @@ module Thredded
|
|
99
99
|
# rubocop:enable Rails/OutputSafety
|
100
100
|
end
|
101
101
|
|
102
|
+
# @param content [String]
|
103
|
+
# @return [String] a quote containing the formatted content
|
104
|
+
def self.quote_content(content)
|
105
|
+
result = String.new(content)
|
106
|
+
result.gsub!(/^(?!$)/, '> ')
|
107
|
+
result.gsub!(/^$/, '>')
|
108
|
+
result << "\n" unless result.end_with?("\n")
|
109
|
+
result << "\n"
|
110
|
+
result
|
111
|
+
end
|
112
|
+
|
102
113
|
protected
|
103
114
|
|
104
115
|
# @return [Array<HTML::Pipeline::Filter]>]
|
data/lib/thredded/version.rb
CHANGED
@@ -0,0 +1,290 @@
|
|
1
|
+
/*!
|
2
|
+
Autosize 3.0.20
|
3
|
+
license: MIT
|
4
|
+
http://www.jacklmoore.com/autosize
|
5
|
+
*/
|
6
|
+
(function (global, factory) {
|
7
|
+
if (typeof define === 'function' && define.amd) {
|
8
|
+
define(['exports', 'module'], factory);
|
9
|
+
} else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
|
10
|
+
factory(exports, module);
|
11
|
+
} else {
|
12
|
+
var mod = {
|
13
|
+
exports: {}
|
14
|
+
};
|
15
|
+
factory(mod.exports, mod);
|
16
|
+
global.autosize = mod.exports;
|
17
|
+
}
|
18
|
+
})(this, function (exports, module) {
|
19
|
+
'use strict';
|
20
|
+
|
21
|
+
var map = typeof Map === "function" ? new Map() : (function () {
|
22
|
+
var keys = [];
|
23
|
+
var values = [];
|
24
|
+
|
25
|
+
return {
|
26
|
+
has: function has(key) {
|
27
|
+
return keys.indexOf(key) > -1;
|
28
|
+
},
|
29
|
+
get: function get(key) {
|
30
|
+
return values[keys.indexOf(key)];
|
31
|
+
},
|
32
|
+
set: function set(key, value) {
|
33
|
+
if (keys.indexOf(key) === -1) {
|
34
|
+
keys.push(key);
|
35
|
+
values.push(value);
|
36
|
+
}
|
37
|
+
},
|
38
|
+
'delete': function _delete(key) {
|
39
|
+
var index = keys.indexOf(key);
|
40
|
+
if (index > -1) {
|
41
|
+
keys.splice(index, 1);
|
42
|
+
values.splice(index, 1);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
};
|
46
|
+
})();
|
47
|
+
|
48
|
+
var createEvent = function createEvent(name) {
|
49
|
+
return new Event(name, { bubbles: true });
|
50
|
+
};
|
51
|
+
try {
|
52
|
+
new Event('test');
|
53
|
+
} catch (e) {
|
54
|
+
// IE does not support `new Event()`
|
55
|
+
createEvent = function (name) {
|
56
|
+
var evt = document.createEvent('Event');
|
57
|
+
evt.initEvent(name, true, false);
|
58
|
+
return evt;
|
59
|
+
};
|
60
|
+
}
|
61
|
+
|
62
|
+
function assign(ta) {
|
63
|
+
if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
|
64
|
+
|
65
|
+
var heightOffset = null;
|
66
|
+
var clientWidth = ta.clientWidth;
|
67
|
+
var cachedHeight = null;
|
68
|
+
|
69
|
+
function init() {
|
70
|
+
var style = window.getComputedStyle(ta, null);
|
71
|
+
|
72
|
+
if (style.resize === 'vertical') {
|
73
|
+
ta.style.resize = 'none';
|
74
|
+
} else if (style.resize === 'both') {
|
75
|
+
ta.style.resize = 'horizontal';
|
76
|
+
}
|
77
|
+
|
78
|
+
if (style.boxSizing === 'content-box') {
|
79
|
+
heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
|
80
|
+
} else {
|
81
|
+
heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
|
82
|
+
}
|
83
|
+
// Fix when a textarea is not on document body and heightOffset is Not a Number
|
84
|
+
if (isNaN(heightOffset)) {
|
85
|
+
heightOffset = 0;
|
86
|
+
}
|
87
|
+
|
88
|
+
update();
|
89
|
+
}
|
90
|
+
|
91
|
+
function changeOverflow(value) {
|
92
|
+
{
|
93
|
+
// Chrome/Safari-specific fix:
|
94
|
+
// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
|
95
|
+
// made available by removing the scrollbar. The following forces the necessary text reflow.
|
96
|
+
var width = ta.style.width;
|
97
|
+
ta.style.width = '0px';
|
98
|
+
// Force reflow:
|
99
|
+
/* jshint ignore:start */
|
100
|
+
ta.offsetWidth;
|
101
|
+
/* jshint ignore:end */
|
102
|
+
ta.style.width = width;
|
103
|
+
}
|
104
|
+
|
105
|
+
ta.style.overflowY = value;
|
106
|
+
}
|
107
|
+
|
108
|
+
function getParentOverflows(el) {
|
109
|
+
var arr = [];
|
110
|
+
|
111
|
+
while (el && el.parentNode && el.parentNode instanceof Element) {
|
112
|
+
if (el.parentNode.scrollTop) {
|
113
|
+
arr.push({
|
114
|
+
node: el.parentNode,
|
115
|
+
scrollTop: el.parentNode.scrollTop
|
116
|
+
});
|
117
|
+
}
|
118
|
+
el = el.parentNode;
|
119
|
+
}
|
120
|
+
|
121
|
+
return arr;
|
122
|
+
}
|
123
|
+
|
124
|
+
function resize() {
|
125
|
+
var originalHeight = ta.style.height;
|
126
|
+
var overflows = getParentOverflows(ta);
|
127
|
+
var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
|
128
|
+
|
129
|
+
ta.style.height = 'auto';
|
130
|
+
|
131
|
+
var endHeight = ta.scrollHeight + heightOffset;
|
132
|
+
|
133
|
+
if (ta.scrollHeight === 0) {
|
134
|
+
// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
|
135
|
+
ta.style.height = originalHeight;
|
136
|
+
return;
|
137
|
+
}
|
138
|
+
|
139
|
+
ta.style.height = endHeight + 'px';
|
140
|
+
|
141
|
+
// used to check if an update is actually necessary on window.resize
|
142
|
+
clientWidth = ta.clientWidth;
|
143
|
+
|
144
|
+
// prevents scroll-position jumping
|
145
|
+
overflows.forEach(function (el) {
|
146
|
+
el.node.scrollTop = el.scrollTop;
|
147
|
+
});
|
148
|
+
|
149
|
+
if (docTop) {
|
150
|
+
document.documentElement.scrollTop = docTop;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
function update() {
|
155
|
+
resize();
|
156
|
+
|
157
|
+
var styleHeight = Math.round(parseFloat(ta.style.height));
|
158
|
+
var computed = window.getComputedStyle(ta, null);
|
159
|
+
var actualHeight = Math.round(parseFloat(computed.height));
|
160
|
+
|
161
|
+
// The actual height not matching the style height (set via the resize method) indicates that
|
162
|
+
// the max-height has been exceeded, in which case the overflow should be set to visible.
|
163
|
+
if (actualHeight !== styleHeight) {
|
164
|
+
if (computed.overflowY !== 'visible') {
|
165
|
+
changeOverflow('visible');
|
166
|
+
resize();
|
167
|
+
actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height));
|
168
|
+
}
|
169
|
+
} else {
|
170
|
+
// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
|
171
|
+
if (computed.overflowY !== 'hidden') {
|
172
|
+
changeOverflow('hidden');
|
173
|
+
resize();
|
174
|
+
actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height));
|
175
|
+
}
|
176
|
+
}
|
177
|
+
|
178
|
+
if (cachedHeight !== actualHeight) {
|
179
|
+
cachedHeight = actualHeight;
|
180
|
+
var evt = createEvent('autosize:resized');
|
181
|
+
try {
|
182
|
+
ta.dispatchEvent(evt);
|
183
|
+
} catch (err) {
|
184
|
+
// Firefox will throw an error on dispatchEvent for a detached element
|
185
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=889376
|
186
|
+
}
|
187
|
+
}
|
188
|
+
}
|
189
|
+
|
190
|
+
var pageResize = function pageResize() {
|
191
|
+
if (ta.clientWidth !== clientWidth) {
|
192
|
+
update();
|
193
|
+
}
|
194
|
+
};
|
195
|
+
|
196
|
+
var destroy = (function (style) {
|
197
|
+
window.removeEventListener('resize', pageResize, false);
|
198
|
+
ta.removeEventListener('input', update, false);
|
199
|
+
ta.removeEventListener('keyup', update, false);
|
200
|
+
ta.removeEventListener('autosize:destroy', destroy, false);
|
201
|
+
ta.removeEventListener('autosize:update', update, false);
|
202
|
+
|
203
|
+
Object.keys(style).forEach(function (key) {
|
204
|
+
ta.style[key] = style[key];
|
205
|
+
});
|
206
|
+
|
207
|
+
map['delete'](ta);
|
208
|
+
}).bind(ta, {
|
209
|
+
height: ta.style.height,
|
210
|
+
resize: ta.style.resize,
|
211
|
+
overflowY: ta.style.overflowY,
|
212
|
+
overflowX: ta.style.overflowX,
|
213
|
+
wordWrap: ta.style.wordWrap
|
214
|
+
});
|
215
|
+
|
216
|
+
ta.addEventListener('autosize:destroy', destroy, false);
|
217
|
+
|
218
|
+
// IE9 does not fire onpropertychange or oninput for deletions,
|
219
|
+
// so binding to onkeyup to catch most of those events.
|
220
|
+
// There is no way that I know of to detect something like 'cut' in IE9.
|
221
|
+
if ('onpropertychange' in ta && 'oninput' in ta) {
|
222
|
+
ta.addEventListener('keyup', update, false);
|
223
|
+
}
|
224
|
+
|
225
|
+
window.addEventListener('resize', pageResize, false);
|
226
|
+
ta.addEventListener('input', update, false);
|
227
|
+
ta.addEventListener('autosize:update', update, false);
|
228
|
+
ta.style.overflowX = 'hidden';
|
229
|
+
ta.style.wordWrap = 'break-word';
|
230
|
+
|
231
|
+
map.set(ta, {
|
232
|
+
destroy: destroy,
|
233
|
+
update: update
|
234
|
+
});
|
235
|
+
|
236
|
+
init();
|
237
|
+
}
|
238
|
+
|
239
|
+
function destroy(ta) {
|
240
|
+
var methods = map.get(ta);
|
241
|
+
if (methods) {
|
242
|
+
methods.destroy();
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
function update(ta) {
|
247
|
+
var methods = map.get(ta);
|
248
|
+
if (methods) {
|
249
|
+
methods.update();
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
var autosize = null;
|
254
|
+
|
255
|
+
// Do nothing in Node.js environment and IE8 (or lower)
|
256
|
+
if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
|
257
|
+
autosize = function (el) {
|
258
|
+
return el;
|
259
|
+
};
|
260
|
+
autosize.destroy = function (el) {
|
261
|
+
return el;
|
262
|
+
};
|
263
|
+
autosize.update = function (el) {
|
264
|
+
return el;
|
265
|
+
};
|
266
|
+
} else {
|
267
|
+
autosize = function (el, options) {
|
268
|
+
if (el) {
|
269
|
+
Array.prototype.forEach.call(el.length ? el : [el], function (x) {
|
270
|
+
return assign(x, options);
|
271
|
+
});
|
272
|
+
}
|
273
|
+
return el;
|
274
|
+
};
|
275
|
+
autosize.destroy = function (el) {
|
276
|
+
if (el) {
|
277
|
+
Array.prototype.forEach.call(el.length ? el : [el], destroy);
|
278
|
+
}
|
279
|
+
return el;
|
280
|
+
};
|
281
|
+
autosize.update = function (el) {
|
282
|
+
if (el) {
|
283
|
+
Array.prototype.forEach.call(el.length ? el : [el], update);
|
284
|
+
}
|
285
|
+
return el;
|
286
|
+
};
|
287
|
+
}
|
288
|
+
|
289
|
+
module.exports = autosize;
|
290
|
+
});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thredded
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Oliveira
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pundit
|
@@ -297,20 +297,6 @@ dependencies:
|
|
297
297
|
- - "~>"
|
298
298
|
- !ruby/object:Gem::Version
|
299
299
|
version: '3.5'
|
300
|
-
- !ruby/object:Gem::Dependency
|
301
|
-
name: autosize-rails
|
302
|
-
requirement: !ruby/object:Gem::Requirement
|
303
|
-
requirements:
|
304
|
-
- - ">="
|
305
|
-
- !ruby/object:Gem::Version
|
306
|
-
version: '0'
|
307
|
-
type: :runtime
|
308
|
-
prerelease: false
|
309
|
-
version_requirements: !ruby/object:Gem::Requirement
|
310
|
-
requirements:
|
311
|
-
- - ">="
|
312
|
-
- !ruby/object:Gem::Version
|
313
|
-
version: '0'
|
314
300
|
- !ruby/object:Gem::Dependency
|
315
301
|
name: sprockets-es6
|
316
302
|
requirement: !ruby/object:Gem::Requirement
|
@@ -725,6 +711,7 @@ files:
|
|
725
711
|
- app/assets/javascripts/thredded/components/flash_messages.es6
|
726
712
|
- app/assets/javascripts/thredded/components/post_form.es6
|
727
713
|
- app/assets/javascripts/thredded/components/preview_area.es6
|
714
|
+
- app/assets/javascripts/thredded/components/quote_post.es6
|
728
715
|
- app/assets/javascripts/thredded/components/time_stamps.es6
|
729
716
|
- app/assets/javascripts/thredded/components/topic_form.es6
|
730
717
|
- app/assets/javascripts/thredded/components/topics.es6
|
@@ -791,6 +778,8 @@ files:
|
|
791
778
|
- app/commands/thredded/moderate_post.rb
|
792
779
|
- app/commands/thredded/notify_following_users.rb
|
793
780
|
- app/commands/thredded/notify_private_topic_users.rb
|
781
|
+
- app/controllers/concerns/thredded/new_post_params.rb
|
782
|
+
- app/controllers/concerns/thredded/new_private_post_params.rb
|
794
783
|
- app/controllers/concerns/thredded/new_private_topic_params.rb
|
795
784
|
- app/controllers/concerns/thredded/new_topic_params.rb
|
796
785
|
- app/controllers/concerns/thredded/render_preview.rb
|
@@ -813,6 +802,8 @@ files:
|
|
813
802
|
- app/controllers/thredded/topic_previews_controller.rb
|
814
803
|
- app/controllers/thredded/topics_controller.rb
|
815
804
|
- app/forms/thredded/edit_topic_form.rb
|
805
|
+
- app/forms/thredded/post_form.rb
|
806
|
+
- app/forms/thredded/private_post_form.rb
|
816
807
|
- app/forms/thredded/private_topic_form.rb
|
817
808
|
- app/forms/thredded/topic_form.rb
|
818
809
|
- app/forms/thredded/user_preferences_form.rb
|
@@ -928,6 +919,7 @@ files:
|
|
928
919
|
- app/views/thredded/posts/_post.html.erb
|
929
920
|
- app/views/thredded/posts/_user.html.erb
|
930
921
|
- app/views/thredded/posts/edit.html.erb
|
922
|
+
- app/views/thredded/posts/new.html.erb
|
931
923
|
- app/views/thredded/posts_common/_actions.html.erb
|
932
924
|
- app/views/thredded/posts_common/_content.html.erb
|
933
925
|
- app/views/thredded/posts_common/_form.html.erb
|
@@ -937,13 +929,15 @@ files:
|
|
937
929
|
- app/views/thredded/posts_common/actions/_delete.html.erb
|
938
930
|
- app/views/thredded/posts_common/actions/_edit.html.erb
|
939
931
|
- app/views/thredded/posts_common/actions/_mark_as_unread.html.erb
|
932
|
+
- app/views/thredded/posts_common/actions/_quote.html.erb
|
940
933
|
- app/views/thredded/posts_common/form/_after_content.html.erb
|
941
934
|
- app/views/thredded/posts_common/form/_before_content.html.erb
|
942
935
|
- app/views/thredded/posts_common/form/_content.html.erb
|
943
936
|
- app/views/thredded/posts_common/form/_content_field.html.erb
|
944
937
|
- app/views/thredded/posts_common/form/_preview_area.html.erb
|
945
938
|
- app/views/thredded/preferences/_form.html.erb
|
946
|
-
- app/views/thredded/preferences/
|
939
|
+
- app/views/thredded/preferences/_messageboards_nav.html.erb
|
940
|
+
- app/views/thredded/preferences/_messageboards_nav_item.html.erb
|
947
941
|
- app/views/thredded/preferences/edit.html.erb
|
948
942
|
- app/views/thredded/private_post_previews/preview.html.erb
|
949
943
|
- app/views/thredded/private_post_previews/update.html.erb
|
@@ -951,6 +945,7 @@ files:
|
|
951
945
|
- app/views/thredded/private_posts/_form.html.erb
|
952
946
|
- app/views/thredded/private_posts/_private_post.html.erb
|
953
947
|
- app/views/thredded/private_posts/edit.html.erb
|
948
|
+
- app/views/thredded/private_posts/new.html.erb
|
954
949
|
- app/views/thredded/private_topic_mailer/message_notification.html.erb
|
955
950
|
- app/views/thredded/private_topic_mailer/message_notification.text.erb
|
956
951
|
- app/views/thredded/private_topic_previews/preview.html.erb
|
@@ -977,6 +972,7 @@ files:
|
|
977
972
|
- app/views/thredded/shared/nav/_notification_preferences.html.erb
|
978
973
|
- app/views/thredded/shared/nav/_private_topics.html.erb
|
979
974
|
- app/views/thredded/shared/nav/_standalone.html.erb
|
975
|
+
- app/views/thredded/shared/nav/_standalone_profile.html.erb
|
980
976
|
- app/views/thredded/shared/preview.html.erb
|
981
977
|
- app/views/thredded/theme_previews/_section_title.html.erb
|
982
978
|
- app/views/thredded/theme_previews/show.html.erb
|
@@ -1015,6 +1011,7 @@ files:
|
|
1015
1011
|
- db/upgrade_migrations/20161113161801_upgrade_v0_8_to_v0_9.rb
|
1016
1012
|
- db/upgrade_migrations/20170125033319_upgrade_v0_9_to_v0_10.rb
|
1017
1013
|
- db/upgrade_migrations/20170312131417_upgrade_thredded_v0_10_to_v0_11.rb
|
1014
|
+
- db/upgrade_migrations/20170420163138_upgrade_thredded_v0_11_to_v0_12.rb
|
1018
1015
|
- lib/generators/thredded/install/USAGE
|
1019
1016
|
- lib/generators/thredded/install/install_generator.rb
|
1020
1017
|
- lib/generators/thredded/install/templates/initializer.rb
|
@@ -1038,6 +1035,7 @@ files:
|
|
1038
1035
|
- lib/thredded/version.rb
|
1039
1036
|
- lib/thredded/view_hooks/config.rb
|
1040
1037
|
- lib/thredded/view_hooks/renderer.rb
|
1038
|
+
- vendor/assets/javascripts/autosize.js
|
1041
1039
|
- vendor/assets/javascripts/jquery.textcomplete.js
|
1042
1040
|
homepage: https://thredded.org
|
1043
1041
|
licenses:
|