xforum 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
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