skinny_forum 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +92 -0
- data/MIT-LICENSE +20 -0
- data/README.md +29 -0
- data/README.rdoc +3 -0
- data/Rakefile +34 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/images/skinny_forum/.keep +0 -0
- data/app/assets/images/skinny_forum/internet.png +0 -0
- data/app/assets/images/skinny_forum/myphoto.jpg +0 -0
- data/app/assets/images/skinny_forum/silver_selector.png +0 -0
- data/app/assets/javascripts/skinnyforum/application.js +22 -0
- data/app/assets/javascripts/skinnyforum/forum_admin.js.coffee +433 -0
- data/app/assets/javascripts/skinnyforum/forum_basic.js.coffee +269 -0
- data/app/assets/javascripts/skinnyforum/forum_translator.js.coffee +113 -0
- data/app/assets/javascripts/skinnyforum/forum_user.js.coffee +394 -0
- data/app/assets/javascripts/skinnyforum/global_java.js +141 -0
- data/app/assets/stylesheets/skinnyforum/application.css.scss +25 -0
- data/app/assets/stylesheets/skinnyforum/custom.css.scss +289 -0
- data/app/controllers/skinnyforum/application_controller.rb +24 -0
- data/app/controllers/skinnyforum/forums_controller.rb +130 -0
- data/app/helpers/skinnyforum/application_helper.rb +4 -0
- data/app/mailers/.keep +0 -0
- data/app/mailers/skinnyforum/user_mailer.rb +13 -0
- data/app/models/.keep +0 -0
- data/app/models/skinnyforum/forum.rb +251 -0
- data/app/models/skinnyforum/forum_category.rb +70 -0
- data/app/models/skinnyforum/forum_hyperlink.rb +50 -0
- data/app/models/skinnyforum/forum_language.rb +86 -0
- data/app/models/skinnyforum/forum_people_list.rb +183 -0
- data/app/models/skinnyforum/forum_photo.rb +62 -0
- data/app/models/skinnyforum/forum_topic.rb +137 -0
- data/app/models/skinnyforum/forum_translation.rb +109 -0
- data/app/views/layouts/skinnyforum/application.html.erb +14 -0
- data/app/views/skinnyforum/forums/_dummy.html.erb +0 -0
- data/app/views/skinnyforum/forums/_forum.html.erb +107 -0
- data/app/views/skinnyforum/forums/_forum_admin.html.erb +133 -0
- data/app/views/skinnyforum/forums/newforum_photo.js.erb +1 -0
- data/app/views/skinnyforum/user_mailer/note_to_forum_users.html.erb +32 -0
- data/app_data/forum_base.csv +8 -0
- data/app_data/forum_help.csv +24 -0
- data/app_data/reset cmds +13 -0
- data/config/locales/skinnyforum/forum_de.yml +88 -0
- data/config/locales/skinnyforum/forum_en.yml +88 -0
- data/config/locales/skinnyforum/forum_es.yml +88 -0
- data/config/locales/skinnyforum/forum_fr.yml +88 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20130100_add_users.rb +11 -0
- data/db/migrate/20140601_add_forums.rb +164 -0
- data/lib/skinny_forum.rb +4 -0
- data/lib/skinny_forum/engine.rb +5 -0
- data/lib/skinny_forum/forum_shared_code.rb +94 -0
- data/lib/skinny_forum/version.rb +3 -0
- data/lib/tasks/forum_tasks.rake +52 -0
- data/lib/tasks/skinny_forum_tasks.rake +4 -0
- data/skinny_forum.gemspec +28 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +83 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/skinny_forum_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +234 -0
@@ -0,0 +1,269 @@
|
|
1
|
+
jQuery ->
|
2
|
+
unless checkPage(getHomeName()) then return
|
3
|
+
$('#gotoforum').click ->
|
4
|
+
startForum()
|
5
|
+
$('#close-forum').click ->
|
6
|
+
closeForum()
|
7
|
+
$('#forum-senate').delegate 'img[id = forum-photo]','click', (evt) ->
|
8
|
+
playPhoto(event.target)
|
9
|
+
$('#forum-senate').delegate 'img[id = forum-photo]','mouseenter', (evt) ->
|
10
|
+
makePhotoBig(event.target,true)
|
11
|
+
$('#forum-senate').delegate 'img[id = forum-photo]','mouseleave', (evt) ->
|
12
|
+
makePhotoBig(event.target,false)
|
13
|
+
$('#forum-topic').change ->
|
14
|
+
getSenate()
|
15
|
+
$('#forum-language').change ->
|
16
|
+
getSenate()
|
17
|
+
$('#forum-category').change ->
|
18
|
+
changeTopic()
|
19
|
+
|
20
|
+
window.startForum = ->
|
21
|
+
hideMe({id: showPageName()})
|
22
|
+
blockMe({id: 'forum-page'})
|
23
|
+
clearSenate()
|
24
|
+
showMe({id:'forum-category'})
|
25
|
+
$.post('forum_ajax', {function: 'get topics', category: 'select category', hold_test: true, restricted: true},loadList)
|
26
|
+
comment_span = document.getElementById('forum-comment-span')
|
27
|
+
comment_span.dataset.translating == 'false'
|
28
|
+
hideMe({obj: comment_span})
|
29
|
+
$.post('forum_ajax', {function:'categories', language: getLanguage(),list:'forum-category', hold_test: true, restricted: true},loadList)
|
30
|
+
$.post('forum_ajax', {function:'categories', language: getLanguage(),list:'forum-category-admin', hold_test: false, restricted: false},loadList)
|
31
|
+
$.post('forum_ajax', {function:'categories', language: getLanguage(),list:'forum-category-monitor', hold_test: false, restricted: false},loadList)
|
32
|
+
$.post('forum_ajax',{function:'get language set',list:'forum-language',active:true,by_name:false},loadList)
|
33
|
+
$.post('forum_ajax',{function:'get language set',list:'forum-translation-language',active:true},loadCustomList)
|
34
|
+
|
35
|
+
closeForum = ->
|
36
|
+
hideMe({id: 'forum-page'})
|
37
|
+
blockMe({id: showPageName()})
|
38
|
+
clearSenate()
|
39
|
+
setCategory(0)
|
40
|
+
setTopic(0)
|
41
|
+
changeTopic()
|
42
|
+
cancelComment()
|
43
|
+
$('#forum-comment').val('')
|
44
|
+
if $('#comment-maybe')?
|
45
|
+
$('#comment-maybe').remove()
|
46
|
+
hideMe({id: 'comment-span'})
|
47
|
+
hideMe({id: 'forum-senate-admin-lists'})
|
48
|
+
hideMe({id: "forum-senate-admin-users"})
|
49
|
+
blockMe({id: 'forum-senate'})
|
50
|
+
|
51
|
+
loadCustomList=(params)->
|
52
|
+
if params?
|
53
|
+
list_data = params.list_data
|
54
|
+
selector = document.getElementById('forum-translation-choices')
|
55
|
+
$(selector).children().remove()
|
56
|
+
for i in [0...list_data.length]
|
57
|
+
option = document.createElement('LI')
|
58
|
+
option.dataset.choice = list_data[i].item
|
59
|
+
option.dataset.display= list_data[i].value
|
60
|
+
option.innerHTML=list_data[i].value
|
61
|
+
selector.appendChild(option)
|
62
|
+
option.id='forum-translation-choice'
|
63
|
+
option.classList.add('drop-menu')
|
64
|
+
|
65
|
+
window.loadList = (params)->
|
66
|
+
if params? && params.list_data?
|
67
|
+
list_data = params.list_data
|
68
|
+
if params.name != undefined
|
69
|
+
selector= $("[name="+params.name+"]")
|
70
|
+
else if params.id !=undefined
|
71
|
+
selector = $(document.getElementById(params.id))
|
72
|
+
else if params.obj !=undefined
|
73
|
+
selector=$(params.obj)
|
74
|
+
selector.children().remove()
|
75
|
+
for i in [0...list_data.length]
|
76
|
+
unless list_data[i].state == 'closed'
|
77
|
+
pushOption(selector,list_data[i], 0)
|
78
|
+
|
79
|
+
window.pushOption = (q_selector,data,offset)->
|
80
|
+
selector=q_selector.get()[0]
|
81
|
+
if selector?
|
82
|
+
option = document.createElement("option")
|
83
|
+
option.text = data.value
|
84
|
+
option.value = data.item
|
85
|
+
option.id = 'forum-admin-option'
|
86
|
+
ref = selector.children[selector.children.length - offset]
|
87
|
+
if ref==undefined
|
88
|
+
selector.appendChild(option)
|
89
|
+
else
|
90
|
+
selector.insertBefore(option,ref)
|
91
|
+
else
|
92
|
+
alert "#{params.list} #{params.by_name} is not there"
|
93
|
+
|
94
|
+
|
95
|
+
window.getLanguage = ->
|
96
|
+
getSelectValues({id:'forum-language', ref:true})
|
97
|
+
|
98
|
+
window.getTopic = ->
|
99
|
+
document.getElementById('forum-topic').value
|
100
|
+
|
101
|
+
window.getCategory = ->
|
102
|
+
document.getElementById('forum-category').value
|
103
|
+
|
104
|
+
window.setTopic = (index)->
|
105
|
+
topic = $('select[id = forum-topic]').get()[0]
|
106
|
+
topic.selectedIndex= index
|
107
|
+
|
108
|
+
window.setCategory = (index)->
|
109
|
+
category = $('select[id = forum-category]').get()[0]
|
110
|
+
category.selectedIndex= index
|
111
|
+
|
112
|
+
window.clearSenate = ->
|
113
|
+
children = $('#just-a-comment')
|
114
|
+
if children?
|
115
|
+
$('span[id = just-a-comment]').remove()
|
116
|
+
deleteMyData(document.getElementById('forum-senate'))
|
117
|
+
hideMe({id: 'forum-voting-booth'})
|
118
|
+
hideMe({id: 'subscribe-forum'})
|
119
|
+
hideMe({id: 'unsubscribe-forum'})
|
120
|
+
hideMe({id: 'add-new-thing-span'})
|
121
|
+
hideMe({id: 'forum-senate-admin'})
|
122
|
+
document.getElementById('forum-senate').dataset.admining = 'false'
|
123
|
+
|
124
|
+
window.setSenate = (params)->
|
125
|
+
page = document.getElementById('forum-senate')
|
126
|
+
showMe({id: '#forum-senate'})
|
127
|
+
document.getElementById('forum-comment-span').dataset.next_id = params.index
|
128
|
+
kids = $(page).children()
|
129
|
+
unless !params.the_list?
|
130
|
+
for i in [0...kids.length]
|
131
|
+
unless kids[i].id == 'forum-comment-span'
|
132
|
+
removeMe({obj:kids[i]})
|
133
|
+
unless params.the_list.length == 0
|
134
|
+
for i in [0...params.the_list.length]
|
135
|
+
buildSpan(page, i, params.the_list[i])
|
136
|
+
|
137
|
+
buildSpan = (page, index, params) ->
|
138
|
+
span = document.createElement('span')
|
139
|
+
if index == 0
|
140
|
+
span.className = 'forum-topic'
|
141
|
+
page.dataset.moderator = params.moderator
|
142
|
+
if params.moderator then $.post('forum_ajax',{function:'get translations',topic:getTopic(),language:getTranslationLanguage()},saveTranslationSuggestions)
|
143
|
+
if params.subscribed? then setSubscriber(params.subscribed)
|
144
|
+
if params.vote then setUpVoting({vote: params.vote, votes: params.votes})
|
145
|
+
if params.moderator then showMe({id: 'review-forum-span'})
|
146
|
+
if params.review then page.dataset.review = true
|
147
|
+
else span.className = "forum-comment"
|
148
|
+
span.id = "just-a-comment"
|
149
|
+
indexes=Object.keys(params)
|
150
|
+
for k in [0...indexes.length]
|
151
|
+
unless indexes[k]=='empty_list'
|
152
|
+
span.dataset[indexes[k]]=params[indexes[k]]
|
153
|
+
the_list=JSON.parse(params.empty_list)
|
154
|
+
span.dataset.needy_list= JSON.stringify(the_list) #convert to javascript friendly JSON
|
155
|
+
span.style.textIndent = "#{params.indent * 20}px"
|
156
|
+
if page.dataset.moderator == 'true' && params.comment_state == 'new'
|
157
|
+
da_class = 'comment-new'
|
158
|
+
else if page.dataset.moderator == 'true' && params.comment_state == 'reject'
|
159
|
+
da_class = 'comment-reject'
|
160
|
+
else da_class = 'forum-comment'
|
161
|
+
span.innerHTML = "<p class = '#{da_class}'>" + params.content + '<span name = owner-of-record class = right>' + params.owner_name + '</span></p>'
|
162
|
+
page.appendChild(span)
|
163
|
+
if params.has_photo
|
164
|
+
putPhotoIn(span,params.photos)
|
165
|
+
if params.hyperlinks?
|
166
|
+
hyperlinks=params.hyperlinks
|
167
|
+
for i in [0...hyperlinks.length]
|
168
|
+
writeLink(hyperlinks[i],span)
|
169
|
+
|
170
|
+
window.getSelectedId = ->
|
171
|
+
if window.getSelection != undefined
|
172
|
+
sel = window.getSelection()
|
173
|
+
unless sel== null
|
174
|
+
span = sel.anchorNode.parentNode.parentElement
|
175
|
+
if sel.rangeCount
|
176
|
+
container = document.createElement("div")
|
177
|
+
for i in [0...sel.rangeCount]
|
178
|
+
container.appendChild(sel.getRangeAt(i).cloneContents())
|
179
|
+
html = container.innerHTML
|
180
|
+
else if document.selection != undefined
|
181
|
+
if (document.selection.type == "Text")
|
182
|
+
html = document.selection.createRange().htmlText
|
183
|
+
unless span?
|
184
|
+
spans = $('#forum-senate span')
|
185
|
+
if spans.length > 0
|
186
|
+
span = spans[spans.length - 1]
|
187
|
+
{selection: html, id: span.dataset.id}
|
188
|
+
|
189
|
+
putPhotoIn=(span,urls)->
|
190
|
+
span.dataset.already_has_photo=true
|
191
|
+
for i in [0...urls.length]
|
192
|
+
img= new Image
|
193
|
+
img.src=urls[i]
|
194
|
+
img.className= 'forum-photo'
|
195
|
+
img.id='forum-photo'
|
196
|
+
paragraph=span.children[0]
|
197
|
+
paragraph.appendChild(img)
|
198
|
+
|
199
|
+
makePhotoBig=(photo,bigger)->
|
200
|
+
if bigger
|
201
|
+
x=photo.x
|
202
|
+
ref=photo.width+x
|
203
|
+
photo.classList.add('forum-big-photo')
|
204
|
+
photo.classList.remove('forum-photo')
|
205
|
+
photo.style.position='relative'
|
206
|
+
photo.style.left=x+'px'
|
207
|
+
b=-113
|
208
|
+
m=0.16129
|
209
|
+
error=$(window).width()*m+b
|
210
|
+
new_left= ref-photo.width-error
|
211
|
+
if new_left<40 then new_left=40
|
212
|
+
photo.style.left= new_left+'px'
|
213
|
+
|
214
|
+
else
|
215
|
+
photo.classList.remove('forum-big-photo')
|
216
|
+
photo.classList.add('forum-photo')
|
217
|
+
photo.style.left=''
|
218
|
+
photo.style.position=''
|
219
|
+
|
220
|
+
playPhoto=(photo)->
|
221
|
+
photo.src=photo.src
|
222
|
+
event.stopPropagation()
|
223
|
+
|
224
|
+
askForPhotAgain=(params)->
|
225
|
+
$.post('forum_ajax',{function:'get forum photo',tag:params.tag,edit:params.edit,count:params.count,id:params.id,parent:params.parent},needAPhoto)
|
226
|
+
|
227
|
+
window.needAPhoto=(params)->
|
228
|
+
if params.urls.length > 0
|
229
|
+
setMaybeId(params)
|
230
|
+
if params.edit=='true'
|
231
|
+
span=$('[data-id='+params.id+']').get()[0]
|
232
|
+
else
|
233
|
+
span=$("[data-tag=#{params.tag}]").get()[0]
|
234
|
+
putPhotoIn(span,params.urls)
|
235
|
+
else #if params.count < 20
|
236
|
+
setTimeout (-> askForPhotAgain(params)), 2000
|
237
|
+
|
238
|
+
getSenate = ->
|
239
|
+
clearSenate()
|
240
|
+
select = document.getElementById('forum-topic').value
|
241
|
+
if select == 'request new topic'
|
242
|
+
addNewThing({'forum-topic'})
|
243
|
+
else
|
244
|
+
document.getElementById('forum-senate').dataset.topic = select
|
245
|
+
$.post('forum_ajax', {function: 'get senate',language:getLanguage(), topic: select}, setSenate)
|
246
|
+
|
247
|
+
|
248
|
+
addNewThing = (select)->
|
249
|
+
$('#add-new-thing-input').val('')
|
250
|
+
showMe({id: 'add-new-thing-span'})
|
251
|
+
hideMe({id: 'forum-senate'})
|
252
|
+
$('#add-new-thing-span').data.thing = select
|
253
|
+
|
254
|
+
window.changeTopic = ->
|
255
|
+
setTopic(0)
|
256
|
+
select = document.getElementById('forum-category').value
|
257
|
+
hideMe({id: 'forum-senate-admin-lists'})
|
258
|
+
hideMe({id:'forum-senate-admin-users'})
|
259
|
+
clearSenate()
|
260
|
+
if select == 'request new category'
|
261
|
+
addNewThing('forum-category')
|
262
|
+
else if select == 'admin'
|
263
|
+
doAdminStuff()
|
264
|
+
else if select != 'select category'
|
265
|
+
blockMe({id: 'forum-senate'})
|
266
|
+
hideMe({id: 'forum-senate-admin'})
|
267
|
+
document.getElementById('forum-senate').dataset.category = select
|
268
|
+
$.post('forum_ajax', {function: 'get topics',list:'forum-topic', category: select, hold_test: true, restricted: true}, loadList)
|
269
|
+
|
@@ -0,0 +1,113 @@
|
|
1
|
+
jQuery ->
|
2
|
+
unless checkPage(getHomeName()) then return
|
3
|
+
$('#forum-comment-span').delegate '[id = forum-translation-choice]','click', (evt) ->
|
4
|
+
setTranslationLanguage(event.target)
|
5
|
+
$('#forum-translation-language').click ->
|
6
|
+
showMe({id:'forum-translation-choices'})
|
7
|
+
$('#forum-comment-span').delegate 'textarea[id= forum-translation-suggestion]','dblclick', (evt) ->
|
8
|
+
makeThisTheTranslations(event.target)
|
9
|
+
|
10
|
+
makeThisTheTranslations=(which)->
|
11
|
+
$('#forum-comment-translation').val(which.value)
|
12
|
+
|
13
|
+
window.getTranslationLanguage=->
|
14
|
+
$('#forum-translation-language').val()
|
15
|
+
|
16
|
+
window.setTranslationState = ->
|
17
|
+
comment_span = document.getElementById('forum-comment-span')
|
18
|
+
the_span=$("[data-id="+comment_span.dataset.target+']').get()[0]
|
19
|
+
if comment_span.dataset.translating == 'true'
|
20
|
+
comment_span.dataset.translating = false
|
21
|
+
hideMe({id: 'forum-translation-span'})
|
22
|
+
document.getElementById('forum-comment-translation').innerHTML=''
|
23
|
+
document.getElementById('forum-comment').innerHTML=''
|
24
|
+
else
|
25
|
+
comment_span.dataset.translating = true
|
26
|
+
blockMe({id: 'forum-translation-span'})
|
27
|
+
if the_span.dataset.needs_translation =='true'
|
28
|
+
my_list=JSON.parse(the_span.dataset.needy_list )
|
29
|
+
$('[name=add-forum-translation]').get()[0].classList.add('hot')
|
30
|
+
colorList('forum-translation-choices',my_list)
|
31
|
+
setLinkTranslations()
|
32
|
+
if document.getElementById('forum-comment').value== ''
|
33
|
+
setCommentSpan()
|
34
|
+
|
35
|
+
setTranslationLanguage=(selected)->
|
36
|
+
document.getElementById('forum-translation-language').value= selected.dataset.display
|
37
|
+
hideMe(id:'forum-translation-choices')
|
38
|
+
if isModerator() then $.post('forum_ajax',{function:'get translations',topic:getTopic(),language:getTranslationLanguage()},saveTranslationSuggestions)
|
39
|
+
|
40
|
+
colorList=(the_list,data_list)->
|
41
|
+
items=document.getElementById(the_list).children
|
42
|
+
for i in [0...items.length]
|
43
|
+
if items[i].dataset.choice in data_list
|
44
|
+
items[i].classList.add('needy')
|
45
|
+
else
|
46
|
+
items[i].classList.remove('needy')
|
47
|
+
|
48
|
+
window.checkForSuggestedTranslations=(id)->
|
49
|
+
page=document.getElementById('forum-senate')
|
50
|
+
$('#forum-comment-translation').val(page.dataset["translation-"+id ] )
|
51
|
+
$('[id=forum-translation-suggestion]').remove()
|
52
|
+
suggestions =page.dataset['suggestedtranslation-'+id]
|
53
|
+
if suggestions != undefined
|
54
|
+
suggestion_list = JSON.parse(suggestions)
|
55
|
+
list_parent=document.getElementById('forum-translation-scroll')
|
56
|
+
for i in [0...suggestion_list.length]
|
57
|
+
suggestion = document.createElement('textarea')
|
58
|
+
suggestion.value = suggestion_list[i]
|
59
|
+
suggestion.id='forum-translation-suggestion'
|
60
|
+
suggestion.className='senate-new'
|
61
|
+
list_parent.appendChild(suggestion)
|
62
|
+
|
63
|
+
window.saveTranslationSuggestions=(params)->
|
64
|
+
if params? && params.length>0 && params[0].forum_id?
|
65
|
+
page = document.getElementById('forum-senate')
|
66
|
+
for i in [0...params.length]
|
67
|
+
if params[i].suggestion
|
68
|
+
if page.dataset['suggestedtranslation-' + params[i].forum_id] == undefined
|
69
|
+
temp=[params[i].translation]
|
70
|
+
else
|
71
|
+
temp=JSON.parse(page.dataset['suggestedtranslation-' + params[i].forum_id] )
|
72
|
+
temp.push(params[i].translation)
|
73
|
+
page.dataset['suggestedtranslation-' + params[i].forum_id]= JSON.stringify(temp)
|
74
|
+
else
|
75
|
+
page.dataset['translation-'+ params[i].forum_id]= params[i].translation
|
76
|
+
|
77
|
+
window.setLinkTranslations=->
|
78
|
+
hideMe({id:'forum-add-hyperlink-span'})
|
79
|
+
showMe({id:'forum-translate-hyperlink-span'})
|
80
|
+
comment_span=document.getElementById('forum-comment-span')
|
81
|
+
link_ref=comment_span.dataset.link_ref
|
82
|
+
unless link_ref == undefined
|
83
|
+
link_ref=parseInt(link_ref)
|
84
|
+
hyper=document.getElementById('forum-translate-hyperlink-span')
|
85
|
+
for i in [0...link_ref]
|
86
|
+
span= document.createElement('span')
|
87
|
+
span.id='translation-span-id-'+i
|
88
|
+
space= document.createElement('span')
|
89
|
+
space.innerHTML=' '
|
90
|
+
span.appendChild(space)
|
91
|
+
label_it=document.createElement('label')
|
92
|
+
label_it.innerHTML= comment_span.dataset['link_text-'+i]
|
93
|
+
span.appendChild(label_it)
|
94
|
+
text_in=document.createElement('input')
|
95
|
+
text_in.type='text'
|
96
|
+
text_in.id= 'hyperlink-translation-input'
|
97
|
+
text_in.name=i
|
98
|
+
text_in.className= "admin-edit-field"
|
99
|
+
span.appendChild(text_in)
|
100
|
+
hyper.appendChild(span)
|
101
|
+
|
102
|
+
window.addLinkTranslations=(params)->
|
103
|
+
comment_span=document.getElementById('forum-comment-span')
|
104
|
+
link_ref=comment_span.dataset.link_ref
|
105
|
+
translations= $('[id=hyperlink-translation-input]')
|
106
|
+
unless link_ref == undefined || translations.length == 0
|
107
|
+
link_ref=parseInt(link_ref)
|
108
|
+
for i in [0...link_ref]
|
109
|
+
data= params['link-'+i]
|
110
|
+
alert data
|
111
|
+
data['translation']= translations[i].value
|
112
|
+
params['link-'+i]=data
|
113
|
+
params
|
@@ -0,0 +1,394 @@
|
|
1
|
+
jQuery ->
|
2
|
+
unless checkPage(getHomeName()) then return
|
3
|
+
$('#my-forum-photo').ajaxForm()
|
4
|
+
$('input[id = forum-user-button]').click ->
|
5
|
+
manageUserAction(event.target)
|
6
|
+
$('#forum-comment-span').click ->
|
7
|
+
event.stopPropagation()
|
8
|
+
$('input[id=forum_photo_file]').change ->
|
9
|
+
unless $('input[id=forum_photo_file]').val() == ''
|
10
|
+
document.getElementById('forum-comment-span').dataset.photo = true
|
11
|
+
$('#forum-add-photo').click ->
|
12
|
+
$('input[id=forum_photo_file]').click()
|
13
|
+
event.stopPropagation()
|
14
|
+
$('#forum-create-hyperlink').click ->
|
15
|
+
addHotLlink()
|
16
|
+
$('#forum-add-hyperlink').click ->
|
17
|
+
showHyperlinkInput()
|
18
|
+
#------------------------------------- this needs to be last binding ------------------------#
|
19
|
+
$('#forum-senate').click ->
|
20
|
+
checkPost()
|
21
|
+
event.stopPropagation()
|
22
|
+
$('button[id = forum-vote]').click ->
|
23
|
+
doForumVoting(event.target)
|
24
|
+
|
25
|
+
doForumVoting = (which)->
|
26
|
+
switch(which.parentNode.name)
|
27
|
+
when 'up'
|
28
|
+
voteUp()
|
29
|
+
when 'down'
|
30
|
+
voteDown()
|
31
|
+
else
|
32
|
+
|
33
|
+
manageUserAction = (which)->
|
34
|
+
switch(which.name)
|
35
|
+
when 'forum-edit-comment'
|
36
|
+
editComment()
|
37
|
+
when 'forum-accept-comment'
|
38
|
+
setCommentState('accept')
|
39
|
+
when 'forum-reject-rest'
|
40
|
+
setStateRest('reject')
|
41
|
+
when 'forum-accept-rest'
|
42
|
+
setStateRest('accept')
|
43
|
+
when 'forum-reject-comment'
|
44
|
+
setCommentState('reject')
|
45
|
+
when 'forum-cancel-comment'
|
46
|
+
cancelComment()
|
47
|
+
when 'forum-post-it'
|
48
|
+
setComment()
|
49
|
+
when 'forum-subscribe'
|
50
|
+
subscribe(true)
|
51
|
+
when 'forum-unsubscribe'
|
52
|
+
subscribe(false)
|
53
|
+
when 'add-forum-translation'
|
54
|
+
setTranslationState()
|
55
|
+
when 'add-forum-voting'
|
56
|
+
$.post('forum_ajax', {function: 'add voting', topic: getTopic()}, setUpVoting)
|
57
|
+
when 'forum-add-suggestion-submit'
|
58
|
+
sendNewThing()
|
59
|
+
when 'forum-restrict-comment'
|
60
|
+
checkRestriction(which)
|
61
|
+
when 'forum-invite-comment'
|
62
|
+
showMe({id: 'forum-invitation-span'})
|
63
|
+
when 'forum-invite-list-save'
|
64
|
+
saveInviteList()
|
65
|
+
else
|
66
|
+
|
67
|
+
checkRestriction = (which)->
|
68
|
+
comment_span = document.getElementById('forum-comment-span')
|
69
|
+
if comment_span.dataset.restricted == 'false'
|
70
|
+
which.value = which.dataset.unrestrict
|
71
|
+
comment_span.dataset.restricted = true
|
72
|
+
else
|
73
|
+
which.value = which.dataset.restrict
|
74
|
+
comment_span.dataset.restricted = false
|
75
|
+
|
76
|
+
setStateRest = (new_state)->
|
77
|
+
spans = $('span[data-state = new]')
|
78
|
+
for i in [0...spans.length]
|
79
|
+
setTheState([spans[i]], new_state)
|
80
|
+
$.post('forum_ajax', {function: 'set_the_rest', topic: getTopic(), state: new_state})
|
81
|
+
clearSenate()
|
82
|
+
setCategory(0)
|
83
|
+
setTopic(0)
|
84
|
+
|
85
|
+
subscribe = (subscribed)->
|
86
|
+
setSubscriber(subscribed)
|
87
|
+
$.post('forum_ajax', {function: 'subscribe', topic: getTopic()})
|
88
|
+
|
89
|
+
voteUp = ->
|
90
|
+
$.post('forum_ajax', {function: 'vote', vote: 1, topic: getTopic()}, refreshVote)
|
91
|
+
voteIt(1)
|
92
|
+
|
93
|
+
window.setCommentSpan=->
|
94
|
+
if $('#comment-maybe')? && $('#comment-maybe').length == 1
|
95
|
+
id = parseInt($('#comment-maybe').get()[0].dataset.parent)
|
96
|
+
span = $("span[data-id = #{id}]").get()[0]
|
97
|
+
comment_span = document.getElementById('forum-comment-span')
|
98
|
+
if span.dataset.owner == 'true'
|
99
|
+
comment_span.dataset.editing = true
|
100
|
+
comment_span.dataset.edit=true
|
101
|
+
comment_span.dataset.target = id
|
102
|
+
comment_span.dataset.restricted = span.dataset.restricted
|
103
|
+
if span.dataset.already_has_photo=='true'
|
104
|
+
comment_span.dataset.already_has_photo=true
|
105
|
+
if span.dataset.restricted == 'true'
|
106
|
+
$('[name = forum-restrict-comment]').val($('[name = forum-restrict-comment]').get()[0].dataset.unrestrict)
|
107
|
+
else
|
108
|
+
$('[name = forum-restrict-comment]').val($('[name = forum-restrict-comment]').get()[0].dataset.restrict)
|
109
|
+
comment_data = span.childNodes[0].innerHTML.split('<span')
|
110
|
+
$('#forum-comment').val(comment_data[0])
|
111
|
+
if isModerator()
|
112
|
+
checkForSuggestedTranslations(id)
|
113
|
+
|
114
|
+
editComment = ->
|
115
|
+
setCommentSpan()
|
116
|
+
|
117
|
+
voteDown = ->
|
118
|
+
$.post('forum_ajax', {function: 'vote', vote: -1, topic: getTopic()}, refreshVote)
|
119
|
+
voteIt(-1)
|
120
|
+
|
121
|
+
voteIt = (vote)->
|
122
|
+
votes = parseInt(document.getElementById('forum-vote-count').innerHTML.split(' = ')[1])
|
123
|
+
document.getElementById('forum-vote-count').innerHTML = 'Vote = ' + (votes + vote)
|
124
|
+
|
125
|
+
refreshVote = (params)->
|
126
|
+
document.getElementById('forum-vote-count').innerHTML = 'Vote = ' + (params.votes)
|
127
|
+
|
128
|
+
setUpVoting = (params)->
|
129
|
+
if params.vote
|
130
|
+
showMe({id: 'forum-voting-booth'})
|
131
|
+
refreshVote({votes: params.votes})
|
132
|
+
else
|
133
|
+
hideMe({id: 'forum-voting-booth'})
|
134
|
+
|
135
|
+
setCommentState = (new_state)->
|
136
|
+
span = $('#comment-maybe').get()[0]
|
137
|
+
unless span == undefined
|
138
|
+
id = parseInt($('#comment-maybe').get()[0].dataset.parent)
|
139
|
+
setTheState($("span[data-id = #{id}]"), new_state)
|
140
|
+
resolution = getMyValue('forum-comment')
|
141
|
+
setMyValue('forum-comment', '')
|
142
|
+
hideMe({id: 'comment-span'})
|
143
|
+
$('#comment-maybe').remove()
|
144
|
+
$.post('forum_ajax', {function: new_state, id: id, resolution: resolution})
|
145
|
+
|
146
|
+
setTheState = (span, new_state)->
|
147
|
+
baby_span = span[0].children[0]
|
148
|
+
switch new_state
|
149
|
+
when 'accept'
|
150
|
+
baby_span.className = 'forum-comment'
|
151
|
+
when 'reject'
|
152
|
+
baby_span.className = 'comment-reject'
|
153
|
+
else
|
154
|
+
baby_span.parentNode.dataset.comment_state = new_state
|
155
|
+
|
156
|
+
window.cancelComment = ->
|
157
|
+
$('#forum-comment').val('')
|
158
|
+
$('#comment-maybe').remove()
|
159
|
+
hideMe({id: 'forum-comment-span'})
|
160
|
+
|
161
|
+
checkPost = ->
|
162
|
+
unless getSelectedId().id == undefined
|
163
|
+
page = document.getElementById('forum-senate')
|
164
|
+
if $('#comment-maybe')?
|
165
|
+
$('#comment-maybe').remove()
|
166
|
+
id = parseInt(getSelectedId().id)
|
167
|
+
if id?
|
168
|
+
offset = setNewComment(id)
|
169
|
+
if page.dataset.language
|
170
|
+
showMe({id: 'add-forum-translation'})
|
171
|
+
else hideMe({id: 'add-forum-translation'})
|
172
|
+
if isModerator()
|
173
|
+
moderatorOnOff(true)
|
174
|
+
else moderatorOnOff(false)
|
175
|
+
placeCommentSpan(offset, id)
|
176
|
+
|
177
|
+
window.isModerator =->
|
178
|
+
page = document.getElementById('forum-senate')
|
179
|
+
page.dataset.moderator == 'true'
|
180
|
+
|
181
|
+
setNewComment = (id)->
|
182
|
+
$('#forum-comment').val('')
|
183
|
+
$('#forum-comment-translation').val('')
|
184
|
+
$('[name=translation-suggestion]').remove
|
185
|
+
page = document.getElementById('forum-senate')
|
186
|
+
span = document.createElement('span')
|
187
|
+
span.className = "forum-comment-new"
|
188
|
+
span.id = "comment-maybe"
|
189
|
+
parent_span = $("span[data-id = #{id}]").get()[0]
|
190
|
+
span.style.textIndent = 20 + parseInt(parent_span.style.textIndent) + 'px'
|
191
|
+
span.dataset.parent = id
|
192
|
+
span.innerHTML = "<p class = 'forum-comment'>your post </p>"
|
193
|
+
if page.dataset.review == 'true'
|
194
|
+
$("span[data-id = #{id}]").after(span)
|
195
|
+
else
|
196
|
+
$(lastChild(id)).after(span)
|
197
|
+
if parent_span.dataset.owner == 'true' then showMe({name: 'forum-edit-comment'})
|
198
|
+
else hideMe({name: 'forum-edit-comment'})
|
199
|
+
if document.getElementById('forum-comment-span').dataset.translating == 'true'
|
200
|
+
editComment()
|
201
|
+
parseInt(span.offsetTop)
|
202
|
+
|
203
|
+
placeCommentSpan = (offset, id) ->
|
204
|
+
comment = document.getElementById('forum-comment-span')
|
205
|
+
comment.style.position = 'absolute'
|
206
|
+
comment.style.top = offset + 'px'
|
207
|
+
comment.style.left = '250px'
|
208
|
+
comment.dataset.restricted = false
|
209
|
+
hideMe({id:'forum-add-hyperlink-span'})
|
210
|
+
$('[name = forum-restrict-comment]').val($('[name = forum-restrict-comment]').get()[0].dataset.restrict)
|
211
|
+
comment.dataset.owner = $("span[data-id = #{id}]").get()[0].dataset.owner
|
212
|
+
comment.dataset.target=id
|
213
|
+
showMe({obj: comment})
|
214
|
+
$('#forum-comment').focus()
|
215
|
+
the_span=$("[data-id="+id+']').get()[0]
|
216
|
+
if the_span.dataset.needs_translation =='true'
|
217
|
+
$('[name=add-forum-translation]').get()[0].classList.add('hot')
|
218
|
+
else
|
219
|
+
$('[name=add-forum-translation]').get()[0].classList.remove('hot')
|
220
|
+
|
221
|
+
moderatorOnOff = (on_off)->
|
222
|
+
if on_off
|
223
|
+
showMe({name: 'forum-accept-comment'})
|
224
|
+
showMe({name: 'forum-reject-comment'})
|
225
|
+
showMe({name: 'add-forum-voting'})
|
226
|
+
else
|
227
|
+
hideMe({name: 'forum-accept-comment'})
|
228
|
+
hideMe({name: 'forum-reject-comment'})
|
229
|
+
hideMe({name: 'add-forum-voting'})
|
230
|
+
|
231
|
+
lastChild = (id)->
|
232
|
+
kids = $("span[data-parent = #{id}]")
|
233
|
+
if kids.length == 0
|
234
|
+
$("span[data-id = #{id}]")
|
235
|
+
else
|
236
|
+
lastChild(kids[kids.length - 1].dataset.id)
|
237
|
+
|
238
|
+
setComment = ->
|
239
|
+
request = {function: 'post'}
|
240
|
+
request.comment = $('#forum-comment').val().trim()
|
241
|
+
if request.comment == "" && $('#comment-maybe')?
|
242
|
+
$('#comment-maybe').remove()
|
243
|
+
else if $('#comment-maybe')?
|
244
|
+
sendPost(request)
|
245
|
+
hideMe({id: 'forum-comment-span'})
|
246
|
+
$('#forum-comment').val('')
|
247
|
+
|
248
|
+
window.sendPost = (request)->
|
249
|
+
comment_span = document.getElementById('forum-comment-span')
|
250
|
+
if comment_span.dataset.edit == 'true' || comment_span.dataset.translating == 'true'
|
251
|
+
id = parseInt($('#comment-maybe').get()[0].dataset.parent)
|
252
|
+
span = $("span[data-id = #{id}]").get()[0]
|
253
|
+
request.id = id #id is nil if new comment
|
254
|
+
$('#comment-maybe').remove()
|
255
|
+
else
|
256
|
+
span = document.getElementById('comment-maybe')
|
257
|
+
next_id = parseInt(comment_span.dataset.next_id)
|
258
|
+
comment_span.dataset.next_id = next_id+1
|
259
|
+
request.tag = next_id
|
260
|
+
span.dataset.id = 'new' + next_id
|
261
|
+
span.dataset.tag=next_id
|
262
|
+
request.edit = comment_span.dataset.edit == 'true'
|
263
|
+
request.translation = $('#forum-comment-translation').val().trim()
|
264
|
+
request.language = getTranslationLanguage()
|
265
|
+
request.translating = comment_span.dataset.translating == 'true'
|
266
|
+
request.restricted = span.dataset.restricted
|
267
|
+
request.invitees = $('#forum-invite-list').val()
|
268
|
+
request.parent = span.dataset.parent
|
269
|
+
request.topic = getTopic()
|
270
|
+
request.category = getCategory()
|
271
|
+
request.needs_photo= comment_span.dataset.needs_photo == 'true'
|
272
|
+
request.already_has_photo=comment_span.dataset.already_has_photo
|
273
|
+
request.count=0
|
274
|
+
link_ref=comment_span.dataset.link_ref
|
275
|
+
unless link_ref == undefined
|
276
|
+
request= addLinks(request,parseInt(link_ref))
|
277
|
+
request= addLinkTranslations(request)
|
278
|
+
writeParagraph(span,request)
|
279
|
+
if request.needs_photo
|
280
|
+
document.getElementById('forum_photo_data').value= JSON.stringify(request) #goes up in the submit
|
281
|
+
$('#my-forum-photo').submit()
|
282
|
+
document.getElementById('forum-comment-span').dataset.needs_photo =false
|
283
|
+
document.getElementById('forum_photo_data').value=''
|
284
|
+
request.function='get forum photo'
|
285
|
+
$.post('forum_ajax', request, needAPhoto)
|
286
|
+
$('#forum_photo_file').val('')
|
287
|
+
else
|
288
|
+
$.post('forum_ajax', request, setMaybeId)
|
289
|
+
|
290
|
+
window.setMaybeId = (params)->
|
291
|
+
unless params.edit
|
292
|
+
span = $("[data-tag=#{params.tag}]").get()[0]
|
293
|
+
span.id = 'just-a-comment'
|
294
|
+
span.dataset.id = params.id
|
295
|
+
span.dataset.parent = params.parent
|
296
|
+
|
297
|
+
writeParagraph=(span,params)->
|
298
|
+
comment_span = document.getElementById('forum-comment-span')
|
299
|
+
if comment_span.dataset.editing=='true'
|
300
|
+
the_html = span.children[0].innerHTML
|
301
|
+
paragraph = the_html.split('owner-of-record')[0]
|
302
|
+
comment_text = paragraph.split('<')[0]
|
303
|
+
span.innerHTML = the_html.replace(comment_text,params.comment)
|
304
|
+
else
|
305
|
+
span.innerHTML = "<p class = 'comment'> " + params.comment + '</p>'
|
306
|
+
span.dataset.restricted = comment_span.dataset.restricted
|
307
|
+
span.dataset.owner = true
|
308
|
+
link_refs=parseInt(comment_span.dataset.link_ref)
|
309
|
+
unless link_refs==undefined
|
310
|
+
for i in [0...link_refs]
|
311
|
+
writeLocalLink(span,i)
|
312
|
+
|
313
|
+
writeLocalLink=(span,link_ref)->
|
314
|
+
data= getLinkData(link_ref)
|
315
|
+
writeLink(data,span)
|
316
|
+
|
317
|
+
window.getLinkData=(link_ref)->
|
318
|
+
comment_span = document.getElementById('forum-comment-span')
|
319
|
+
data={}
|
320
|
+
data.link_address = comment_span.dataset['link_address-'+link_ref]
|
321
|
+
data.link_text= comment_span.dataset['link_text-'+link_ref]
|
322
|
+
data.link_id = comment_span.dataset['link_id-'+link_ref]
|
323
|
+
data
|
324
|
+
|
325
|
+
window.writeLink=(data,span)->
|
326
|
+
link=document.createElement('a')
|
327
|
+
link.href='http://'+data.link_address
|
328
|
+
link.innerHTML=data.link_text
|
329
|
+
link.id=data.link_id
|
330
|
+
link.className='external'
|
331
|
+
space1=document.createElement('span')
|
332
|
+
space1.innerHTML=' '
|
333
|
+
space2=document.createElement('span')
|
334
|
+
space2.innerHTML=' '
|
335
|
+
paragraph=span.children[0]
|
336
|
+
paragraph.appendChild((space1))
|
337
|
+
paragraph.appendChild(link)
|
338
|
+
paragraph.appendChild(space2)
|
339
|
+
|
340
|
+
sendNewThing = ->
|
341
|
+
hideMe([
|
342
|
+
ID: 'add-new-thing-span'
|
343
|
+
])
|
344
|
+
showMe({id: 'forum-senate'})
|
345
|
+
$.post('forum_ajax',
|
346
|
+
{function: 'topic suggestion', suggestion: $('#forum-suggestion').val(), category: getCategory()})
|
347
|
+
$('#forum-suggestion').val('')
|
348
|
+
setCategory(0)
|
349
|
+
setTopic(0)
|
350
|
+
|
351
|
+
window.setSubscriber = (subscribed)->
|
352
|
+
document.getElementById('forum-senate').dataset.subscribed = subscribed
|
353
|
+
if subscribed
|
354
|
+
hideMe({id: 'subscribe-forum'})
|
355
|
+
showMe({id: 'unsubscribe-forum'})
|
356
|
+
else
|
357
|
+
showMe({id: 'subscribe-forum'})
|
358
|
+
hideMe({id: 'unsubscribe-forum'})
|
359
|
+
|
360
|
+
addHotLlink=-> #to span.dataset
|
361
|
+
data={function:'add hot link'}
|
362
|
+
data.link_address= $('[id=forum-hyperlink-address]').val()
|
363
|
+
data.link_text=$('[id=forum-hyperlink-text]').val()
|
364
|
+
link_ref=document.getElementById('forum-comment-span').dataset.link_ref
|
365
|
+
if link_ref == undefined
|
366
|
+
data.link_id = 0
|
367
|
+
else
|
368
|
+
data.link_id = parseInt(link_ref)
|
369
|
+
sethyperlink(data)
|
370
|
+
clearhyperlink()
|
371
|
+
|
372
|
+
clearhyperlink=->
|
373
|
+
$('[id=forum-hyperlink-address]').val('')
|
374
|
+
$('[id=forum-hyperlink-text]').val('')
|
375
|
+
hideMe({id:'forum-hyperlink-span'})
|
376
|
+
|
377
|
+
showHyperlinkInput=->
|
378
|
+
showMe({id:'forum-add-hyperlink-span'})
|
379
|
+
|
380
|
+
sethyperlink=(params)-> #push data onto dataset
|
381
|
+
comment_span=document.getElementById('forum-comment-span')
|
382
|
+
link_ref=comment_span.dataset.link_ref
|
383
|
+
if link_ref == undefined then link_ref= 0
|
384
|
+
link_ref=parseInt(link_ref)
|
385
|
+
comment_span.dataset.link_ref = link_ref + 1
|
386
|
+
comment_span.dataset['link_address-'+link_ref]=params.link_address
|
387
|
+
comment_span.dataset['link_text-'+link_ref]=params.link_text
|
388
|
+
comment_span.dataset['link_id-'+link_ref]=params.link_id
|
389
|
+
|
390
|
+
window.addLinks=(request,link_ref)->
|
391
|
+
request.link_ref=link_ref
|
392
|
+
for i in [0...link_ref]
|
393
|
+
request['link-'+i]= getLinkData(i)
|
394
|
+
request
|