xforum 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +139 -0
- data/Rakefile +31 -0
- data/app/assets/images/xforum/addphoto.jpg +0 -0
- data/app/assets/images/xforum/bg-input-focus.png +0 -0
- data/app/assets/images/xforum/internet.png +0 -0
- data/app/assets/images/xforum/silver_selector.png +0 -0
- data/app/assets/javascripts/xforum/application.js +25 -0
- data/app/assets/javascripts/xforum/forum_admin.js.coffee +477 -0
- data/app/assets/javascripts/xforum/forum_basic.js.coffee +321 -0
- data/app/assets/javascripts/xforum/forum_translator.js.coffee +116 -0
- data/app/assets/javascripts/xforum/forum_user.js.coffee +403 -0
- data/app/assets/javascripts/xforum/global_java.js +141 -0
- data/app/assets/javascripts/xforum/help.js.coffee +10 -0
- data/app/assets/stylesheets/xforum/application.css.scss +15 -0
- data/app/assets/stylesheets/xforum/custom.css.scss +295 -0
- data/app/controllers/xforum/application_controller.rb +25 -0
- data/app/controllers/xforum/forums_controller.rb +123 -0
- data/app/helpers/xforum/application_helper.rb +4 -0
- data/app/mailers/xforum/user_mailer.rb +15 -0
- data/app/models/xforum/category.rb +76 -0
- data/app/models/xforum/forum.rb +217 -0
- data/app/models/xforum/hyperlink.rb +42 -0
- data/app/models/xforum/language.rb +104 -0
- data/app/models/xforum/people_list.rb +189 -0
- data/app/models/xforum/photo.rb +60 -0
- data/app/models/xforum/topic.rb +140 -0
- data/app/models/xforum/translation.rb +92 -0
- data/app/views/layouts/xforum/application.html.erb +14 -0
- data/app/views/user_mailer/xforum/note_to_forum_users.html.erb +32 -0
- data/app/views/xforum/forums/_dummy.html.erb +0 -0
- data/app/views/xforum/forums/_forum.html.erb +18 -0
- data/app/views/xforum/forums/_forum_admin.html.erb +139 -0
- data/app/views/xforum/forums/_forum_comments.html.erb +45 -0
- data/app/views/xforum/forums/_forum_entry.html.erb +44 -0
- data/app/views/xforum/forums/_forum_video.html.erb +7 -0
- data/app/views/xforum/forums/newphoto.js.erb +1 -0
- data/app/views/xforum/forums/the_page.html.erb +3 -0
- data/config/intiializers/xforum.rb +2 -0
- data/config/locales/forum.de.yml +93 -0
- data/config/locales/forum.en.yml +96 -0
- data/config/locales/forum.es.yml +94 -0
- data/config/locales/forum.fr.yml +94 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20140600_add_forum_to_users.rb +20 -0
- data/db/migrate/20140601_create_forum_forums.rb +147 -0
- data/db/migrate/20140602_add_restricted_to_category.rb +6 -0
- data/db/migrate/20140602_change_suggestion_default.rb +7 -0
- data/lib/tasks/xforum_tasks.rake +65 -0
- data/lib/xforum.rb +95 -0
- data/lib/xforum/engine.rb +6 -0
- data/lib/xforum/set.yml +209 -0
- data/lib/xforum/user_include.rb +13 -0
- data/lib/xforum/version.rb +3 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -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/helpers/application_helper.rb +2 -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/db/development.sqlite3 +0 -0
- data/test/dummy/log/development.log +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/test_helper.rb +15 -0
- data/test/xforum_test.rb +7 -0
- metadata +327 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: daa8a9801c65c8378e2dada2148c71f10e8c2345
|
4
|
+
data.tar.gz: 24d364fe9aff810ce12ae25f5f250f4b579e5c95
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5bc456f9dba77b0210c6e32501e690368d1a1012142722c41b8624d5c4e1d18f2ba5dc32e059e28d719040ff65e394ba35503ee51adf255b42adf4dedcdf6feb
|
7
|
+
data.tar.gz: ec01ef886bc872f616270f4d54304596de545ea27b1482fe75e8ffebf36aa4b7ae0286bb5e6fedf744ecd11e93225150fbdb8a23b1f87104cdffe7bd97cd675c
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
= Xforum
|
2
|
+
This is a javascript dependent forum that is relatively light weight. It's unique feature is that it supports multiple language posting and ask the user community to translate the various posting from other users.
|
3
|
+
|
4
|
+
You'd be a bit crazy to use it now at v.0000000001 since this is my first attempt:)
|
5
|
+
|
6
|
+
|
7
|
+
usage
|
8
|
+
include gem 'xforum' in you gem file
|
9
|
+
|
10
|
+
bundle install
|
11
|
+
|
12
|
+
in your config/routes
|
13
|
+
mount Xforum::Engine => '/xforum', as: 'xforum'
|
14
|
+
|
15
|
+
|
16
|
+
To use as a partial in you page
|
17
|
+
|
18
|
+
In application.js
|
19
|
+
//= require xforum/application.js
|
20
|
+
in application.css (or css.scss)
|
21
|
+
*= require xforum/application.css.scss
|
22
|
+
|
23
|
+
<label id="gotoforum" class='nav-label'><%= t('Forum')%></label>
|
24
|
+
add this javascript so we can hide the area you want hidden when the forum is up
|
25
|
+
|
26
|
+
|
27
|
+
function showPageName() {
|
28
|
+
"use strict";
|
29
|
+
return 'the-ID-of-div-to-hide';
|
30
|
+
}
|
31
|
+
|
32
|
+
you have to provide your own translation for the label
|
33
|
+
add this where you want the page to display
|
34
|
+
<div class="row" id="forum-page" style='display: none;'>
|
35
|
+
<%=render partial: 'xforum/forums/forum' %>
|
36
|
+
</div>
|
37
|
+
|
38
|
+
|
39
|
+
to use as a separate page. Create a link to xforum/forums/the_page
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
create xforum_init.rb in config/initializers
|
44
|
+
include in it these two lines
|
45
|
+
Xforum.user_class='User' or whatever you user class is e.g. Member
|
46
|
+
Xforum.user_table='users' or whatever you user table is e.g. members
|
47
|
+
|
48
|
+
rake xforum:install:migrations
|
49
|
+
|
50
|
+
rake db:migrate
|
51
|
+
|
52
|
+
in your user model
|
53
|
+
require 'xforum/user_include.rb'
|
54
|
+
|
55
|
+
You now have access to the instance methods Xforum in you model.
|
56
|
+
|
57
|
+
forum_reading_privileges?
|
58
|
+
forum_translating_privileges?
|
59
|
+
forum_posting_privileges?
|
60
|
+
forum_admin?
|
61
|
+
|
62
|
+
Set ENV variables
|
63
|
+
XFORUM_S3_BUCKET: your_bucket_name
|
64
|
+
XFORUM_PHOTOS: path_to_photos
|
65
|
+
XFORUM_S3_ACCESS_KEY_ID:
|
66
|
+
XFORUM_S3_SECRET_ACCESS_KEY:
|
67
|
+
XFORUM_USE_S3: true
|
68
|
+
XFORUM_LANGUAGES: en;es (list of languages you want active at start.)
|
69
|
+
(for a single language forum don't include the variable)
|
70
|
+
|
71
|
+
This project rocks and uses MIT-LICENSE.
|
72
|
+
This is a javascript dependent forum that is relatively light weight. It's unique feature is that it supports multiple language posting and ask the user community to translate the various posting from other users.
|
73
|
+
|
74
|
+
You'd be a bit crazy to use it now at v.000001 since this is my first attempt:)
|
75
|
+
|
76
|
+
|
77
|
+
usage
|
78
|
+
include gem in you gem file
|
79
|
+
gem 'xforum'
|
80
|
+
bundle install
|
81
|
+
|
82
|
+
in your config/routes
|
83
|
+
mount Xforum::Engine => '/xforum', as: 'xforum'
|
84
|
+
|
85
|
+
|
86
|
+
To use as a partial in you page
|
87
|
+
|
88
|
+
In application.js
|
89
|
+
//= require xforum/application.js
|
90
|
+
in application.css (or css.scss)
|
91
|
+
*= require xforum/application.css.scss
|
92
|
+
|
93
|
+
add a label so we know to open the forum
|
94
|
+
<label id="gotoforum" class='nav-label'><%= t('Forum')%></label>
|
95
|
+
add this javascript so we can hide the area you want hidden when the forum is up
|
96
|
+
|
97
|
+
|
98
|
+
function showPageName() {
|
99
|
+
"use strict";
|
100
|
+
return 'the-ID-of-div-to-hide';
|
101
|
+
}
|
102
|
+
|
103
|
+
you have to provide your own translation for the label
|
104
|
+
add this where you want the page to display
|
105
|
+
<div class="row" id="forum-page" style='display: none;'>
|
106
|
+
<%=render partial: 'xforum/forums/forum' %>
|
107
|
+
</div>
|
108
|
+
|
109
|
+
|
110
|
+
to use as a separate page. Create a link to xforum/forums/the_page
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
create xforum_init.rb in config/initializers
|
115
|
+
include in it these two lines
|
116
|
+
Xforum.user_class='User' or whatever you user class is e.g. Member
|
117
|
+
Xforum.user_table='users' or whatever you user table is e.g. members
|
118
|
+
|
119
|
+
rake xforum:install:migrations
|
120
|
+
rake db:migrate
|
121
|
+
|
122
|
+
in your user model
|
123
|
+
require 'xforum/user_include.rb'
|
124
|
+
|
125
|
+
You now have access to the instance methods Xforum in you model.
|
126
|
+
|
127
|
+
forum_reading_privileges?
|
128
|
+
forum_translating_privileges?
|
129
|
+
forum_posting_privileges?
|
130
|
+
forum_admin?
|
131
|
+
|
132
|
+
Set ENV variables
|
133
|
+
XFORUM_S3_BUCKET: your_bucket_name
|
134
|
+
XFORUM_PHOTOS: path_to_photos
|
135
|
+
XFORUM_S3_ACCESS_KEY_ID:
|
136
|
+
XFORUM_S3_SECRET_ACCESS_KEY:
|
137
|
+
XFORUM_USE_S3: true
|
138
|
+
XFORUM_LANGUAGES: en;es (list of languages you want active at start.)
|
139
|
+
(for a single language forum don't include the variable)
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Xforum'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path('../test/dummy/Rakefile', __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
|
24
|
+
Rake::TestTask.new(:test) do |t|
|
25
|
+
t.libs << 'lib'
|
26
|
+
t.libs << 'test'
|
27
|
+
t.pattern = 'test/**/*_test.rb'
|
28
|
+
t.verbose = false
|
29
|
+
end
|
30
|
+
|
31
|
+
task default: :test
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.rectives.
|
9
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
10
|
+
// GO AFTER THE REQUIRES BELOW.
|
11
|
+
// //= require jquery
|
12
|
+
|
13
|
+
|
14
|
+
//= require jquery
|
15
|
+
//= require jquery_ujs
|
16
|
+
//= require jquery.ui.all
|
17
|
+
//= require jquery.form
|
18
|
+
//= require jquery.turbolinks
|
19
|
+
//= require turbolinks
|
20
|
+
// = require_tree .
|
21
|
+
|
22
|
+
//
|
23
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
24
|
+
// about supported di
|
25
|
+
|
@@ -0,0 +1,477 @@
|
|
1
|
+
CHILD_DEL = 0
|
2
|
+
CHILD_ITEM = CHILD_DEL+1
|
3
|
+
|
4
|
+
CHILD_EDIT = CHILD_DEL+1
|
5
|
+
CHILD_EDIT_ITEM=CHILD_ITEM+1
|
6
|
+
CHILD_EDIT_ENTRY=CHILD_EDIT_ITEM+1
|
7
|
+
|
8
|
+
SUGGESTION_ACCEPT=0
|
9
|
+
SUGGESTION_REJECT=SUGGESTION_ACCEPT+1
|
10
|
+
SUGGESTION= SUGGESTION_REJECT+1
|
11
|
+
SUGGESTION_OWNER=SUGGESTION+1
|
12
|
+
SUGGESTION_CATEGORY=SUGGESTION_OWNER+1
|
13
|
+
|
14
|
+
jQuery ->
|
15
|
+
hideMe({id:'forum-add-hyperlink-span'})
|
16
|
+
$('#forum-box').delegate 'input[id = delete-forum-object]','click', (evt) ->
|
17
|
+
deleteForumObject(event.target)
|
18
|
+
$('#forum-box').delegate 'input[id = edit-forum-object]','click', (evt) ->
|
19
|
+
openEditObject(event.target)
|
20
|
+
$('#forum-box').delegate 'input[id = forum-admin-button]','click', (evt) ->
|
21
|
+
doButtonAction(event.target)
|
22
|
+
event.stopPropagation()
|
23
|
+
$('#forum-senate-admin-users').delegate 'option[id = forum-admin-option]','click', (evt) ->
|
24
|
+
checkForNone(event.target)
|
25
|
+
$('#forum-category-admin').change ->
|
26
|
+
getAdminsTopic()
|
27
|
+
$('#forum-actions').change ->
|
28
|
+
checkActionSetup(event.target)
|
29
|
+
$('#forum-admin-language-select').change ->
|
30
|
+
flipLanguage(event.target)
|
31
|
+
$('#forum-actions').change ->
|
32
|
+
handleActionChange(event.target)
|
33
|
+
$('#forum-category-monitor').change ->
|
34
|
+
monitorNewTopic()
|
35
|
+
$('#restrict-category').click ->
|
36
|
+
doRestrictCategory(event.target)
|
37
|
+
$('#restrict-topic').click ->
|
38
|
+
doRestrictTopic(event.target)
|
39
|
+
#todo add reason selection for rejecion (forum and user privilages)
|
40
|
+
|
41
|
+
doRestrictCategory=(button)->
|
42
|
+
if button.value== button.dataset.restrict
|
43
|
+
button.value=button.dataset.submit
|
44
|
+
showMe({id:'forum-restricted-list'})
|
45
|
+
else
|
46
|
+
button.value= button.dataset.restrict
|
47
|
+
hideMe({id:'forum-restricted-list'})
|
48
|
+
request={function:'forum admin action'}
|
49
|
+
request.forum_action='restrict category'
|
50
|
+
request.user_list=$('#forum-restricted-list').val()
|
51
|
+
request.category=$('#forum-category-admin').val()
|
52
|
+
$.post('xforum/forum_ajax',request)
|
53
|
+
|
54
|
+
doRestrictTopic=(button)->
|
55
|
+
if button.value== button.dataset.restrict
|
56
|
+
button.value=button.dataset.submit
|
57
|
+
showMe({id:'forum-restricted-list'})
|
58
|
+
showMe({id:'forum-admin-topic'})
|
59
|
+
else
|
60
|
+
button.value= button.dataset.restrict
|
61
|
+
request={function:'forum admin action'}
|
62
|
+
request.forum_action='restrict topic'
|
63
|
+
request.category=$('#forum-topic-admin').val()
|
64
|
+
request.user_list=$('#forum-restricted-list').val()
|
65
|
+
hideMe({id:'forum-restricted-list'})
|
66
|
+
hideMe({id:'forum-admin-topic'})
|
67
|
+
$.post('xforum/forum_ajax',request)
|
68
|
+
|
69
|
+
monitorNewTopic=->
|
70
|
+
select = document.getElementById('forum-category-monitor').value
|
71
|
+
$.post('xforum/forum_ajax', {function: 'get topics',list:'forum-topic-monitor', category: select, hold_test: false, restricted: false}, loadList)
|
72
|
+
|
73
|
+
|
74
|
+
getAdminCategory=->
|
75
|
+
document.getElementById('forum-category-admin').value
|
76
|
+
|
77
|
+
handleActionChange=(which)->
|
78
|
+
switch which.value
|
79
|
+
when 'send email to'
|
80
|
+
showMe({id:"forum-email-email"})
|
81
|
+
else
|
82
|
+
hideMe({id:"forum-email-email"})
|
83
|
+
|
84
|
+
doButtonAction = (which)->
|
85
|
+
switch(which.name)
|
86
|
+
when 'forum-add-topic'
|
87
|
+
addTopic(which,getAdminCategory(),'me')
|
88
|
+
when 'review-forum'
|
89
|
+
setUpReview(which)
|
90
|
+
when 'forum-activate-language'
|
91
|
+
turnLanguage('on')
|
92
|
+
when 'forum-deactivate-language'
|
93
|
+
turnLanguage('off')
|
94
|
+
when 'forum-add-category'
|
95
|
+
addCategory(which,'me')
|
96
|
+
when 'forum-add-language'
|
97
|
+
addLanguage(which,'me')
|
98
|
+
when 'forum-translate-topic'
|
99
|
+
translateList(which)
|
100
|
+
when 'forum-translate-category'
|
101
|
+
translateList(which)
|
102
|
+
when 'forum-user-tag-choose'
|
103
|
+
setTagView()
|
104
|
+
when 'forum-user-email-choose'
|
105
|
+
setEmailView()
|
106
|
+
when 'forum-act-on-admin-selector'
|
107
|
+
doAction()
|
108
|
+
when 'forum-add-cancel'
|
109
|
+
addCancel({obj:which})
|
110
|
+
when 'forum-admin-views'
|
111
|
+
setAdminView(which)
|
112
|
+
when 'forum-suggestion-response'
|
113
|
+
handleSuggestionResponse(which)
|
114
|
+
else
|
115
|
+
|
116
|
+
window.doAdminStuff = ->
|
117
|
+
document.getElementById('forum-senate').dataset.admining = 'true'
|
118
|
+
setAdminDisplay()
|
119
|
+
$.post('xforum/forum_ajax',{function:'get list',by_name:false, list:'admin-actions'},loadList)
|
120
|
+
$.post('xforum/forum_ajax',{function:'get list',by_name:false, list:'forum-distribution-lists'},loadList)
|
121
|
+
$.post('xforum/forum_ajax',{function:'get list',by_name:true, list:'admin-emails'},loadList)
|
122
|
+
$.post('xforum/forum_ajax',{function:'get list',by_name:true, list:'admin-users'},loadList)
|
123
|
+
$.post('xforum/forum_ajax',{function:'get list',by_name:false, list:'forum-restricted-list'},loadList)
|
124
|
+
|
125
|
+
|
126
|
+
setAdminDisplay=->
|
127
|
+
hideMe({id: 'review-forum-span'})
|
128
|
+
hideMe({id: 'forum-senate'})
|
129
|
+
showMe({id: 'forum-senate-admin'})
|
130
|
+
hideMe({id: 'forum-user-tag-span'})
|
131
|
+
hideMe({id: 'forum-user-email-span'})
|
132
|
+
hideMe({id: 'forum-email-email'})
|
133
|
+
showMe({name: 'forum-user-email-show'})
|
134
|
+
hideMe({id:'forum-admin-topic'})
|
135
|
+
showMe({name: 'forum-user-tag-show'})
|
136
|
+
showMe({id:'forum-distribution-span'})
|
137
|
+
hideMe({id:'forum-moderator-add-span'})
|
138
|
+
hideMe({id:'forum-restricted-list'})
|
139
|
+
document.getElementById('forum-new-distribution-list').value=''
|
140
|
+
|
141
|
+
turnLanguage=(toggle)->
|
142
|
+
showMe({id:'language-selector-span'})
|
143
|
+
$.post('xforum/forum_ajax',{function:'get language set',list:'forum-admin-language-select',active:toggle =='off'},loadList)
|
144
|
+
|
145
|
+
checkForNone = (which)->
|
146
|
+
if which.value == 'select none'
|
147
|
+
hideMe({obj:which.parentNode.parentNode})
|
148
|
+
name=which.parentNode.name + '-show'
|
149
|
+
showMe({name:name})
|
150
|
+
|
151
|
+
setEmailView = ->
|
152
|
+
blockMe({id:'forum-user-email-span'})
|
153
|
+
hideMe({name:'forum-user-email-show'})
|
154
|
+
$('#forum-user-email').focus()
|
155
|
+
|
156
|
+
setMonitorView=->
|
157
|
+
hideMe({id:'forum-distribution-span'})
|
158
|
+
showMe({id:'forum-moderator-add-span'})
|
159
|
+
|
160
|
+
setDistributionListView=->
|
161
|
+
showMe({id:'forum-distribution-span'})
|
162
|
+
hideMe({id:'forum-moderator-add-span'})
|
163
|
+
|
164
|
+
setTagView = ->
|
165
|
+
blockMe({id:'forum-user-tag-span'})
|
166
|
+
hideMe({name:'forum-user-tag-show'})
|
167
|
+
$('#user-tag').focus()
|
168
|
+
|
169
|
+
checkActionSetup = (which)->
|
170
|
+
switch which.value
|
171
|
+
when 'create distribution'
|
172
|
+
setDistributionListView()
|
173
|
+
when 'add topic monitor'
|
174
|
+
setMonitorView()
|
175
|
+
else
|
176
|
+
|
177
|
+
flipLanguage=(selector)->
|
178
|
+
select = getSelectValues({obj:selector,ref:false})
|
179
|
+
$.post('xforum/forum_ajax',{function:'toggle language',language:select})
|
180
|
+
selector.selectedIndex=0
|
181
|
+
hideMe({id:'language-selector-span'})
|
182
|
+
|
183
|
+
doAction = ->
|
184
|
+
request={}
|
185
|
+
request.function = 'forum admin action'
|
186
|
+
request.users1 = getSelectValues({name:'forum-user-tag',ref:false})
|
187
|
+
request.users2 = getSelectValues({name:'forum-user-email',ref:false})
|
188
|
+
request.subject = $('#forum-email-subject').val()
|
189
|
+
request.body= $('#forum-email-body').val()
|
190
|
+
request.topic=$('#forum-topic-monitor').val()
|
191
|
+
$('#forum-email-body').val('')
|
192
|
+
$('#forum-email-subject').val('')
|
193
|
+
request.new_list_name = $('#forum-new-distribution-list').val()
|
194
|
+
request.distribution_list = $('#forum-distribution-lists').val()
|
195
|
+
request.forum_action = $('#forum-actions').val()
|
196
|
+
document.getElementById('forum-actions').selectedIndex=0
|
197
|
+
setAdminDisplay()
|
198
|
+
$("forum-email-body").val('')
|
199
|
+
$.post('xforum/forum_ajax',request)
|
200
|
+
|
201
|
+
setAdminView = (which_one)->
|
202
|
+
switch(which_one.dataset.view)
|
203
|
+
when 'lists'
|
204
|
+
blockMe({id:'forum-senate-admin-lists'})
|
205
|
+
hideMe({id:'forum-senate-admin-users'})
|
206
|
+
addCancel({name:'category'})
|
207
|
+
addCancel({name:'topic'})
|
208
|
+
addCancel({name:'language'})
|
209
|
+
$.post('xforum/forum_ajax',{function:'categories',list:'category', language:getLanguage(),hold_test:false,restricted:false},loadAdminsList)
|
210
|
+
$.post('xforum/forum_ajax',{function:'get suggestions',list:'category'},loadForumSuggestions)
|
211
|
+
$.post('xforum/forum_ajax',{function:'get suggestions',list:'topic'},loadForumSuggestions)
|
212
|
+
$.post('xforum/forum_ajax',{function:'get suggestions',list:'language'},loadForumSuggestions)
|
213
|
+
when 'users'
|
214
|
+
hideMe({id:'forum-senate-admin-lists'})
|
215
|
+
blockMe({id:'forum-senate-admin-users'})
|
216
|
+
else
|
217
|
+
|
218
|
+
setUpReview=(button)->
|
219
|
+
if button.dataset.state == 'done'
|
220
|
+
showMe(id:'forum-review-buttons')
|
221
|
+
button.dataset.state = 'review'
|
222
|
+
clearSenate()
|
223
|
+
$.post('xforum/forum_ajax', {function: 'get senate', topic: getTopic(), review: true}, setSenate)
|
224
|
+
button.value = button.dataset.done
|
225
|
+
else
|
226
|
+
button.dataset.state = 'done'
|
227
|
+
hideMe(id:'forum-review-buttons')
|
228
|
+
button.value= button.dataset.review
|
229
|
+
clearSenate
|
230
|
+
|
231
|
+
deleteForumObject = (which_one)->
|
232
|
+
id = which_one.dataset.target
|
233
|
+
$.post('xforum/forum_ajax',{function:'remove forum object',id:which_one.dataset.id,state_action:which_one.value})
|
234
|
+
if which_one.dataset.state == 'open'
|
235
|
+
which_one.value = which_one.dataset.del
|
236
|
+
document.getElementById(id).className = ''
|
237
|
+
which_one.dataset.state = 'closed'
|
238
|
+
else
|
239
|
+
which_one.value = which_one.dataset.open
|
240
|
+
document.getElementById(id).className = ''
|
241
|
+
which_one.dataset.state= 'open'
|
242
|
+
$.post('xforum/forum_ajax',{function:'categories',language:getLanguage(),hold_test:true,restricted:true},loadAdminsList)
|
243
|
+
|
244
|
+
addOptionTo = (which_one,item)->
|
245
|
+
by_name=false
|
246
|
+
switch which_one
|
247
|
+
when 'category'
|
248
|
+
pushOption($('[name=category_admin]'),{item:item,value:item},0)
|
249
|
+
pushOption($('[name=category]'),{item:item,value:item},2)
|
250
|
+
when 'language'
|
251
|
+
pushOption($('[name=language]'),{item:item,value:item},1)
|
252
|
+
else
|
253
|
+
|
254
|
+
translateList=(which)->
|
255
|
+
if which.dataset.state == 'done'
|
256
|
+
translateSetup({obj:which})
|
257
|
+
else
|
258
|
+
addCancel({obj:which})
|
259
|
+
|
260
|
+
addCategory = (which,user)->
|
261
|
+
if which.dataset.state == 'saved'
|
262
|
+
addSetup({obj:which})
|
263
|
+
else
|
264
|
+
new_category = $('#forum-add-admin-category').val()
|
265
|
+
unless new_category == ''
|
266
|
+
addListEntry('forum-admins-category-list',{item:new_category})
|
267
|
+
$.post('xforum/forum_ajax',{function:'add to list',list:'category',new_item:new_category,user:$('#forum-add-admin-user').val()})
|
268
|
+
addOptionTo('forum-category',new_category)
|
269
|
+
addCancel({obj:which})
|
270
|
+
|
271
|
+
addLanguage = (which,user)->
|
272
|
+
if which.dataset.state == 'saved'
|
273
|
+
addSetup({obj:which})
|
274
|
+
else
|
275
|
+
new_language = $('#forum-add-admin-language').val()
|
276
|
+
new_local = $('#forum-add-admin-language-localized').val()
|
277
|
+
new_code = $('#forum-add-admin-language-code')
|
278
|
+
unless new_language == ''
|
279
|
+
addListEntry('forum-admins-language-list',{item:new_language})
|
280
|
+
$.post('xforum/forum_ajax',{function:'add to list',list:'language',language:new_language,local:new_local,code:new_code, user:$('#forum-add-admin-user').val()})
|
281
|
+
addCancel({obj:which})
|
282
|
+
|
283
|
+
addTopic=(which,category,user)->
|
284
|
+
if which.dataset.state == 'saved'
|
285
|
+
addSetup({obj:which})
|
286
|
+
else
|
287
|
+
new_topic = $('#forum-add-admin-topic').val()
|
288
|
+
unless new_topic == ''
|
289
|
+
addListEntry('forum-admins-topic-list',{item:new_topic,shift:true})
|
290
|
+
$.post('xforum/forum_ajax',{function:'add to list',list:'topic', topic:new_topic,category:category,user:$('#forum-add-admin-user').val()})
|
291
|
+
#addCancel({obj:which}) Don't know why this was here? Code copy
|
292
|
+
|
293
|
+
addSetup=(params)->
|
294
|
+
if params.name == undefined
|
295
|
+
params.name = params.obj.name.split('-')[2]
|
296
|
+
params.obj.value = params.obj.dataset.save
|
297
|
+
params.obj.dataset.state='adding'
|
298
|
+
hideMe({name:"forum-translate-#{params.name}"})
|
299
|
+
$("input[data-who=#{params.name}]").show() #show cancel button
|
300
|
+
showMe({id:"forum-add-#{params.name}-input-span"})
|
301
|
+
document.getElementById("forum-add-admin-#{params.name}").focus()
|
302
|
+
|
303
|
+
translateSetup=(params)->
|
304
|
+
if params.name == undefined
|
305
|
+
params.name = params.obj.name.split('-')[2]
|
306
|
+
params.obj.value = params.obj.dataset.done
|
307
|
+
params.obj.dataset.state='translating'
|
308
|
+
document.getElementById('forum-admins-'+params.name+'-list').dataset.translating=true
|
309
|
+
hideMe({name:"forum-add-#{params.name}"})
|
310
|
+
$("input[data-who=#{params.name}]").show() #show cancel button
|
311
|
+
document.getElementById("forum-add-admin-#{params.name}").focus()
|
312
|
+
|
313
|
+
addCancel=(params)->
|
314
|
+
if params.name == undefined
|
315
|
+
if params.obj.dataset.who == undefined then params.name = params.obj.name.split('-')[2]
|
316
|
+
else params.name = params.obj.dataset.who
|
317
|
+
button = $("[name = forum-add-#{params.name}]").get()[0]
|
318
|
+
button.dataset.state = 'saved'
|
319
|
+
button.value = button.dataset.add
|
320
|
+
unless params.name == 'language'
|
321
|
+
button2= $("[name = forum-translate-#{params.name}]").get()[0]
|
322
|
+
button2.dataset.state='done'
|
323
|
+
button2.value= button2.dataset.translate
|
324
|
+
showMe({obj:button2})
|
325
|
+
document.getElementById("forum-admins-#{params.name}-list").dataset.translating=false
|
326
|
+
$("input[data-who=#{params.name}]").hide()
|
327
|
+
hideMe({id:"forum-add-#{params.name}-input-span"})
|
328
|
+
showMe({obj:button})
|
329
|
+
showMe({name:"forum-add-#{params.name}"})
|
330
|
+
$("[id = forum-add-admin-#{params.name}]").val('')
|
331
|
+
$("[id = forum-add-admin-user]").val('me')
|
332
|
+
|
333
|
+
openEditObject = (which_one)->
|
334
|
+
line= document.getElementById("edit-entry-#{which_one.dataset.id}")
|
335
|
+
id=which_one.dataset.id
|
336
|
+
if which_one.dataset.state == 'edit'
|
337
|
+
parent = which_one.parentNode
|
338
|
+
showMe({obj:parent.children[CHILD_EDIT_ENTRY]})
|
339
|
+
which_one.value = which_one.dataset.save
|
340
|
+
which_one.dataset.state = 'save'
|
341
|
+
line.value = parent.children[CHILD_EDIT_ITEM].innerHTML
|
342
|
+
hideMe({obj:parent.children[CHILD_EDIT_ITEM]})
|
343
|
+
line.focus()
|
344
|
+
else if which_one.dataset.state == 'save'
|
345
|
+
parent = which_one.parentNode
|
346
|
+
id = which_one.dataset.id
|
347
|
+
which_one.dataset.state = 'edit'
|
348
|
+
newline = line.value
|
349
|
+
hideMe({obj:parent.children[CHILD_EDIT_ENTRY]})
|
350
|
+
showMe({obj:parent.children[CHILD_EDIT_ITEM]})
|
351
|
+
which_one.value = which_one.dataset.edit
|
352
|
+
unless newline == ''
|
353
|
+
translating=which_one.parentNode.parentElement.dataset.translating
|
354
|
+
parent.children[CHILD_EDIT_ITEM].innerHTML = newline
|
355
|
+
$.post('xforum/forum_ajax',{function:'edit forum object',id:id,newline:newline,which_list:which_one.parentNode.parentElement.id, translating:translating})
|
356
|
+
|
357
|
+
getAdminCategories = ->
|
358
|
+
$.post('xforum/forum_ajax',{function:'get categories',category:select,language:getLanguage(),list,'category',hold_test:false,restriced:false},loadAdminsList)
|
359
|
+
|
360
|
+
getAdminsTopic = ->
|
361
|
+
select = document.getElementById('forum-category-admin').value
|
362
|
+
$.post('xforum/forum_ajax',{function:'get topics',category:select,list:'topic',language:getLanguage(),hold_test:false,restricted:false},loadAdminsList)
|
363
|
+
$.post('xforum/forum_ajax',{function:'get topics',category:select,list:'forum-admin-topic',language:getLanguage(),hold_test:false,restricted:false},loadList)
|
364
|
+
|
365
|
+
window.loadAdminsList = (params)->
|
366
|
+
list_data = params.list_data
|
367
|
+
switch params.id
|
368
|
+
when 'topic'
|
369
|
+
which = 'forum-admins-topic-list'
|
370
|
+
short = 0
|
371
|
+
shift = true
|
372
|
+
when 'category'
|
373
|
+
which = 'forum-admins-category-list'
|
374
|
+
short = 1
|
375
|
+
shift = true
|
376
|
+
else
|
377
|
+
alist = document.getElementById(which).children
|
378
|
+
dummy = alist[0]
|
379
|
+
if dummy?
|
380
|
+
for i in [1...alist.length]
|
381
|
+
removeMe({obj:document.getElementById(which).children[1]})
|
382
|
+
if list_data.length>0
|
383
|
+
for i in [0...list_data.length-short]
|
384
|
+
vars = list_data[i]
|
385
|
+
vars.inert = i == 0||i == list_data.length-1-short
|
386
|
+
vars.shift = shift
|
387
|
+
if list_data[i].state?
|
388
|
+
vars.state = list_data[i].state
|
389
|
+
addListEntry(which,vars)
|
390
|
+
removeMe({obj:dummy})
|
391
|
+
else
|
392
|
+
id = dummy.children[0].dataset.target
|
393
|
+
document.getElementById(id).innerHTML = ''
|
394
|
+
|
395
|
+
addListEntry = (which,vars)->
|
396
|
+
entry = document.getElementById(which).children[0].cloneNode(true)
|
397
|
+
i = document.getElementById(which).children.length
|
398
|
+
ref = document.getElementById(which).children[i-1]
|
399
|
+
tag = which.split('-')[1]
|
400
|
+
entry.children[CHILD_DEL].dataset.id = vars.id
|
401
|
+
entry.children[CHILD_DEL].dataset.target = 'list-item-'+tag+'-'+i
|
402
|
+
if vars.inert
|
403
|
+
$(entry.children[CHILD_DEL]).val('----')
|
404
|
+
else
|
405
|
+
entry.children[CHILD_DEL].id = 'delete-forum-object'
|
406
|
+
entry.children[CHILD_DEL].value= entry.children[CHILD_DEL].dataset.del
|
407
|
+
entry.children[CHILD_EDIT].dataset.id = vars.id
|
408
|
+
entry.children[CHILD_EDIT].dataset.target = 'list-item-'+tag+'-'+i
|
409
|
+
entry.children[CHILD_EDIT].dataset.state = 'edit'
|
410
|
+
entry.children[CHILD_EDIT_ITEM].innerHTML = vars.item
|
411
|
+
entry.children[CHILD_EDIT_ITEM].id = 'list-item-'+tag+'-'+i
|
412
|
+
entry.children[CHILD_EDIT_ENTRY].children[0].id="edit-entry-#{vars.id}"
|
413
|
+
item=CHILD_EDIT_ITEM
|
414
|
+
|
415
|
+
if vars.closed
|
416
|
+
entry.children[item].className = 'forum-closed'
|
417
|
+
entry.children[CHILD_DEL].value = entry.children[CHILD_DEL].dataset.open
|
418
|
+
entry.children[CHILD_DEL].dataset.state = 'closed'
|
419
|
+
else
|
420
|
+
entry.children[CHILD_DEL].dataset.state = 'open'
|
421
|
+
document.getElementById(which).insertBefore(entry,ref)
|
422
|
+
|
423
|
+
loadForumSuggestions = (params)->
|
424
|
+
unless !params? || params.data.length == 0
|
425
|
+
list = document.getElementById(params.list)
|
426
|
+
for i in [0...params.data.length]
|
427
|
+
pushElement(list,params.data[i],params.list)
|
428
|
+
removeMe({obj:list.children[0]})
|
429
|
+
|
430
|
+
pushElement = (list,data,which)->
|
431
|
+
entry = list.children[0].cloneNode(true)
|
432
|
+
entry.id = 'list-' + which.split('-')[0]+ list.children.length
|
433
|
+
entry.dataset.the_id = data.id
|
434
|
+
entry.children[SUGGESTION_ACCEPT].dataset.id = list.children.length
|
435
|
+
entry.children[SUGGESTION_REJECT].dataset.id = list.children.length
|
436
|
+
entry.children[SUGGESTION].id = which.split('-')[1]+ '-item-'+ list.children.length
|
437
|
+
entry.children[SUGGESTION_OWNER].id = which.split('-')[1]+ '-user-'+ list.children.length
|
438
|
+
entry.children[SUGGESTION].innerHTML = data.suggestion
|
439
|
+
entry.children[SUGGESTION_OWNER].innerHTML = " |"+data.user+"| "
|
440
|
+
if data.category?
|
441
|
+
entry.children[SUGGESTION_CATEGORY].innerHTML = data.category
|
442
|
+
entry.children[SUGGESTION_CATEGORY].id = which.split('-')[1]+ '-category-'+ list.children.length
|
443
|
+
list.appendChild(entry)
|
444
|
+
|
445
|
+
handleSuggestionResponse = (which_one)->
|
446
|
+
if which_one.value == 'Accept'
|
447
|
+
id = which_one.dataset.id
|
448
|
+
which_one.dataset.state='save'
|
449
|
+
switch which_one.parentNode.parentElement.id
|
450
|
+
when 'forum-category-prososals-list'
|
451
|
+
user=$("span[id = category-user-#{id}]").get()[0].innerHTML.split('|')[1]
|
452
|
+
$('#forum-add-admin-category').val($("span[id = category-item-#{id}]").get()[0].innerHTML)
|
453
|
+
$('#forum-add-admin-user').val(user)
|
454
|
+
addCategory(which_one,user)
|
455
|
+
when 'forum-topic-prososals-list'
|
456
|
+
topic=$('span[id = topic-item-'+id+']').get()[0].innerHTML
|
457
|
+
user= $("span[id =topic-user-#{id}]").get()[0].innerHTML.split('|')[1]
|
458
|
+
$('#forum-add-admin-topic').val(topic)
|
459
|
+
$('#forum-add-admin-user').val(user)
|
460
|
+
category= $('span[id = topic-category-'+id+']').get()[0].innerHTML.trim()
|
461
|
+
addTopic(which_one,category,user)
|
462
|
+
when 'forum-language-proposal-list'
|
463
|
+
$('#forum-aadd-admin-language').val($("span[id = language-item-#{id}]").get()[0].innerHTML)
|
464
|
+
$('#forum-add-admin-user').val($("span[id = language-user-#{id}]").get()[0].innerHTML.split('|')[1])
|
465
|
+
user= $("span[id = language-user-#{id}]").get()[0].innerHTML.split('|')[1]
|
466
|
+
addLanguage(which_one,user)
|
467
|
+
else
|
468
|
+
closeListItem(which_one)
|
469
|
+
|
470
|
+
closeListItem = (which_one)->
|
471
|
+
id = which_one.parentNode.dataset.the_id
|
472
|
+
$.post('xforum/forum_ajax',{function:'suggestion close',id:id,result:which_one.value,list:which_one.parentNode.parentElement.id})
|
473
|
+
if which_one.parentNode.parentElement.children.length == 1
|
474
|
+
which_one.parentNode.parentElement.style.display = 'none'
|
475
|
+
else
|
476
|
+
removeIt(which_one.parentNode)
|
477
|
+
|