xforum 0.0.23

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.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +139 -0
  4. data/Rakefile +31 -0
  5. data/app/assets/images/xforum/addphoto.jpg +0 -0
  6. data/app/assets/images/xforum/bg-input-focus.png +0 -0
  7. data/app/assets/images/xforum/internet.png +0 -0
  8. data/app/assets/images/xforum/silver_selector.png +0 -0
  9. data/app/assets/javascripts/xforum/application.js +25 -0
  10. data/app/assets/javascripts/xforum/forum_admin.js.coffee +477 -0
  11. data/app/assets/javascripts/xforum/forum_basic.js.coffee +321 -0
  12. data/app/assets/javascripts/xforum/forum_translator.js.coffee +116 -0
  13. data/app/assets/javascripts/xforum/forum_user.js.coffee +403 -0
  14. data/app/assets/javascripts/xforum/global_java.js +141 -0
  15. data/app/assets/javascripts/xforum/help.js.coffee +10 -0
  16. data/app/assets/stylesheets/xforum/application.css.scss +15 -0
  17. data/app/assets/stylesheets/xforum/custom.css.scss +295 -0
  18. data/app/controllers/xforum/application_controller.rb +25 -0
  19. data/app/controllers/xforum/forums_controller.rb +123 -0
  20. data/app/helpers/xforum/application_helper.rb +4 -0
  21. data/app/mailers/xforum/user_mailer.rb +15 -0
  22. data/app/models/xforum/category.rb +76 -0
  23. data/app/models/xforum/forum.rb +217 -0
  24. data/app/models/xforum/hyperlink.rb +42 -0
  25. data/app/models/xforum/language.rb +104 -0
  26. data/app/models/xforum/people_list.rb +189 -0
  27. data/app/models/xforum/photo.rb +60 -0
  28. data/app/models/xforum/topic.rb +140 -0
  29. data/app/models/xforum/translation.rb +92 -0
  30. data/app/views/layouts/xforum/application.html.erb +14 -0
  31. data/app/views/user_mailer/xforum/note_to_forum_users.html.erb +32 -0
  32. data/app/views/xforum/forums/_dummy.html.erb +0 -0
  33. data/app/views/xforum/forums/_forum.html.erb +18 -0
  34. data/app/views/xforum/forums/_forum_admin.html.erb +139 -0
  35. data/app/views/xforum/forums/_forum_comments.html.erb +45 -0
  36. data/app/views/xforum/forums/_forum_entry.html.erb +44 -0
  37. data/app/views/xforum/forums/_forum_video.html.erb +7 -0
  38. data/app/views/xforum/forums/newphoto.js.erb +1 -0
  39. data/app/views/xforum/forums/the_page.html.erb +3 -0
  40. data/config/intiializers/xforum.rb +2 -0
  41. data/config/locales/forum.de.yml +93 -0
  42. data/config/locales/forum.en.yml +96 -0
  43. data/config/locales/forum.es.yml +94 -0
  44. data/config/locales/forum.fr.yml +94 -0
  45. data/config/routes.rb +10 -0
  46. data/db/migrate/20140600_add_forum_to_users.rb +20 -0
  47. data/db/migrate/20140601_create_forum_forums.rb +147 -0
  48. data/db/migrate/20140602_add_restricted_to_category.rb +6 -0
  49. data/db/migrate/20140602_change_suggestion_default.rb +7 -0
  50. data/lib/tasks/xforum_tasks.rake +65 -0
  51. data/lib/xforum.rb +95 -0
  52. data/lib/xforum/engine.rb +6 -0
  53. data/lib/xforum/set.yml +209 -0
  54. data/lib/xforum/user_include.rb +13 -0
  55. data/lib/xforum/version.rb +3 -0
  56. data/test/dummy/README.rdoc +28 -0
  57. data/test/dummy/Rakefile +6 -0
  58. data/test/dummy/app/assets/javascripts/application.js +13 -0
  59. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  60. data/test/dummy/app/controllers/application_controller.rb +5 -0
  61. data/test/dummy/app/helpers/application_helper.rb +2 -0
  62. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  63. data/test/dummy/bin/bundle +3 -0
  64. data/test/dummy/bin/rails +4 -0
  65. data/test/dummy/bin/rake +4 -0
  66. data/test/dummy/config.ru +4 -0
  67. data/test/dummy/config/application.rb +23 -0
  68. data/test/dummy/config/boot.rb +5 -0
  69. data/test/dummy/config/database.yml +25 -0
  70. data/test/dummy/config/environment.rb +5 -0
  71. data/test/dummy/config/environments/development.rb +37 -0
  72. data/test/dummy/config/environments/production.rb +83 -0
  73. data/test/dummy/config/environments/test.rb +39 -0
  74. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  75. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  76. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/test/dummy/config/initializers/inflections.rb +16 -0
  78. data/test/dummy/config/initializers/mime_types.rb +4 -0
  79. data/test/dummy/config/initializers/session_store.rb +3 -0
  80. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  81. data/test/dummy/config/locales/en.yml +23 -0
  82. data/test/dummy/config/routes.rb +4 -0
  83. data/test/dummy/config/secrets.yml +22 -0
  84. data/test/dummy/db/development.sqlite3 +0 -0
  85. data/test/dummy/log/development.log +0 -0
  86. data/test/dummy/public/404.html +67 -0
  87. data/test/dummy/public/422.html +67 -0
  88. data/test/dummy/public/500.html +66 -0
  89. data/test/dummy/public/favicon.ico +0 -0
  90. data/test/integration/navigation_test.rb +10 -0
  91. data/test/test_helper.rb +15 -0
  92. data/test/xforum_test.rb +7 -0
  93. metadata +327 -0
