xforum 0.0.377 → 0.0.378
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/app/assets/javascripts/xforum/forum_admin.js.coffee +3 -1
- data/app/controllers/xforum/forums_controller.rb +1 -1
- data/app/models/xforum/category.rb +19 -12
- data/app/models/xforum/forum.rb +15 -9
- data/app/models/xforum/people_list.rb +54 -23
- data/app/models/xforum/topic.rb +17 -15
- data/app/views/xforum/admin_lists/_admin_users.html.erb +1 -2
- data/app/views/xforum/forums/_forum.html.erb +1 -0
- data/db/migrate/{20140826100001_add_private_to_people_lists.rb → 20140826100002_add_private_to_people_lists.rb} +1 -1
- data/lib/xforum/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dae03aab9ce8e977a3e0f3bfb93302f79ae22c19
|
4
|
+
data.tar.gz: 4aaef04977c9b85b089b2d97ec9edbb26ecd729b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a53991fdedd1e62337305e941e3ff82325040d9938ac4fb34fc87e3fd94f3eca4f5067e1c0b58235db3b97c64ead9d1a5b0cea85910a8fa82c817fc494841a81
|
7
|
+
data.tar.gz: c1b5e4a2da97b07d458eedba08faa24813c62a46f98ff013770b4b0645df160f6583d47d0cf4e56753e5a3539b697cff68f453051d69b5448eb3d4bc3cb9e81f
|
@@ -241,12 +241,14 @@ doAction = ->
|
|
241
241
|
request.new_list_name = $('#forum-new-list').val()
|
242
242
|
request.distribution_list = $('#forum-distribution-lists').val()
|
243
243
|
request.the_list=$('#forum-every-list').val()
|
244
|
-
request.list_type=$('forum-list-type').val()
|
244
|
+
request.list_type=$('#forum-list-type').val()
|
245
245
|
request.forum_action = $('#forum-actions').val()
|
246
246
|
document.getElementById('forum-actions').selectedIndex=0
|
247
247
|
setAdminDisplay()
|
248
248
|
$("forum-email-body").val('')
|
249
249
|
$.post('xforum/forum_ajax',request)
|
250
|
+
doAdminStuff()
|
251
|
+
hideActionViews()
|
250
252
|
|
251
253
|
setAdminView = (which_one)->
|
252
254
|
switch(which_one.dataset.view)
|
@@ -24,22 +24,29 @@ module Xforum
|
|
24
24
|
|
25
25
|
def self.restrict_me(params,user)
|
26
26
|
if user.forum_admin?
|
27
|
-
(
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
category=Category.find_by(name: params[:category])
|
28
|
+
unless category.nil?
|
29
|
+
unless params[:user_list].nil? || params[:user_list]=='select list'
|
30
|
+
people_list=PeopleList.find_by(id:params[:user_list])
|
31
|
+
if people_list.category_id.nil? && people_list.list =='invitation'
|
32
|
+
people_list.update(category_id:category.id )
|
33
|
+
else
|
34
|
+
new_list=people_list.clone
|
35
|
+
new_list.name=category.name+'-invitees'
|
36
|
+
new_list.list='invitation'
|
37
|
+
new_list.category_id=category.id
|
38
|
+
end
|
39
|
+
end
|
40
|
+
category.update(restricted:!category.restricted)
|
41
|
+
end
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
38
45
|
def self.get_suggestions(params,user)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
46
|
+
data= Category.where(suggestion:true).pluck(:name, :user_id,:id)
|
47
|
+
data=ForumAssist.named_array(data, [:suggestion, :user,:id]) unless data.empty?
|
48
|
+
data=ForumAssist.add_user_name(data.clone) unless data.empty?
|
49
|
+
user.forum_admin? ? {data: data, list: 'forum-category-prososals-list'} : {response: 'nothing doing'}
|
43
50
|
end
|
44
51
|
|
45
52
|
def self.edit_category(params,user)
|
data/app/models/xforum/forum.rb
CHANGED
@@ -43,34 +43,40 @@ module Xforum
|
|
43
43
|
|
44
44
|
def self.senate(params,user)
|
45
45
|
if params[:topic]== 'select topic'
|
46
|
+
return
|
47
|
+
end
|
48
|
+
topic=Topic.where(name:params[:topic]).pluck(:id)[0]
|
49
|
+
category=Category.find_by(topic_id:topic.id)
|
50
|
+
if (category.private || !user.forum_admin?) && PeopleList.check_invitation(category.name,category.id, user.id, 'category')
|
51
|
+
{to_do:'nothing'}
|
52
|
+
elsif (topic.restricted && !user.forum_admin?) && PeopleList.check_invitation(topic.name,topic.id, user.id, 'topic')
|
46
53
|
{to_do:'nothing'}
|
47
54
|
else
|
48
|
-
topic_id=Topic.where(name:params[:topic]).pluck(:id)[0]
|
49
55
|
index=Forum.clear_user_topic(user.id,topic_id)
|
50
56
|
the_list=[]
|
51
57
|
plucking= [:id, :parent, :content, :user_id,:owner_name,:state,:restricted,:tag,:has_photo]
|
52
58
|
plucking_names= [:id, :parent, :content,:owner,:owner_name,:comment_state,:restricted,:tag,:has_photo,:needs_translation,:empty_list] #we're going to append empty list to the reply
|
53
|
-
moderator=PeopleList.check_people({topic:
|
59
|
+
moderator=PeopleList.check_people({topic:topic.id,user_id:user.id,list:'moderator'}) || user.forum_admin?
|
54
60
|
if params[:review]=='true' && moderator
|
55
|
-
test=Forum.where(topic_id:
|
61
|
+
test=Forum.where(topic_id:topic.id,state:'new').pluck(:id)
|
56
62
|
unless test.empty?
|
57
|
-
item1=ForumAssist.named_array(Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:
|
63
|
+
item1=ForumAssist.named_array(Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:topic.id},plucking:plucking,size:0}),plucking_names)
|
58
64
|
item1.store(:moderator,true)
|
59
65
|
item1.store(:review,true)
|
60
|
-
new_list= ForumAssist.named_array( Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:
|
66
|
+
new_list= ForumAssist.named_array( Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:topic.id,state:'new'},ordering:([:topic_id]),plucking:plucking,size:'all'}),plucking_names )
|
61
67
|
new_list.unshift(item1)
|
62
68
|
the_list=new_list
|
63
69
|
end
|
64
70
|
else
|
65
|
-
senate_list=ForumAssist.named_array(Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:
|
71
|
+
senate_list=ForumAssist.named_array(Translation.get_localized_forum(Language.get_me(params),{lookup:{topic_id:topic.id,hold:false},ordering:[:parent,:created_at],plucking:plucking,size:'all'}), plucking_names )
|
66
72
|
if senate_list.nil? || senate_list.empty?
|
67
73
|
[]
|
68
74
|
else
|
69
|
-
voting=Topic.grab({id:
|
75
|
+
voting=Topic.grab({id:topic.id},[:vote,:votes],{})[0]
|
70
76
|
voting[:vote] ? votes=Topic.count_votes(JSON.load(voting[:votes])) : votes=0
|
71
77
|
parent=Forum.look_for_key(senate_list,:parent,0)
|
72
78
|
new_list=[]
|
73
|
-
subscribed=PeopleList.check_people({topic:
|
79
|
+
subscribed=PeopleList.check_people({topic:topic.id,user_id:user.id,list:'subscribers'})
|
74
80
|
parent=set_new_senate_entry(senate_list,new_list,parent,user.id, {moderator:moderator,vote:voting[:vote],votes:votes,subscribed:subscribed,admin:user.forum_admin?}) unless parent.nil?
|
75
81
|
Forum.is_child_there?(senate_list,new_list,0,parent,user.id) #push first child
|
76
82
|
new_list.delete_if {|record|
|
@@ -79,7 +85,7 @@ module Xforum
|
|
79
85
|
case record[:state]
|
80
86
|
when 'reject' then test= true
|
81
87
|
when 'new'
|
82
|
-
ENV['XFORUM_NEW_RULE']=='no' || Topic.where(id:
|
88
|
+
ENV['XFORUM_NEW_RULE']=='no' || Topic.where(id:topic.id).is_moderated
|
83
89
|
else test=false
|
84
90
|
end
|
85
91
|
end
|
@@ -67,12 +67,13 @@ module Xforum
|
|
67
67
|
alist.unshift([I18n.t('xForum.select_none'), 'select none', 0])
|
68
68
|
{list_data:ForumAssist.named_array(alist, [:value, :item]), name:params[:list]}
|
69
69
|
end
|
70
|
-
def self.
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
def self.get_voter_list(params)
|
71
|
+
unless params[:topic_id].nil?
|
72
|
+
people_list=PeopleList.find_or_create_by(topic_id:params[:topic_id],list:'voters'){ |me|
|
73
|
+
me.name=Topic.where(id:topic_id).pluck(:name)[0] +'-voters'
|
74
|
+
}
|
75
|
+
JSON.load(people_list.people)
|
76
|
+
end
|
76
77
|
end
|
77
78
|
|
78
79
|
def self.make_a_list(params)
|
@@ -80,7 +81,7 @@ module Xforum
|
|
80
81
|
joe.topic_id=params[:topic_id] unless params[:topic_id].nil?
|
81
82
|
joe.category_id=params[:topic_id] unless params[:category_id].nil?
|
82
83
|
joe.forum_id =params[:topic_id] unless params[:forum_id].nil?
|
83
|
-
joe.list =
|
84
|
+
joe.list ='voters'
|
84
85
|
}
|
85
86
|
end
|
86
87
|
|
@@ -96,7 +97,6 @@ module Xforum
|
|
96
97
|
end
|
97
98
|
end
|
98
99
|
|
99
|
-
|
100
100
|
def self.get_forum_users(params, user)
|
101
101
|
user.forum_admin? ? alist = Xforum.user_class.all.order(:forum_post_name).pluck(:forum_post_name, :id) : alist =[]
|
102
102
|
alist.unshift([I18n.t('xForum.select_none'), 'select none', 0])
|
@@ -109,35 +109,65 @@ module Xforum
|
|
109
109
|
def self.check_restrictions(blist, user, list_type)
|
110
110
|
alist=blist.clone #so you can do list.each and delete items
|
111
111
|
blist.each { |record|
|
112
|
-
|
112
|
+
skip=false
|
113
|
+
case list_type
|
114
|
+
when 'topic'
|
115
|
+
category= Category.find_by(id:record[:category_id])
|
116
|
+
when 'category','categories'
|
117
|
+
category= Category.find_by(id:record[:id])
|
118
|
+
end
|
119
|
+
if !category.nil? && category.restricted
|
120
|
+
if PeopleList.check_invitation(record[:name],category.id, user.id, 'category')
|
121
|
+
alist.delete(record)
|
122
|
+
skip=true
|
123
|
+
end
|
124
|
+
end
|
125
|
+
unless skip
|
126
|
+
alist.delete(record) if record[:restricted] && PeopleList.check_invitation(record[:name],record[:id], user.id, list_type)
|
127
|
+
end
|
113
128
|
}
|
114
129
|
alist
|
115
130
|
end
|
116
131
|
|
117
|
-
def self.check_invitation(id,user_id,list_type)
|
132
|
+
def self.check_invitation(name,id,user_id,list_type)
|
118
133
|
case list_type
|
119
134
|
when 'topic'
|
120
|
-
|
135
|
+
people_list=PeopleList.find_by(topic_id:id,list:'invitation')
|
121
136
|
when 'category', 'categories'
|
122
|
-
|
137
|
+
people_list=PeopleList.find_by(category_id:id,list:'invitation')
|
123
138
|
when 'forum'
|
124
|
-
|
139
|
+
people_list=PeopleList.find_by(forum_id:id,list:'invitation')
|
125
140
|
else
|
126
|
-
|
141
|
+
nil
|
127
142
|
end
|
143
|
+
people_list.nil? ? false : !JSON.load(people_list.people).include?(user_id)
|
128
144
|
end
|
145
|
+
|
129
146
|
def self.get_forum_people_lists(params,user)
|
130
147
|
case params[:list]
|
131
148
|
when 'forum-distribution-lists'
|
132
|
-
alist=PeopleList.
|
149
|
+
alist=PeopleList.grab({list:'distribution'},[:id,:name,:private,:people],{})
|
133
150
|
when 'forum-restricted-list'
|
134
|
-
|
151
|
+
alist=PeopleList.grab({list:'invitation'},[:id,:name,:private,:people],{})
|
135
152
|
when 'forum-every-list'
|
136
|
-
|
153
|
+
alist=PeopleList.grab('all',[:id,:name,:private,:people],{})
|
137
154
|
else
|
138
155
|
end if user.forum_admin?
|
139
|
-
alist.
|
140
|
-
|
156
|
+
if alist.nil? || alist.empty?
|
157
|
+
[]
|
158
|
+
else
|
159
|
+
blist=alist.clone
|
160
|
+
alist.each{|record|
|
161
|
+
blist.delete(record) if record[:private] && !JSON.load(record[:people]).include?(user.id)
|
162
|
+
}
|
163
|
+
clist=[]
|
164
|
+
blist.each{|record|
|
165
|
+
clist.push({value:record[:name],item:record[:id]})
|
166
|
+
}
|
167
|
+
clist.unshift({value:I18n.t('xForum.select_list'),item:'select list'})
|
168
|
+
|
169
|
+
{list_data:clist, id:params[:list]}
|
170
|
+
end
|
141
171
|
end
|
142
172
|
|
143
173
|
def self.get_this_list(user,params)
|
@@ -145,6 +175,7 @@ module Xforum
|
|
145
175
|
{list:JSON.load(PeopleList.find_by(id:params[:list_id].to_i).people)}
|
146
176
|
end
|
147
177
|
end
|
178
|
+
|
148
179
|
def self.is_a_moderator?(user_id)
|
149
180
|
the_lists=PeopleList.where(list: 'moderator').pluck(:people)
|
150
181
|
moderators=[]
|
@@ -157,11 +188,11 @@ module Xforum
|
|
157
188
|
|
158
189
|
def self.make_invitation(params, forum_id, user)
|
159
190
|
invitees=PeopleList.get_people_id_list(user.id, params[:invitees])
|
160
|
-
|
191
|
+
people_list=PeopleList.where(list: 'invitation', owner_id: forum_id).first_or_create { |invitation|
|
161
192
|
invitation.owner_id=forum_id
|
162
193
|
invitation.list='invitation'
|
163
194
|
}
|
164
|
-
|
195
|
+
people_list.invite_these_guys(invitees)
|
165
196
|
end
|
166
197
|
|
167
198
|
def self.add_to_list(params,users)
|
@@ -171,8 +202,8 @@ module Xforum
|
|
171
202
|
new.owner_id=params[:owner]
|
172
203
|
}
|
173
204
|
else
|
174
|
-
a_list=PeopleList.where(list: 'distribution
|
175
|
-
new.list = 'distribution
|
205
|
+
a_list=PeopleList.where(list: 'distribution', name: params[:list]).first_or_create { |new|
|
206
|
+
new.list = 'distribution'
|
176
207
|
new.name = params[:list]
|
177
208
|
}
|
178
209
|
end
|
data/app/models/xforum/topic.rb
CHANGED
@@ -23,12 +23,12 @@ module Xforum
|
|
23
23
|
unless params[:category] == 'select category'
|
24
24
|
category_id=Category.where(name:params[:category]).pluck(:id)[0]
|
25
25
|
params[:hold_test]=='true' ?
|
26
|
-
topics=Topic.grab({category_id:category_id,closed:false,suggestion:false}, [:id,:name,:state,:restricted,:closed,:is_moderated],{swap:{name: :item}}) :
|
27
|
-
topics=Topic.grab({category_id:category_id}, [:id,:name,:state,:restricted,:closed,:is_moderated],{swap:{name: :item}})
|
26
|
+
topics=Topic.grab({category_id:category_id,closed:false,suggestion:false}, [:id,:name,:state,:category_id,:restricted,:closed,:is_moderated],{swap:{name: :item}}) :
|
27
|
+
topics=Topic.grab({category_id:category_id}, [:id,:name,:state,:category_id,:restricted,:closed,:is_moderated],{swap:{name: :item}})
|
28
28
|
topics=[] if topics[0][:id].nil?
|
29
29
|
topics=PeopleList.check_restrictions(topics,user,'topic')
|
30
|
-
a=Topic.grab({name:'select topic'},[:id,:name,:state,:restricted,:closed],{swap:{name: :item}})[0]
|
31
|
-
b=Topic.grab({name:'request new topic'}, [:id,:name,:state,:restricted,:closed],{swap:{name: :item}})[0]
|
30
|
+
a=Topic.grab({name:'select topic'},[:id,:name,:state,:category_id,:restricted,:closed],{swap:{name: :item}})[0]
|
31
|
+
b=Topic.grab({name:'request new topic'}, [:id,:name, :category_id,:state,:restricted,:closed],{swap:{name: :item}})[0]
|
32
32
|
topics.unshift(a)
|
33
33
|
topics.push(b)
|
34
34
|
{list_data:Translation.translate_list(topics,params[:language],'topic'),id:params[:list]}
|
@@ -49,17 +49,19 @@ module Xforum
|
|
49
49
|
|
50
50
|
def self.restrict_me(params,user)
|
51
51
|
if user.forum_admin?
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
topic=topic.find_by(name:params[:topic])
|
53
|
+
unless topic.nil?
|
54
|
+
unless params[:user_list].nil? || params[:user_list]=='select list'
|
55
|
+
people_list=PeopleList.find_by(id:params[:user_list])
|
56
|
+
if people_list.topic_id.nil? && people_list.list=='invitation'
|
57
|
+
people_list.update(topic_id:topic.id )
|
58
|
+
else
|
59
|
+
new_list=people_list.clone
|
60
|
+
new_list.update(name:topic.name+'-invitees',list:'invitation',topic_id:topic.id)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
topic.update(restricted:!topic.restricted)
|
59
64
|
end
|
60
|
-
invitation=PeopleList.find_or_create_by(topic_id:topic.id,list:'invitation')
|
61
|
-
invitation.people= PeopleList.find_by(id:params[:user_list]).people
|
62
|
-
invitation.save
|
63
65
|
end
|
64
66
|
end
|
65
67
|
|
@@ -95,7 +97,7 @@ module Xforum
|
|
95
97
|
|
96
98
|
def self.cast_vote(topic,user,vote)
|
97
99
|
topic_record=Topic.find_by(name:topic)
|
98
|
-
voters=PeopleList.
|
100
|
+
voters=PeopleList.get_voter_list({topic:topic_record.id,list:'voters'})
|
99
101
|
votes=JSON.load(topic_record.votes)
|
100
102
|
if voters.empty?
|
101
103
|
index=nil
|
@@ -22,8 +22,7 @@
|
|
22
22
|
<%=select_tag(:forum,options_for_select(@every_list), id:'forum-every-list', class:'forum-select')%> <br>
|
23
23
|
<span id="editing-every-list-entries">
|
24
24
|
<br><label><%=t('xForum.new_list_name')%></label> <input type="text" id='forum-new-list' class="admin-edit-field" >
|
25
|
-
<br><label><%=t('xForum.new_list_type')%></label>
|
26
|
-
|
25
|
+
<br><label><%=t('xForum.new_list_type')%></label> <%= select_tag(:forum, options_for_select(@list_types), id:'forum-list-type', class: 'forum-select') %>
|
27
26
|
</span>
|
28
27
|
|
29
28
|
<label><%=t('xForum.user_email')%></label>
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<%@user_tags=[] %>
|
5
5
|
<%@user_email=[]%>
|
6
6
|
<%@every_list=[] %>
|
7
|
+
<%@list_types=['invitation','distribution']%>
|
7
8
|
<%if Xforum::Language.first.nil? then Xforum::Language.init_language_set end %>
|
8
9
|
<%unless ENV['XFORUM_LANGUAGES'].nil? then @languages= Xforum::Language.languages({active:'true',list:'forum-language'})[:list_data] end %>
|
9
10
|
<%@aphoto= 'photo' %>
|
data/lib/xforum/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xforum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.378
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert D Blanton
|
@@ -252,7 +252,7 @@ files:
|
|
252
252
|
- db/migrate/20140603_change_suggestion_default.rb
|
253
253
|
- db/migrate/20140604_add_has_video_to_photo.rb
|
254
254
|
- db/migrate/20140813300_add_is_moderated_to_category_topics.rb
|
255
|
-
- db/migrate/
|
255
|
+
- db/migrate/20140826100002_add_private_to_people_lists.rb
|
256
256
|
- lib/active_record_extension.rb
|
257
257
|
- lib/tasks/xforum_tasks.rake
|
258
258
|
- lib/xforum.rb
|