@@ -0,0 +1,6 @@
1
+ class AddRestrictedToCategory < ActiveRecord::Migration
2
+ def change
3
+ add_column :xforum_categories, :restricted, :boolean, default:false
4
+ add_index :xforum_categories, :restricted, name: :index_xforum_categories_on_restricted
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ class ChangeSuggestionDefault < ActiveRecord::Migration
2
+ def change
3
+ change_column_default(:xforum_topics, :suggestion, false)
4
+ change_column_default(:xforum_categories, :suggestion, false)
5
+ change_column_default(:xforum_languages, :suggestion, false)
6
+ end
7
+ end
@@ -0,0 +1,65 @@
1
+ # desc "Explaining what the task does"
2
+ # task :skinny_forum do
3
+ # # Task goes here
4
+ # end
5
+ require 'csv'
6
+ @data_path = 'data/'
7
+
8
+ namespace :db do
9
+
10
+ task(:load_forum => :environment){
11
+ Xforum::Category.categories({none:0},Xforum.user_class.find_by(forum_admin:true))
12
+ Xforum::Topic.topics({category:'select category'},Xforum.user_class.find_by(forum_admin:true))
13
+ file_name='app_data/forum_base.csv'
14
+ load_the_forum_file(file_name)
15
+ }
16
+
17
+ task(:load_help => :environment){
18
+ Xforum::Category.categories({none:0},Xforum.user_class.find_by(forum_admin:true))
19
+ Xforum::Topic.topics({category:'select category'},Xforum.user_class.find_by(forum_admin:true))
20
+ file_name='app_data/forum_help.csv'
21
+ load_the_forum_file(file_name)
22
+ }
23
+ end
24
+
25
+ def load_the_forum_file(file_name)
26
+ CSV.foreach(file_name, headers: true) { |row|
27
+ the_row=row.to_hash
28
+ category_id=Xforum::Category.where(name:the_row['category']).pluck(:id)[0]
29
+ category_id=Xforum::Category.create(name:the_row['category']).id if category_id.nil?
30
+ topic_id=Xforum::Topic.where(name:the_row['topic']).pluck(:id)[0]
31
+ topic_id=Xforum::Topic.create(name:the_row['topic'],category_id:category_id).id if topic_id.nil?
32
+ the_row.delete('category')
33
+ the_row.delete('topic')
34
+ the_row.store(:topic_id,topic_id)
35
+ Xforum::Forum.create(the_row)
36
+ }
37
+ topics=Xforum::Topic.all.pluck(:id)
38
+ topics.each{|topic|
39
+ list=xforum_named_array(Xforum::Forum.where(topic_id:topic).pluck(:id,:parent,:tag),[:id,:parent,:tag])
40
+ list.each{ |comment|
41
+ Xforum::Forum.where(parent:comment[:tag],needs_translating:false).update_all(parent:comment[:id],needs_translating:true)
42
+ }
43
+ }
44
+ Xforum::Forum.all.update_all(needs_translating:false,tag:-1)
45
+ end
46
+
47
+ def xforum_named_array(data,params)
48
+ data = Array.new(params.size,nil) if data.nil? || data.empty?
49
+ if data.size==1
50
+ double=true
51
+ data.push(data[0])
52
+ end
53
+ pseudo= !data[0].is_a?(Array)
54
+ temp=Array.new{{}}
55
+ pseudo ? size=1 : size=data.size
56
+ (0...size).each {|i|
57
+ temp[i]={}
58
+ datax=data[i]
59
+ (0...params.size).each { |j|
60
+ pseudo ? temp[i].store(params[j], data[j]) : temp[i].store(params[j], datax[j]) }
61
+ Rails.logger.debug 'hello'
62
+ }
63
+ temp.shift if double
64
+ temp
65
+ end
data/lib/xforum.rb ADDED
@@ -0,0 +1,95 @@
1
+ require 'xforum/engine'
2
+
3
+ module Xforum
4
+ mattr_accessor :user_class
5
+ mattr_accessor :user_table
6
+ def self.user_class
7
+ @@user_class.constantize
8
+ end
9
+ class ForumAssist
10
+
11
+ def self.make_string_list(alist)
12
+ plucking=''
13
+ alist.each {|entry|
14
+ plucking.concat(',' ) unless plucking==''
15
+ plucking.concat(entry.to_s)
16
+ }
17
+ plucking
18
+ end
19
+
20
+ def self.named_array(data,params)
21
+ data = Array.new(params.size,nil) if data.nil? || data.empty?
22
+ if data.size==1
23
+ double=true
24
+ data.push(data[0])
25
+ end
26
+ pseudo= !data[0].is_a?(Array)
27
+ temp=Array.new{{}}
28
+ pseudo ? size=1 : size=data.size
29
+ (0...size).each {|i|
30
+ temp[i]={}
31
+ datax=data[i]
32
+ (0...params.size).each { |j|
33
+ pseudo ? temp[i].store(params[j], data[j]) : temp[i].store(params[j], datax[j]) }
34
+ Rails.logger.debug 'hello'
35
+ }
36
+ temp.shift if double
37
+ temp
38
+ end
39
+
40
+ def self.make_last(alist,params)
41
+ index=0
42
+ (0...alist.size).each {|i|
43
+ params[:key].nil? ? (index=i if alist[i]==params[:ref]) : index=i if alist[i][params[:key]]==params[:ref]
44
+ }
45
+ ref=alist[index]
46
+ alist.delete_at(index)
47
+ alist.push(ref)
48
+ alist
49
+ end
50
+ def self.add_user_name(list)
51
+ list.each { |suggestion|
52
+ suggestion[:user]=Xforum.user_class.where(id: suggestion[:user]).pluck(:user_name)[0]
53
+ }
54
+ list
55
+ end
56
+
57
+ def self.make_first(alist,params)
58
+ index=0
59
+ (0...alist.size).each {|i|
60
+ params[:key].nil? ? (index=i if alist[i]==params[:ref]) : index=i if alist[i][params[:key]]==params[:ref]
61
+ }
62
+ ref=alist[index]
63
+ alist.delete_at(index)
64
+ alist.unshift(ref)
65
+ alist
66
+ end
67
+
68
+ def self.aws_params
69
+ {server: 's3.amazonaws.com',
70
+ port: 443,
71
+ protocol: 'https',
72
+ no_subdomains: true}
73
+ end
74
+
75
+ def self.get_url(source,my_bucket=ENV['XFORUM_S3_BUCKET'])
76
+ if ENV['XFORUM_USE_S3']=='true'
77
+ begin
78
+ s3 = RightAws::S3Interface.new(ENV['XFORUM_S3_ACCESS_KEY_ID'], ENV['XFORUM_S3_SECRET_ACCESS_KEY'], ForumAssist.aws_params)
79
+ url= s3.get_link(my_bucket, source)
80
+ temp=url.split(my_bucket)
81
+ "https://#{my_bucket}.s3.amazonaws.com#{temp[1]}"
82
+ rescue
83
+ 'no joy'
84
+ end
85
+ else
86
+ 'no joy'
87
+ end
88
+ end
89
+
90
+ def self.save_image(source, key)
91
+ amazon_s3 = RightAws::S3Interface.new(ENV['XFORUM_S3_ACCESS_KEY_ID'], ENV['XFORUM_S3_SECRET_ACCESS_KEY'], aws_params)
92
+ amazon_s3.store_object_multipart(bucket: ENV['XFORUM_S3_BUCKET'], key: key, data: File.read(source))
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,6 @@
1
+ module Xforum
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Xforum
4
+
5
+ end
6
+ end
@@ -0,0 +1,209 @@
1
+ language1:
2
+ code: af
3
+ language: Afrikaans
4
+ local_name: Afrikaans
5
+ language2:
6
+ code: ar
7
+ language: Arabic
8
+ local_name: العربية
9
+ language3:
10
+ code: be
11
+ language: Belarusian
12
+ local_name: беларускі
13
+ language4:
14
+ code: bg
15
+ language: Bulgarian
16
+ local_name: български
17
+ language5:
18
+ code: ca
19
+ language: Catalan
20
+ local_name: Català
21
+ language6:
22
+ code: cs
23
+ language: Czech
24
+ local_name: čeština
25
+ language7:
26
+ code: da
27
+ language: Danish
28
+ local_name: dansk
29
+ language8:
30
+ code: de
31
+ language: German
32
+ local_name: dansk
33
+ language9:
34
+ code: el
35
+ language: Greek
36
+ local_name: ελληνικά
37
+ language10:
38
+ code: en
39
+ language: English
40
+ local_name: English
41
+ language11:
42
+ code: es
43
+ language: Spanish
44
+ local_name: español
45
+ language12:
46
+ code: et
47
+ language: Estonian
48
+ local_name: eesti
49
+ language13:
50
+ code: eu
51
+ language: Basque
52
+ local_name: Euskal
53
+ language14:
54
+ code: fa
55
+ language: Farsi
56
+ local_name: فارسی
57
+ language15:
58
+ code: fi
59
+ language: Finnish
60
+ local_name: suomalainen
61
+ language16:
62
+ code: fo
63
+ language: Faroese
64
+ local_name: føroyskt
65
+ language17:
66
+ code: fr
67
+ language: French
68
+ local_name: français
69
+ language18:
70
+ code: ga
71
+ language: Irish
72
+ local_name: Gaeilge
73
+ language19:
74
+ code: gd
75
+ language: Gaelic
76
+ local_name: gaélico
77
+ language20:
78
+ code: he
79
+ language: Hebrew
80
+ local_name: עברית
81
+ language21:
82
+ code: hi
83
+ language: Hindi
84
+ local_name: हिंदी
85
+ language22:
86
+ code: hr
87
+ language: Croatian
88
+ local_name: hrvatski
89
+ language23:
90
+ code: hu
91
+ language: Hungarian
92
+ local_name: magyar
93
+ language24:
94
+ code: id
95
+ language: Indonesian
96
+ local_name: Indonesia
97
+ language25:
98
+ code: is
99
+ language: Icelandic
100
+ local_name: Icelandic
101
+ language26:
102
+ code: it
103
+ language: Italian
104
+ local_name: italiano
105
+ language27:
106
+ code: ja
107
+ language: Japanese
108
+ local_name: 日本の
109
+ language28:
110
+ code: ji
111
+ language: Yiddish
112
+ local_name: ייִדיש
113
+ language29:
114
+ code: ko
115
+ language: Korean
116
+ local_name: 한국의
117
+ language30:
118
+ code: lt
119
+ language: Lithuanian
120
+ local_name: Lietuvos
121
+ language31:
122
+ code: lv
123
+ language: Latvian
124
+ local_name: Latvijas
125
+ language32:
126
+ code: mk
127
+ language: Macedonian
128
+ local_name: македонски
129
+ language33:
130
+ code: ms
131
+ language: Malaysian
132
+ local_name: Malaysia
133
+ language34:
134
+ code: mt
135
+ language: Maltese
136
+ local_name: Malti
137
+ language35:
138
+ code: nl
139
+ language: Dutch
140
+ local_name: Nederlands
141
+ language36:
142
+ code: no
143
+ language: Norwegian
144
+ local_name: norsk
145
+ language37:
146
+ code: pl
147
+ language: Polish
148
+ local_name: polski
149
+ language38:
150
+ code: pt
151
+ language: Portuguese
152
+ local_name: português
153
+ language39:
154
+ code: ro
155
+ language: Romanian
156
+ local_name: român
157
+ language40:
158
+ code: ru
159
+ language: Russian
160
+ local_name: русский
161
+ language41:
162
+ code: sk
163
+ language: Slovak
164
+ local_name: slovenský
165
+ language42:
166
+ code: sl
167
+ language: Slovenian
168
+ local_name: slovenščina
169
+ language43:
170
+ code: sq
171
+ language: Albanian
172
+ local_name: shqiptar
173
+ language44:
174
+ code: sr
175
+ language: Serbian
176
+ local_name: српски
177
+ language45:
178
+ code: sv
179
+ language: Swedish
180
+ local_name: Svenska
181
+ language46:
182
+ code: th
183
+ language: Thai
184
+ local_name: ภาษาไทย
185
+ language47:
186
+ code: tr
187
+ language: Turkish
188
+ local_name: Türk
189
+ language48:
190
+ code: uk
191
+ language: Ukrainian
192
+ local_name: Український
193
+ language49:
194
+ code: ur
195
+ language: Urdu
196
+ local_name: اردو
197
+ language50:
198
+ code: vi
199
+ language: Vietnamese
200
+ local_name: Việt
201
+ language51:
202
+ code: zh
203
+ language: Chinese
204
+ local_name: 中國的
205
+ language52:
206
+ code: zu
207
+ language: Zulu
208
+ local_name: Zulu
209
+
@@ -0,0 +1,13 @@
1
+ public
2
+ def forum_reading_privileges?
3
+ self.forum_reading_privileges
4
+ end
5
+ def forum_translating_privileges?
6
+ self.forum_translating_privileges
7
+ end
8
+ def forum_posting_privileges?
9
+ self.forum_posting_privileges
10
+ end
11
+ def forum_admin?
12
+ self.forum_admin
13
+ end
@@ -0,0 +1,3 @@
1
+ module Xforum
2
+ VERSION = '0.0.23'
3
+ end
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails.application.load_tasks